Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 53.20 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. import grp
  19. #REDDEV_MULTI_BONUS_SHOWER
  20. import item
  21. import chat
  22. #ENDOF_REDDEV_MULTI_BONUS_SHOWER
  23.  
  24. SHOW_ONLY_ACTIVE_SKILL = False
  25. SHOW_LIMIT_SUPPORT_SKILL_LIST = []
  26. HIDE_SUPPORT_SKILL_POINT = False
  27.  
  28. if localeInfo.IsYMIR():
  29. SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140,141,142]
  30. if not localeInfo.IsCHEONMA():
  31. HIDE_SUPPORT_SKILL_POINT = True
  32. SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140,141,142]
  33. elif localeInfo.IsJAPAN() or (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/ca") and (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/br"):
  34. HIDE_SUPPORT_SKILL_POINT = True
  35. SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140]
  36. else:
  37. HIDE_SUPPORT_SKILL_POINT = True
  38.  
  39. FACE_IMAGE_DICT = {
  40. playersettingmodule.RACE_WARRIOR_M : "icon/face/warrior_m.tga",
  41. playersettingmodule.RACE_WARRIOR_W : "icon/face/warrior_w.tga",
  42. playersettingmodule.RACE_ASSASSIN_M : "icon/face/assassin_m.tga",
  43. playersettingmodule.RACE_ASSASSIN_W : "icon/face/assassin_w.tga",
  44. playersettingmodule.RACE_SURA_M : "icon/face/sura_m.tga",
  45. playersettingmodule.RACE_SURA_W : "icon/face/sura_w.tga",
  46. playersettingmodule.RACE_SHAMAN_M : "icon/face/shaman_m.tga",
  47. playersettingmodule.RACE_SHAMAN_W : "icon/face/shaman_w.tga",
  48. }
  49. # if app.ENABLE_WOLFMAN_CHARACTER:
  50. # FACE_IMAGE_DICT.update({playersettingmodule.RACE_WOLFMAN_M : "icon/face/wolfman_m.tga",})
  51.  
  52. def unsigned32(n):
  53. return n & 0xFFFFFFFFL
  54.  
  55. class CharacterWindow(ui.ScriptWindow):
  56.  
  57. ACTIVE_PAGE_SLOT_COUNT = 8
  58. SUPPORT_PAGE_SLOT_COUNT = 12
  59.  
  60. PAGE_SLOT_COUNT = 12
  61. PAGE_HORSE = 2
  62.  
  63. SKILL_GROUP_NAME_DICT = {
  64. playersettingmodule.JOB_WARRIOR : { 1 : localeInfo.SKILL_GROUP_WARRIOR_1, 2 : localeInfo.SKILL_GROUP_WARRIOR_2, },
  65. playersettingmodule.JOB_ASSASSIN : { 1 : localeInfo.SKILL_GROUP_ASSASSIN_1, 2 : localeInfo.SKILL_GROUP_ASSASSIN_2, },
  66. playersettingmodule.JOB_SURA : { 1 : localeInfo.SKILL_GROUP_SURA_1, 2 : localeInfo.SKILL_GROUP_SURA_2, },
  67. playersettingmodule.JOB_SHAMAN : { 1 : localeInfo.SKILL_GROUP_SHAMAN_1, 2 : localeInfo.SKILL_GROUP_SHAMAN_2, },
  68. }
  69. # if app.ENABLE_WOLFMAN_CHARACTER:
  70. # SKILL_GROUP_NAME_DICT.update({playersettingmodule.JOB_WOLFMAN : { 1 : localeInfo.JOB_WOLFMAN1, 2 : localeInfo.JOB_WOLFMAN2, },})
  71.  
  72. STAT_DESCRIPTION = {
  73. "HTH" : localeInfo.STAT_TOOLTIP_CON,
  74. "INT" : localeInfo.STAT_TOOLTIP_INT,
  75. "STR" : localeInfo.STAT_TOOLTIP_STR,
  76. "DEX" : localeInfo.STAT_TOOLTIP_DEX,
  77. }
  78.  
  79.  
  80. STAT_MINUS_DESCRIPTION = localeInfo.STAT_MINUS_DESCRIPTION
  81.  
  82. def __init__(self):
  83. ui.ScriptWindow.__init__(self)
  84. self.state = "STATUS"
  85. self.isLoaded = 0
  86. self.interface = None
  87.  
  88. self.toolTipSkill = 0
  89. self.lastUpdate3 = 0
  90.  
  91. self.__Initialize()
  92. self.__LoadWindow()
  93.  
  94. self.statusPlusCommandDict={
  95. "HTH" : "/stat ht",
  96. "INT" : "/stat iq",
  97. "STR" : "/stat st",
  98. "DEX" : "/stat dx",
  99. }
  100.  
  101. self.statusMinusCommandDict={
  102. "HTH-" : "/stat- ht",
  103. "INT-" : "/stat- iq",
  104. "STR-" : "/stat- st",
  105. "DEX-" : "/stat- dx",
  106. }
  107.  
  108. def __del__(self):
  109. ui.ScriptWindow.__del__(self)
  110.  
  111. def __Initialize(self):
  112. self.refreshToolTip = 0
  113. self.curSelectedSkillGroup = 0
  114. self.canUseHorseSkill = -1
  115.  
  116. self.toolTip = None
  117. self.toolTipJob = None
  118. self.toolTipAlignment = None
  119. self.toolTipSkill = None
  120.  
  121. self.faceImage = None
  122. self.statusPlusLabel = None
  123. self.statusPlusValue = None
  124. self.activeSlot = None
  125. self.tabDict = None
  126. self.tabButtonDict = None
  127. self.pageDict = None
  128. self.titleBarDict = None
  129. self.statusPlusButtonDict = None
  130. self.statusMinusButtonDict = None
  131.  
  132. self.skillPageDict = None
  133. self.questShowingStartIndex = 0
  134. self.questScrollBar = None
  135. self.questSlot = None
  136. self.questNameList = None
  137. self.questLastTimeList = None
  138. self.questLastCountList = None
  139. #REDDEV_NEW_QUEST_LISTING
  140. self.actualQuestList = {}
  141. self.additionalY = 0
  142. self.countersList = []
  143. self.timersList = []
  144. self.markedQuests = []
  145. #ENDOF_REDDEV_NEW_QUEST_LISTING
  146. self.skillGroupButton = ()
  147.  
  148. self.activeSlot = None
  149. self.activeSkillPointValue = None
  150. self.supportSkillPointValue = None
  151. self.skillGroupButton1 = None
  152. self.skillGroupButton2 = None
  153. self.activeSkillGroupName = None
  154.  
  155. self.guildNameSlot = None
  156. self.guildNameValue = None
  157. self.characterNameSlot = None
  158. self.characterNameValue = None
  159.  
  160. self.emotionToolTip = None
  161. self.soloEmotionSlot = None
  162. self.dualEmotionSlot = None
  163.  
  164. self.boardWindow = None
  165. #REDDEV_MULTIBONUS_SHOW
  166. self.actualSubPage = 0
  167. #ENDOF_REDDEV_MULTIBONUS
  168.  
  169. def Show(self):
  170. self.__LoadWindow()
  171.  
  172. ui.ScriptWindow.Show(self)
  173.  
  174. def __LoadScript(self, fileName):
  175. pyScrLoader = ui.PythonScriptLoader()
  176. pyScrLoader.LoadScriptFile(self, fileName)
  177.  
  178. def __BindObject(self):
  179. self.toolTip = uiToolTip.ToolTip()
  180. self.toolTipJob = uiToolTip.ToolTip()
  181. self.toolTipAlignment = uiToolTip.ToolTip(130)
  182.  
  183. self.faceImage = self.GetChild("Face_Image")
  184.  
  185. faceSlot=self.GetChild("Face_Slot")
  186. if 949 == app.GetDefaultCodePage():
  187. faceSlot.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowJobToolTip)
  188. faceSlot.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideJobToolTip)
  189.  
  190. self.statusPlusLabel = self.GetChild("Status_Plus_Label")
  191. self.statusPlusValue = self.GetChild("Status_Plus_Value")
  192.  
  193. self.characterNameSlot = self.GetChild("Character_Name_Slot")
  194. self.characterNameValue = self.GetChild("Character_Name")
  195. self.guildNameSlot = self.GetChild("Guild_Name_Slot")
  196. self.guildNameValue = self.GetChild("Guild_Name")
  197. self.characterNameSlot.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowAlignmentToolTip)
  198. self.characterNameSlot.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideAlignmentToolTip)
  199.  
  200. self.activeSlot = self.GetChild("Skill_Active_Slot")
  201. self.activeSkillPointValue = self.GetChild("Active_Skill_Point_Value")
  202. self.supportSkillPointValue = self.GetChild("Support_Skill_Point_Value")
  203. self.skillGroupButton1 = self.GetChild("Skill_Group_Button_1")
  204. self.skillGroupButton2 = self.GetChild("Skill_Group_Button_2")
  205. self.activeSkillGroupName = self.GetChild("Active_Skill_Group_Name")
  206.  
  207. self.tabDict = {
  208. "STATUS" : self.GetChild("Tab_01"),
  209. "SKILL" : self.GetChild("Tab_02"),
  210. "EMOTICON" : self.GetChild("Tab_03"),
  211. "QUEST" : self.GetChild("Tab_04"),
  212. }
  213.  
  214. self.tabButtonDict = {
  215. "STATUS" : self.GetChild("Tab_Button_01"),
  216. "SKILL" : self.GetChild("Tab_Button_02"),
  217. "EMOTICON" : self.GetChild("Tab_Button_03"),
  218. "QUEST" : self.GetChild("Tab_Button_04")
  219. }
  220.  
  221. self.pageDict = {
  222. "STATUS" : self.GetChild("Character_Page"),
  223. "SKILL" : self.GetChild("Skill_Page"),
  224. "EMOTICON" : self.GetChild("Emoticon_Page"),
  225. "QUEST" : self.GetChild("Quest_Page")
  226. }
  227.  
  228. self.titleBarDict = {
  229. "STATUS" : self.GetChild("Character_TitleBar"),
  230. "SKILL" : self.GetChild("Skill_TitleBar"),
  231. "EMOTICON" : self.GetChild("Emoticon_TitleBar"),
  232. "QUEST" : self.GetChild("Quest_TitleBar")
  233. }
  234.  
  235. self.statusPlusButtonDict = {
  236. "HTH" : self.GetChild("HTH_Plus"),
  237. "INT" : self.GetChild("INT_Plus"),
  238. "STR" : self.GetChild("STR_Plus"),
  239. "DEX" : self.GetChild("DEX_Plus"),
  240. }
  241.  
  242. self.statusMinusButtonDict = {
  243. "HTH-" : self.GetChild("HTH_Minus"),
  244. "INT-" : self.GetChild("INT_Minus"),
  245. "STR-" : self.GetChild("STR_Minus"),
  246. "DEX-" : self.GetChild("DEX_Minus"),
  247. }
  248.  
  249. self.skillPageDict = {
  250. "ACTIVE" : self.GetChild("Skill_Active_Slot"),
  251. "SUPPORT" : self.GetChild("Skill_ETC_Slot"),
  252. "HORSE" : self.GetChild("Skill_Active_Slot"),
  253. }
  254.  
  255. self.skillPageStatDict = {
  256. "SUPPORT" : player.SKILL_SUPPORT,
  257. "ACTIVE" : player.SKILL_ACTIVE,
  258. "HORSE" : player.SKILL_HORSE,
  259. }
  260.  
  261. self.skillGroupButton = (
  262. self.GetChild("Skill_Group_Button_1"),
  263. self.GetChild("Skill_Group_Button_2"),
  264. )
  265.  
  266.  
  267. global SHOW_ONLY_ACTIVE_SKILL
  268. global HIDE_SUPPORT_SKILL_POINT
  269. if SHOW_ONLY_ACTIVE_SKILL or HIDE_SUPPORT_SKILL_POINT:
  270. self.GetChild("Support_Skill_Point_Label").Hide()
  271.  
  272. self.soloEmotionSlot = self.GetChild("SoloEmotionSlot")
  273. self.dualEmotionSlot = self.GetChild("DualEmotionSlot")
  274. self.__SetEmotionSlot()
  275.  
  276. self.questShowingStartIndex = 0
  277. self.questScrollBar = self.GetChild("Quest_ScrollBar")
  278. self.questScrollBar.SetScrollEvent(ui.__mem_func__(self.OnQuestScroll))
  279. # REDDEV_NEW_QUEST_LISTING
  280. #self.questSlot = self.GetChild("Quest_Slot")
  281. #for i in xrange(quest.QUEST_MAX_NUM):
  282. # self.questSlot.HideSlotBaseImage(i)
  283. # self.questSlot.SetCoverButton(i,\
  284. # "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  285. # "d:/ymir work/ui/game/quest/slot_button_02.sub",\
  286. # "d:/ymir work/ui/game/quest/slot_button_03.sub",\
  287. # "d:/ymir work/ui/game/quest/slot_button_03.sub", True)
  288. #
  289. #self.questNameList = []
  290. #self.questLastTimeList = []
  291. #self.questLastCountList = []
  292. #for i in xrange(quest.QUEST_MAX_NUM):
  293. # self.questNameList.append(self.GetChild("Quest_Name_0" + str(i)))
  294. # self.questLastTimeList.append(self.GetChild("Quest_LastTime_0" + str(i)))
  295. # self.questLastCountList.append(self.GetChild("Quest_LastCount_0" + str(i)))
  296. # ENDOF_REDDEV_NEW_QUEST_LISTING
  297.  
  298. #REDDEV_MULTIBONUS
  299. self.subPageText01 = ui.TextLine()
  300. self.subPageText01.SetFontName(localeInfo.UI_DEF_FONT_BTN)
  301. self.subPageText01.SetPackedFontColor(0xffffffff)
  302. self.subPageText01.SetParent(self.GetChild("Status_Extent"))
  303. self.subPageText01.SetPosition(11,35)
  304.  
  305. self.subPageText02 = ui.TextLine()
  306. self.subPageText02.SetFontName(localeInfo.UI_DEF_FONT_BTN)
  307. self.subPageText02.SetPackedFontColor(0xffffffff)
  308. self.subPageText02.SetParent(self.GetChild("Status_Extent"))
  309. self.subPageText02.SetPosition(11,33+23+2)
  310.  
  311. self.subPageText03 = ui.TextLine()
  312. self.subPageText03.SetFontName(localeInfo.UI_DEF_FONT_BTN)
  313. self.subPageText03.SetPackedFontColor(0xffffffff)
  314. self.subPageText03.SetParent(self.GetChild("Status_Extent"))
  315. self.subPageText03.SetPosition(11,33+46+2)
  316.  
  317. self.subPageText04 = ui.TextLine()
  318. self.subPageText04.SetFontName(localeInfo.UI_DEF_FONT_BTN)
  319. self.subPageText04.SetPackedFontColor(0xffffffff)
  320. self.subPageText04.SetParent(self.GetChild("Status_Extent"))
  321. self.subPageText04.SetPosition(128,35)
  322.  
  323. self.subPageText05 = ui.TextLine()
  324. self.subPageText05.SetFontName(localeInfo.UI_DEF_FONT_BTN)
  325. self.subPageText05.SetPackedFontColor(0xffffffff)
  326. self.subPageText05.SetParent(self.GetChild("Status_Extent"))
  327. self.subPageText05.SetPosition(128,33+23+2)
  328.  
  329. self.subPageText06 = ui.TextLine()
  330. self.subPageText06.SetFontName(localeInfo.UI_DEF_FONT_BTN)
  331. self.subPageText06.SetPackedFontColor(0xffffffff)
  332. self.subPageText06.SetParent(self.GetChild("Status_Extent"))
  333. self.subPageText06.SetPosition(128,33+46+2)
  334. #ENDOF_REDDEV_MULTI_BONUS_SHOWER
  335.  
  336. def __SetSkillSlotEvent(self):
  337. for skillPageValue in self.skillPageDict.itervalues():
  338. skillPageValue.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
  339. skillPageValue.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectSkill))
  340. skillPageValue.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  341. skillPageValue.SetUnselectItemSlotEvent(ui.__mem_func__(self.ClickSkillSlot))
  342. skillPageValue.SetUseSlotEvent(ui.__mem_func__(self.ClickSkillSlot))
  343. skillPageValue.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  344. skillPageValue.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  345. skillPageValue.SetPressedSlotButtonEvent(ui.__mem_func__(self.OnPressedSlotButton))
  346. skillPageValue.AppendSlotButton("d:/ymir work/ui/game/windows/btn_plus_up.sub",\
  347. "d:/ymir work/ui/game/windows/btn_plus_over.sub",\
  348. "d:/ymir work/ui/game/windows/btn_plus_down.sub")
  349.  
  350. def __SetEmotionSlot(self):
  351.  
  352. self.emotionToolTip = uiToolTip.ToolTip()
  353.  
  354. for slot in (self.soloEmotionSlot, self.dualEmotionSlot):
  355. slot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
  356. slot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectEmotion))
  357. slot.SetUnselectItemSlotEvent(ui.__mem_func__(self.__ClickEmotionSlot))
  358. slot.SetUseSlotEvent(ui.__mem_func__(self.__ClickEmotionSlot))
  359. slot.SetOverInItemEvent(ui.__mem_func__(self.__OverInEmotion))
  360. slot.SetOverOutItemEvent(ui.__mem_func__(self.__OverOutEmotion))
  361. slot.AppendSlotButton("d:/ymir work/ui/game/windows/btn_plus_up.sub",\
  362. "d:/ymir work/ui/game/windows/btn_plus_over.sub",\
  363. "d:/ymir work/ui/game/windows/btn_plus_down.sub")
  364.  
  365. for slotIdx, datadict in emotion.EMOTION_DICT.items():
  366. emotionIdx = slotIdx
  367.  
  368. slot = self.soloEmotionSlot
  369. if slotIdx > 50:
  370. slot = self.dualEmotionSlot
  371.  
  372. slot.SetEmotionSlot(slotIdx, emotionIdx)
  373. slot.SetCoverButton(slotIdx)
  374.  
  375. def __SelectEmotion(self, slotIndex):
  376. if not slotIndex in emotion.EMOTION_DICT:
  377. return
  378.  
  379. if app.IsPressed(app.DIK_LCONTROL):
  380. player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_EMOTION, slotIndex)
  381. return
  382.  
  383. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_EMOTION, slotIndex, slotIndex)
  384.  
  385. def __ClickEmotionSlot(self, slotIndex):
  386. print "click emotion"
  387. if not slotIndex in emotion.EMOTION_DICT:
  388. return
  389.  
  390. print "check acting"
  391. if player.IsActingEmotion():
  392. return
  393.  
  394. command = emotion.EMOTION_DICT[slotIndex]["command"]
  395. print "command", command
  396. if self.lastUpdate3 < app.GetGlobalTime():
  397. self.lastUpdate3=app.GetGlobalTime()+5000 # 5 secunde
  398. if slotIndex > 50:
  399. vid = player.GetTargetVID()
  400.  
  401. if 0 == vid or vid == player.GetMainCharacterIndex() or chr.IsNPC(vid) or chr.IsEnemy(vid):
  402. import chat
  403. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EMOTION_CHOOSE_ONE)
  404. return
  405.  
  406. command += " " + chr.GetNameByVID(vid)
  407.  
  408. print "send_command", command
  409. net.SendChatPacket(command)
  410. import chat
  411. chat.AppendChat(chat.CHAT_TYPE_INFO, "Asteapta 5 secunde pentru a folosi emotia din nou.")
  412.  
  413. def ActEmotion(self, emotionIndex):
  414. self.__ClickEmotionSlot(emotionIndex)
  415.  
  416. def __OverInEmotion(self, slotIndex):
  417. if self.emotionToolTip:
  418.  
  419. if not slotIndex in emotion.EMOTION_DICT:
  420. return
  421.  
  422. self.emotionToolTip.ClearToolTip()
  423. self.emotionToolTip.SetTitle(emotion.EMOTION_DICT[slotIndex]["name"])
  424. self.emotionToolTip.AlignHorizonalCenter()
  425. self.emotionToolTip.ShowToolTip()
  426.  
  427. def __OverOutEmotion(self):
  428. if self.emotionToolTip:
  429. self.emotionToolTip.HideToolTip()
  430.  
  431. def __BindEvent(self):
  432. for i in xrange(len(self.skillGroupButton)):
  433. self.skillGroupButton[i].SetEvent(lambda arg=i: self.__SelectSkillGroup(arg))
  434.  
  435. self.RefreshQuest()
  436. self.__HideJobToolTip()
  437.  
  438. for (tabKey, tabButton) in self.tabButtonDict.items():
  439. tabButton.SetEvent(ui.__mem_func__(self.__OnClickTabButton), tabKey)
  440.  
  441. for (statusPlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
  442. statusPlusButton.SAFE_SetEvent(self.__OnClickStatusPlusButton, statusPlusKey)
  443. statusPlusButton.ShowToolTip = lambda arg=statusPlusKey: self.__OverInStatButton(arg)
  444. statusPlusButton.HideToolTip = lambda arg=statusPlusKey: self.__OverOutStatButton()
  445.  
  446. for (statusMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
  447. statusMinusButton.SAFE_SetEvent(self.__OnClickStatusMinusButton, statusMinusKey)
  448. statusMinusButton.ShowToolTip = lambda arg=statusMinusKey: self.__OverInStatMinusButton(arg)
  449. statusMinusButton.HideToolTip = lambda arg=statusMinusKey: self.__OverOutStatMinusButton()
  450.  
  451. for titleBarValue in self.titleBarDict.itervalues():
  452. titleBarValue.SetCloseEvent(ui.__mem_func__(self.Hide))
  453.  
  454. #REDDEV_NEW_QUEST_LISTING
  455. #self.questSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectQuest))
  456. #ENDOF_REDDEV_NEW_QUEST_LISTING
  457.  
  458. #REDDEV_MULTI_BONUS_SHOWER
  459. for i in xrange(5):
  460. self.GetChild("SubPage"+str(i)).SetEvent(ui.__mem_func__(self.switchSubPage), i)
  461.  
  462. def switchSubPage(self, num):
  463. for i in xrange(5):
  464. if i!=num:
  465. self.GetChild("SubPage"+str(i)).SetUp()
  466. if num==0:
  467. self.GetChild("Status_Extent_ItemList1").Show()
  468. self.GetChild("Status_Extent_ItemList2").Show()
  469. self.subPageText01.Hide()
  470. self.subPageText02.Hide()
  471. self.subPageText03.Hide()
  472. self.subPageText04.Hide()
  473. self.subPageText05.Hide()
  474. self.subPageText06.Hide()
  475. elif num==1:
  476. self.GetChild("Status_Extent_ItemList1").Hide()
  477. self.GetChild("Status_Extent_ItemList2").Hide()
  478. self.subPageText01.SetText("Ap. sabie:")
  479. self.subPageText01.Show()
  480. self.subPageText02.SetText("Ap. 2maini:")
  481. self.subPageText02.Show()
  482. self.subPageText03.SetText("Ap. pumnal:")
  483. self.subPageText03.Show()
  484. self.subPageText04.SetText("Ap. sageti:")
  485. self.subPageText04.Show()
  486. self.subPageText05.SetText("Ap. evantai:")
  487. self.subPageText05.Show()
  488. self.subPageText06.SetText("Rez. magie:")
  489. self.subPageText06.Show()
  490. elif num==2:
  491. self.GetChild("Status_Extent_ItemList1").Hide()
  492. self.GetChild("Status_Extent_ItemList2").Hide()
  493. self.subPageText01.SetText("Vs. semi-om:")
  494. self.subPageText01.Show()
  495. self.subPageText02.SetText("Critica:")
  496. self.subPageText02.Show()
  497. self.subPageText03.SetText("Patrundere:")
  498. self.subPageText03.Show()
  499. self.subPageText04.SetText("Vs. monstrii:")
  500. self.subPageText04.Show()
  501. self.subPageText05.SetText("Naucire:")
  502. self.subPageText05.Show()
  503. self.subPageText06.SetText("Otravire:")
  504. self.subPageText06.Show()
  505.  
  506. elif num==3:
  507. self.GetChild("Status_Extent_ItemList1").Hide()
  508. self.GetChild("Status_Extent_ItemList2").Hide()
  509. self.subPageText01.SetText("Anti razb:")
  510. self.subPageText01.Show()
  511. self.subPageText02.SetText("Anti ninja:")
  512. self.subPageText02.Show()
  513. self.subPageText03.SetText("Anti sura:")
  514. self.subPageText03.Show()
  515. self.subPageText04.SetText("Anti saman:")
  516. self.subPageText04.Show()
  517. self.subPageText05.SetText("Absorb. PV:")
  518. self.subPageText05.Show()
  519. self.subPageText06.SetText("Absorb. PM:")
  520. self.subPageText06.Show()
  521.  
  522. elif num==4:
  523. self.GetChild("Status_Extent_ItemList1").Hide()
  524. self.GetChild("Status_Extent_ItemList2").Hide()
  525. self.subPageText01.SetText("Rez. razb:")
  526. self.subPageText01.Show()
  527. self.subPageText02.SetText("Rez. ninja:")
  528. self.subPageText02.Show()
  529. self.subPageText03.SetText("Rez. sura:")
  530. self.subPageText03.Show()
  531. self.subPageText04.SetText("Rez. saman:")
  532. self.subPageText04.Show()
  533. self.subPageText05.SetText("Blocare:")
  534. self.subPageText05.Show()
  535. self.subPageText06.SetText("Medie:")
  536. self.subPageText06.Show()
  537.  
  538. if num < 0 or num > 4:
  539. num = 0
  540. self.actualSubPage = num
  541. self.RefreshStatus()
  542. #ENDOF_REDDEV_MULTI_BONUS_SHOWER
  543.  
  544. def __LoadWindow(self):
  545. if self.isLoaded == 1:
  546. return
  547.  
  548. self.isLoaded = 1
  549.  
  550. try:
  551. if localeInfo.IsARABIC() or localeInfo.IsVIETNAM() or localeInfo.IsJAPAN():
  552. self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "CharacterWindow.py")
  553. else:
  554. self.__LoadScript("UIScript/CharacterWindow.py")
  555.  
  556. self.__BindObject()
  557. self.__BindEvent()
  558. except:
  559. import exception
  560. exception.Abort("CharacterWindow.__LoadWindow")
  561.  
  562. #self.tabButtonDict["EMOTICON"].Disable()
  563. self.SetState("STATUS")
  564.  
  565. def Destroy(self):
  566. self.ClearDictionary()
  567.  
  568. self.__Initialize()
  569.  
  570. def Close(self):
  571. if 0 != self.toolTipSkill:
  572. self.toolTipSkill.Hide()
  573.  
  574. self.Hide()
  575.  
  576. def SetSkillToolTip(self, toolTipSkill):
  577. self.toolTipSkill = toolTipSkill
  578.  
  579. def __OnClickStatusPlusButton(self, statusKey):
  580. try:
  581. statusPlusCommand=self.statusPlusCommandDict[statusKey]
  582. net.SendChatPacket(statusPlusCommand)
  583. except KeyError, msg:
  584. dbg.TraceError("CharacterWindow.__OnClickStatusPlusButton KeyError: %s", msg)
  585.  
  586. def __OnClickStatusMinusButton(self, statusKey):
  587. try:
  588. statusMinusCommand=self.statusMinusCommandDict[statusKey]
  589. net.SendChatPacket(statusMinusCommand)
  590. except KeyError, msg:
  591. dbg.TraceError("CharacterWindow.__OnClickStatusMinusButton KeyError: %s", msg)
  592.  
  593.  
  594. def __OnClickTabButton(self, stateKey):
  595. self.SetState(stateKey)
  596.  
  597. def SetState(self, stateKey):
  598.  
  599. self.state = stateKey
  600.  
  601. for (tabKey, tabButton) in self.tabButtonDict.items():
  602. if stateKey!=tabKey:
  603. tabButton.SetUp()
  604.  
  605. for tabValue in self.tabDict.itervalues():
  606. tabValue.Hide()
  607.  
  608. for pageValue in self.pageDict.itervalues():
  609. pageValue.Hide()
  610.  
  611. for titleBarValue in self.titleBarDict.itervalues():
  612. titleBarValue.Hide()
  613.  
  614. self.titleBarDict[stateKey].Show()
  615. self.tabDict[stateKey].Show()
  616. self.pageDict[stateKey].Show()
  617.  
  618. #REDDEV_NEW_QUEST_LISTING
  619. if stateKey == 'QUEST':
  620. self.RefreshQuest()
  621. #ENDOF_REDDEV_NEW_QUEST_LISTING
  622.  
  623.  
  624. def GetState(self):
  625. return self.state
  626.  
  627. def __GetTotalAtkText(self):
  628. minAtk=player.GetStatus(player.ATT_MIN)
  629. maxAtk=player.GetStatus(player.ATT_MAX)
  630. atkBonus=player.GetStatus(player.ATT_BONUS)
  631. attackerBonus=player.GetStatus(player.ATTACKER_BONUS)
  632.  
  633. if minAtk==maxAtk:
  634. return "%d" % (minAtk+atkBonus+attackerBonus)
  635. else:
  636. return "%d-%d" % (minAtk+atkBonus+attackerBonus, maxAtk+atkBonus+attackerBonus)
  637.  
  638. def __GetTotalMagAtkText(self):
  639. minMagAtk=player.GetStatus(player.MAG_ATT)+player.GetStatus(player.MIN_MAGIC_WEP)
  640. maxMagAtk=player.GetStatus(player.MAG_ATT)+player.GetStatus(player.MAX_MAGIC_WEP)
  641.  
  642. if minMagAtk==maxMagAtk:
  643. return "%d" % (minMagAtk)
  644. else:
  645. return "%d-%d" % (minMagAtk, maxMagAtk)
  646.  
  647. def __GetTotalDefText(self):
  648. defValue=player.GetStatus(player.DEF_GRADE)
  649. if constInfo.ADD_DEF_BONUS_ENABLE:
  650. defValue+=player.GetStatus(player.DEF_BONUS)
  651. return "%d" % (defValue)
  652.  
  653. def RefreshStatus(self):
  654. if self.isLoaded==0:
  655. return
  656.  
  657. try:
  658. self.GetChild("Level_Value").SetText(str(player.GetStatus(player.LEVEL)))
  659. self.GetChild("Exp_Value").SetText(str(unsigned32(player.GetEXP())))
  660. self.GetChild("RestExp_Value").SetText(str(unsigned32(player.GetStatus(player.NEXT_EXP)) - unsigned32(player.GetStatus(player.EXP))))
  661. self.GetChild("HP_Value").SetText(str(player.GetStatus(player.HP)) + '/' + str(player.GetStatus(player.MAX_HP)))
  662. self.GetChild("SP_Value").SetText(str(player.GetStatus(player.SP)) + '/' + str(player.GetStatus(player.MAX_SP)))
  663.  
  664. self.GetChild("STR_Value").SetText(str(player.GetStatus(player.ST)))
  665. self.GetChild("DEX_Value").SetText(str(player.GetStatus(player.DX)))
  666. self.GetChild("HTH_Value").SetText(str(player.GetStatus(player.HT)))
  667. self.GetChild("INT_Value").SetText(str(player.GetStatus(player.IQ)))
  668.  
  669. self.GetChild("ATT_Value").SetText(self.__GetTotalAtkText())
  670. self.GetChild("DEF_Value").SetText(self.__GetTotalDefText())
  671.  
  672. #REDDEV_MULTI_BONUS_SHOWER
  673. #self.GetChild("MATT_Value").SetText(self.__GetTotalMagAtkText())
  674. #self.GetChild("MATT_Value").SetText(str(player.GetStatus(player.MAG_ATT)))
  675.  
  676. #self.GetChild("MDEF_Value").SetText(str(player.GetStatus(player.MAG_DEF)))
  677. #self.GetChild("ASPD_Value").SetText(str(player.GetStatus(player.ATT_SPEED)))
  678. #self.GetChild("MSPD_Value").SetText(str(player.GetStatus(player.MOVING_SPEED)))
  679. #self.GetChild("CSPD_Value").SetText(str(player.GetStatus(player.CASTING_SPEED)))
  680. #self.GetChild("ER_Value").SetText(str(player.GetStatus(player.EVADE_RATE)))
  681.  
  682. if self.actualSubPage == 0:
  683. self.GetChild("MATT_Value").SetText(self.__GetTotalMagAtkText())
  684. self.GetChild("MDEF_Value").SetText(str(player.GetStatus(player.MAG_DEF)))
  685. self.GetChild("ASPD_Value").SetText(str(player.GetStatus(player.ATT_SPEED)))
  686. self.GetChild("MSPD_Value").SetText(str(player.GetStatus(player.MOVING_SPEED)))
  687. self.GetChild("CSPD_Value").SetText(str(player.GetStatus(player.CASTING_SPEED)))
  688. self.GetChild("ER_Value").SetText(str(player.GetStatus(player.EVADE_RATE)))
  689. elif self.actualSubPage == 1:
  690. self.GetChild("MSPD_Value").SetText(str(player.GetStatus(69)) + str("%")) #Resist sword
  691. self.GetChild("ASPD_Value").SetText(str(player.GetStatus(70)) + str("%")) #Resist 2hand
  692. self.GetChild("CSPD_Value").SetText(str(player.GetStatus(71)) + str("%")) #Resist dagger
  693. self.GetChild("MATT_Value").SetText(str(player.GetStatus(74)) + str("%")) #Resist bow
  694. self.GetChild("MDEF_Value").SetText(str(player.GetStatus(73)) + str("%")) #Resist fan
  695. self.GetChild("ER_Value").SetText(str(player.GetStatus(77)) + str("%")) #Resist magic
  696. elif self.actualSubPage == 2:
  697. self.GetChild("MSPD_Value").SetText(str(player.GetStatus(43)) + str("%")) #Anti semi-om
  698. self.GetChild("ASPD_Value").SetText(str(player.GetStatus(40)) + str("%")) #Critical chance
  699. self.GetChild("CSPD_Value").SetText(str(player.GetStatus(41)) + str("%")) #Penetrate chance
  700. self.GetChild("MATT_Value").SetText(str(player.GetStatus(53)) + str("%")) #Anti mobs
  701. self.GetChild("MDEF_Value").SetText(str(player.GetStatus(38)) + str("%")) #Stun chance
  702. self.GetChild("ER_Value").SetText(str(player.GetStatus(37)) + str("%")) #Poison chance
  703.  
  704. elif self.actualSubPage == 3:
  705. self.GetChild("MSPD_Value").SetText(str(player.GetStatus(54)) + str("%")) #Anti Warrior
  706. self.GetChild("ASPD_Value").SetText(str(player.GetStatus(55)) + str("%")) #Anti Ninja
  707. self.GetChild("CSPD_Value").SetText(str(player.GetStatus(56)) + str("%")) #Anti sura
  708. self.GetChild("MATT_Value").SetText(str(player.GetStatus(57)) + str("%")) #Anti shaman
  709. self.GetChild("MDEF_Value").SetText(str(player.GetStatus(63)) + str("%")) #HP Steal
  710. self.GetChild("ER_Value").SetText(str(player.GetStatus(64)) + str("%")) #SP Steal
  711.  
  712. elif self.actualSubPage == 4:
  713. self.GetChild("MSPD_Value").SetText(str(player.GetStatus(59)) + str("%")) #Res warrior
  714. self.GetChild("ASPD_Value").SetText(str(player.GetStatus(60)) + str("%")) #res Ninja
  715. self.GetChild("CSPD_Value").SetText(str(player.GetStatus(61)) + str("%")) #res sura
  716. self.GetChild("MATT_Value").SetText(str(player.GetStatus(62)) + str("%")) #res shaman
  717. self.GetChild("MDEF_Value").SetText(str(player.GetStatus(67)) + str("%")) #Block
  718. self.GetChild("ER_Value").SetText(str(player.GetStatus(72)) + str("%")) #Paguba Medie
  719. else:
  720. pass
  721. #ENDOF_REDDEV_MULTI_BONUS_SHOWER
  722.  
  723. except:
  724. #import exception
  725. #exception.Abort("CharacterWindow.RefreshStatus.BindObject")
  726. ## 게임이 튕겨 버림
  727. pass
  728.  
  729. self.__RefreshStatusPlusButtonList()
  730. self.__RefreshStatusMinusButtonList()
  731. self.RefreshAlignment()
  732.  
  733. if self.refreshToolTip:
  734. self.refreshToolTip()
  735.  
  736. def __RefreshStatusPlusButtonList(self):
  737. if self.isLoaded==0:
  738. return
  739.  
  740. statusPlusPoint=player.GetStatus(player.STAT)
  741.  
  742. if statusPlusPoint>0:
  743. self.statusPlusValue.SetText(str(statusPlusPoint))
  744. self.statusPlusLabel.Show()
  745. self.ShowStatusPlusButtonList()
  746. else:
  747. self.statusPlusValue.SetText(str(0))
  748. self.statusPlusLabel.Hide()
  749. self.HideStatusPlusButtonList()
  750.  
  751. def __RefreshStatusMinusButtonList(self):
  752. if self.isLoaded==0:
  753. return
  754.  
  755. statusMinusPoint=self.__GetStatMinusPoint()
  756.  
  757. if statusMinusPoint>0:
  758. self.__ShowStatusMinusButtonList()
  759. else:
  760. self.__HideStatusMinusButtonList()
  761.  
  762. def RefreshAlignment(self):
  763. point, grade = player.GetAlignmentData()
  764.  
  765. import colorInfo
  766. COLOR_DICT = { 0 : colorInfo.TITLE_RGB_GOOD_4,
  767. 1 : colorInfo.TITLE_RGB_GOOD_3,
  768. 2 : colorInfo.TITLE_RGB_GOOD_2,
  769. 3 : colorInfo.TITLE_RGB_GOOD_1,
  770. 4 : colorInfo.TITLE_RGB_NORMAL,
  771. 5 : colorInfo.TITLE_RGB_EVIL_1,
  772. 6 : colorInfo.TITLE_RGB_EVIL_2,
  773. 7 : colorInfo.TITLE_RGB_EVIL_3,
  774. 8 : colorInfo.TITLE_RGB_EVIL_4, }
  775. colorList = COLOR_DICT.get(grade, colorInfo.TITLE_RGB_NORMAL)
  776. gradeColor = ui.GenerateColor(colorList[0], colorList[1], colorList[2])
  777.  
  778. self.toolTipAlignment.ClearToolTip()
  779. self.toolTipAlignment.AutoAppendTextLine(localeInfo.TITLE_NAME_LIST[grade], gradeColor)
  780. self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_NAME + str(point))
  781. self.toolTipAlignment.AlignHorizonalCenter()
  782.  
  783.  
  784. def __ShowStatusMinusButtonList(self):
  785. for (stateMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
  786. statusMinusButton.Show()
  787.  
  788. def __HideStatusMinusButtonList(self):
  789. for (stateMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
  790. statusMinusButton.Hide()
  791.  
  792. def ShowStatusPlusButtonList(self):
  793. for (statePlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
  794. statusPlusButton.Show()
  795.  
  796. def HideStatusPlusButtonList(self):
  797. for (statePlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
  798. statusPlusButton.Hide()
  799.  
  800. def SelectSkill(self, skillSlotIndex):
  801.  
  802. mouseController = mouseModule.mouseController
  803.  
  804. if False == mouseController.isAttached():
  805.  
  806. srcSlotIndex = self.__RealSkillSlotToSourceSlot(skillSlotIndex)
  807. selectedSkillIndex = player.GetSkillIndex(srcSlotIndex)
  808.  
  809. if skill.CanUseSkill(selectedSkillIndex):
  810.  
  811. if app.IsPressed(app.DIK_LCONTROL):
  812.  
  813. player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_SKILL, srcSlotIndex)
  814. return
  815.  
  816. mouseController.AttachObject(self, player.SLOT_TYPE_SKILL, srcSlotIndex, selectedSkillIndex)
  817.  
  818. else:
  819.  
  820. mouseController.DeattachObject()
  821.  
  822. def SelectEmptySlot(self, SlotIndex):
  823. mouseModule.mouseController.DeattachObject()
  824.  
  825. ## ToolTip
  826. def OverInItem(self, slotNumber):
  827. if mouseModule.mouseController.isAttached():
  828. return
  829.  
  830. if 0 == self.toolTipSkill:
  831. return
  832.  
  833. srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotNumber)
  834. skillIndex = player.GetSkillIndex(srcSlotIndex)
  835. skillLevel = player.GetSkillLevel(srcSlotIndex)
  836. skillGrade = player.GetSkillGrade(srcSlotIndex)
  837. skillType = skill.GetSkillType(skillIndex)
  838.  
  839. ## ACTIVE
  840. if skill.SKILL_TYPE_ACTIVE == skillType:
  841. overInSkillGrade = self.__GetSkillGradeFromSlot(slotNumber)
  842.  
  843. if overInSkillGrade == skill.SKILL_GRADE_COUNT-1 and skillGrade == skill.SKILL_GRADE_COUNT:
  844. self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, skillGrade, skillLevel)
  845. elif overInSkillGrade == skillGrade:
  846. if app.ENABLE_SKILLS_LEVEL_OVER_P and skillGrade == 2:
  847. self.toolTipSkill.SetSkillOnlyName(srcSlotIndex, skillIndex, overInSkillGrade + 1)
  848. else:
  849. self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, overInSkillGrade, skillLevel)
  850. elif app.ENABLE_SKILLS_LEVEL_OVER_P and overInSkillGrade == skill.SKILL_GRADE_COUNT-2 and skillGrade >= skill.SKILL_GRADE_COUNT-1:
  851. self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, skillGrade, skillLevel)
  852. else:
  853. if app.ENABLE_SKILLS_LEVEL_OVER_P and overInSkillGrade == 1 and skillGrade == 2:
  854. self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, overInSkillGrade + 1, skillLevel)
  855. elif app.ENABLE_SKILLS_LEVEL_OVER_P and overInSkillGrade == 2 and skillGrade < 3:
  856. self.toolTipSkill.SetSkillOnlyName(srcSlotIndex, skillIndex, overInSkillGrade + 1)
  857. else:
  858. self.toolTipSkill.SetSkillOnlyName(srcSlotIndex, skillIndex, overInSkillGrade)
  859. else:
  860. self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, skillGrade, skillLevel)
  861.  
  862. def OverOutItem(self):
  863. if 0 != self.toolTipSkill:
  864. self.toolTipSkill.HideToolTip()
  865.  
  866. ## Quest
  867. def __SelectQuest(self, slotIndex):
  868. questIndex = quest.GetQuestIndex(self.questShowingStartIndex+slotIndex)
  869.  
  870. #REDDEV_NEW_QUEST_LISTING
  871. if not questIndex in self.markedQuests:
  872. self.markedQuests.append(questIndex)
  873.  
  874. import event
  875. #event.QuestButtonClick(-2147483648 + questIndex)
  876. event.QuestButtonClick(questIndex)
  877. #ENDOF_REDDEV_NEW_QUEST_LISTING
  878.  
  879. ''' REDDEV_NEW_QUEST_LISTING
  880. def RefreshQuest(self):
  881.  
  882. if self.isLoaded==0:
  883. return
  884.  
  885. questCount = quest.GetQuestCount()
  886. questRange = range(quest.QUEST_MAX_NUM)
  887.  
  888. if questCount > quest.QUEST_MAX_NUM:
  889. self.questScrollBar.Show()
  890. else:
  891. self.questScrollBar.Hide()
  892.  
  893. for i in questRange[:questCount]:
  894. (questName, questIcon, questCounterName, questCounterValue) = quest.GetQuestData(self.questShowingStartIndex+i)
  895.  
  896. self.questNameList[i].SetText(questName)
  897. self.questNameList[i].Show()
  898. self.questLastCountList[i].Show()
  899. self.questLastTimeList[i].Show()
  900.  
  901. if len(questCounterName) > 0:
  902. self.questLastCountList[i].SetText("%s : %d" % (questCounterName, questCounterValue))
  903. else:
  904. self.questLastCountList[i].SetText("")
  905.  
  906. ## Icon
  907. self.questSlot.SetSlot(i, i, 1, 1, questIcon)
  908.  
  909. for i in questRange[questCount:]:
  910. self.questNameList[i].Hide()
  911. self.questLastTimeList[i].Hide()
  912. self.questLastCountList[i].Hide()
  913. self.questSlot.ClearSlot(i)
  914. self.questSlot.HideSlotBaseImage(i)
  915.  
  916. self.__UpdateQuestClock()
  917.  
  918. def __UpdateQuestClock(self):
  919. if "QUEST" == self.state:
  920. # QUEST_LIMIT_COUNT_BUG_FIX
  921. for i in xrange(min(quest.GetQuestCount(), quest.QUEST_MAX_NUM)):
  922. # END_OF_QUEST_LIMIT_COUNT_BUG_FIX
  923. (lastName, lastTime) = quest.GetQuestLastTime(i)
  924.  
  925. clockText = localeInfo.QUEST_UNLIMITED_TIME
  926. if len(lastName) > 0:
  927.  
  928. if lastTime <= 0:
  929. clockText = localeInfo.QUEST_TIMEOVER
  930.  
  931. else:
  932. questLastMinute = lastTime / 60
  933. questLastSecond = lastTime % 60
  934.  
  935. clockText = lastName + " : "
  936.  
  937. if questLastMinute > 0:
  938. clockText += str(questLastMinute) + localeInfo.QUEST_MIN
  939. if questLastSecond > 0:
  940. clockText += " "
  941.  
  942. if questLastSecond > 0:
  943. clockText += str(questLastSecond) + localeInfo.QUEST_SEC
  944.  
  945. self.questLastTimeList[i].SetText(clockText)
  946. ''' #ENDOF_REDDEV_NEW_QUEST_LISTING
  947.  
  948. #REDDEV_NEW_QUEST_LISTING
  949. def RefreshQuest(self):
  950.  
  951. if self.isLoaded==0:
  952. return
  953.  
  954. self.actualQuestList = {}
  955. for i in xrange(quest.QUEST_MAX_NUM):
  956. try:
  957. self.Pula[i].Hide()
  958. except:
  959. pass
  960. self.countersList = []
  961. self.timersList = []
  962.  
  963. questCount = quest.GetQuestCount()
  964. questRange = range(quest.QUEST_MAX_NUM)
  965.  
  966. page = self.GetChild("Quest_Page")
  967.  
  968.  
  969. if questCount > quest.QUEST_MAX_NUM:
  970. self.questScrollBar.Show()
  971. else:
  972. self.questScrollBar.Hide()
  973.  
  974. self.GetChild("Quest_Title").SetTextAlignLeft("Misiuni (" + str(questCount) + ")")
  975. actualList = quest.QUEST_MAX_NUM
  976. self.additionalY = 0
  977. for i in questRange[:questCount]:
  978. if i >= actualList:
  979. pass
  980. else:
  981. (questName, questIcon, questCounterName, questCounterValue) = quest.GetQuestData(self.questShowingStartIndex+i)
  982. (lastName, lastTime) = quest.GetQuestLastTime(self.questShowingStartIndex+i)
  983.  
  984. yPos = 25 + i * 20 + self.additionalY * 14
  985. questSlot = ui.ListBar()
  986. questSlot.SetParent(page)
  987. questSlot.MakeListBar(180, 1)
  988. questSlot.SetWidth(180)
  989. if quest.GetQuestIndex(self.questShowingStartIndex+i) in self.markedQuests:
  990. questSlot.OnClickEvent()
  991. questSlot.SetPosition(10, yPos)
  992. if questName[0] == "*":
  993. questSlot.SetTextAlignLeft(questName[1:])
  994. questSlot.SetTextColor(0xff85beea)
  995. elif questName[0] == "!":
  996. questSlot.SetTextAlignLeft(questName[1:])
  997. elif questName[0] == "+":
  998. questSlot.SetTextAlignLeft(questName[1:])
  999. questSlot.SetTextColor(0xffd760ff)
  1000. else:
  1001. questSlot.SetTextAlignLeft(questName)
  1002. questSlot.SetEvent(ui.__mem_func__(self.__SelectQuest), i)
  1003. self.actualQuestList[i] = questSlot
  1004. self.actualQuestList[i].Show()
  1005. hasCounter = False
  1006. if len(questCounterName) > 0:
  1007. targetsRemain = ui.TextLine()
  1008. targetsRemain.SetParent(page)
  1009. targetsRemain.SetText("%s: %d" % (questCounterName, questCounterValue))
  1010. targetsRemain.SetPosition(45, yPos+20)
  1011. targetsRemain.Show()
  1012. self.countersList.append(targetsRemain)
  1013. self.additionalY += 1
  1014. actualList -= 1
  1015. hasCounter = True
  1016.  
  1017. if len(lastName) > 0:
  1018.  
  1019. if lastTime <= 0:
  1020. clockText = localeInfo.QUEST_TIMEOVER
  1021.  
  1022. else:
  1023. questLastMinute = lastTime / 60
  1024. questLastSecond = lastTime % 60
  1025.  
  1026. clockText = lastName + ": "
  1027.  
  1028. if questLastMinute > 0:
  1029. clockText += str(questLastMinute) + localeInfo.QUEST_MIN
  1030. if questLastSecond > 0:
  1031. clockText += " "
  1032.  
  1033. if questLastSecond > 0:
  1034. clockText += str(questLastSecond) + localeInfo.QUEST_SEC
  1035.  
  1036. clock = ui.TextLine()
  1037. clock.SetParent(page)
  1038. clock.SetPosition(45, yPos+20 + int(hasCounter)*14)
  1039. clock.SetText(clockText)
  1040. clock.SetProperty("idx", self.questShowingStartIndex+i)
  1041. clock.Show()
  1042. self.timersList.append(clock)
  1043. self.additionalY += 1
  1044. actualList -= 1
  1045.  
  1046. self.__UpdateQuestClock()
  1047.  
  1048. def __UpdateQuestClock(self):
  1049. if "QUEST" == self.state:
  1050. for clock in self.timersList:
  1051. if not clock.GetProperty("idx"):
  1052. print "Invalid clock property"
  1053. return
  1054.  
  1055. (lastName, lastTime) = quest.GetQuestLastTime(clock.GetProperty("idx"))
  1056.  
  1057. clockText = localeInfo.QUEST_UNLIMITED_TIME
  1058. if len(lastName) > 0:
  1059.  
  1060. if lastTime <= 0:
  1061. clockText = localeInfo.QUEST_TIMEOVER
  1062.  
  1063. else:
  1064. questLastMinute = lastTime / 60
  1065. questLastSecond = lastTime % 60
  1066.  
  1067. clockText = lastName + ": "
  1068.  
  1069. if questLastMinute > 0:
  1070. clockText += str(questLastMinute) + localeInfo.QUEST_MIN
  1071. if questLastSecond > 0:
  1072. clockText += " "
  1073.  
  1074. if questLastSecond > 0:
  1075. clockText += str(questLastSecond) + localeInfo.QUEST_SEC
  1076.  
  1077. clock.SetText(clockText)
  1078. #ENDOF_REDDEV_NEW_QUEST_LISTING
  1079.  
  1080. def __GetStatMinusPoint(self):
  1081. POINT_STAT_RESET_COUNT = 112
  1082. return player.GetStatus(POINT_STAT_RESET_COUNT)
  1083.  
  1084. def __OverInStatMinusButton(self, stat):
  1085. try:
  1086. self.__ShowStatToolTip(self.STAT_MINUS_DESCRIPTION[stat] % self.__GetStatMinusPoint())
  1087. except KeyError:
  1088. pass
  1089.  
  1090. self.refreshToolTip = lambda arg=stat: self.__OverInStatMinusButton(arg)
  1091.  
  1092. def __OverOutStatMinusButton(self):
  1093. self.__HideStatToolTip()
  1094. self.refreshToolTip = 0
  1095.  
  1096. def __OverInStatButton(self, stat):
  1097. try:
  1098. self.__ShowStatToolTip(self.STAT_DESCRIPTION[stat])
  1099. except KeyError:
  1100. pass
  1101.  
  1102. def __OverOutStatButton(self):
  1103. self.__HideStatToolTip()
  1104.  
  1105. def __ShowStatToolTip(self, statDesc):
  1106. self.toolTip.ClearToolTip()
  1107. self.toolTip.AppendTextLine(statDesc)
  1108. self.toolTip.Show()
  1109.  
  1110. def __HideStatToolTip(self):
  1111. self.toolTip.Hide()
  1112.  
  1113. def OnPressEscapeKey(self):
  1114. self.Close()
  1115. return True
  1116.  
  1117. def OnUpdate(self):
  1118. self.__UpdateQuestClock()
  1119.  
  1120. ## Skill Process
  1121. def __RefreshSkillPage(self, name, slotCount):
  1122. global SHOW_LIMIT_SUPPORT_SKILL_LIST
  1123. skillPage = self.skillPageDict[name]
  1124. startSlotIndex = skillPage.GetStartIndex()
  1125. if "ACTIVE" == name:
  1126. if self.PAGE_HORSE == self.curSelectedSkillGroup:
  1127. startSlotIndex += slotCount
  1128.  
  1129. getSkillType=skill.GetSkillType
  1130. getSkillIndex=player.GetSkillIndex
  1131. getSkillGrade=player.GetSkillGrade
  1132. getSkillLevel=player.GetSkillLevel
  1133. getSkillLevelUpPoint=skill.GetSkillLevelUpPoint
  1134. getSkillMaxLevel=skill.GetSkillMaxLevel
  1135.  
  1136. if app.ENABLE_SKILLS_LEVEL_OVER_P:
  1137. refresh = 0
  1138.  
  1139. for i in xrange(slotCount+1):
  1140.  
  1141. slotIndex = i + startSlotIndex
  1142. skillIndex = getSkillIndex(slotIndex)
  1143. if not app.ENABLE_SKILLS_LEVEL_OVER_P:
  1144. for j in xrange(skill.SKILL_GRADE_COUNT):
  1145. skillPage.ClearSlot(self.__GetRealSkillSlot(j, i))
  1146. else:
  1147. if not refresh and skillIndex >= 137 and skillIndex <= 140:
  1148. for w in xrange(slotCount + 1):
  1149. for q in xrange(skill.SKILL_GRADE_COUNT):
  1150. skillPage.ClearSlot(self.__GetRealSkillSlot(q, w))
  1151.  
  1152. refresh = 1
  1153.  
  1154. if app.ENABLE_SKILLS_LEVEL_OVER_P:
  1155. if slotIndex == 7 or slotIndex == 8:
  1156. for j in xrange(skill.SKILL_GRADE_COUNT):
  1157. skillPage.ClearSlot(self.__GetRealSkillSlot(j, slotIndex))
  1158.  
  1159. if 0 == skillIndex:
  1160. continue
  1161.  
  1162. skillGrade = getSkillGrade(slotIndex)
  1163. skillLevel = getSkillLevel(slotIndex)
  1164. skillType = getSkillType(skillIndex)
  1165.  
  1166. if player.SKILL_INDEX_RIDING == skillIndex:
  1167. if app.ENABLE_SKILLS_LEVEL_OVER_P:
  1168. skGrade = 0
  1169. if skillLevel >= 11 and skillLevel < 20:
  1170. skGrade = 1
  1171. elif skillGrade == 1:
  1172. skGrade = 2
  1173.  
  1174. if 1 == skillGrade:
  1175. skillLevel += 19
  1176. elif 2 == skillGrade:
  1177. skillLevel += 29
  1178. elif 3 == skillGrade:
  1179. skillLevel = 40
  1180.  
  1181. if app.ENABLE_SKILLS_LEVEL_OVER_P:
  1182. skGr = max(skillLevel - 1, 0)
  1183. skGr = skGrade
  1184. skillPage.SetSkillSlotNew(slotIndex, skillIndex, skGr, skillLevel)
  1185. else:
  1186. skillPage.SetSkillSlotNew(slotIndex, skillIndex, max(skillLevel-1, 0), skillLevel)
  1187.  
  1188. skillPage.SetSlotCount(slotIndex, skillLevel)
  1189.  
  1190. ## ACTIVE
  1191. elif skill.SKILL_TYPE_ACTIVE == skillType:
  1192. for j in xrange(skill.SKILL_GRADE_COUNT):
  1193. if app.ENABLE_SKILLS_LEVEL_OVER_P:
  1194. if j == 2 and skillGrade == 1:
  1195. continue
  1196.  
  1197. realSlotIndex = self.__GetRealSkillSlot(j, slotIndex)
  1198. skillPage.SetSkillSlotNew(realSlotIndex, skillIndex, j, skillLevel)
  1199. skillPage.SetCoverButton(realSlotIndex)
  1200.  
  1201. if (skillGrade == skill.SKILL_GRADE_COUNT) and j == (skill.SKILL_GRADE_COUNT-1):
  1202. skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
  1203. elif (not self.__CanUseSkillNow()) or (skillGrade != j):
  1204. if app.ENABLE_SKILLS_LEVEL_OVER_P:
  1205. if j != 2 and skillGrade != 2:
  1206. skillPage.ClearSlot(realSlotIndex)
  1207. skillPage.SetSkillSlotNew(realSlotIndex, skillIndex, j, skillLevel)
  1208. skillPage.SetCoverButton(realSlotIndex)
  1209. elif skillGrade == 2 and j >= 3:
  1210. skillPage.ClearSlot(realSlotIndex)
  1211. skillPage.SetSkillSlotNew(realSlotIndex, skillIndex, j, skillLevel)
  1212. skillPage.SetCoverButton(realSlotIndex)
  1213.  
  1214. skillPage.SetSlotCount(realSlotIndex, 0)
  1215. skillPage.DisableCoverButton(realSlotIndex)
  1216. else:
  1217. skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
  1218. else:
  1219. if not SHOW_LIMIT_SUPPORT_SKILL_LIST or skillIndex in SHOW_LIMIT_SUPPORT_SKILL_LIST:
  1220. realSlotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
  1221. skillPage.SetSkillSlot(realSlotIndex, skillIndex, skillLevel)
  1222. skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
  1223. if skill.CanUseSkill(skillIndex):
  1224. skillPage.SetCoverButton(realSlotIndex)
  1225.  
  1226. skillPage.RefreshSlot()
  1227.  
  1228. def RefreshSkill(self):
  1229.  
  1230. if self.isLoaded==0:
  1231. return
  1232.  
  1233. if self.__IsChangedHorseRidingSkillLevel():
  1234. self.RefreshCharacter()
  1235. return
  1236.  
  1237.  
  1238. global SHOW_ONLY_ACTIVE_SKILL
  1239. if SHOW_ONLY_ACTIVE_SKILL:
  1240. self.__RefreshSkillPage("ACTIVE", self.ACTIVE_PAGE_SLOT_COUNT)
  1241. else:
  1242. self.__RefreshSkillPage("ACTIVE", self.ACTIVE_PAGE_SLOT_COUNT)
  1243. self.__RefreshSkillPage("SUPPORT", self.SUPPORT_PAGE_SLOT_COUNT)
  1244.  
  1245. self.RefreshSkillPlusButtonList()
  1246.  
  1247. def CanShowPlusButton(self, skillIndex, skillLevel, curStatPoint):
  1248.  
  1249. ## 스킬이 있으면
  1250. if 0 == skillIndex:
  1251. return False
  1252.  
  1253. ## 레벨업 조건을 만족한다면
  1254. if not skill.CanLevelUpSkill(skillIndex, skillLevel):
  1255. return False
  1256.  
  1257. return True
  1258.  
  1259. def __RefreshSkillPlusButton(self, name):
  1260. global HIDE_SUPPORT_SKILL_POINT
  1261. if HIDE_SUPPORT_SKILL_POINT and "SUPPORT" == name:
  1262. return
  1263.  
  1264. slotWindow = self.skillPageDict[name]
  1265. slotWindow.HideAllSlotButton()
  1266.  
  1267. slotStatType = self.skillPageStatDict[name]
  1268. if 0 == slotStatType:
  1269. return
  1270.  
  1271. statPoint = player.GetStatus(slotStatType)
  1272. startSlotIndex = slotWindow.GetStartIndex()
  1273. if "HORSE" == name:
  1274. startSlotIndex += self.ACTIVE_PAGE_SLOT_COUNT
  1275.  
  1276. if statPoint > 0:
  1277. for i in xrange(self.PAGE_SLOT_COUNT):
  1278. slotIndex = i + startSlotIndex
  1279. skillIndex = player.GetSkillIndex(slotIndex)
  1280. skillGrade = player.GetSkillGrade(slotIndex)
  1281. skillLevel = player.GetSkillLevel(slotIndex)
  1282.  
  1283. if skillIndex == 0:
  1284. continue
  1285. if skillGrade != 0:
  1286. continue
  1287.  
  1288. if name == "HORSE":
  1289. if player.GetStatus(player.LEVEL) >= skill.GetSkillLevelLimit(skillIndex):
  1290. if skillLevel < 20:
  1291. slotWindow.ShowSlotButton(self.__GetETCSkillRealSlotIndex(slotIndex))
  1292.  
  1293. else:
  1294. if "SUPPORT" == name:
  1295. if not SHOW_LIMIT_SUPPORT_SKILL_LIST or skillIndex in SHOW_LIMIT_SUPPORT_SKILL_LIST:
  1296. if self.CanShowPlusButton(skillIndex, skillLevel, statPoint):
  1297. slotWindow.ShowSlotButton(slotIndex)
  1298. else:
  1299. if self.CanShowPlusButton(skillIndex, skillLevel, statPoint):
  1300. slotWindow.ShowSlotButton(slotIndex)
  1301.  
  1302.  
  1303. def RefreshSkillPlusButtonList(self):
  1304.  
  1305. if self.isLoaded==0:
  1306. return
  1307.  
  1308. self.RefreshSkillPlusPointLabel()
  1309.  
  1310. if not self.__CanUseSkillNow():
  1311. return
  1312.  
  1313. try:
  1314. if self.PAGE_HORSE == self.curSelectedSkillGroup:
  1315. self.__RefreshSkillPlusButton("HORSE")
  1316. else:
  1317. self.__RefreshSkillPlusButton("ACTIVE")
  1318.  
  1319. self.__RefreshSkillPlusButton("SUPPORT")
  1320.  
  1321. except:
  1322. import exception
  1323. exception.Abort("CharacterWindow.RefreshSkillPlusButtonList.BindObject")
  1324.  
  1325. def RefreshSkillPlusPointLabel(self):
  1326. if self.isLoaded==0:
  1327. return
  1328.  
  1329. if self.PAGE_HORSE == self.curSelectedSkillGroup:
  1330. activeStatPoint = player.GetStatus(player.SKILL_HORSE)
  1331. self.activeSkillPointValue.SetText(str(activeStatPoint))
  1332.  
  1333. else:
  1334. activeStatPoint = player.GetStatus(player.SKILL_ACTIVE)
  1335. self.activeSkillPointValue.SetText(str(activeStatPoint))
  1336.  
  1337. supportStatPoint = max(0, player.GetStatus(player.SKILL_SUPPORT))
  1338. self.supportSkillPointValue.SetText(str(supportStatPoint))
  1339.  
  1340. ## Skill Level Up Button
  1341. def OnPressedSlotButton(self, slotNumber):
  1342. srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotNumber)
  1343.  
  1344. skillIndex = player.GetSkillIndex(srcSlotIndex)
  1345. curLevel = player.GetSkillLevel(srcSlotIndex)
  1346. maxLevel = skill.GetSkillMaxLevel(skillIndex)
  1347.  
  1348. net.SendChatPacket("/skillup " + str(skillIndex))
  1349.  
  1350. ## Use Skill
  1351. def ClickSkillSlot(self, slotIndex):
  1352.  
  1353. srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotIndex)
  1354. skillIndex = player.GetSkillIndex(srcSlotIndex)
  1355. skillType = skill.GetSkillType(skillIndex)
  1356.  
  1357. if not self.__CanUseSkillNow():
  1358. if skill.SKILL_TYPE_ACTIVE == skillType:
  1359. return
  1360.  
  1361. for slotWindow in self.skillPageDict.values():
  1362. if slotWindow.HasSlot(slotIndex):
  1363. if skill.CanUseSkill(skillIndex):
  1364. player.ClickSkillSlot(srcSlotIndex)
  1365. return
  1366.  
  1367. mouseModule.mouseController.DeattachObject()
  1368.  
  1369. ## FIXME : 스킬을 사용했을때 슬롯 번호를 가지고 해당 슬롯을 찾아서 업데이트 한다.
  1370. ## 매우 불합리. 구조 자체를 개선해야 할듯.
  1371. def OnUseSkill(self, slotIndex, coolTime):
  1372.  
  1373. skillIndex = player.GetSkillIndex(slotIndex)
  1374. skillType = skill.GetSkillType(skillIndex)
  1375.  
  1376. ## ACTIVE
  1377. if skill.SKILL_TYPE_ACTIVE == skillType:
  1378. skillGrade = player.GetSkillGrade(slotIndex)
  1379. slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
  1380. ## ETC
  1381. else:
  1382. slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
  1383.  
  1384. for slotWindow in self.skillPageDict.values():
  1385. if slotWindow.HasSlot(slotIndex):
  1386. slotWindow.SetSlotCoolTime(slotIndex, coolTime)
  1387. return
  1388.  
  1389. def OnActivateSkill(self, slotIndex):
  1390. skillGrade = player.GetSkillGrade(slotIndex)
  1391. slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
  1392. for slotWindow in self.skillPageDict.values():
  1393. if slotWindow.HasSlot(slotIndex):
  1394. if app.ENABLE_SASH_SYSTEM:
  1395. slotWindow.ActivateSlotOld(slotIndex)
  1396. else:
  1397. slotWindow.ActivateSlot(slotIndex)
  1398.  
  1399. return
  1400.  
  1401. def OnDeactivateSkill(self, slotIndex):
  1402. skillGrade = player.GetSkillGrade(slotIndex)
  1403. slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
  1404. for slotWindow in self.skillPageDict.values():
  1405. if slotWindow.HasSlot(slotIndex):
  1406. if app.ENABLE_SASH_SYSTEM:
  1407. slotWindow.DeactivateSlotOld(slotIndex)
  1408. else:
  1409. slotWindow.DeactivateSlot(slotIndex)
  1410.  
  1411. return
  1412.  
  1413. def __ShowJobToolTip(self):
  1414. self.toolTipJob.ShowToolTip()
  1415.  
  1416. def __HideJobToolTip(self):
  1417. self.toolTipJob.HideToolTip()
  1418.  
  1419. def __SetJobText(self, mainJob, subJob):
  1420. if player.GetStatus(player.LEVEL)<5:
  1421. subJob=0
  1422.  
  1423. if 949 == app.GetDefaultCodePage():
  1424. self.toolTipJob.ClearToolTip()
  1425.  
  1426. try:
  1427. jobInfoTitle=localeInfo.JOBINFO_TITLE[mainJob][subJob]
  1428. jobInfoData=localeInfo.JOBINFO_DATA_LIST[mainJob][subJob]
  1429. except IndexError:
  1430. print "uiCharacter.CharacterWindow.__SetJobText(mainJob=%d, subJob=%d)" % (mainJob, subJob)
  1431. return
  1432.  
  1433. self.toolTipJob.AutoAppendTextLine(jobInfoTitle)
  1434. self.toolTipJob.AppendSpace(5)
  1435.  
  1436. for jobInfoDataLine in jobInfoData:
  1437. self.toolTipJob.AutoAppendTextLine(jobInfoDataLine)
  1438.  
  1439. self.toolTipJob.AlignHorizonalCenter()
  1440.  
  1441. def __ShowAlignmentToolTip(self):
  1442. self.toolTipAlignment.ShowToolTip()
  1443.  
  1444. def __HideAlignmentToolTip(self):
  1445. self.toolTipAlignment.HideToolTip()
  1446.  
  1447. def RefreshCharacter(self):
  1448.  
  1449. if self.isLoaded==0:
  1450. return
  1451.  
  1452. ## Name
  1453. try:
  1454. characterName = player.GetName()
  1455. guildName = player.GetGuildName()
  1456. self.characterNameValue.SetText(characterName)
  1457. self.guildNameValue.SetText(guildName)
  1458. if not guildName:
  1459. if localeInfo.IsARABIC():
  1460. self.characterNameSlot.SetPosition(190, 34)
  1461. else:
  1462. self.characterNameSlot.SetPosition(109, 34)
  1463.  
  1464. self.guildNameSlot.Hide()
  1465. else:
  1466. if localeInfo.IsJAPAN():
  1467. self.characterNameSlot.SetPosition(143, 34)
  1468. else:
  1469. self.characterNameSlot.SetPosition(153, 34)
  1470. self.guildNameSlot.Show()
  1471. except:
  1472. import exception
  1473. exception.Abort("CharacterWindow.RefreshCharacter.BindObject")
  1474.  
  1475. race = net.GetMainActorRace()
  1476. group = net.GetMainActorSkillGroup()
  1477. empire = net.GetMainActorEmpire()
  1478.  
  1479. ## Job Text
  1480. job = chr.RaceToJob(race)
  1481. self.__SetJobText(job, group)
  1482.  
  1483. ## FaceImage
  1484. try:
  1485. faceImageName = FACE_IMAGE_DICT[race]
  1486.  
  1487. try:
  1488. self.faceImage.LoadImage(faceImageName)
  1489. except:
  1490. print "CharacterWindow.RefreshCharacter(race=%d, faceImageName=%s)" % (race, faceImageName)
  1491. self.faceImage.Hide()
  1492.  
  1493. except KeyError:
  1494. self.faceImage.Hide()
  1495.  
  1496. ## GroupName
  1497. self.__SetSkillGroupName(race, group)
  1498.  
  1499. ## Skill
  1500. if 0 == group:
  1501. self.__SelectSkillGroup(0)
  1502.  
  1503. else:
  1504. self.__SetSkillSlotData(race, group, empire)
  1505.  
  1506. if self.__CanUseHorseSkill():
  1507. self.__SelectSkillGroup(0)
  1508.  
  1509. def __SetSkillGroupName(self, race, group):
  1510.  
  1511. job = chr.RaceToJob(race)
  1512.  
  1513. if not self.SKILL_GROUP_NAME_DICT.has_key(job):
  1514. return
  1515.  
  1516. nameList = self.SKILL_GROUP_NAME_DICT[job]
  1517.  
  1518. if 0 == group:
  1519. self.skillGroupButton1.SetText(nameList[1])
  1520. self.skillGroupButton2.SetText(nameList[2])
  1521. self.skillGroupButton1.Show()
  1522. self.skillGroupButton2.Show()
  1523. self.activeSkillGroupName.Hide()
  1524.  
  1525. else:
  1526.  
  1527. if self.__CanUseHorseSkill():
  1528. self.activeSkillGroupName.Hide()
  1529. self.skillGroupButton1.SetText(nameList.get(group, "Noname"))
  1530. self.skillGroupButton2.SetText(localeInfo.SKILL_GROUP_HORSE)
  1531. self.skillGroupButton1.Show()
  1532. self.skillGroupButton2.Show()
  1533.  
  1534. else:
  1535. self.activeSkillGroupName.SetText(nameList.get(group, "Noname"))
  1536. self.activeSkillGroupName.Show()
  1537. self.skillGroupButton1.Hide()
  1538. self.skillGroupButton2.Hide()
  1539.  
  1540. def __SetSkillSlotData(self, race, group, empire=0):
  1541.  
  1542. ## SkillIndex
  1543. playersettingmodule.RegisterSkill(race, group, empire)
  1544.  
  1545. ## Event
  1546. self.__SetSkillSlotEvent()
  1547.  
  1548. ## Refresh
  1549. self.RefreshSkill()
  1550.  
  1551. def __SelectSkillGroup(self, index):
  1552. for btn in self.skillGroupButton:
  1553. btn.SetUp()
  1554. self.skillGroupButton[index].Down()
  1555.  
  1556. if self.__CanUseHorseSkill():
  1557. if 0 == index:
  1558. index = net.GetMainActorSkillGroup()-1
  1559. elif 1 == index:
  1560. index = self.PAGE_HORSE
  1561.  
  1562. self.curSelectedSkillGroup = index
  1563. self.__SetSkillSlotData(net.GetMainActorRace(), index+1, net.GetMainActorEmpire())
  1564.  
  1565. def __CanUseSkillNow(self):
  1566. if 0 == net.GetMainActorSkillGroup():
  1567. return False
  1568.  
  1569. return True
  1570.  
  1571. def __CanUseHorseSkill(self):
  1572.  
  1573. slotIndex = player.GetSkillSlotIndex(player.SKILL_INDEX_RIDING)
  1574.  
  1575. if not slotIndex:
  1576. return False
  1577.  
  1578. grade = player.GetSkillGrade(slotIndex)
  1579. level = player.GetSkillLevel(slotIndex)
  1580. if level < 0:
  1581. level *= -1
  1582. if grade >= 1 and level >= 1:
  1583. return True
  1584.  
  1585. return False
  1586.  
  1587. def __IsChangedHorseRidingSkillLevel(self):
  1588. ret = False
  1589.  
  1590. if -1 == self.canUseHorseSkill:
  1591. self.canUseHorseSkill = self.__CanUseHorseSkill()
  1592.  
  1593. if self.canUseHorseSkill != self.__CanUseHorseSkill():
  1594. ret = True
  1595.  
  1596. self.canUseHorseSkill = self.__CanUseHorseSkill()
  1597. return ret
  1598.  
  1599. if app.ENABLE_SKILLS_LEVEL_OVER_P:
  1600. def __GetRealSkillSlot(self, skillGrade, skillSlot):
  1601. _min = skill.SKILL_GRADE_COUNT - 1
  1602. if app.ENABLE_SKILLS_LEVEL_OVER_P:
  1603. _min -= 1
  1604. if skillGrade == 2:
  1605. skillGrade -= 1
  1606.  
  1607. __calc = skillSlot + min(_min, skillGrade) * skill.SKILL_GRADE_STEP_COUNT
  1608. return __calc
  1609. else:
  1610. def __GetRealSkillSlot(self, skillGrade, skillSlot):
  1611. return skillSlot + min(skill.SKILL_GRADE_COUNT-1, skillGrade)*skill.SKILL_GRADE_STEP_COUNT
  1612.  
  1613. def __GetETCSkillRealSlotIndex(self, skillSlot):
  1614. if skillSlot > 100:
  1615. return skillSlot
  1616. return skillSlot % self.ACTIVE_PAGE_SLOT_COUNT
  1617.  
  1618. def __RealSkillSlotToSourceSlot(self, realSkillSlot):
  1619. if realSkillSlot > 100:
  1620. return realSkillSlot
  1621. if self.PAGE_HORSE == self.curSelectedSkillGroup:
  1622. return realSkillSlot + self.ACTIVE_PAGE_SLOT_COUNT
  1623. return realSkillSlot % skill.SKILL_GRADE_STEP_COUNT
  1624.  
  1625. def __GetSkillGradeFromSlot(self, skillSlot):
  1626. return int(skillSlot / skill.SKILL_GRADE_STEP_COUNT)
  1627.  
  1628. def SelectSkillGroup(self, index):
  1629. self.__SelectSkillGroup(index)
  1630.  
  1631. def OnQuestScroll(self):
  1632. questCount = quest.GetQuestCount()
  1633. scrollLineCount = max(0, questCount - quest.QUEST_MAX_NUM)
  1634. startIndex = int(scrollLineCount * self.questScrollBar.GetPos())
  1635.  
  1636. if startIndex != self.questShowingStartIndex:
  1637. self.questShowingStartIndex = startIndex
  1638. self.RefreshQuest()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement