Guest User

uiswitch.py

a guest
Aug 29th, 2019
415
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.85 KB | None | 0 0
  1. import ui
  2. import player
  3. import mouseModule
  4. import metin2pandoranet as net
  5. import app
  6. import chat
  7. import snd
  8. import item
  9. import player
  10. import chat
  11. import grp
  12. import uiScriptLocale
  13. import uiRefine
  14. import uiAttachMetin
  15. import uiCommon
  16. import localeInfo
  17. import constInfo
  18. import ime
  19. import grpText
  20. import uiToolTip
  21.  
  22. Low = "low-work/system/"
  23.  
  24. class Switcher(ui.ScriptWindow):
  25.  
  26. POSITIVE_COLOR = grp.GenerateColor(0.5411, 0.7254, 0.5568, 1.0)
  27. NEGATIVE_COLOR = grp.GenerateColor(0.9, 0.4745, 0.4627, 1.0)
  28.  
  29. def __init__(self):
  30. import exception
  31. ui.ScriptWindow.__init__(self)
  32.  
  33. def __del__(self):
  34. ui.ScriptWindow.__del__(self)
  35.  
  36. def Show(self):
  37. constInfo.SWITCH_BONUS = 1
  38. self.__LoadWindow()
  39. ui.ScriptWindow.Show(self)
  40.  
  41. def Close(self):
  42. constInfo.SWITCH_BONUS = 0
  43. self.Hide()
  44.  
  45. def OnPressEscapeKey(self):
  46. self.Close()
  47. return TRUE
  48.  
  49. def __LoadWindow(self):
  50. try:
  51. pyScrLoader = ui.PythonScriptLoader()
  52. pyScrLoader.LoadScriptFile(self, Low + "binari2.py")
  53. except:
  54. import exception
  55. exception.Abort("CostumeWindow.LoadWindow.LoadObject")
  56. self.TitleBar = self.GetChild("TitleBar")
  57. self.switchslot = self.GetChild("switchslot")
  58. self.bonusslot = [self.GetChild2("bonus1"), self.GetChild2("bonus2"), self.GetChild2("bonus3"), self.GetChild2("bonus4"), self.GetChild2("bonus5"), ]
  59. self.buttongira = self.GetChild("gira_bonus")
  60. self.buttongira.SetEvent(ui.__mem_func__(self.__gira_bonus))
  61. self.TitleBar.SetCloseEvent(ui.__mem_func__(self.Close))
  62. self.switchslot.SetSelectEmptySlotEvent(ui.__mem_func__(self.__OnSelectEmptySlot))
  63. self.switchslot.SetSelectItemSlotEvent(ui.__mem_func__(self.__OnSelectItemSlot))
  64. self.toolTipCostume = uiToolTip.ToolTip(190)
  65. self.toolTipCostume.SetTitle(item.GetItemName())
  66.  
  67. self.slotitem = None
  68. self.slotgira = None
  69.  
  70. def __OnSelectItemSlot(self, selectedSlotPos):
  71. isAttached = mouseModule.mouseController.isAttached()
  72. if isAttached:
  73. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  74. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  75. mouseModule.mouseController.DeattachObject()
  76. itemIndex = player.GetItemIndex(attachedSlotPos)
  77. itemCount = player.GetItemCount(attachedSlotPos)
  78. item.SelectItem(itemIndex)
  79. itemType = item.GetItemType()
  80. if selectedSlotPos == 0:
  81. self.slotitem = attachedSlotPos
  82. if item.ITEM_TYPE_WEAPON == itemType or item.ITEM_TYPE_ARMOR == itemType:
  83. self.switchslot.SetItemSlot(selectedSlotPos, itemIndex, 0)
  84. attrSlot = [player.GetItemAttribute(attachedSlotPos, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)]
  85. for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM-2):
  86. type = attrSlot[i][0]
  87. value = attrSlot[i][1]
  88. affectString = self.__GetAffectString(type, value)
  89. self.bonusslot[i].SetText(affectString)
  90. else:
  91. if selectedSlotPos == 0:
  92. self.switchslot.SetItemSlot(0, 0, 0)
  93. self.slotitem = None
  94.  
  95. def __OnSelectEmptySlot(self, selectedSlotPos):
  96. isAttached = mouseModule.mouseController.isAttached()
  97. if isAttached:
  98. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  99. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  100. mouseModule.mouseController.DeattachObject()
  101. itemIndex = player.GetItemIndex(attachedSlotPos)
  102. itemCount = player.GetItemCount(attachedSlotPos)
  103. item.SelectItem(itemIndex)
  104. itemType = item.GetItemType()
  105. if selectedSlotPos == 0:
  106. self.slotitem = attachedSlotPos
  107. if item.ITEM_TYPE_WEAPON == itemType or item.ITEM_TYPE_ARMOR == itemType:
  108. self.switchslot.SetItemSlot(selectedSlotPos, itemIndex, 0)
  109. attrSlot = [player.GetItemAttribute(attachedSlotPos, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)]
  110. for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM-2):
  111. type = attrSlot[i][0]
  112. value = attrSlot[i][1]
  113. affectString = self.__GetAffectString(type, value)
  114. self.bonusslot[i].SetText(affectString)
  115. if selectedSlotPos == 1 and itemIndex== 71084:
  116. self.slotgira = attachedSlotPos
  117. self.switchslot.SetItemSlot(selectedSlotPos, itemIndex, itemCount)
  118.  
  119. def __GetAffectString(self, affectType, affectValue):
  120. if 0 == affectType:
  121. return None
  122. if 0 == affectValue:
  123. return None
  124.  
  125. try:
  126. return self.AFFECT_DICT[affectType](affectValue)
  127. except TypeError:
  128. return "UNKNOWN_VALUE[%s] %s" % (affectType, affectValue)
  129. except KeyError:
  130. return "UNKNOWN_TYPE[%s] %s" % (affectType, affectValue)
  131.  
  132. def __gira_bonus(self):
  133. self.__Switch(self.slotitem,self.slotgira)
  134.  
  135. def __Switch(self,dstSlotPos,srcSlotPos):
  136. net.SendItemUseToItemPacket(srcSlotPos,dstSlotPos)
  137. self.refresh(dstSlotPos,srcSlotPos)
  138.  
  139. def refresh(self,dstSlotPos,srcSlotPos):
  140.  
  141. attrSlot = [player.GetItemAttribute(dstSlotPos, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)]
  142.  
  143.  
  144. for i in xrange(5):
  145. self.bonusslot[i].SetText("")
  146.  
  147. for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM-2):
  148. type = attrSlot[i][0]
  149. value = attrSlot[i][1]
  150. affectString = self.__GetAffectString(type, value)
  151. if int(value) < 0:
  152. self.bonusslot[i].SetPackedFontColor(self.NEGATIVE_COLOR)
  153. else:
  154. self.bonusslot[i].SetPackedFontColor(self.POSITIVE_COLOR)
  155. self.bonusslot[i].SetText(affectString)
  156.  
  157. itemIndex = player.GetItemIndex(srcSlotPos)
  158. itemCount = player.GetItemCount(srcSlotPos)
  159. self.switchslot.ClearSlot(1)
  160. self.switchslot.SetItemSlot(1, itemIndex, itemCount)
  161.  
  162. def OnUpdate(self):
  163. self.refresh(self.slotitem,self.slotgira)
  164.  
  165. AFFECT_DICT = {
  166. item.APPLY_MAX_HP : localeInfo.TOOLTIP_MAX_HP,
  167. item.APPLY_MAX_SP : localeInfo.TOOLTIP_MAX_SP,
  168. item.APPLY_CON : localeInfo.TOOLTIP_CON,
  169. item.APPLY_INT : localeInfo.TOOLTIP_INT,
  170. item.APPLY_STR : localeInfo.TOOLTIP_STR,
  171. item.APPLY_DEX : localeInfo.TOOLTIP_DEX,
  172. item.APPLY_ATT_SPEED : localeInfo.TOOLTIP_ATT_SPEED,
  173. item.APPLY_MOV_SPEED : localeInfo.TOOLTIP_MOV_SPEED,
  174. item.APPLY_CAST_SPEED : localeInfo.TOOLTIP_CAST_SPEED,
  175. item.APPLY_HP_REGEN : localeInfo.TOOLTIP_HP_REGEN,
  176. item.APPLY_SP_REGEN : localeInfo.TOOLTIP_SP_REGEN,
  177. item.APPLY_POISON_PCT : localeInfo.TOOLTIP_APPLY_POISON_PCT,
  178. item.APPLY_STUN_PCT : localeInfo.TOOLTIP_APPLY_STUN_PCT,
  179. item.APPLY_SLOW_PCT : localeInfo.TOOLTIP_APPLY_SLOW_PCT,
  180. item.APPLY_CRITICAL_PCT : localeInfo.TOOLTIP_APPLY_CRITICAL_PCT,
  181. item.APPLY_PENETRATE_PCT : localeInfo.TOOLTIP_APPLY_PENETRATE_PCT,
  182.  
  183. item.APPLY_ATTBONUS_WARRIOR : localeInfo.TOOLTIP_APPLY_ATTBONUS_WARRIOR,
  184. item.APPLY_ATTBONUS_ASSASSIN : localeInfo.TOOLTIP_APPLY_ATTBONUS_ASSASSIN,
  185. item.APPLY_ATTBONUS_SURA : localeInfo.TOOLTIP_APPLY_ATTBONUS_SURA,
  186. item.APPLY_ATTBONUS_SHAMAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_SHAMAN,
  187. item.APPLY_ATTBONUS_MONSTER : localeInfo.TOOLTIP_APPLY_ATTBONUS_MONSTER,
  188.  
  189. item.APPLY_ATTBONUS_HUMAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_HUMAN,
  190. item.APPLY_ATTBONUS_ANIMAL : localeInfo.TOOLTIP_APPLY_ATTBONUS_ANIMAL,
  191. item.APPLY_ATTBONUS_ORC : localeInfo.TOOLTIP_APPLY_ATTBONUS_ORC,
  192. item.APPLY_ATTBONUS_MILGYO : localeInfo.TOOLTIP_APPLY_ATTBONUS_MILGYO,
  193. item.APPLY_ATTBONUS_UNDEAD : localeInfo.TOOLTIP_APPLY_ATTBONUS_UNDEAD,
  194. item.APPLY_ATTBONUS_DEVIL : localeInfo.TOOLTIP_APPLY_ATTBONUS_DEVIL,
  195. item.APPLY_STEAL_HP : localeInfo.TOOLTIP_APPLY_STEAL_HP,
  196. item.APPLY_STEAL_SP : localeInfo.TOOLTIP_APPLY_STEAL_SP,
  197. item.APPLY_MANA_BURN_PCT : localeInfo.TOOLTIP_APPLY_MANA_BURN_PCT,
  198. item.APPLY_DAMAGE_SP_RECOVER : localeInfo.TOOLTIP_APPLY_DAMAGE_SP_RECOVER,
  199. item.APPLY_BLOCK : localeInfo.TOOLTIP_APPLY_BLOCK,
  200. item.APPLY_DODGE : localeInfo.TOOLTIP_APPLY_DODGE,
  201. item.APPLY_RESIST_SWORD : localeInfo.TOOLTIP_APPLY_RESIST_SWORD,
  202. item.APPLY_RESIST_TWOHAND : localeInfo.TOOLTIP_APPLY_RESIST_TWOHAND,
  203. item.APPLY_RESIST_DAGGER : localeInfo.TOOLTIP_APPLY_RESIST_DAGGER,
  204. item.APPLY_RESIST_BELL : localeInfo.TOOLTIP_APPLY_RESIST_BELL,
  205. item.APPLY_RESIST_FAN : localeInfo.TOOLTIP_APPLY_RESIST_FAN,
  206. item.APPLY_RESIST_BOW : localeInfo.TOOLTIP_RESIST_BOW,
  207. item.APPLY_RESIST_FIRE : localeInfo.TOOLTIP_RESIST_FIRE,
  208. item.APPLY_RESIST_ELEC : localeInfo.TOOLTIP_RESIST_ELEC,
  209. item.APPLY_RESIST_MAGIC : localeInfo.TOOLTIP_RESIST_MAGIC,
  210. item.APPLY_RESIST_WIND : localeInfo.TOOLTIP_APPLY_RESIST_WIND,
  211. item.APPLY_REFLECT_MELEE : localeInfo.TOOLTIP_APPLY_REFLECT_MELEE,
  212. item.APPLY_REFLECT_CURSE : localeInfo.TOOLTIP_APPLY_REFLECT_CURSE,
  213. item.APPLY_POISON_REDUCE : localeInfo.TOOLTIP_APPLY_POISON_REDUCE,
  214. item.APPLY_KILL_SP_RECOVER : localeInfo.TOOLTIP_APPLY_KILL_SP_RECOVER,
  215. item.APPLY_EXP_DOUBLE_BONUS : localeInfo.TOOLTIP_APPLY_EXP_DOUBLE_BONUS,
  216. item.APPLY_GOLD_DOUBLE_BONUS : localeInfo.TOOLTIP_APPLY_GOLD_DOUBLE_BONUS,
  217. item.APPLY_ITEM_DROP_BONUS : localeInfo.TOOLTIP_APPLY_ITEM_DROP_BONUS,
  218. item.APPLY_POTION_BONUS : localeInfo.TOOLTIP_APPLY_POTION_BONUS,
  219. item.APPLY_KILL_HP_RECOVER : localeInfo.TOOLTIP_APPLY_KILL_HP_RECOVER,
  220. item.APPLY_IMMUNE_STUN : localeInfo.TOOLTIP_APPLY_IMMUNE_STUN,
  221. item.APPLY_IMMUNE_SLOW : localeInfo.TOOLTIP_APPLY_IMMUNE_SLOW,
  222. item.APPLY_IMMUNE_FALL : localeInfo.TOOLTIP_APPLY_IMMUNE_FALL,
  223. item.APPLY_BOW_DISTANCE : localeInfo.TOOLTIP_BOW_DISTANCE,
  224. item.APPLY_DEF_GRADE_BONUS : localeInfo.TOOLTIP_DEF_GRADE,
  225. item.APPLY_ATT_GRADE_BONUS : localeInfo.TOOLTIP_ATT_GRADE,
  226. item.APPLY_MAGIC_ATT_GRADE : localeInfo.TOOLTIP_MAGIC_ATT_GRADE,
  227. item.APPLY_MAGIC_DEF_GRADE : localeInfo.TOOLTIP_MAGIC_DEF_GRADE,
  228. item.APPLY_MAX_STAMINA : localeInfo.TOOLTIP_MAX_STAMINA,
  229. item.APPLY_MALL_ATTBONUS : localeInfo.TOOLTIP_MALL_ATTBONUS,
  230. item.APPLY_MALL_DEFBONUS : localeInfo.TOOLTIP_MALL_DEFBONUS,
  231. item.APPLY_MALL_EXPBONUS : localeInfo.TOOLTIP_MALL_EXPBONUS,
  232. item.APPLY_MALL_ITEMBONUS : localeInfo.TOOLTIP_MALL_ITEMBONUS,
  233. item.APPLY_MALL_GOLDBONUS : localeInfo.TOOLTIP_MALL_GOLDBONUS,
  234. item.APPLY_SKILL_DAMAGE_BONUS : localeInfo.TOOLTIP_SKILL_DAMAGE_BONUS,
  235. item.APPLY_NORMAL_HIT_DAMAGE_BONUS : localeInfo.TOOLTIP_NORMAL_HIT_DAMAGE_BONUS,
  236. item.APPLY_SKILL_DEFEND_BONUS : localeInfo.TOOLTIP_SKILL_DEFEND_BONUS,
  237. item.APPLY_NORMAL_HIT_DEFEND_BONUS : localeInfo.TOOLTIP_NORMAL_HIT_DEFEND_BONUS,
  238. item.APPLY_PC_BANG_EXP_BONUS : localeInfo.TOOLTIP_MALL_EXPBONUS_P_STATIC,
  239. item.APPLY_PC_BANG_DROP_BONUS : localeInfo.TOOLTIP_MALL_ITEMBONUS_P_STATIC,
  240. item.APPLY_RESIST_WARRIOR : localeInfo.TOOLTIP_APPLY_RESIST_WARRIOR,
  241. item.APPLY_RESIST_ASSASSIN : localeInfo.TOOLTIP_APPLY_RESIST_ASSASSIN,
  242. item.APPLY_RESIST_SURA : localeInfo.TOOLTIP_APPLY_RESIST_SURA,
  243. item.APPLY_RESIST_SHAMAN : localeInfo.TOOLTIP_APPLY_RESIST_SHAMAN,
  244. item.APPLY_MAX_HP_PCT : localeInfo.TOOLTIP_APPLY_MAX_HP_PCT,
  245. item.APPLY_MAX_SP_PCT : localeInfo.TOOLTIP_APPLY_MAX_SP_PCT,
  246. item.APPLY_ENERGY : localeInfo.TOOLTIP_ENERGY,
  247. item.APPLY_COSTUME_ATTR_BONUS : localeInfo.TOOLTIP_COSTUME_ATTR_BONUS,
  248. }
Advertisement
Add Comment
Please, Sign In to add comment