Advertisement
Guest User

Untitled

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