MR-2: Skilldesc charset fix + Macros removed
This commit is contained in:
@@ -117,7 +117,7 @@ class GameWindow(ui.ScriptWindow):
|
||||
self.playerGauge = uiPlayerGauge.PlayerGauge(self)
|
||||
self.playerGauge.Hide()
|
||||
|
||||
#wj 2014.1.2. ESC키를 누를 시 우선적으로 DropQuestionDialog를 끄도록 만들었다. 하지만 처음에 itemDropQuestionDialog가 선언되어 있지 않아 ERROR가 발생하여 init에서 선언과 동시에 초기화 시킴.
|
||||
#wj 2014.1.2. ESCŰ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>켱<EFBFBD><ECBCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DropQuestionDialog<6F><67> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> itemDropQuestionDialog<6F><67> <20><><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾ<EFBFBD> ERROR<4F><52> <20><EFBFBD><DFBB>Ͽ<EFBFBD> init<69><74><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD> <20>ʱ<EFBFBD>ȭ <20><>Ŵ.
|
||||
self.itemDropQuestionDialog = None
|
||||
|
||||
self.__SetQuickSlotMode()
|
||||
@@ -226,7 +226,7 @@ class GameWindow(ui.ScriptWindow):
|
||||
exception.Abort("GameWindow.Open")
|
||||
# END_OF_START_GAME_ERROR_EXIT
|
||||
|
||||
# NPC가 큐브시스템으로 만들 수 있는 아이템들의 목록을 캐싱
|
||||
# NPC<EFBFBD><EFBFBD> ť<><C5A5>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3>
|
||||
# ex) cubeInformation[20383] = [ {"rewordVNUM": 72723, "rewordCount": 1, "materialInfo": "101,1&102,2", "price": 999 }, ... ]
|
||||
self.cubeInformation = {}
|
||||
self.currentCubeNPC = 0
|
||||
@@ -314,10 +314,10 @@ class GameWindow(ui.ScriptWindow):
|
||||
def __BuildKeyDict(self):
|
||||
onPressKeyDict = {}
|
||||
|
||||
##PressKey 는 누르고 있는 동안 계속 적용되는 키이다.
|
||||
##PressKey <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>Ǵ<EFBFBD> Ű<>̴<EFBFBD>.
|
||||
|
||||
## 숫자 단축키 퀵슬롯에 이용된다.(이후 숫자들도 퀵 슬롯용 예약)
|
||||
## F12 는 클라 디버그용 키이므로 쓰지 않는 게 좋다.
|
||||
## <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ű <20><><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD> <20>̿<EFBFBD>ȴ<EFBFBD>.(<28><><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ鵵 <20><> <20><><EFBFBD>Կ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
## F12 <EFBFBD><EFBFBD> Ŭ<><C5AC> <20><><EFBFBD><EFBFBD><EFBFBD> Ű<>̹Ƿ<CCB9> <20><><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
|
||||
onPressKeyDict[app.DIK_1] = lambda : self.__PressNumKey(1)
|
||||
onPressKeyDict[app.DIK_2] = lambda : self.__PressNumKey(2)
|
||||
onPressKeyDict[app.DIK_3] = lambda : self.__PressNumKey(3)
|
||||
@@ -337,7 +337,7 @@ class GameWindow(ui.ScriptWindow):
|
||||
onPressKeyDict[app.DIK_SYSRQ] = lambda : self.SaveScreen()
|
||||
onPressKeyDict[app.DIK_SPACE] = lambda : self.StartAttack()
|
||||
|
||||
#캐릭터 이동키
|
||||
#ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>Ű
|
||||
onPressKeyDict[app.DIK_UP] = lambda : self.MoveUp()
|
||||
onPressKeyDict[app.DIK_DOWN] = lambda : self.MoveDown()
|
||||
onPressKeyDict[app.DIK_LEFT] = lambda : self.MoveLeft()
|
||||
@@ -564,12 +564,12 @@ class GameWindow(ui.ScriptWindow):
|
||||
self.TextureNum.SetFontName(localeInfo.UI_DEF_FONT)
|
||||
self.TextureNum.SetPosition(wndMgr.GetScreenWidth() - 270, 100)
|
||||
|
||||
# 오브젝트 그리는 개수
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><EFBFBD><D7B8><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
self.ObjectNum = ui.TextLine()
|
||||
self.ObjectNum.SetFontName(localeInfo.UI_DEF_FONT)
|
||||
self.ObjectNum.SetPosition(wndMgr.GetScreenWidth() - 270, 120)
|
||||
|
||||
# 시야거리
|
||||
# <EFBFBD>þ߰Ÿ<EFBFBD>
|
||||
self.ViewDistance = ui.TextLine()
|
||||
self.ViewDistance.SetFontName(localeInfo.UI_DEF_FONT)
|
||||
self.ViewDistance.SetPosition(0, 0)
|
||||
@@ -1017,8 +1017,7 @@ class GameWindow(ui.ScriptWindow):
|
||||
messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend))
|
||||
messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend))
|
||||
|
||||
if app.FIX_MESSENGER_ACTION_SYNC:
|
||||
messengerAddFriendQuestion.OnPressEscapeKey = ui.__mem_func__(self.OnDenyAddFriend) # ESC → deny
|
||||
messengerAddFriendQuestion.OnPressEscapeKey = ui.__mem_func__(self.OnDenyAddFriend) # ESC <20><> deny
|
||||
|
||||
messengerAddFriendQuestion.Open()
|
||||
messengerAddFriendQuestion.name = name
|
||||
@@ -1313,7 +1312,7 @@ class GameWindow(ui.ScriptWindow):
|
||||
self.__DropMoney(attachedType, attachedMoney)
|
||||
|
||||
def __DropMoney(self, attachedType, attachedMoney):
|
||||
# PRIVATESHOP_DISABLE_ITEM_DROP - 개인상점 열고 있는 동안 아이템 버림 방지
|
||||
# PRIVATESHOP_DISABLE_ITEM_DROP - <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if uiPrivateShopBuilder.IsBuildingPrivateShop():
|
||||
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
|
||||
return
|
||||
@@ -1335,7 +1334,7 @@ class GameWindow(ui.ScriptWindow):
|
||||
self.itemDropQuestionDialog = itemDropQuestionDialog
|
||||
|
||||
def __DropItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount):
|
||||
# PRIVATESHOP_DISABLE_ITEM_DROP - 개인상점 열고 있는 동안 아이템 버림 방지
|
||||
# PRIVATESHOP_DISABLE_ITEM_DROP - <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if uiPrivateShopBuilder.IsBuildingPrivateShop():
|
||||
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
|
||||
return
|
||||
@@ -1467,7 +1466,7 @@ class GameWindow(ui.ScriptWindow):
|
||||
|
||||
def UpdateDebugInfo(self):
|
||||
#
|
||||
# 캐릭터 좌표 및 FPS 출력
|
||||
# ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ <20><> FPS <EFBFBD><EFBFBD><EFBFBD>
|
||||
(x, y, z) = player.GetMainCharacterPosition()
|
||||
nUpdateTime = app.GetUpdateTime()
|
||||
nUpdateFPS = app.GetUpdateFPS()
|
||||
@@ -1630,22 +1629,22 @@ class GameWindow(ui.ScriptWindow):
|
||||
def BINARY_Cube_Close(self):
|
||||
self.interface.CloseCubeWindow()
|
||||
|
||||
# 제작에 필요한 골드, 예상되는 완성품의 VNUM과 개수 정보 update
|
||||
# <EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>ϼ<EFBFBD>ǰ<EFBFBD><C7B0> VNUM<55><4D> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> update
|
||||
def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
|
||||
self.interface.UpdateCubeInfo(gold, itemVnum, count)
|
||||
|
||||
def BINARY_Cube_Succeed(self, itemVnum, count):
|
||||
print "큐브 제작 성공"
|
||||
print "ť<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
|
||||
self.interface.SucceedCubeWork(itemVnum, count)
|
||||
pass
|
||||
|
||||
def BINARY_Cube_Failed(self):
|
||||
print "큐브 제작 실패"
|
||||
print "ť<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
|
||||
self.interface.FailedCubeWork()
|
||||
pass
|
||||
|
||||
def BINARY_Cube_ResultList(self, npcVNUM, listText):
|
||||
# ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 이런식으로 "/" 문자로 구분된 리스트를 줌
|
||||
# ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 <EFBFBD>̷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "/" <20><><EFBFBD>ڷ<EFBFBD> <20><><EFBFBD>е<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>
|
||||
#print listText
|
||||
|
||||
if npcVNUM == 0:
|
||||
@@ -1746,7 +1745,7 @@ class GameWindow(ui.ScriptWindow):
|
||||
|
||||
# END_OF_CUBE
|
||||
|
||||
# 용혼석
|
||||
# <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
def BINARY_Highlight_Item(self, inven_type, inven_pos):
|
||||
self.interface.Highligt_Item(inven_type, inven_pos)
|
||||
|
||||
@@ -2184,7 +2183,6 @@ class GameWindow(ui.ScriptWindow):
|
||||
|
||||
# END_OF_WEDDING
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
def SkillClearCoolTime(self, slotIndex):
|
||||
self.interface.SkillClearCoolTime(slotIndex)
|
||||
def SkillClearCoolTime(self, slotIndex):
|
||||
self.interface.SkillClearCoolTime(slotIndex)
|
||||
|
||||
|
||||
@@ -305,8 +305,7 @@ class Interface(object):
|
||||
self.whisperDialogDict = {}
|
||||
self.privateShopAdvertisementBoardDict = {}
|
||||
|
||||
if app.FIX_MESSENGER_ACTION_SYNC:
|
||||
self.wndMessenger.InitializeHandler()
|
||||
self.wndMessenger.InitializeHandler()
|
||||
|
||||
self.wndInventory.SetItemToolTip(self.tooltipItem)
|
||||
|
||||
@@ -540,10 +539,9 @@ class Interface(object):
|
||||
def OnChangeCurrentSkill(self, skillSlotNumber):
|
||||
self.wndTaskBar.OnChangeCurrentSkill(skillSlotNumber)
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
def SkillClearCoolTime(self, slotIndex):
|
||||
self.wndCharacter.SkillClearCoolTime(slotIndex)
|
||||
self.wndTaskBar.SkillClearCoolTime(slotIndex)
|
||||
def SkillClearCoolTime(self, slotIndex):
|
||||
self.wndCharacter.SkillClearCoolTime(slotIndex)
|
||||
self.wndTaskBar.SkillClearCoolTime(slotIndex)
|
||||
|
||||
def SelectMouseButtonEvent(self, dir, event):
|
||||
self.wndTaskBar.SelectMouseButtonEvent(dir, event)
|
||||
|
||||
@@ -111,41 +111,34 @@ def RegisterSkill(race, group, empire = 0):
|
||||
job = chr.RaceToJob(race)
|
||||
|
||||
# Ensure group 0 exists (horse-only) when cooldown fix is on
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN and SKILL_INDEX_DICT.has_key(job):
|
||||
if not SKILL_INDEX_DICT[job].has_key(0):
|
||||
# Assassin has 140 as well; others only 137-139
|
||||
SKILL_INDEX_DICT[job][0] = (0, 0, 0, 0, 0, 0, 0, 0,
|
||||
137, 0, 138, 0, 139, 0) + ((140,) if job == JOB_ASSASSIN else ())
|
||||
if not SKILL_INDEX_DICT[job].has_key(0):
|
||||
# Assassin has 140 as well; others only 137-139
|
||||
SKILL_INDEX_DICT[job][0] = (0, 0, 0, 0, 0, 0, 0, 0,
|
||||
137, 0, 138, 0, 139, 0) + ((140,) if job == JOB_ASSASSIN else ())
|
||||
|
||||
## Support Skills (Always register regardless of skill group)
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
if SKILL_INDEX_DICT.has_key(job):
|
||||
supportSkillList = SKILL_INDEX_DICT[job].get("SUPPORT", ())
|
||||
if SKILL_INDEX_DICT.has_key(job):
|
||||
supportSkillList = SKILL_INDEX_DICT[job].get("SUPPORT", ())
|
||||
|
||||
for i in xrange(len(supportSkillList)):
|
||||
player.SetSkill(i + 100 + 1, supportSkillList[i])
|
||||
for i in xrange(len(supportSkillList)):
|
||||
player.SetSkill(i + 100 + 1, supportSkillList[i])
|
||||
|
||||
## Character Skill
|
||||
if SKILL_INDEX_DICT.has_key(job):
|
||||
if SKILL_INDEX_DICT[job].has_key(group):
|
||||
activeSkillList = SKILL_INDEX_DICT[job][group]
|
||||
|
||||
if not app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
for i, idx in enumerate(activeSkillList):
|
||||
if i not in (6, 7): # keep skipping unused slots
|
||||
player.SetSkill(i + 1, idx)
|
||||
else:
|
||||
for i in xrange(len(activeSkillList)):
|
||||
skillIndex = activeSkillList[i]
|
||||
|
||||
## 7<><37> 8<><38> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD>⼭ <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ȵ<EFBFBD>
|
||||
if i != 6 and i != 7:
|
||||
player.SetSkill(i + 1, skillIndex)
|
||||
for i in xrange(len(activeSkillList)):
|
||||
skillIndex = activeSkillList[i]
|
||||
|
||||
## 7<><37> 8<><38> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD>⼭ <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ȵ<EFBFBD>
|
||||
if i != 6 and i != 7:
|
||||
player.SetSkill(i + 1, skillIndex)
|
||||
|
||||
supportSkillList = SKILL_INDEX_DICT[job]["SUPPORT"]
|
||||
supportSkillList = SKILL_INDEX_DICT[job]["SUPPORT"]
|
||||
|
||||
for i in xrange(len(supportSkillList)):
|
||||
player.SetSkill(i + 100 + 1, supportSkillList[i])
|
||||
for i in xrange(len(supportSkillList)):
|
||||
player.SetSkill(i + 100 + 1, supportSkillList[i])
|
||||
|
||||
## Language Skill
|
||||
if 0 != empire:
|
||||
|
||||
@@ -885,7 +885,7 @@ class ExpandedImageBox(ImageBox):
|
||||
def SetRenderingMode(self, mode):
|
||||
wndMgr.SetRenderingMode(self.hWnd, mode)
|
||||
|
||||
# [0.0, 1.0] 사이의 값만큼 퍼센트로 그리지 않는다.
|
||||
# [0.0, 1.0] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ŭ <20>ۼ<EFBFBD>Ʈ<EFBFBD><C6AE> <20><EFBFBD><D7B8><EFBFBD> <20>ʴ´<CAB4>.
|
||||
def SetRenderingRect(self, left, top, right, bottom):
|
||||
wndMgr.SetRenderingRect(self.hWnd, left, top, right, bottom)
|
||||
|
||||
@@ -1374,29 +1374,28 @@ class SlotWindow(Window):
|
||||
return wndMgr.GetSlotCount(self.hWnd)
|
||||
|
||||
def SetUseMode(self, flag):
|
||||
"True일때만 ItemToItem 이 가능한지 보여준다"
|
||||
"True<EFBFBD>϶<EFBFBD><EFBFBD><EFBFBD> ItemToItem <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>"
|
||||
wndMgr.SetUseMode(self.hWnd, flag)
|
||||
|
||||
def SetUsableItem(self, flag):
|
||||
"True면 현재 가리킨 아이템이 ItemToItem 적용 가능하다"
|
||||
"True<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ItemToItem <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>"
|
||||
wndMgr.SetUsableItem(self.hWnd, flag)
|
||||
|
||||
## Slot
|
||||
def SetSlotCoolTime(self, slotIndex, coolTime, elapsedTime = 0.0):
|
||||
wndMgr.SetSlotCoolTime(self.hWnd, slotIndex, coolTime, elapsedTime)
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
def StoreSlotCoolTime(self, key, slotIndex, coolTime, elapsedTime = 0.0):
|
||||
wndMgr.StoreSlotCoolTime(self.hWnd, key, slotIndex, coolTime, elapsedTime)
|
||||
|
||||
def RestoreSlotCoolTime(self, key):
|
||||
wndMgr.RestoreSlotCoolTime(self.hWnd, key)
|
||||
def StoreSlotCoolTime(self, key, slotIndex, coolTime, elapsedTime = 0.0):
|
||||
wndMgr.StoreSlotCoolTime(self.hWnd, key, slotIndex, coolTime, elapsedTime)
|
||||
|
||||
def RestoreSlotCoolTime(self, key):
|
||||
wndMgr.RestoreSlotCoolTime(self.hWnd, key)
|
||||
|
||||
def TransferSlotCoolTime(self, slotIndex1, slotIndex2):
|
||||
wndMgr.TransferSlotCoolTime(self.hWnd, slotIndex1, slotIndex2)
|
||||
def TransferSlotCoolTime(self, slotIndex1, slotIndex2):
|
||||
wndMgr.TransferSlotCoolTime(self.hWnd, slotIndex1, slotIndex2)
|
||||
|
||||
def ClearSlotCoolTime(self, slotIndex):
|
||||
wndMgr.ClearSlotCoolTime(self.hWnd, slotIndex)
|
||||
def ClearSlotCoolTime(self, slotIndex):
|
||||
wndMgr.ClearSlotCoolTime(self.hWnd, slotIndex)
|
||||
|
||||
def DisableSlot(self, slotIndex):
|
||||
wndMgr.DisableSlot(self.hWnd, slotIndex)
|
||||
@@ -1549,7 +1548,7 @@ class TitleBar(Window):
|
||||
|
||||
def MakeTitleBar(self, width, color):
|
||||
|
||||
## 현재 Color는 사용하고 있지 않음
|
||||
## <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Color<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
width = max(64, width)
|
||||
|
||||
@@ -2780,8 +2779,8 @@ class PythonScriptLoader(object):
|
||||
print "===== Load Script File : %s" % (FileName)
|
||||
|
||||
try:
|
||||
# chr, player 등은 sandbox 내에서 import가 허용되지 않기 때문에,(봇이 악용할 여지가 매우 큼.)
|
||||
# 미리 script dictionary에 필요한 상수를 넣어놓는다.
|
||||
# chr, player <EFBFBD><EFBFBD><EFBFBD><EFBFBD> sandbox <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> import<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(<28><><EFBFBD><EFBFBD> <20>ǿ<EFBFBD><C7BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ſ<EFBFBD> ŭ.)
|
||||
# <EFBFBD≯<EFBFBD> script dictionary<EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD>´<EFBFBD>.
|
||||
import chr
|
||||
import player
|
||||
import app
|
||||
|
||||
@@ -840,26 +840,24 @@ class CharacterWindow(ui.ScriptWindow):
|
||||
skillPage.SetSlotCount(realSlotIndex, 0)
|
||||
skillPage.DisableCoverButton(realSlotIndex)
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
if not player.IsSkillActive(slotIndex):
|
||||
skillPage.DeactivateSlot(realSlotIndex)
|
||||
if not player.IsSkillActive(slotIndex):
|
||||
skillPage.DeactivateSlot(realSlotIndex)
|
||||
|
||||
if player.IsSkillCoolTime(slotIndex) and skillGrade != j:
|
||||
skillPage.TransferSlotCoolTime(realSlotIndex, self.__GetRealSkillSlot(skillGrade, i))
|
||||
else:
|
||||
self.SkillClearCoolTime(realSlotIndex)
|
||||
if player.IsSkillCoolTime(slotIndex) and skillGrade != j:
|
||||
skillPage.TransferSlotCoolTime(realSlotIndex, self.__GetRealSkillSlot(skillGrade, i))
|
||||
else:
|
||||
self.SkillClearCoolTime(realSlotIndex)
|
||||
else:
|
||||
skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
# Check if this is the active slot
|
||||
# Grade 3 appears in slot 2, so check both conditions
|
||||
isActiveSlot = (skillGrade == j) or ((skillGrade == skill.SKILL_GRADE_COUNT) and j == (skill.SKILL_GRADE_COUNT - 1))
|
||||
|
||||
if player.IsSkillActive(slotIndex) and isActiveSlot:
|
||||
skillPage.ActivateSlot(realSlotIndex)
|
||||
else:
|
||||
skillPage.DeactivateSlot(realSlotIndex)
|
||||
# Check if this is the active slot
|
||||
# Grade 3 appears in slot 2, so check both conditions
|
||||
isActiveSlot = (skillGrade == j) or ((skillGrade == skill.SKILL_GRADE_COUNT) and j == (skill.SKILL_GRADE_COUNT - 1))
|
||||
|
||||
if player.IsSkillActive(slotIndex) and isActiveSlot:
|
||||
skillPage.ActivateSlot(realSlotIndex)
|
||||
else:
|
||||
skillPage.DeactivateSlot(realSlotIndex)
|
||||
else:
|
||||
if not SHOW_LIMIT_SUPPORT_SKILL_LIST or skillIndex in SHOW_LIMIT_SUPPORT_SKILL_LIST:
|
||||
realSlotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
|
||||
@@ -870,58 +868,52 @@ class CharacterWindow(ui.ScriptWindow):
|
||||
if skill.CanUseSkill(skillIndex):
|
||||
skillPage.SetCoverButton(realSlotIndex)
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
# Clear storage for horse skills at level 0 BEFORE restore runs
|
||||
if skillType == skill.SKILL_TYPE_HORSE and skillLevel == 0:
|
||||
player.ResetHorseSkillCoolTime(skillIndex, realSlotIndex)
|
||||
skillPage.SetSlotCoolTime(realSlotIndex, 0)
|
||||
# Clear storage for horse skills at level 0 BEFORE restore runs
|
||||
if skillType == skill.SKILL_TYPE_HORSE and skillLevel == 0:
|
||||
player.ResetHorseSkillCoolTime(skillIndex, realSlotIndex)
|
||||
skillPage.SetSlotCoolTime(realSlotIndex, 0)
|
||||
|
||||
if player.IsSkillActive(slotIndex):
|
||||
skillPage.ActivateSlot(realSlotIndex)
|
||||
else:
|
||||
skillPage.DeactivateSlot(realSlotIndex)
|
||||
if player.IsSkillActive(slotIndex):
|
||||
skillPage.ActivateSlot(realSlotIndex)
|
||||
else:
|
||||
if not player.IsSkillActive(slotIndex):
|
||||
skillPage.DeactivateSlot(realSlotIndex)
|
||||
skillPage.DeactivateSlot(realSlotIndex)
|
||||
|
||||
skillPage.RefreshSlot()
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
self.__RestoreSlotCoolTime(skillPage)
|
||||
self.__RestoreSlotCoolTime(skillPage)
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
def __RestoreSlotCoolTime(self, skillPage):
|
||||
restoreType = skill.SKILL_TYPE_NONE
|
||||
def __RestoreSlotCoolTime(self, skillPage):
|
||||
restoreType = skill.SKILL_TYPE_NONE
|
||||
|
||||
if self.PAGE_HORSE == self.curSelectedSkillGroup:
|
||||
restoreType = skill.SKILL_TYPE_HORSE
|
||||
else:
|
||||
restoreType = skill.SKILL_TYPE_ACTIVE
|
||||
if self.PAGE_HORSE == self.curSelectedSkillGroup:
|
||||
restoreType = skill.SKILL_TYPE_HORSE
|
||||
else:
|
||||
restoreType = skill.SKILL_TYPE_ACTIVE
|
||||
|
||||
skillPage.RestoreSlotCoolTime(restoreType)
|
||||
skillPage.RestoreSlotCoolTime(restoreType)
|
||||
|
||||
def __ClearHorseSkillQuickSlots(self):
|
||||
HORSE_SKILL_SET = (137, 138, 139, 140)
|
||||
def __ClearHorseSkillQuickSlots(self):
|
||||
HORSE_SKILL_SET = (137, 138, 139, 140)
|
||||
|
||||
quick_slot_per_page = 8 # two quick_slot windows * 4 slots
|
||||
quick_page_count = 4 # matches QUICKPAGE_NUMBER_FILENAME
|
||||
current_page = player.GetQuickPage()
|
||||
quick_slot_per_page = 8 # two quick_slot windows * 4 slots
|
||||
quick_page_count = 4 # matches QUICKPAGE_NUMBER_FILENAME
|
||||
current_page = player.GetQuickPage()
|
||||
|
||||
for page in xrange(quick_page_count):
|
||||
player.SetQuickPage(page)
|
||||
for page in xrange(quick_page_count):
|
||||
player.SetQuickPage(page)
|
||||
|
||||
for local_slot in xrange(quick_slot_per_page):
|
||||
slotType, position = player.GetLocalQuickSlot(local_slot)
|
||||
for local_slot in xrange(quick_slot_per_page):
|
||||
slotType, position = player.GetLocalQuickSlot(local_slot)
|
||||
|
||||
if slotType != player.SLOT_TYPE_SKILL:
|
||||
continue
|
||||
if slotType != player.SLOT_TYPE_SKILL:
|
||||
continue
|
||||
|
||||
skillIndex = player.GetSkillIndex(position)
|
||||
skillIndex = player.GetSkillIndex(position)
|
||||
|
||||
if skillIndex in HORSE_SKILL_SET:
|
||||
player.RequestDeleteGlobalQuickSlot(page * quick_slot_per_page + local_slot)
|
||||
if skillIndex in HORSE_SKILL_SET:
|
||||
player.RequestDeleteGlobalQuickSlot(page * quick_slot_per_page + local_slot)
|
||||
|
||||
player.SetQuickPage(current_page)
|
||||
player.SetQuickPage(current_page)
|
||||
|
||||
def RefreshSkill(self):
|
||||
if self.isLoaded == 0:
|
||||
@@ -1089,29 +1081,22 @@ class CharacterWindow(ui.ScriptWindow):
|
||||
|
||||
for slotWindow in self.skillPageDict.values():
|
||||
if slotWindow.HasSlot(slotIndex):
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
slotWindow.StoreSlotCoolTime(skillType, slotIndex, coolTime)
|
||||
self.__RestoreSlotCoolTime(slotWindow)
|
||||
else:
|
||||
slotWindow.SetSlotCoolTime(slotIndex, coolTime)
|
||||
slotWindow.StoreSlotCoolTime(skillType, slotIndex, coolTime)
|
||||
self.__RestoreSlotCoolTime(slotWindow)
|
||||
|
||||
return
|
||||
|
||||
def OnActivateSkill(self, slotIndex):
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
skillIndex = player.GetSkillIndex(slotIndex)
|
||||
skillType = skill.GetSkillType(skillIndex)
|
||||
|
||||
## ACTIVE
|
||||
if skill.SKILL_TYPE_ACTIVE == skillType:
|
||||
skillGrade = player.GetSkillGrade(slotIndex)
|
||||
slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
|
||||
## ETC
|
||||
else:
|
||||
slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
|
||||
else:
|
||||
skillIndex = player.GetSkillIndex(slotIndex)
|
||||
skillType = skill.GetSkillType(skillIndex)
|
||||
|
||||
## ACTIVE
|
||||
if skill.SKILL_TYPE_ACTIVE == skillType:
|
||||
skillGrade = player.GetSkillGrade(slotIndex)
|
||||
slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
|
||||
## ETC
|
||||
else:
|
||||
slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
|
||||
|
||||
for slotWindow in self.skillPageDict.values():
|
||||
if slotWindow.HasSlot(slotIndex):
|
||||
@@ -1120,20 +1105,16 @@ class CharacterWindow(ui.ScriptWindow):
|
||||
return
|
||||
|
||||
def OnDeactivateSkill(self, slotIndex):
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
skillIndex = player.GetSkillIndex(slotIndex)
|
||||
skillType = skill.GetSkillType(skillIndex)
|
||||
|
||||
## ACTIVE
|
||||
if skill.SKILL_TYPE_ACTIVE == skillType:
|
||||
skillGrade = player.GetSkillGrade(slotIndex)
|
||||
slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
|
||||
## ETC
|
||||
else:
|
||||
slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
|
||||
else:
|
||||
skillIndex = player.GetSkillIndex(slotIndex)
|
||||
skillType = skill.GetSkillType(skillIndex)
|
||||
|
||||
## ACTIVE
|
||||
if skill.SKILL_TYPE_ACTIVE == skillType:
|
||||
skillGrade = player.GetSkillGrade(slotIndex)
|
||||
slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
|
||||
## ETC
|
||||
else:
|
||||
slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
|
||||
|
||||
for slotWindow in self.skillPageDict.values():
|
||||
if slotWindow.HasSlot(slotIndex):
|
||||
@@ -1144,25 +1125,24 @@ class CharacterWindow(ui.ScriptWindow):
|
||||
def __ShowJobToolTip(self):
|
||||
self.toolTipJob.ShowToolTip()
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
def SkillClearCoolTime(self, slotIndex):
|
||||
skillIndex = player.GetSkillIndex(slotIndex)
|
||||
|
||||
if skillIndex < 1:
|
||||
return
|
||||
def SkillClearCoolTime(self, slotIndex):
|
||||
skillIndex = player.GetSkillIndex(slotIndex)
|
||||
|
||||
if skillIndex < 1:
|
||||
return
|
||||
|
||||
skillType = skill.GetSkillType(skillIndex)
|
||||
skillType = skill.GetSkillType(skillIndex)
|
||||
|
||||
## ACTIVE
|
||||
# Map to the correct visual slot based on skill type
|
||||
if skill.SKILL_TYPE_ACTIVE == skillType:
|
||||
slotIndex = self.__GetRealSkillSlot(player.GetSkillGrade(slotIndex), slotIndex)
|
||||
else:
|
||||
slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
|
||||
## ACTIVE
|
||||
# Map to the correct visual slot based on skill type
|
||||
if skill.SKILL_TYPE_ACTIVE == skillType:
|
||||
slotIndex = self.__GetRealSkillSlot(player.GetSkillGrade(slotIndex), slotIndex)
|
||||
else:
|
||||
slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
|
||||
|
||||
for slotWindow in self.skillPageDict.values():
|
||||
if slotWindow.HasSlot(slotIndex):
|
||||
slotWindow.SetSlotCoolTime(slotIndex, 0)
|
||||
for slotWindow in self.skillPageDict.values():
|
||||
if slotWindow.HasSlot(slotIndex):
|
||||
slotWindow.SetSlotCoolTime(slotIndex, 0)
|
||||
|
||||
def __HideJobToolTip(self):
|
||||
self.toolTipJob.HideToolTip()
|
||||
@@ -1248,16 +1228,12 @@ class CharacterWindow(ui.ScriptWindow):
|
||||
## GroupName
|
||||
self.__SetSkillGroupName(race, group)
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
self.__SetSkillSlotData(race, group, empire)
|
||||
self.__SetSkillSlotData(race, group, empire)
|
||||
|
||||
## Skill
|
||||
if 0 == group:
|
||||
self.__SelectSkillGroup(0)
|
||||
else:
|
||||
if not app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
self.__SetSkillSlotData(race, group, empire)
|
||||
|
||||
if self.__CanUseHorseSkill():
|
||||
self.__SelectSkillGroup(0)
|
||||
|
||||
@@ -1318,42 +1294,26 @@ class CharacterWindow(ui.ScriptWindow):
|
||||
## Refresh
|
||||
self.RefreshSkill()
|
||||
|
||||
if app.FIX_HORSE_SKILLS_TAB:
|
||||
def __SelectSkillGroup(self, pageIndex, (PAGE_SKILL_1, PAGE_SKILL_2, PAGE_SKILL_HORSE) = range(3)):
|
||||
for pageButton in self.skillGroupButton:
|
||||
pageButton.SetUp()
|
||||
def __SelectSkillGroup(self, pageIndex, (PAGE_SKILL_1, PAGE_SKILL_2, PAGE_SKILL_HORSE) = range(3)):
|
||||
for pageButton in self.skillGroupButton:
|
||||
pageButton.SetUp()
|
||||
|
||||
self.skillGroupButton[pageIndex].Down()
|
||||
self.skillGroupButton[pageIndex].Down()
|
||||
|
||||
if pageIndex in (PAGE_SKILL_1, PAGE_SKILL_2):
|
||||
skillGroupIndex = net.GetMainActorSkillGroup()
|
||||
if pageIndex in (PAGE_SKILL_1, PAGE_SKILL_2):
|
||||
skillGroupIndex = net.GetMainActorSkillGroup()
|
||||
|
||||
if bool(skillGroupIndex):
|
||||
(tmpCurSkillGroup, tmpSkillGroup) = (skillGroupIndex - 1, skillGroupIndex)
|
||||
else:
|
||||
(tmpCurSkillGroup, tmpSkillGroup) = (pageIndex, pageIndex + 1)
|
||||
if bool(skillGroupIndex):
|
||||
(tmpCurSkillGroup, tmpSkillGroup) = (skillGroupIndex - 1, skillGroupIndex)
|
||||
else:
|
||||
(tmpCurSkillGroup, tmpSkillGroup) = (pageIndex, pageIndex + 1)
|
||||
|
||||
self.curSelectedSkillGroup = tmpCurSkillGroup
|
||||
self.__SetSkillSlotData(net.GetMainActorRace(), tmpSkillGroup, net.GetMainActorEmpire())
|
||||
elif pageIndex == PAGE_SKILL_HORSE and self.__CanUseHorseSkill():
|
||||
self.curSelectedSkillGroup = self.PAGE_HORSE
|
||||
self.curSelectedSkillGroup = tmpCurSkillGroup
|
||||
self.__SetSkillSlotData(net.GetMainActorRace(), tmpSkillGroup, net.GetMainActorEmpire())
|
||||
elif pageIndex == PAGE_SKILL_HORSE and self.__CanUseHorseSkill():
|
||||
self.curSelectedSkillGroup = self.PAGE_HORSE
|
||||
|
||||
self.RefreshSkill()
|
||||
else:
|
||||
def __SelectSkillGroup(self, index):
|
||||
for btn in self.skillGroupButton:
|
||||
btn.SetUp()
|
||||
|
||||
self.skillGroupButton[index].Down()
|
||||
|
||||
if self.__CanUseHorseSkill():
|
||||
if 0 == index:
|
||||
index = net.GetMainActorSkillGroup() - 1
|
||||
elif 1 == index:
|
||||
index = self.PAGE_HORSE
|
||||
|
||||
self.curSelectedSkillGroup = index
|
||||
self.__SetSkillSlotData(net.GetMainActorRace(), index + 1, net.GetMainActorEmpire())
|
||||
self.RefreshSkill()
|
||||
|
||||
def __CanUseSkillNow(self):
|
||||
if 0 == net.GetMainActorSkillGroup():
|
||||
@@ -1373,29 +1333,23 @@ class CharacterWindow(ui.ScriptWindow):
|
||||
if level < 0:
|
||||
level *= -1
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
# Map to UI-displayed riding level (matches __RefreshSkillPage logic)
|
||||
# grade 1: base 1..20 shown as 20..39 (offset +19)
|
||||
# grade 2: base 1..10 shown as 30..39 (offset +29)
|
||||
# grade 3: shown as 40
|
||||
effective = 0
|
||||
# Map to UI-displayed riding level (matches __RefreshSkillPage logic)
|
||||
# grade 1: base 1..20 shown as 20..39 (offset +19)
|
||||
# grade 2: base 1..10 shown as 30..39 (offset +29)
|
||||
# grade 3: shown as 40
|
||||
effective = 0
|
||||
|
||||
if grade >= 3:
|
||||
effective = 40
|
||||
elif grade == 2:
|
||||
effective = level + 29
|
||||
elif grade == 1:
|
||||
effective = level + 19
|
||||
else:
|
||||
effective = level
|
||||
|
||||
# Require displayed riding level >= 21 to enable the horse page
|
||||
return effective >= 21
|
||||
if grade >= 3:
|
||||
effective = 40
|
||||
elif grade == 2:
|
||||
effective = level + 29
|
||||
elif grade == 1:
|
||||
effective = level + 19
|
||||
else:
|
||||
if grade >= 1 and level >= 1:
|
||||
return True
|
||||
effective = level
|
||||
|
||||
return False
|
||||
# Require displayed riding level >= 21 to enable the horse page
|
||||
return effective >= 21
|
||||
|
||||
def __IsChangedHorseRidingSkillLevel(self):
|
||||
ret = False
|
||||
|
||||
@@ -378,15 +378,13 @@ class MessengerWindow(ui.ScriptWindow):
|
||||
self.__AddGroup()
|
||||
messenger.RefreshGuildMember()
|
||||
|
||||
if app.FIX_MESSENGER_ACTION_SYNC:
|
||||
# NEW: Separate initialization from visibility
|
||||
def InitializeHandler(self):
|
||||
"""Load UI and register packet handlers without showing window"""
|
||||
if self.isLoaded == 0:
|
||||
self.__LoadWindow()
|
||||
self.OnRefreshList()
|
||||
self.OnResizeDialog()
|
||||
self.isLoaded = 1
|
||||
def InitializeHandler(self):
|
||||
"""Load UI and register packet handlers without showing window"""
|
||||
if self.isLoaded == 0:
|
||||
self.isLoaded = 1
|
||||
self.__LoadWindow()
|
||||
self.OnRefreshList()
|
||||
self.OnResizeDialog()
|
||||
|
||||
def Show(self):
|
||||
if self.isLoaded==0:
|
||||
@@ -681,10 +679,9 @@ class MessengerWindow(ui.ScriptWindow):
|
||||
self.selectedItem.UnSelect()
|
||||
self.selectedItem = None
|
||||
|
||||
if app.FIX_MESSENGER_ACTION_SYNC:
|
||||
self.whisperButton.Disable()
|
||||
self.mobileButton.Disable()
|
||||
self.removeButton.Disable()
|
||||
self.whisperButton.Disable()
|
||||
self.mobileButton.Disable()
|
||||
self.removeButton.Disable()
|
||||
|
||||
self.OnRefreshList()
|
||||
|
||||
@@ -788,25 +785,22 @@ class MessengerWindow(ui.ScriptWindow):
|
||||
def OnRemoveList(self, groupIndex, key):
|
||||
group = self.groupList[groupIndex]
|
||||
|
||||
if app.FIX_MESSENGER_ACTION_SYNC:
|
||||
member = group.FindMember(key)
|
||||
member = group.FindMember(key)
|
||||
|
||||
if not member:
|
||||
return
|
||||
if not member:
|
||||
return
|
||||
|
||||
if self.selectedItem is member or member.IsSameKey(key):
|
||||
member.UnSelect()
|
||||
self.selectedItem = None
|
||||
if self.selectedItem is member or member.IsSameKey(key):
|
||||
member.UnSelect()
|
||||
self.selectedItem = None
|
||||
|
||||
# Optional: also disable buttons to mirror local delete flow
|
||||
self.whisperButton.Disable()
|
||||
self.mobileButton.Disable()
|
||||
self.removeButton.Disable()
|
||||
# Optional: also disable buttons to mirror local delete flow
|
||||
self.whisperButton.Disable()
|
||||
self.mobileButton.Disable()
|
||||
self.removeButton.Disable()
|
||||
|
||||
member.Hide()
|
||||
group.RemoveMember(member)
|
||||
else:
|
||||
group.RemoveMember(group.FindMember(key))
|
||||
member.Hide()
|
||||
group.RemoveMember(member)
|
||||
|
||||
self.OnRefreshList()
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ class EnergyBar(ui.ScriptWindow):
|
||||
def RefreshStatus(self):
|
||||
pointEnergy = player.GetStatus (player.ENERGY)
|
||||
leftTimeEnergy = player.GetStatus (player.ENERGY_END_TIME) - app.GetGlobalTimeStamp()
|
||||
# 충기환 지속 시간 = 2시간.
|
||||
# <EFBFBD><EFBFBD><EFBFBD>ȯ <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> = 2<EFBFBD>ð<EFBFBD>.
|
||||
self.SetEnergy (pointEnergy, leftTimeEnergy, 7200)
|
||||
|
||||
def SetEnergy (self, point, leftTime, maxTime):
|
||||
@@ -336,7 +336,7 @@ class TaskBar(ui.ScriptWindow):
|
||||
(coolTime, elapsedTime) = player.GetSkillCoolTime(skillSlotNumber)
|
||||
self.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)
|
||||
|
||||
## NOTE : Activate 되어 있다면 아이콘도 업데이트
|
||||
## NOTE : Activate <EFBFBD>Ǿ<EFBFBD> <20>ִٸ<D6B4> <20><><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
if player.IsSkillActive(skillSlotNumber):
|
||||
self.ActivateSlot(slotNumber)
|
||||
|
||||
@@ -439,7 +439,7 @@ class TaskBar(ui.ScriptWindow):
|
||||
toggleButtonDict[TaskBar.BUTTON_MESSENGER]=self.GetChild("MessengerButton")
|
||||
toggleButtonDict[TaskBar.BUTTON_SYSTEM]=self.GetChild("SystemButton")
|
||||
|
||||
# ChatButton, ExpandButton 둘 중 하나는 반드시 존재한다.
|
||||
# ChatButton, ExpandButton <EFBFBD><EFBFBD> <20><> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20>ݵ<EFBFBD><DDB5> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
try:
|
||||
toggleButtonDict[TaskBar.BUTTON_CHAT]=self.GetChild("ChatButton")
|
||||
except:
|
||||
@@ -672,22 +672,21 @@ class TaskBar(ui.ScriptWindow):
|
||||
for button in self.selectSkillButtonList:
|
||||
button.RefreshSkill()
|
||||
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
def SkillClearCoolTime(self, usedSlotIndex):
|
||||
QUICK_SLOT_SLOT_COUNT = 4
|
||||
slotIndex = 0
|
||||
def SkillClearCoolTime(self, usedSlotIndex):
|
||||
QUICK_SLOT_SLOT_COUNT = 4
|
||||
slotIndex = 0
|
||||
|
||||
for slotWindow in self.quickslot:
|
||||
for i in xrange(QUICK_SLOT_SLOT_COUNT):
|
||||
(Type, Position) = player.GetLocalQuickSlot(slotIndex)
|
||||
for slotWindow in self.quickslot:
|
||||
for i in xrange(QUICK_SLOT_SLOT_COUNT):
|
||||
(Type, Position) = player.GetLocalQuickSlot(slotIndex)
|
||||
|
||||
if Type == player.SLOT_TYPE_SKILL:
|
||||
if usedSlotIndex == Position:
|
||||
slotWindow.SetSlotCoolTime(slotIndex, 0)
|
||||
if Type == player.SLOT_TYPE_SKILL:
|
||||
if usedSlotIndex == Position:
|
||||
slotWindow.SetSlotCoolTime(slotIndex, 0)
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
slotIndex += 1
|
||||
slotIndex += 1
|
||||
|
||||
def SetHP(self, curPoint, recoveryPoint, maxPoint):
|
||||
curPoint = min(curPoint, maxPoint)
|
||||
@@ -782,9 +781,9 @@ class TaskBar(ui.ScriptWindow):
|
||||
if itemCount <= 1:
|
||||
itemCount = 0
|
||||
|
||||
## 자동물약 (#72723, #72724) 특수처리 - 아이템인데도 슬롯에 활성화/비활성화 표시를 위한 작업임 - [hyo]
|
||||
## <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (#72723, #72724) Ư<EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD>Կ<EFBFBD> Ȱ<><C8B0>ȭ/<2F><>Ȱ<EFBFBD><C8B0>ȭ ǥ<>ø<EFBFBD> <20><><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> - [hyo]
|
||||
if constInfo.IS_AUTO_POTION(itemIndex):
|
||||
# metinSocket - [0] : 활성화 여부, [1] : 사용한 양, [2] : 최대 용량
|
||||
# metinSocket - [0] : Ȱ<EFBFBD><EFBFBD>ȭ <20><><EFBFBD><EFBFBD>, [1] : <20><><EFBFBD><EFBFBD><EFBFBD> <20><>, [2] : <EFBFBD>ִ<EFBFBD> <20>뷮
|
||||
metinSocket = [player.GetItemMetinSocket(Position, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
|
||||
|
||||
if 0 != int(metinSocket[0]):
|
||||
@@ -818,26 +817,19 @@ class TaskBar(ui.ScriptWindow):
|
||||
slot.SetCoverButton(slotNumber)
|
||||
|
||||
## NOTE : CoolTime üũ
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
if player.IsSkillCoolTime(Position) and skillLevel > 0:
|
||||
(coolTime, elapsedTime) = player.GetSkillCoolTime(Position)
|
||||
if player.IsSkillCoolTime(Position) and skillLevel > 0:
|
||||
(coolTime, elapsedTime) = player.GetSkillCoolTime(Position)
|
||||
|
||||
slot.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)
|
||||
else:
|
||||
if skillType != skill.SKILL_TYPE_GUILD and skillLevel <= 0:
|
||||
slot.SetSlotCoolTime(slotNumber, 0, 0)
|
||||
slot.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)
|
||||
else:
|
||||
if player.IsSkillCoolTime(Position):
|
||||
(coolTime, elapsedTime) = player.GetSkillCoolTime(Position)
|
||||
if skillType != skill.SKILL_TYPE_GUILD and skillLevel <= 0:
|
||||
slot.SetSlotCoolTime(slotNumber, 0, 0)
|
||||
|
||||
slot.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)
|
||||
|
||||
## NOTE : Activate 되어 있다면 아이콘도 업데이트
|
||||
## NOTE : Activate <20>Ǿ<EFBFBD> <20>ִٸ<D6B4> <20><><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
if player.IsSkillActive(Position):
|
||||
slot.ActivateSlot(slotNumber)
|
||||
else:
|
||||
if app.FIX_REFRESH_SKILL_COOLDOWN:
|
||||
slot.DeactivateSlot(slotNumber)
|
||||
slot.DeactivateSlot(slotNumber)
|
||||
|
||||
elif player.SLOT_TYPE_EMOTION == Type:
|
||||
|
||||
@@ -1079,8 +1071,8 @@ class TaskBar(ui.ScriptWindow):
|
||||
if skill.IsStandingSkill(skillIndex):
|
||||
continue
|
||||
|
||||
## FIXME : 스킬 하나당 슬롯 하나씩 할당하는건 아무리 봐도 부하가 크다.
|
||||
## 이 부분은 시간을 나면 고치도록. - [levites]
|
||||
## FIXME : <EFBFBD><EFBFBD>ų <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20>Ҵ<EFBFBD><D2B4>ϴ°<CFB4> <20>ƹ<EFBFBD><C6B9><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> ũ<><C5A9>.
|
||||
## <EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD>. - [levites]
|
||||
skillButton = self.SkillButton()
|
||||
skillButton.SetSkill(startNumber+i)
|
||||
skillButton.SetPosition(x, y)
|
||||
|
||||
Reference in New Issue
Block a user