Advertisement
Guest User

Untitled

a guest
Oct 6th, 2019
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.30 KB | None | 0 0
  1. import ui
  2. import uiScriptLocale
  3. import app
  4. import net
  5. import dbg
  6. import snd
  7. import player
  8. import mouseModule
  9. import wndMgr
  10. import skill
  11. import playerSettingModule
  12. import quest
  13. import localeInfo
  14. import uiToolTip
  15. import constInfo
  16. import emotion
  17. import chr
  18.  
  19. SHOW_ONLY_ACTIVE_SKILL = FALSE
  20. SHOW_LIMIT_SUPPORT_SKILL_LIST = []
  21. HIDE_SUPPORT_SKILL_POINT = FALSE
  22.  
  23. if localeInfo.IsYMIR():
  24. SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140,141,142]
  25. if not localeInfo.IsCHEONMA():
  26. HIDE_SUPPORT_SKILL_POINT = TRUE
  27. SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140,141,142]
  28. elif localeInfo.IsJAPAN() or (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/ca") and (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/br"):
  29. HIDE_SUPPORT_SKILL_POINT = TRUE
  30. SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140]
  31. else:
  32. HIDE_SUPPORT_SKILL_POINT = TRUE
  33.  
  34. FACE_IMAGE_DICT = {
  35. playerSettingModule.RACE_WARRIOR_M : "icon/face/warrior_m.tga",
  36. playerSettingModule.RACE_WARRIOR_W : "icon/face/warrior_w.tga",
  37. playerSettingModule.RACE_ASSASSIN_M : "icon/face/assassin_m.tga",
  38. playerSettingModule.RACE_ASSASSIN_W : "icon/face/assassin_w.tga",
  39. playerSettingModule.RACE_SURA_M : "icon/face/sura_m.tga",
  40. playerSettingModule.RACE_SURA_W : "icon/face/sura_w.tga",
  41. playerSettingModule.RACE_SHAMAN_M : "icon/face/shaman_m.tga",
  42. playerSettingModule.RACE_SHAMAN_W : "icon/face/shaman_w.tga",
  43. playerSettingModule.RACE_WOLFMAN_M : "icon/face/wolfman_m.tga",
  44. }
  45. def unsigned32(n):
  46. return n & 0xFFFFFFFFL
  47.  
  48. class CharacterWindow(ui.ScriptWindow):
  49.  
  50. ACTIVE_PAGE_SLOT_COUNT = 8
  51. SUPPORT_PAGE_SLOT_COUNT = 12
  52.  
  53. PAGE_SLOT_COUNT = 12
  54. PAGE_HORSE = 2
  55.  
  56. SKILL_GROUP_NAME_DICT = {
  57. playerSettingModule.JOB_WARRIOR : { 1 : localeInfo.SKILL_GROUP_WARRIOR_1, 2 : localeInfo.SKILL_GROUP_WARRIOR_2, },
  58. playerSettingModule.JOB_ASSASSIN : { 1 : localeInfo.SKILL_GROUP_ASSASSIN_1, 2 : localeInfo.SKILL_GROUP_ASSASSIN_2, },
  59. playerSettingModule.JOB_SURA : { 1 : localeInfo.SKILL_GROUP_SURA_1, 2 : localeInfo.SKILL_GROUP_SURA_2, },
  60. playerSettingModule.JOB_SHAMAN : { 1 : localeInfo.SKILL_GROUP_SHAMAN_1, 2 : localeInfo.SKILL_GROUP_SHAMAN_2, },
  61. playerSettingModule.JOB_WOLFMAN : { 1 : "Compétence", 2 : "Point", },
  62. }
  63.  
  64. STAT_DESCRIPTION = {
  65. "HTH" : localeInfo.STAT_TOOLTIP_CON,
  66. "INT" : localeInfo.STAT_TOOLTIP_INT,
  67. "STR" : localeInfo.STAT_TOOLTIP_STR,
  68. "DEX" : localeInfo.STAT_TOOLTIP_DEX,
  69. }
  70.  
  71.  
  72. STAT_MINUS_DESCRIPTION = localeInfo.STAT_MINUS_DESCRIPTION
  73.  
  74. def __init__(self):
  75. ui.ScriptWindow.__init__(self)
  76. self.state = "STATUS"
  77. self.isLoaded = 0
  78.  
  79. self.toolTipSkill = 0
  80.  
  81. self.__Initialize()
  82. self.__LoadWindow()
  83.  
  84. self.statusPlusCommandDict={
  85. "HTH" : "/stat ht",
  86. "INT" : "/stat iq",
  87. "STR" : "/stat st",
  88. "DEX" : "/stat dx",
  89. }
  90.  
  91. self.statusMinusCommandDict={
  92. "HTH-" : "/stat- ht",
  93. "INT-" : "/stat- iq",
  94. "STR-" : "/stat- st",
  95. "DEX-" : "/stat- dx",
  96. }
  97.  
  98. def __del__(self):
  99. ui.ScriptWindow.__del__(self)
  100.  
  101. def __Initialize(self):
  102. self.refreshToolTip = 0
  103. self.curSelectedSkillGroup = 0
  104. self.canUseHorseSkill = -1
  105.  
  106. self.toolTip = None
  107. self.toolTipJob = None
  108. self.toolTipAlignment = None
  109. self.toolTipSkill = None
  110.  
  111. self.faceImage = None
  112. self.statusPlusLabel = None
  113. self.statusPlusValue = None
  114. self.activeSlot = None
  115. self.tabDict = None
  116. self.tabButtonDict = None
  117. self.pageDict = None
  118. self.titleBarDict = None
  119. self.statusPlusButtonDict = None
  120. self.statusMinusButtonDict = None
  121.  
  122. self.skillPageDict = None
  123. self.questShowingStartIndex = 0
  124. self.questScrollBar = None
  125. self.questSlot = None
  126. self.questNameList = None
  127. self.questLastTimeList = None
  128. self.questLastCountList = None
  129. self.skillGroupButton = ()
  130.  
  131. self.activeSlot = None
  132. self.activeSkillPointValue = None
  133. self.supportSkillPointValue = None
  134. self.skillGroupButton1 = None
  135. self.skillGroupButton2 = None
  136. self.activeSkillGroupName = None
  137.  
  138. self.guildNameSlot = None
  139. self.guildNameValue = None
  140. self.characterNameSlot = None
  141. self.characterNameValue = None
  142.  
  143. self.emotionToolTip = None
  144. self.soloEmotionSlot = None
  145. self.dualEmotionSlot = None
  146.  
  147. def Show(self):
  148. self.__LoadWindow()
  149.  
  150. ui.ScriptWindow.Show(self)
  151.  
  152. def __LoadScript(self, fileName):
  153. pyScrLoader = ui.PythonScriptLoader()
  154. pyScrLoader.LoadScriptFile(self, fileName)
  155.  
  156. def __BindObject(self):
  157. self.toolTip = uiToolTip.ToolTip()
  158. self.toolTipJob = uiToolTip.ToolTip()
  159. self.toolTipAlignment = uiToolTip.ToolTip(130)
  160.  
  161. self.faceImage = self.GetChild("Face_Image")
  162.  
  163. faceSlot=self.GetChild("Face_Slot")
  164. if 949 == app.GetDefaultCodePage():
  165. faceSlot.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowJobToolTip)
  166. faceSlot.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideJobToolTip)
  167.  
  168. self.statusPlusLabel = self.GetChild("Status_Plus_Label")
  169. self.statusPlusValue = self.GetChild("Status_Plus_Value")
  170.  
  171. self.characterNameSlot = self.GetChild("Character_Name_Slot")
  172. self.characterNameValue = self.GetChild("Character_Name")
  173. self.guildNameSlot = self.GetChild("Guild_Name_Slot")
  174. self.guildNameValue = self.GetChild("Guild_Name")
  175. self.characterNameSlot.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowAlignmentToolTip)
  176. self.characterNameSlot.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideAlignmentToolTip)
  177.  
  178. self.activeSlot = self.GetChild("Skill_Active_Slot")
  179. self.activeSkillPointValue = self.GetChild("Active_Skill_Point_Value")
  180. self.supportSkillPointValue = self.GetChild("Support_Skill_Point_Value")
  181. self.skillGroupButton1 = self.GetChild("Skill_Group_Button_1")
  182. self.skillGroupButton2 = self.GetChild("Skill_Group_Button_2")
  183. self.activeSkillGroupName = self.GetChild("Active_Skill_Group_Name")
  184.  
  185. self.tabDict = {
  186. "STATUS" : self.GetChild("Tab_01"),
  187. "SKILL" : self.GetChild("Tab_02"),
  188. "EMOTICON" : self.GetChild("Tab_03"),
  189. "QUEST" : self.GetChild("Tab_04"),
  190. }
  191.  
  192. self.tabButtonDict = {
  193. "STATUS" : self.GetChild("Tab_Button_01"),
  194. "SKILL" : self.GetChild("Tab_Button_02"),
  195. "EMOTICON" : self.GetChild("Tab_Button_03"),
  196. "QUEST" : self.GetChild("Tab_Button_04")
  197. }
  198.  
  199. self.pageDict = {
  200. "STATUS" : self.GetChild("Character_Page"),
  201. "SKILL" : self.GetChild("Skill_Page"),
  202. "EMOTICON" : self.GetChild("Emoticon_Page"),
  203. "QUEST" : self.GetChild("Quest_Page")
  204. }
  205.  
  206. self.titleBarDict = {
  207. "STATUS" : self.GetChild("Character_TitleBar"),
  208. "SKILL" : self.GetChild("Skill_TitleBar"),
  209. "EMOTICON" : self.GetChild("Emoticon_TitleBar"),
  210. "QUEST" : self.GetChild("Quest_TitleBar")
  211. }
  212.  
  213. self.statusPlusButtonDict = {
  214. "HTH" : self.GetChild("HTH_Plus"),
  215. "INT" : self.GetChild("INT_Plus"),
  216. "STR" : self.GetChild("STR_Plus"),
  217. "DEX" : self.GetChild("DEX_Plus"),
  218. }
  219.  
  220. self.statusMinusButtonDict = {
  221. "HTH-" : self.GetChild("HTH_Minus"),
  222. "INT-" : self.GetChild("INT_Minus"),
  223. "STR-" : self.GetChild("STR_Minus"),
  224. "DEX-" : self.GetChild("DEX_Minus"),
  225. }
  226.  
  227. self.skillPageDict = {
  228. "ACTIVE" : self.GetChild("Skill_Active_Slot"),
  229. "SUPPORT" : self.GetChild("Skill_ETC_Slot"),
  230. "HORSE" : self.GetChild("Skill_Active_Slot"),
  231. }
  232.  
  233. self.skillPageStatDict = {
  234. "SUPPORT" : player.SKILL_SUPPORT,
  235. "ACTIVE" : player.SKILL_ACTIVE,
  236. "HORSE" : player.SKILL_HORSE,
  237. }
  238.  
  239. self.skillGroupButton = (
  240. self.GetChild("Skill_Group_Button_1"),
  241. self.GetChild("Skill_Group_Button_2"),
  242. )
  243.  
  244.  
  245. global SHOW_ONLY_ACTIVE_SKILL
  246. global HIDE_SUPPORT_SKILL_POINT
  247. if SHOW_ONLY_ACTIVE_SKILL or HIDE_SUPPORT_SKILL_POINT:
  248. self.GetChild("Support_Skill_Point_Label").Hide()
  249.  
  250. self.soloEmotionSlot = self.GetChild("SoloEmotionSlot")
  251. self.dualEmotionSlot = self.GetChild("DualEmotionSlot")
  252. self.__SetEmotionSlot()
  253.  
  254. self.questShowingStartIndex = 0
  255. self.questScrollBar = self.GetChild("Quest_ScrollBar")
  256. self.questScrollBar.SetScrollEvent(ui.__mem_func__(self.OnQuestScroll))
  257. self.questSlot = self.GetChild("Quest_Slot")
  258. for i in xrange(quest.QUEST_MAX_NUM):
  259. self.questSlot.HideSlotBaseImage(i)
  260. self.questSlot.SetCoverButton(i,\
  261. "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  262. "d:/ymir work/ui/game/quest/slot_button_02.sub",\
  263. "d:/ymir work/ui/game/quest/slot_button_03.sub",\
  264. "d:/ymir work/ui/game/quest/slot_button_03.sub", TRUE)
  265.  
  266. self.questNameList = []
  267. self.questLastTimeList = []
  268. self.questLastCountList = []
  269. for i in xrange(quest.QUEST_MAX_NUM):
  270. self.questNameList.append(self.GetChild("Quest_Name_0" + str(i)))
  271. self.questLastTimeList.append(self.GetChild("Quest_LastTime_0" + str(i)))
  272. self.questLastCountList.append(self.GetChild("Quest_LastCount_0" + str(i)))
  273.  
  274. def __SetSkillSlotEvent(self):
  275. for skillPageValue in self.skillPageDict.itervalues():
  276. skillPageValue.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
  277. skillPageValue.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectSkill))
  278. skillPageValue.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  279. skillPageValue.SetUnselectItemSlotEvent(ui.__mem_func__(self.ClickSkillSlot))
  280. skillPageValue.SetUseSlotEvent(ui.__mem_func__(self.ClickSkillSlot))
  281. skillPageValue.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  282. skillPageValue.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  283. skillPageValue.SetPressedSlotButtonEvent(ui.__mem_func__(self.OnPressedSlotButton))
  284. skillPageValue.AppendSlotButton("d:/ymir work/ui/game/windows/btn_plus_up.sub",\
  285. "d:/ymir work/ui/game/windows/btn_plus_over.sub",\
  286. "d:/ymir work/ui/game/windows/btn_plus_down.sub")
  287.  
  288. def __SetEmotionSlot(self):
  289.  
  290. self.emotionToolTip = uiToolTip.ToolTip()
  291.  
  292. for slot in (self.soloEmotionSlot, self.dualEmotionSlot):
  293. slot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
  294. slot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectEmotion))
  295. slot.SetUnselectItemSlotEvent(ui.__mem_func__(self.__ClickEmotionSlot))
  296. slot.SetUseSlotEvent(ui.__mem_func__(self.__ClickEmotionSlot))
  297. slot.SetOverInItemEvent(ui.__mem_func__(self.__OverInEmotion))
  298. slot.SetOverOutItemEvent(ui.__mem_func__(self.__OverOutEmotion))
  299. slot.AppendSlotButton("d:/ymir work/ui/game/windows/btn_plus_up.sub",\
  300. "d:/ymir work/ui/game/windows/btn_plus_over.sub",\
  301. "d:/ymir work/ui/game/windows/btn_plus_down.sub")
  302.  
  303. for slotIdx, datadict in emotion.EMOTION_DICT.items():
  304. emotionIdx = slotIdx
  305.  
  306. slot = self.soloEmotionSlot
  307. if slotIdx > 50:
  308. slot = self.dualEmotionSlot
  309.  
  310. slot.SetEmotionSlot(slotIdx, emotionIdx)
  311. slot.SetCoverButton(slotIdx)
  312.  
  313. def __SelectEmotion(self, slotIndex):
  314. if not slotIndex in emotion.EMOTION_DICT:
  315. return
  316.  
  317. if app.IsPressed(app.DIK_LCONTROL):
  318. player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_EMOTION, slotIndex)
  319. return
  320.  
  321. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_EMOTION, slotIndex, slotIndex)
  322.  
  323. def __ClickEmotionSlot(self, slotIndex):
  324. print "click emotion"
  325. if not slotIndex in emotion.EMOTION_DICT:
  326. return
  327.  
  328. print "check acting"
  329. if player.IsActingEmotion():
  330. return
  331.  
  332. command = emotion.EMOTION_DICT[slotIndex]["command"]
  333. print "command", command
  334.  
  335. if slotIndex > 50:
  336. vid = player.GetTargetVID()
  337.  
  338. if 0 == vid or vid == player.GetMainCharacterIndex() or chr.IsNPC(vid) or chr.IsEnemy(vid):
  339. import chat
  340. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EMOTION_CHOOSE_ONE)
  341. return
  342.  
  343. command += " " + chr.GetNameByVID(vid)
  344.  
  345. print "send_command", command
  346. net.SendChatPacket(command)
  347.  
  348. ##def ActEmotion(self, emotionIndex):
  349. ##self.__ClickEmotionSlot(emotionIndex)
  350.  
  351. def ActEmotion(self, emotionIndex):
  352. if not player.IsSitting():
  353. self.__ClickEmotionSlot(emotionIndex)
  354.  
  355. def __OverInEmotion(self, slotIndex):
  356. if self.emotionToolTip:
  357.  
  358. if not slotIndex in emotion.EMOTION_DICT:
  359. return
  360.  
  361. self.emotionToolTip.ClearToolTip()
  362. self.emotionToolTip.SetTitle(emotion.EMOTION_DICT[slotIndex]["name"])
  363. self.emotionToolTip.AlignHorizonalCenter()
  364. self.emotionToolTip.ShowToolTip()
  365.  
  366. def __OverOutEmotion(self):
  367. if self.emotionToolTip:
  368. self.emotionToolTip.HideToolTip()
  369.  
  370. def __BindEvent(self):
  371. for i in xrange(len(self.skillGroupButton)):
  372. self.skillGroupButton[i].SetEvent(lambda arg=i: self.__SelectSkillGroup(arg))
  373.  
  374. self.RefreshQuest()
  375. self.__HideJobToolTip()
  376.  
  377. for (tabKey, tabButton) in self.tabButtonDict.items():
  378. tabButton.SetEvent(ui.__mem_func__(self.__OnClickTabButton), tabKey)
  379.  
  380. for (statusPlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
  381. statusPlusButton.SAFE_SetEvent(self.__OnClickStatusPlusButton, statusPlusKey)
  382. statusPlusButton.ShowToolTip = lambda arg=statusPlusKey: self.__OverInStatButton(arg)
  383. statusPlusButton.HideToolTip = lambda arg=statusPlusKey: self.__OverOutStatButton()
  384.  
  385. for (statusMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
  386. statusMinusButton.SAFE_SetEvent(self.__OnClickStatusMinusButton, statusMinusKey)
  387. statusMinusButton.ShowToolTip = lambda arg=statusMinusKey: self.__OverInStatMinusButton(arg)
  388. statusMinusButton.HideToolTip = lambda arg=statusMinusKey: self.__OverOutStatMinusButton()
  389.  
  390. for titleBarValue in self.titleBarDict.itervalues():
  391. titleBarValue.SetCloseEvent(ui.__mem_func__(self.Hide))
  392.  
  393. self.questSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectQuest))
  394.  
  395. def __LoadWindow(self):
  396. if self.isLoaded == 1:
  397. return
  398.  
  399. self.isLoaded = 1
  400.  
  401. try:
  402. if localeInfo.IsARABIC() or localeInfo.IsVIETNAM() or localeInfo.IsJAPAN():
  403. self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "CharacterWindow.py")
  404. else:
  405. self.__LoadScript("UIScript/CharacterWindow.py")
  406.  
  407. self.__BindObject()
  408. self.__BindEvent()
  409. except:
  410. import exception
  411. exception.Abort("CharacterWindow.__LoadWindow")
  412.  
  413. #self.tabButtonDict["EMOTICON"].Disable()
  414. self.SetState("STATUS")
  415.  
  416. def Destroy(self):
  417. self.ClearDictionary()
  418.  
  419. self.__Initialize()
  420.  
  421. def Close(self):
  422. if 0 != self.toolTipSkill:
  423. self.toolTipSkill.Hide()
  424.  
  425. self.Hide()
  426.  
  427. def SetSkillToolTip(self, toolTipSkill):
  428. self.toolTipSkill = toolTipSkill
  429.  
  430. def __OnClickStatusPlusButton(self, statusKey):
  431. try:
  432. statusPlusCommand=self.statusPlusCommandDict[statusKey]
  433. net.SendChatPacket(statusPlusCommand)
  434. except KeyError, msg:
  435. dbg.TraceError("CharacterWindow.__OnClickStatusPlusButton KeyError: %s", msg)
  436.  
  437. def __OnClickStatusMinusButton(self, statusKey):
  438. try:
  439. statusMinusCommand=self.statusMinusCommandDict[statusKey]
  440. net.SendChatPacket(statusMinusCommand)
  441. except KeyError, msg:
  442. dbg.TraceError("CharacterWindow.__OnClickStatusMinusButton KeyError: %s", msg)
  443.  
  444.  
  445. def __OnClickTabButton(self, stateKey):
  446. self.SetState(stateKey)
  447.  
  448. def SetState(self, stateKey):
  449.  
  450. self.state = stateKey
  451.  
  452. for (tabKey, tabButton) in self.tabButtonDict.items():
  453. if stateKey!=tabKey:
  454. tabButton.SetUp()
  455.  
  456. for tabValue in self.tabDict.itervalues():
  457. tabValue.Hide()
  458.  
  459. for pageValue in self.pageDict.itervalues():
  460. pageValue.Hide()
  461.  
  462. for titleBarValue in self.titleBarDict.itervalues():
  463. titleBarValue.Hide()
  464.  
  465. self.titleBarDict[stateKey].Show()
  466. self.tabDict[stateKey].Show()
  467. self.pageDict[stateKey].Show()
  468.  
  469.  
  470. def GetState(self):
  471. return self.state
  472.  
  473. def __GetTotalAtkText(self):
  474. minAtk=player.GetStatus(player.ATT_MIN)
  475. maxAtk=player.GetStatus(player.ATT_MAX)
  476. atkBonus=player.GetStatus(player.ATT_BONUS)
  477. attackerBonus=player.GetStatus(player.ATTACKER_BONUS)
  478.  
  479. if minAtk==maxAtk:
  480. return "%d" % (minAtk+atkBonus+attackerBonus)
  481. else:
  482. return "%d-%d" % (minAtk+atkBonus+attackerBonus, maxAtk+atkBonus+attackerBonus)
  483.  
  484. def __GetTotalMagAtkText(self):
  485. minMagAtk=player.GetStatus(player.MAG_ATT)+player.GetStatus(player.MIN_MAGIC_WEP)
  486. maxMagAtk=player.GetStatus(player.MAG_ATT)+player.GetStatus(player.MAX_MAGIC_WEP)
  487.  
  488. if minMagAtk==maxMagAtk:
  489. return "%d" % (minMagAtk)
  490. else:
  491. return "%d-%d" % (minMagAtk, maxMagAtk)
  492.  
  493. def __GetTotalDefText(self):
  494. defValue=player.GetStatus(player.DEF_GRADE)
  495. if constInfo.ADD_DEF_BONUS_ENABLE:
  496. defValue+=player.GetStatus(player.DEF_BONUS)
  497. return "%d" % (defValue)
  498.  
  499. def RefreshStatus(self):
  500. if self.isLoaded==0:
  501. return
  502.  
  503. try:
  504. self.GetChild("Level_Value").SetText(str(player.GetStatus(player.LEVEL)))
  505. self.GetChild("Exp_Value").SetText(str(unsigned32(player.GetEXP())))
  506. self.GetChild("RestExp_Value").SetText(str(unsigned32(player.GetStatus(player.NEXT_EXP)) - unsigned32(player.GetStatus(player.EXP))))
  507. self.GetChild("HP_Value").SetText(str(player.GetStatus(player.HP)) + '/' + str(player.GetStatus(player.MAX_HP)))
  508. self.GetChild("SP_Value").SetText(str(player.GetStatus(player.SP)) + '/' + str(player.GetStatus(player.MAX_SP)))
  509.  
  510. self.GetChild("STR_Value").SetText(str(player.GetStatus(player.ST)))
  511. self.GetChild("DEX_Value").SetText(str(player.GetStatus(player.DX)))
  512. self.GetChild("HTH_Value").SetText(str(player.GetStatus(player.HT)))
  513. self.GetChild("INT_Value").SetText(str(player.GetStatus(player.IQ)))
  514.  
  515. self.GetChild("ATT_Value").SetText(self.__GetTotalAtkText())
  516. self.GetChild("DEF_Value").SetText(self.__GetTotalDefText())
  517.  
  518. self.GetChild("MATT_Value").SetText(self.__GetTotalMagAtkText())
  519. #self.GetChild("MATT_Value").SetText(str(player.GetStatus(player.MAG_ATT)))
  520.  
  521. self.GetChild("MDEF_Value").SetText(str(player.GetStatus(player.MAG_DEF)))
  522. self.GetChild("ASPD_Value").SetText(str(player.GetStatus(player.ATT_SPEED)))
  523. self.GetChild("MSPD_Value").SetText(str(player.GetStatus(player.MOVING_SPEED)))
  524. self.GetChild("CSPD_Value").SetText(str(player.GetStatus(player.CASTING_SPEED)))
  525. self.GetChild("ER_Value").SetText(str(player.GetStatus(player.EVADE_RATE)))
  526.  
  527. except:
  528. #import exception
  529. #exception.Abort("CharacterWindow.RefreshStatus.BindObject")
  530. ## °ÔÀÓÀÌ Æ¨°Ü ¹ö¸²
  531. pass
  532.  
  533. self.__RefreshStatusPlusButtonList()
  534. self.__RefreshStatusMinusButtonList()
  535. self.RefreshAlignment()
  536.  
  537. if self.refreshToolTip:
  538. self.refreshToolTip()
  539.  
  540. def __RefreshStatusPlusButtonList(self):
  541. if self.isLoaded==0:
  542. return
  543.  
  544. statusPlusPoint=player.GetStatus(player.STAT)
  545.  
  546. if statusPlusPoint>0:
  547. self.statusPlusValue.SetText(str(statusPlusPoint))
  548. self.statusPlusLabel.Show()
  549. self.ShowStatusPlusButtonList()
  550. else:
  551. self.statusPlusValue.SetText(str(0))
  552. self.statusPlusLabel.Hide()
  553. self.HideStatusPlusButtonList()
  554.  
  555. def __RefreshStatusMinusButtonList(self):
  556. if self.isLoaded==0:
  557. return
  558.  
  559. statusMinusPoint=self.__GetStatMinusPoint()
  560.  
  561. if statusMinusPoint>0:
  562. self.__ShowStatusMinusButtonList()
  563. else:
  564. self.__HideStatusMinusButtonList()
  565.  
  566. def RefreshAlignment(self):
  567. point, grade = player.GetAlignmentData()
  568.  
  569. import colorInfo
  570. COLOR_DICT = { 0 : colorInfo.TITLE_RGB_GOOD_4,
  571. 1 : colorInfo.TITLE_RGB_GOOD_3,
  572. 2 : colorInfo.TITLE_RGB_GOOD_2,
  573. 3 : colorInfo.TITLE_RGB_GOOD_1,
  574. 4 : colorInfo.TITLE_RGB_NORMAL,
  575. 5 : colorInfo.TITLE_RGB_EVIL_1,
  576. 6 : colorInfo.TITLE_RGB_EVIL_2,
  577. 7 : colorInfo.TITLE_RGB_EVIL_3,
  578. 8 : colorInfo.TITLE_RGB_EVIL_4, }
  579. colorList = COLOR_DICT.get(grade, colorInfo.TITLE_RGB_NORMAL)
  580. gradeColor = ui.GenerateColor(colorList[0], colorList[1], colorList[2])
  581.  
  582. self.toolTipAlignment.ClearToolTip()
  583. self.toolTipAlignment.AutoAppendTextLine(localeInfo.TITLE_NAME_LIST[grade], gradeColor)
  584. self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_NAME + str(point))
  585. self.toolTipAlignment.AlignHorizonalCenter()
  586.  
  587. def __ShowStatusMinusButtonList(self):
  588. for (stateMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
  589. statusMinusButton.Show()
  590.  
  591. def __HideStatusMinusButtonList(self):
  592. for (stateMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
  593. statusMinusButton.Hide()
  594.  
  595. def ShowStatusPlusButtonList(self):
  596. for (statePlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
  597. statusPlusButton.Show()
  598.  
  599. def HideStatusPlusButtonList(self):
  600. for (statePlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
  601. statusPlusButton.Hide()
  602.  
  603. def SelectSkill(self, skillSlotIndex):
  604.  
  605. mouseController = mouseModule.mouseController
  606.  
  607. if FALSE == mouseController.isAttached():
  608.  
  609. srcSlotIndex = self.__RealSkillSlotToSourceSlot(skillSlotIndex)
  610. selectedSkillIndex = player.GetSkillIndex(srcSlotIndex)
  611.  
  612. if skill.CanUseSkill(selectedSkillIndex):
  613.  
  614. if app.IsPressed(app.DIK_LCONTROL):
  615.  
  616. player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_SKILL, srcSlotIndex)
  617. return
  618.  
  619. mouseController.AttachObject(self, player.SLOT_TYPE_SKILL, srcSlotIndex, selectedSkillIndex)
  620.  
  621. else:
  622.  
  623. mouseController.DeattachObject()
  624.  
  625. def SelectEmptySlot(self, SlotIndex):
  626. mouseModule.mouseController.DeattachObject()
  627.  
  628. ## ToolTip
  629. def OverInItem(self, slotNumber):
  630.  
  631. if mouseModule.mouseController.isAttached():
  632. return
  633.  
  634. if 0 == self.toolTipSkill:
  635. return
  636.  
  637. srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotNumber)
  638. skillIndex = player.GetSkillIndex(srcSlotIndex)
  639. skillLevel = player.GetSkillLevel(srcSlotIndex)
  640. skillGrade = player.GetSkillGrade(srcSlotIndex)
  641. skillType = skill.GetSkillType(skillIndex)
  642.  
  643. ## ACTIVE
  644. if skill.SKILL_TYPE_ACTIVE == skillType:
  645. overInSkillGrade = self.__GetSkillGradeFromSlot(slotNumber)
  646.  
  647. if overInSkillGrade == skill.SKILL_GRADE_COUNT-1 and skillGrade == skill.SKILL_GRADE_COUNT:
  648. self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, skillGrade, skillLevel)
  649. elif overInSkillGrade == skillGrade:
  650. self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, overInSkillGrade, skillLevel)
  651. else:
  652. self.toolTipSkill.SetSkillOnlyName(srcSlotIndex, skillIndex, overInSkillGrade)
  653.  
  654. else:
  655. self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, skillGrade, skillLevel)
  656.  
  657. def OverOutItem(self):
  658. if 0 != self.toolTipSkill:
  659. self.toolTipSkill.HideToolTip()
  660.  
  661. ## Quest
  662. def __SelectQuest(self, slotIndex):
  663. questIndex = quest.GetQuestIndex(self.questShowingStartIndex+slotIndex)
  664.  
  665. import event
  666. event.QuestButtonClick(-2147483648 + questIndex)
  667.  
  668. def RefreshQuest(self):
  669.  
  670. if self.isLoaded==0:
  671. return
  672.  
  673. questCount = quest.GetQuestCount()
  674. questRange = range(quest.QUEST_MAX_NUM)
  675.  
  676. if questCount > quest.QUEST_MAX_NUM:
  677. self.questScrollBar.Show()
  678. else:
  679. self.questScrollBar.Hide()
  680.  
  681. for i in questRange[:questCount]:
  682. (questName, questIcon, questCounterName, questCounterValue) = quest.GetQuestData(self.questShowingStartIndex+i)
  683.  
  684. # start colored scrolls
  685. if questName[0] == '*':
  686. questName = questName[1:]
  687. elif questName[0] == '&':
  688. questName = questName[1:]
  689. elif questName[0] == '~':
  690. questName = questName[1:]
  691. elif questName[0] == '+':
  692. questName = questName[1:]
  693. # end colored scrolls
  694.  
  695. self.questNameList[i].SetText(questName)
  696. self.questNameList[i].Show()
  697. self.questLastCountList[i].Show()
  698. self.questLastTimeList[i].Show()
  699.  
  700. if len(questCounterName) > 0:
  701. self.questLastCountList[i].SetText("%s : %d" % (questCounterName, questCounterValue))
  702. else:
  703. self.questLastCountList[i].SetText("")
  704.  
  705. ## Icon
  706. self.questSlot.SetSlot(i, i, 1, 1, questIcon)
  707.  
  708. for i in questRange[questCount:]:
  709. self.questNameList[i].Hide()
  710. self.questLastTimeList[i].Hide()
  711. self.questLastCountList[i].Hide()
  712. self.questSlot.ClearSlot(i)
  713. self.questSlot.HideSlotBaseImage(i)
  714.  
  715. self.__UpdateQuestClock()
  716.  
  717. def __UpdateQuestClock(self):
  718. if "QUEST" == self.state:
  719. # QUEST_LIMIT_COUNT_BUG_FIX
  720. for i in xrange(min(quest.GetQuestCount(), quest.QUEST_MAX_NUM)):
  721. # END_OF_QUEST_LIMIT_COUNT_BUG_FIX
  722. (lastName, lastTime) = quest.GetQuestLastTime(i)
  723.  
  724. clockText = localeInfo.QUEST_UNLIMITED_TIME
  725. if len(lastName) > 0:
  726.  
  727. if lastTime <= 0:
  728. clockText = localeInfo.QUEST_TIMEOVER
  729.  
  730. else:
  731. questLastMinute = lastTime / 60
  732. questLastSecond = lastTime % 60
  733.  
  734. clockText = lastName + " : "
  735.  
  736. if questLastMinute > 0:
  737. clockText += str(questLastMinute) + localeInfo.QUEST_MIN
  738. if questLastSecond > 0:
  739. clockText += " "
  740.  
  741. if questLastSecond > 0:
  742. clockText += str(questLastSecond) + localeInfo.QUEST_SEC
  743.  
  744. self.questLastTimeList[i].SetText(clockText)
  745.  
  746. def __GetStatMinusPoint(self):
  747. POINT_STAT_RESET_COUNT = 112
  748. return player.GetStatus(POINT_STAT_RESET_COUNT)
  749.  
  750. def __OverInStatMinusButton(self, stat):
  751. try:
  752. self.__ShowStatToolTip(self.STAT_MINUS_DESCRIPTION[stat] % self.__GetStatMinusPoint())
  753. except KeyError:
  754. pass
  755.  
  756. self.refreshToolTip = lambda arg=stat: self.__OverInStatMinusButton(arg)
  757.  
  758. def __OverOutStatMinusButton(self):
  759. self.__HideStatToolTip()
  760. self.refreshToolTip = 0
  761.  
  762. def __OverInStatButton(self, stat):
  763. try:
  764. self.__ShowStatToolTip(self.STAT_DESCRIPTION[stat])
  765. except KeyError:
  766. pass
  767.  
  768. def __OverOutStatButton(self):
  769. self.__HideStatToolTip()
  770.  
  771. def __ShowStatToolTip(self, statDesc):
  772. self.toolTip.ClearToolTip()
  773. self.toolTip.AppendTextLine(statDesc)
  774. self.toolTip.Show()
  775.  
  776. def __HideStatToolTip(self):
  777. self.toolTip.Hide()
  778.  
  779. def OnPressEscapeKey(self):
  780. self.Close()
  781. return TRUE
  782.  
  783. def OnUpdate(self):
  784. self.__UpdateQuestClock()
  785.  
  786. ## Skill Process
  787. def __RefreshSkillPage(self, name, slotCount):
  788. global SHOW_LIMIT_SUPPORT_SKILL_LIST
  789.  
  790. skillPage = self.skillPageDict[name]
  791.  
  792. startSlotIndex = skillPage.GetStartIndex()
  793. if "ACTIVE" == name:
  794. if self.PAGE_HORSE == self.curSelectedSkillGroup:
  795. startSlotIndex += slotCount
  796.  
  797. getSkillType=skill.GetSkillType
  798. getSkillIndex=player.GetSkillIndex
  799. getSkillGrade=player.GetSkillGrade
  800. getSkillLevel=player.GetSkillLevel
  801. getSkillLevelUpPoint=skill.GetSkillLevelUpPoint
  802. getSkillMaxLevel=skill.GetSkillMaxLevel
  803. for i in xrange(slotCount+1):
  804.  
  805. slotIndex = i + startSlotIndex
  806. skillIndex = getSkillIndex(slotIndex)
  807.  
  808. for j in xrange(skill.SKILL_GRADE_COUNT):
  809. skillPage.ClearSlot(self.__GetRealSkillSlot(j, i))
  810.  
  811. if 0 == skillIndex:
  812. continue
  813.  
  814. skillGrade = getSkillGrade(slotIndex)
  815. skillLevel = getSkillLevel(slotIndex)
  816. skillType = getSkillType(skillIndex)
  817.  
  818. ## ½Â¸¶ ½ºÅ³ ¿¹¿Ü ó¸®
  819. if player.SKILL_INDEX_RIDING == skillIndex:
  820. if 1 == skillGrade:
  821. skillLevel += 19
  822. elif 2 == skillGrade:
  823. skillLevel += 29
  824. elif 3 == skillGrade:
  825. skillLevel = 40
  826.  
  827. skillPage.SetSkillSlotNew(slotIndex, skillIndex, max(skillLevel-1, 0), skillLevel)
  828. skillPage.SetSlotCount(slotIndex, skillLevel)
  829.  
  830. ## ACTIVE
  831. elif skill.SKILL_TYPE_ACTIVE == skillType:
  832. for j in xrange(skill.SKILL_GRADE_COUNT):
  833. realSlotIndex = self.__GetRealSkillSlot(j, slotIndex)
  834. skillPage.SetSkillSlotNew(realSlotIndex, skillIndex, j, skillLevel)
  835. skillPage.SetCoverButton(realSlotIndex)
  836.  
  837. if (skillGrade == skill.SKILL_GRADE_COUNT) and j == (skill.SKILL_GRADE_COUNT-1):
  838. skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
  839. elif (not self.__CanUseSkillNow()) or (skillGrade != j):
  840. skillPage.SetSlotCount(realSlotIndex, 0)
  841. skillPage.DisableCoverButton(realSlotIndex)
  842. else:
  843. skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
  844.  
  845. ## ±×¿Ü
  846. else:
  847. if not SHOW_LIMIT_SUPPORT_SKILL_LIST or skillIndex in SHOW_LIMIT_SUPPORT_SKILL_LIST:
  848. realSlotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
  849. skillPage.SetSkillSlot(realSlotIndex, skillIndex, skillLevel)
  850. skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
  851.  
  852. if skill.CanUseSkill(skillIndex):
  853. skillPage.SetCoverButton(realSlotIndex)
  854.  
  855. skillPage.RefreshSlot()
  856.  
  857.  
  858. def RefreshSkill(self):
  859.  
  860. if self.isLoaded==0:
  861. return
  862.  
  863. if self.__IsChangedHorseRidingSkillLevel():
  864. self.RefreshCharacter()
  865. return
  866.  
  867.  
  868. global SHOW_ONLY_ACTIVE_SKILL
  869. if SHOW_ONLY_ACTIVE_SKILL:
  870. self.__RefreshSkillPage("ACTIVE", self.ACTIVE_PAGE_SLOT_COUNT)
  871. else:
  872. self.__RefreshSkillPage("ACTIVE", self.ACTIVE_PAGE_SLOT_COUNT)
  873. self.__RefreshSkillPage("SUPPORT", self.SUPPORT_PAGE_SLOT_COUNT)
  874.  
  875. self.RefreshSkillPlusButtonList()
  876.  
  877. def CanShowPlusButton(self, skillIndex, skillLevel, curStatPoint):
  878.  
  879. ## ½ºÅ³ÀÌ ÀÖÀ¸¸é
  880. if 0 == skillIndex:
  881. return FALSE
  882.  
  883. ## ·¹º§¾÷ Á¶°ÇÀ» ¸¸Á·ÇÑ´Ù¸é
  884. if not skill.CanLevelUpSkill(skillIndex, skillLevel):
  885. return FALSE
  886.  
  887. return TRUE
  888.  
  889. def __RefreshSkillPlusButton(self, name):
  890. global HIDE_SUPPORT_SKILL_POINT
  891. if HIDE_SUPPORT_SKILL_POINT and "SUPPORT" == name:
  892. return
  893.  
  894. slotWindow = self.skillPageDict[name]
  895. slotWindow.HideAllSlotButton()
  896.  
  897. slotStatType = self.skillPageStatDict[name]
  898. if 0 == slotStatType:
  899. return
  900.  
  901. statPoint = player.GetStatus(slotStatType)
  902. startSlotIndex = slotWindow.GetStartIndex()
  903. if "HORSE" == name:
  904. startSlotIndex += self.ACTIVE_PAGE_SLOT_COUNT
  905.  
  906. if statPoint > 0:
  907. for i in xrange(self.PAGE_SLOT_COUNT):
  908. slotIndex = i + startSlotIndex
  909. skillIndex = player.GetSkillIndex(slotIndex)
  910. skillGrade = player.GetSkillGrade(slotIndex)
  911. skillLevel = player.GetSkillLevel(slotIndex)
  912.  
  913. if skillIndex == 0:
  914. continue
  915. if skillGrade != 0:
  916. continue
  917.  
  918. if name == "HORSE":
  919. if player.GetStatus(player.LEVEL) >= skill.GetSkillLevelLimit(skillIndex):
  920. if skillLevel < 20:
  921. slotWindow.ShowSlotButton(self.__GetETCSkillRealSlotIndex(slotIndex))
  922.  
  923. else:
  924. if "SUPPORT" == name:
  925. if not SHOW_LIMIT_SUPPORT_SKILL_LIST or skillIndex in SHOW_LIMIT_SUPPORT_SKILL_LIST:
  926. if self.CanShowPlusButton(skillIndex, skillLevel, statPoint):
  927. slotWindow.ShowSlotButton(slotIndex)
  928. else:
  929. if self.CanShowPlusButton(skillIndex, skillLevel, statPoint):
  930. slotWindow.ShowSlotButton(slotIndex)
  931.  
  932.  
  933. def RefreshSkillPlusButtonList(self):
  934.  
  935. if self.isLoaded==0:
  936. return
  937.  
  938. self.RefreshSkillPlusPointLabel()
  939.  
  940. if not self.__CanUseSkillNow():
  941. return
  942.  
  943. try:
  944. if self.PAGE_HORSE == self.curSelectedSkillGroup:
  945. self.__RefreshSkillPlusButton("HORSE")
  946. else:
  947. self.__RefreshSkillPlusButton("ACTIVE")
  948.  
  949. self.__RefreshSkillPlusButton("SUPPORT")
  950.  
  951. except:
  952. import exception
  953. exception.Abort("CharacterWindow.RefreshSkillPlusButtonList.BindObject")
  954.  
  955. def RefreshSkillPlusPointLabel(self):
  956. if self.isLoaded==0:
  957. return
  958.  
  959. if self.PAGE_HORSE == self.curSelectedSkillGroup:
  960. activeStatPoint = player.GetStatus(player.SKILL_HORSE)
  961. self.activeSkillPointValue.SetText(str(activeStatPoint))
  962.  
  963. else:
  964. activeStatPoint = player.GetStatus(player.SKILL_ACTIVE)
  965. self.activeSkillPointValue.SetText(str(activeStatPoint))
  966.  
  967. supportStatPoint = max(0, player.GetStatus(player.SKILL_SUPPORT))
  968. self.supportSkillPointValue.SetText(str(supportStatPoint))
  969.  
  970. ## Skill Level Up Button
  971. def OnPressedSlotButton(self, slotNumber):
  972. srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotNumber)
  973.  
  974. skillIndex = player.GetSkillIndex(srcSlotIndex)
  975. curLevel = player.GetSkillLevel(srcSlotIndex)
  976. maxLevel = skill.GetSkillMaxLevel(skillIndex)
  977.  
  978. net.SendChatPacket("/skillup " + str(skillIndex))
  979.  
  980. ## Use Skill
  981. def ClickSkillSlot(self, slotIndex):
  982.  
  983. srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotIndex)
  984. skillIndex = player.GetSkillIndex(srcSlotIndex)
  985. skillType = skill.GetSkillType(skillIndex)
  986.  
  987. if not self.__CanUseSkillNow():
  988. if skill.SKILL_TYPE_ACTIVE == skillType:
  989. return
  990.  
  991. for slotWindow in self.skillPageDict.values():
  992. if slotWindow.HasSlot(slotIndex):
  993. if skill.CanUseSkill(skillIndex):
  994. player.ClickSkillSlot(srcSlotIndex)
  995. return
  996.  
  997. mouseModule.mouseController.DeattachObject()
  998.  
  999. ## FIXME : ½ºÅ³À» »ç¿ëÇßÀ»¶§ ½½·Ô ¹øÈ£¸¦ °¡Áö°í ÇØ´ç ½½·ÔÀ» ã¾Æ¼­ ¾÷µ¥ÀÌÆ® ÇÑ´Ù.
  1000. ## ¸Å¿ì ºÒÇÕ¸®. ±¸Á¶ ÀÚü¸¦ °³¼±ÇØ¾ß ÇÒµí.
  1001. def OnUseSkill(self, slotIndex, coolTime):
  1002.  
  1003. skillIndex = player.GetSkillIndex(slotIndex)
  1004. skillType = skill.GetSkillType(skillIndex)
  1005.  
  1006. ## ACTIVE
  1007. if skill.SKILL_TYPE_ACTIVE == skillType:
  1008. skillGrade = player.GetSkillGrade(slotIndex)
  1009. slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
  1010. ## ETC
  1011. else:
  1012. slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
  1013.  
  1014. for slotWindow in self.skillPageDict.values():
  1015. if slotWindow.HasSlot(slotIndex):
  1016. slotWindow.SetSlotCoolTime(slotIndex, coolTime)
  1017. return
  1018.  
  1019. def OnActivateSkill(self, slotIndex):
  1020.  
  1021. skillGrade = player.GetSkillGrade(slotIndex)
  1022. slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
  1023.  
  1024. for slotWindow in self.skillPageDict.values():
  1025. if slotWindow.HasSlot(slotIndex):
  1026. slotWindow.ActivateSlot(slotIndex)
  1027. return
  1028.  
  1029. def OnDeactivateSkill(self, slotIndex):
  1030.  
  1031. skillGrade = player.GetSkillGrade(slotIndex)
  1032. slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
  1033.  
  1034. for slotWindow in self.skillPageDict.values():
  1035. if slotWindow.HasSlot(slotIndex):
  1036. slotWindow.DeactivateSlot(slotIndex)
  1037. return
  1038.  
  1039. def __ShowJobToolTip(self):
  1040. self.toolTipJob.ShowToolTip()
  1041.  
  1042. def __HideJobToolTip(self):
  1043. self.toolTipJob.HideToolTip()
  1044.  
  1045. def __SetJobText(self, mainJob, subJob):
  1046. if player.GetStatus(player.LEVEL)<5:
  1047. subJob=0
  1048.  
  1049. if 949 == app.GetDefaultCodePage():
  1050. self.toolTipJob.ClearToolTip()
  1051.  
  1052. try:
  1053. jobInfoTitle=localeInfo.JOBINFO_TITLE[mainJob][subJob]
  1054. jobInfoData=localeInfo.JOBINFO_DATA_LIST[mainJob][subJob]
  1055. except IndexError:
  1056. print "uiCharacter.CharacterWindow.__SetJobText(mainJob=%d, subJob=%d)" % (mainJob, subJob)
  1057. return
  1058.  
  1059. self.toolTipJob.AutoAppendTextLine(jobInfoTitle)
  1060. self.toolTipJob.AppendSpace(5)
  1061.  
  1062. for jobInfoDataLine in jobInfoData:
  1063. self.toolTipJob.AutoAppendTextLine(jobInfoDataLine)
  1064.  
  1065. self.toolTipJob.AlignHorizonalCenter()
  1066.  
  1067. def __ShowAlignmentToolTip(self):
  1068. self.toolTipAlignment.ShowToolTip()
  1069.  
  1070. def __HideAlignmentToolTip(self):
  1071. self.toolTipAlignment.HideToolTip()
  1072.  
  1073. def RefreshCharacter(self):
  1074.  
  1075. if self.isLoaded==0:
  1076. return
  1077.  
  1078. ## Name
  1079. try:
  1080. characterName = player.GetName()
  1081. guildName = player.GetGuildName()
  1082. self.characterNameValue.SetText(characterName)
  1083. self.guildNameValue.SetText(guildName)
  1084. if not guildName:
  1085. if localeInfo.IsARABIC():
  1086. self.characterNameSlot.SetPosition(190, 34)
  1087. else:
  1088. self.characterNameSlot.SetPosition(109, 34)
  1089.  
  1090. self.guildNameSlot.Hide()
  1091. else:
  1092. if localeInfo.IsJAPAN():
  1093. self.characterNameSlot.SetPosition(143, 34)
  1094. else:
  1095. self.characterNameSlot.SetPosition(153, 34)
  1096. self.guildNameSlot.Show()
  1097. except:
  1098. import exception
  1099. exception.Abort("CharacterWindow.RefreshCharacter.BindObject")
  1100.  
  1101. race = net.GetMainActorRace()
  1102. group = net.GetMainActorSkillGroup()
  1103. empire = net.GetMainActorEmpire()
  1104.  
  1105. ## Job Text
  1106. job = chr.RaceToJob(race)
  1107. self.__SetJobText(job, group)
  1108.  
  1109. ## FaceImage
  1110. try:
  1111. faceImageName = FACE_IMAGE_DICT[race]
  1112.  
  1113. try:
  1114. self.faceImage.LoadImage(faceImageName)
  1115. except:
  1116. print "CharacterWindow.RefreshCharacter(race=%d, faceImageName=%s)" % (race, faceImageName)
  1117. self.faceImage.Hide()
  1118.  
  1119. except KeyError:
  1120. self.faceImage.Hide()
  1121.  
  1122. ## GroupName
  1123. self.__SetSkillGroupName(race, group)
  1124.  
  1125. ## Skill
  1126. if 0 == group:
  1127. self.__SelectSkillGroup(0)
  1128.  
  1129. else:
  1130. self.__SetSkillSlotData(race, group, empire)
  1131.  
  1132. if self.__CanUseHorseSkill():
  1133. self.__SelectSkillGroup(0)
  1134.  
  1135. def __SetSkillGroupName(self, race, group):
  1136.  
  1137. job = chr.RaceToJob(race)
  1138.  
  1139. if not self.SKILL_GROUP_NAME_DICT.has_key(job):
  1140. return
  1141.  
  1142. if(race == 8):
  1143. nameList = self.SKILL_GROUP_NAME_DICT[4]
  1144.  
  1145. if 0 == group:
  1146. self.skillGroupButton1.SetText(nameList[1])
  1147. self.skillGroupButton2.SetText(nameList[2])
  1148. self.skillGroupButton1.Show()
  1149. self.skillGroupButton2.Hide()
  1150. self.activeSkillGroupName.Hide()
  1151.  
  1152. else:
  1153.  
  1154. if self.__CanUseHorseSkill():
  1155. self.activeSkillGroupName.Hide()
  1156. self.skillGroupButton1.SetText(nameList.get(group, "Noname"))
  1157. self.skillGroupButton2.SetText(localeInfo.SKILL_GROUP_HORSE)
  1158. self.skillGroupButton1.Show()
  1159. self.skillGroupButton2.Show()
  1160. else:
  1161. self.activeSkillGroupName.SetText(nameList.get(group, "Noname"))
  1162. self.activeSkillGroupName.Show()
  1163. self.skillGroupButton1.Hide()
  1164. self.skillGroupButton2.Hide()
  1165. else:
  1166. nameList = self.SKILL_GROUP_NAME_DICT[job]
  1167.  
  1168. if 0 == group:
  1169. self.skillGroupButton1.SetText(nameList[1])
  1170. self.skillGroupButton2.SetText(nameList[2])
  1171. self.skillGroupButton1.Show()
  1172. self.skillGroupButton2.Show()
  1173. self.activeSkillGroupName.Hide()
  1174.  
  1175. else:
  1176.  
  1177. if self.__CanUseHorseSkill():
  1178. self.activeSkillGroupName.Hide()
  1179. self.skillGroupButton1.SetText(nameList.get(group, "Noname"))
  1180. self.skillGroupButton2.SetText(localeInfo.SKILL_GROUP_HORSE)
  1181. self.skillGroupButton1.Show()
  1182. self.skillGroupButton2.Show()
  1183.  
  1184. else:
  1185. self.activeSkillGroupName.SetText(nameList.get(group, "Noname"))
  1186. self.activeSkillGroupName.Show()
  1187. self.skillGroupButton1.Hide()
  1188. self.skillGroupButton2.Hide()
  1189.  
  1190. def __SetSkillSlotData(self, race, group, empire=0):
  1191.  
  1192. ## SkillIndex
  1193. playerSettingModule.RegisterSkill(race, group, empire)
  1194.  
  1195. ## Event
  1196. self.__SetSkillSlotEvent()
  1197.  
  1198. ## Refresh
  1199. self.RefreshSkill()
  1200.  
  1201. def __SelectSkillGroup(self, index):
  1202. for btn in self.skillGroupButton:
  1203. btn.SetUp()
  1204. self.skillGroupButton[index].Down()
  1205.  
  1206. if self.__CanUseHorseSkill():
  1207. if 0 == index:
  1208. index = net.GetMainActorSkillGroup()-1
  1209. elif 1 == index:
  1210. index = self.PAGE_HORSE
  1211.  
  1212. self.curSelectedSkillGroup = index
  1213. self.__SetSkillSlotData(net.GetMainActorRace(), index+1, net.GetMainActorEmpire())
  1214.  
  1215. def __CanUseSkillNow(self):
  1216. if 0 == net.GetMainActorSkillGroup():
  1217. return FALSE
  1218.  
  1219. return TRUE
  1220.  
  1221. def __CanUseHorseSkill(self):
  1222.  
  1223. slotIndex = player.GetSkillSlotIndex(player.SKILL_INDEX_RIDING)
  1224.  
  1225. if not slotIndex:
  1226. return FALSE
  1227.  
  1228. grade = player.GetSkillGrade(slotIndex)
  1229. level = player.GetSkillLevel(slotIndex)
  1230. if level < 0:
  1231. level *= -1
  1232. if grade >= 1 and level >= 1:
  1233. return TRUE
  1234.  
  1235. return FALSE
  1236.  
  1237. def __IsChangedHorseRidingSkillLevel(self):
  1238. ret = FALSE
  1239.  
  1240. if -1 == self.canUseHorseSkill:
  1241. self.canUseHorseSkill = self.__CanUseHorseSkill()
  1242.  
  1243. if self.canUseHorseSkill != self.__CanUseHorseSkill():
  1244. ret = TRUE
  1245.  
  1246. self.canUseHorseSkill = self.__CanUseHorseSkill()
  1247. return ret
  1248.  
  1249. def __GetRealSkillSlot(self, skillGrade, skillSlot):
  1250. return skillSlot + min(skill.SKILL_GRADE_COUNT-1, skillGrade)*skill.SKILL_GRADE_STEP_COUNT
  1251.  
  1252. def __GetETCSkillRealSlotIndex(self, skillSlot):
  1253. if skillSlot > 100:
  1254. return skillSlot
  1255. return skillSlot % self.ACTIVE_PAGE_SLOT_COUNT
  1256.  
  1257. def __RealSkillSlotToSourceSlot(self, realSkillSlot):
  1258. if realSkillSlot > 100:
  1259. return realSkillSlot
  1260. if self.PAGE_HORSE == self.curSelectedSkillGroup:
  1261. return realSkillSlot + self.ACTIVE_PAGE_SLOT_COUNT
  1262. return realSkillSlot % skill.SKILL_GRADE_STEP_COUNT
  1263.  
  1264. def __GetSkillGradeFromSlot(self, skillSlot):
  1265. return int(skillSlot / skill.SKILL_GRADE_STEP_COUNT)
  1266.  
  1267. def SelectSkillGroup(self, index):
  1268. self.__SelectSkillGroup(index)
  1269.  
  1270. def OnQuestScroll(self):
  1271. questCount = quest.GetQuestCount()
  1272. scrollLineCount = max(0, questCount - quest.QUEST_MAX_NUM)
  1273. startIndex = int(scrollLineCount * self.questScrollBar.GetPos())
  1274.  
  1275. if startIndex != self.questShowingStartIndex:
  1276. self.questShowingStartIndex = startIndex
  1277. self.RefreshQuest()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement