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