Guest User

Untitled

a guest
Apr 12th, 2019
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 75.99 KB | None | 0 0
  1. import os
  2. import app
  3. import dbg
  4. import grp
  5. import item
  6. import background
  7. import chr
  8. import chrmgr
  9. import event
  10. import player
  11. import snd
  12. import chat
  13. import textTail
  14. import snd
  15. import net
  16. import effect
  17. import wndMgr
  18. import fly
  19. import systemSetting
  20. import quest
  21. import guild
  22. import skill
  23. import messenger
  24. import localeInfo
  25. import constInfo
  26. import exchange
  27. import ime
  28. import time
  29. import uishopsearch
  30. import ui
  31. import uiCommon
  32. import uiPhaseCurtain
  33. import uiMapNameShower
  34. import uiAffectShower
  35. import uiPlayerGauge
  36. import uiCharacter
  37. import uiTarget
  38. import uiPrivateShopBuilder
  39. import uiOfflineShopBuilder
  40. import uiOfflineShop
  41. import mouseModule
  42. import consoleModule
  43. import localeInfo
  44. import playerSettingModule
  45. import interfaceModule
  46. import debugInfo
  47. import stringCommander
  48. import uipetsystem
  49. import autoafk
  50.  
  51. from _weakref import proxy
  52.  
  53. SCREENSHOT_CWDSAVE = True
  54. SCREENSHOT_DIR = "screenshot"
  55.  
  56. cameraDistance = 1550.0
  57. cameraPitch = 27.0
  58. cameraRotation = 0.0
  59. cameraHeight = 100.0
  60. testAlignment = 0
  61. BPisLodaded = 0
  62.  
  63. class GameWindow(ui.ScriptWindow):
  64. def __init__(self, stream):
  65.  
  66. import dailygift
  67. self.wnddailygift = dailygift.DailyGift()
  68.  
  69. def Open(self):
  70. app.SetFrameSkip(1)
  71.  
  72. self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
  73.  
  74. self.daily_reward = ui.Button()
  75. self.daily_reward.SetParent(self)
  76. self.daily_reward.SetPosition(wndMgr.GetScreenWidth()-75,20)
  77. self.daily_reward.SetUpVisual("icon/item/50244.tga")
  78. self.daily_reward.SetOverVisual("icon/item/50244.tga")
  79. self.daily_reward.SetDownVisual("icon/item/50244.tga")
  80. self.daily_reward.SetToolTipText("Daily Rewards")
  81. self.daily_reward.SetEvent(lambda : self.ManagerGiftSystem("Show|"))
  82. self.daily_reward.Show()
  83.  
  84. def OnUpdate(self):
  85. app.UpdateGame()
  86. self.wnddailygift.OnUpdate()
  87.  
  88. def ManagerGiftSystem(self, cmd):
  89. cmd = cmd.split("|")
  90. if cmd[0] == "Show":
  91. self.wnddailygift.Show()
  92. elif cmd[0] == "DeleteRewards":
  93. self.wnddailygift.DeleteRewards()
  94. elif cmd[0] == "SetDailyReward":
  95. self.wnddailygift.SetDailyReward(cmd[1]) # numero de la recompensa
  96. elif cmd[0] == "SetTime":
  97. self.wnddailygift.SetTime(cmd[1]) # tiempo en numeros grandes
  98. elif cmd[0] == "SetReward":
  99. self.wnddailygift.SetReward(cmd[1], cmd[2]) #hacer un array con los items
  100. elif cmd[0] == "SetRewardDone":
  101. self.wnddailygift.SetRewardDone()
  102.  
  103. class GameWindow(ui.ScriptWindow):
  104. def __init__(self, stream):
  105. self.uiSearchShopBtn = ui.Button()
  106. self.uiSearchShopBtn.SetUpVisual("search.tga")
  107. self.uiSearchShopBtn.SetOverVisual("search2.tga")
  108. self.uiSearchShopBtn.SetDownVisual("search2.tga")
  109. self.uiSearchShopBtn.SetPosition(int(wndMgr.GetScreenWidth()/2), 0)
  110. self.uiSearchShopBtn.SetEvent(self.OnClickSearch)
  111. self.uiSearchShopBtn.Show()
  112.  
  113. ui.ScriptWindow.__init__(self, "GAME")
  114. self.SetWindowName("game")
  115. net.SetPhaseWindow(net.PHASE_WINDOW_GAME, self)
  116. player.SetGameWindow(self)
  117. self.utilizareTaste = time.clock() + 4
  118.  
  119. self.shopsearch = uishopsearch.SearchWindow()
  120.  
  121. self.quickSlotPageIndex = 0
  122. self.lastPKModeSendedTime = 0
  123. self.pressNumber = None
  124.  
  125. self.guildWarQuestionDialog = None
  126. self.interface = None
  127. self.targetBoard = None
  128. self.console = None
  129. self.mapNameShower = None
  130. self.affectShower = None
  131. self.playerGauge = None
  132. self.AfkModeGui = autoafk.AfkGui()
  133. self.AfkModeGui.Close()
  134.  
  135. self.stream=stream
  136. self.interface = interfaceModule.Interface()
  137. self.interface.MakeInterface()
  138. self.interface.ShowDefaultWindows()
  139.  
  140. self.curtain = uiPhaseCurtain.PhaseCurtain()
  141. self.curtain.speed = 0.03
  142. self.curtain.Hide()
  143.  
  144. self.targetBoard = uiTarget.TargetBoard()
  145. self.targetBoard.SetWhisperEvent(ui.__mem_func__(self.interface.OpenWhisperDialog))
  146. self.targetBoard.Hide()
  147.  
  148. self.petmain = uipetsystem.PetSystemMain()
  149. self.petmini = uipetsystem.PetSystemMini()
  150.  
  151. self.console = consoleModule.ConsoleWindow()
  152. self.console.BindGameClass(self)
  153. self.console.SetConsoleSize(wndMgr.GetScreenWidth(), 200)
  154. self.console.Hide()
  155.  
  156. self.mapNameShower = uiMapNameShower.MapNameShower()
  157. self.affectShower = uiAffectShower.AffectShower()
  158.  
  159. self.playerGauge = uiPlayerGauge.PlayerGauge(self)
  160. self.playerGauge.Hide()
  161.  
  162. self.itemDropQuestionDialog = None
  163.  
  164. self.__SetQuickSlotMode()
  165.  
  166. self.__ServerCommand_Build()
  167. self.__ProcessPreservedServerCommand()
  168.  
  169. def __del__(self):
  170. player.SetGameWindow(0)
  171. net.ClearPhaseWindow(net.PHASE_WINDOW_GAME, self)
  172. ui.ScriptWindow.__del__(self)
  173.  
  174. def Open(self):
  175. app.SetFrameSkip(1)
  176.  
  177. self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
  178.  
  179. self.quickSlotPageIndex = 0
  180. self.PickingCharacterIndex = -1
  181. self.PickingItemIndex = -1
  182. self.consoleEnable = False
  183. self.isShowDebugInfo = False
  184. self.ShowNameFlag = False
  185.  
  186. self.enableXMasBoom = False
  187. self.startTimeXMasBoom = 0.0
  188. self.indexXMasBoom = 0
  189.  
  190. global cameraDistance, cameraPitch, cameraRotation, cameraHeight
  191.  
  192. app.SetCamera(cameraDistance, cameraPitch, cameraRotation, cameraHeight)
  193.  
  194. constInfo.SET_DEFAULT_CAMERA_MAX_DISTANCE()
  195. constInfo.SET_DEFAULT_CHRNAME_COLOR()
  196. constInfo.SET_DEFAULT_FOG_LEVEL()
  197. constInfo.SET_DEFAULT_CONVERT_EMPIRE_LANGUAGE_ENABLE()
  198. constInfo.SET_DEFAULT_USE_ITEM_WEAPON_TABLE_ATTACK_BONUS()
  199. constInfo.SET_DEFAULT_USE_SKILL_EFFECT_ENABLE()
  200.  
  201. # TWO_HANDED_WEAPON_ATTACK_SPEED_UP
  202. constInfo.SET_TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE()
  203. # END_OF_TWO_HANDED_WEAPON_ATTACK_SPEED_UP
  204.  
  205. import event
  206. event.SetLeftTimeString(localeInfo.UI_LEFT_TIME)
  207.  
  208. textTail.EnablePKTitle(constInfo.PVPMODE_ENABLE)
  209.  
  210. if constInfo.PVPMODE_TEST_ENABLE:
  211. self.testPKMode = ui.TextLine()
  212. self.testPKMode.SetFontName(localeInfo.UI_DEF_FONT)
  213. self.testPKMode.SetPosition(0, 15)
  214. self.testPKMode.SetWindowHorizontalAlignCenter()
  215. self.testPKMode.SetHorizontalAlignCenter()
  216. self.testPKMode.SetFeather()
  217. self.testPKMode.SetOutline()
  218. self.testPKMode.Show()
  219.  
  220. self.testAlignment = ui.TextLine()
  221. self.testAlignment.SetFontName(localeInfo.UI_DEF_FONT)
  222. self.testAlignment.SetPosition(0, 35)
  223. self.testAlignment.SetWindowHorizontalAlignCenter()
  224. self.testAlignment.SetHorizontalAlignCenter()
  225. self.testAlignment.SetFeather()
  226. self.testAlignment.SetOutline()
  227. self.testAlignment.Show()
  228.  
  229. self.__BuildKeyDict()
  230. self.__BuildDebugInfo()
  231.  
  232. uiPrivateShopBuilder.Clear()
  233. uiOfflineShopBuilder.Clear()
  234.  
  235. exchange.InitTrading()
  236.  
  237. if debugInfo.IsDebugMode():
  238. self.ToggleDebugInfo()
  239.  
  240. snd.SetSoundVolume(systemSetting.GetSoundVolume())
  241.  
  242. self.__SetQuickSlotMode()
  243. self.__SelectQuickPage(self.quickSlotPageIndex)
  244.  
  245. self.SetFocus()
  246. self.Show()
  247. app.ShowCursor()
  248.  
  249. net.SendEnterGamePacket()
  250.  
  251. try:
  252. self.StartGame()
  253. except:
  254. import exception
  255. exception.Abort("GameWindow.Open")
  256.  
  257. self.cubeInformation = {}
  258. self.currentCubeNPC = 0
  259.  
  260. if systemSetting.IsFogMode():
  261. background.SetEnvironmentFog(True)
  262. else:
  263. background.SetEnvironmentFog(False)
  264.  
  265. if systemSetting.IsShowOfflineShop() == 0:
  266. net.SendChatPacket("/show_hide_shops 0")
  267. else:
  268. net.SendChatPacket("/show_hide_shops 1")
  269.  
  270. def Close(self):
  271. self.Hide()
  272.  
  273. global cameraDistance, cameraPitch, cameraRotation, cameraHeight
  274. (cameraDistance, cameraPitch, cameraRotation, cameraHeight) = app.GetCamera()
  275.  
  276. self.onPressKeyDict = None
  277. self.onClickKeyDict = None
  278.  
  279. chat.Close()
  280. snd.StopAllSound()
  281. grp.InitScreenEffect()
  282. chr.Destroy()
  283. textTail.Clear()
  284. quest.Clear()
  285. background.Destroy()
  286. guild.Destroy()
  287. messenger.Destroy()
  288. skill.ClearSkillData()
  289. wndMgr.Unlock()
  290. mouseModule.mouseController.DeattachObject()
  291.  
  292. if self.guildWarQuestionDialog:
  293. self.guildWarQuestionDialog.Close()
  294.  
  295. self.guildNameBoard = None
  296. self.partyRequestQuestionDialog = None
  297. self.partyInviteQuestionDialog = None
  298. self.guildInviteQuestionDialog = None
  299. self.guildWarQuestionDialog = None
  300. self.messengerAddFriendQuestion = None
  301. self.itemDropQuestionDialog = None
  302. self.confirmDialog = None
  303. self.shopsearch.Close()
  304. self.PrintCoord = None
  305. self.FrameRate = None
  306. self.Pitch = None
  307. self.Splat = None
  308. self.TextureNum = None
  309. self.ObjectNum = None
  310. self.ViewDistance = None
  311. self.PrintMousePos = None
  312. self.ClearDictionary()
  313. self.petmain.Close()
  314. self.petmini.Close()
  315. self.playerGauge = None
  316. self.mapNameShower = None
  317. self.affectShower = None
  318. self.AfkModeGui = None
  319.  
  320. if self.console:
  321. self.console.BindGameClass(0)
  322. self.console.Close()
  323. self.console=None
  324.  
  325. if self.targetBoard:
  326. self.targetBoard.Destroy()
  327. self.targetBoard = None
  328.  
  329. if self.interface:
  330. self.interface.HideAllWindows()
  331. self.interface.Close()
  332. self.interface=None
  333.  
  334. player.ClearSkillDict()
  335. player.ResetCameraRotation()
  336.  
  337. self.KillFocus()
  338. app.HideCursor()
  339.  
  340. print "---------------------------------------------------------------------------- CLOSE GAME WINDOW"
  341.  
  342. def __BuildKeyDict(self):
  343. onPressKeyDict = {}
  344. onPressKeyDict[app.DIK_1] = lambda : self.__PressNumKey(1)
  345. onPressKeyDict[app.DIK_2] = lambda : self.__PressNumKey(2)
  346. onPressKeyDict[app.DIK_3] = lambda : self.__PressNumKey(3)
  347. onPressKeyDict[app.DIK_4] = lambda : self.__PressNumKey(4)
  348. onPressKeyDict[app.DIK_5] = lambda : self.__PressNumKey(5)
  349. onPressKeyDict[app.DIK_6] = lambda : self.__PressNumKey(6)
  350. onPressKeyDict[app.DIK_7] = lambda : self.__PressNumKey(7)
  351. onPressKeyDict[app.DIK_8] = lambda : self.__PressNumKey(8)
  352. onPressKeyDict[app.DIK_9] = lambda : self.__PressNumKey(9)
  353. onPressKeyDict[app.DIK_F1] = lambda : self.__PressQuickSlot(4)
  354. onPressKeyDict[app.DIK_F2] = lambda : self.__PressQuickSlot(5)
  355. onPressKeyDict[app.DIK_F3] = lambda : self.__PressQuickSlot(6)
  356. onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7)
  357. onPressKeyDict[app.DIK_LALT] = lambda : self.ShowName()
  358. onPressKeyDict[app.DIK_LCONTROL] = lambda : self.ShowMouseImage()
  359. onPressKeyDict[app.DIK_SYSRQ] = lambda : self.SaveScreen()
  360. onPressKeyDict[app.DIK_SPACE] = lambda : self.StartAttack()
  361. onPressKeyDict[app.DIK_UP] = lambda : self.MoveUp()
  362. onPressKeyDict[app.DIK_DOWN] = lambda : self.MoveDown()
  363. onPressKeyDict[app.DIK_LEFT] = lambda : self.MoveLeft()
  364. onPressKeyDict[app.DIK_RIGHT] = lambda : self.MoveRight()
  365. onPressKeyDict[app.DIK_W] = lambda : self.MoveUp()
  366. onPressKeyDict[app.DIK_S] = lambda : self.MoveDown()
  367. onPressKeyDict[app.DIK_A] = lambda : self.MoveLeft()
  368. onPressKeyDict[app.DIK_D] = lambda : self.MoveRight()
  369.  
  370. onPressKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_TO_POSITIVE)
  371. onPressKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_TO_NEGATIVE)
  372. onPressKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_TO_POSITIVE)
  373. onPressKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_TO_NEGATIVE)
  374. onPressKeyDict[app.DIK_G] = self.__PressGKey
  375. onPressKeyDict[app.DIK_Q] = self.__PressQKey
  376.  
  377. onPressKeyDict[app.DIK_NUMPAD9] = lambda: app.MovieResetCamera()
  378. onPressKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_TO_NEGATIVE)
  379. onPressKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_TO_POSITIVE)
  380. onPressKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_TO_NEGATIVE)
  381. onPressKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_TO_POSITIVE)
  382. onPressKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_TO_NEGATIVE)
  383. onPressKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_TO_POSITIVE)
  384. onPressKeyDict[app.DIK_GRAVE] = lambda : self.PickUpItem()
  385. onPressKeyDict[app.DIK_Z] = lambda : self.PickUpItem()
  386. onPressKeyDict[app.DIK_C] = lambda state = "STATUS": self.interface.ToggleCharacterWindow(state)
  387. onPressKeyDict[app.DIK_V] = lambda state = "SKILL": self.interface.ToggleCharacterWindow(state)
  388. onPressKeyDict[app.DIK_B] = lambda state = "EMOTICON": self.interface.ToggleCharacterWindow(state)
  389. onPressKeyDict[app.DIK_N] = lambda state = "QUEST": self.interface.ToggleCharacterWindow(state)
  390. onPressKeyDict[app.DIK_I] = lambda : self.interface.ToggleInventoryWindow()
  391. onPressKeyDict[app.DIK_O] = lambda : self.interface.ToggleDragonSoulWindowWithNoInfo()
  392. onPressKeyDict[app.DIK_M] = lambda : self.interface.PressMKey()
  393. onPressKeyDict[app.DIK_H] = lambda : self.interface.OpenHelpWindow()
  394. onPressKeyDict[app.DIK_ADD] = lambda : self.interface.MiniMapScaleUp()
  395. onPressKeyDict[app.DIK_SUBTRACT] = lambda : self.interface.MiniMapScaleDown()
  396. onPressKeyDict[app.DIK_L] = lambda : self.interface.ToggleChatLogWindow()
  397. onPressKeyDict[app.DIK_COMMA] = lambda : self.ShowConsole()
  398. onPressKeyDict[app.DIK_LSHIFT] = lambda : self.__SetQuickPageMode()
  399.  
  400. onPressKeyDict[app.DIK_J] = lambda : self.__PressJKey()
  401. onPressKeyDict[app.DIK_H] = lambda : self.__PressHKey()
  402. onPressKeyDict[app.DIK_B] = lambda : self.__PressBKey()
  403. onPressKeyDict[app.DIK_F] = lambda : self.__PressFKey()
  404.  
  405. self.onPressKeyDict = onPressKeyDict
  406.  
  407. onClickKeyDict = {}
  408. onClickKeyDict[app.DIK_UP] = lambda : self.StopUp()
  409. onClickKeyDict[app.DIK_DOWN] = lambda : self.StopDown()
  410. onClickKeyDict[app.DIK_LEFT] = lambda : self.StopLeft()
  411. onClickKeyDict[app.DIK_RIGHT] = lambda : self.StopRight()
  412. onClickKeyDict[app.DIK_SPACE] = lambda : self.EndAttack()
  413.  
  414. onClickKeyDict[app.DIK_W] = lambda : self.StopUp()
  415. onClickKeyDict[app.DIK_S] = lambda : self.StopDown()
  416. onClickKeyDict[app.DIK_A] = lambda : self.StopLeft()
  417. onClickKeyDict[app.DIK_D] = lambda : self.StopRight()
  418. onClickKeyDict[app.DIK_Q] = lambda: app.RotateCamera(app.CAMERA_STOP)
  419. onClickKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_STOP)
  420. onClickKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_STOP)
  421. onClickKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_STOP)
  422. onClickKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_STOP)
  423. onClickKeyDict[app.DIK_G] = lambda: self.__ReleaseGKey()
  424. onClickKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
  425. onClickKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
  426. onClickKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
  427. onClickKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
  428. onClickKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
  429. onClickKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
  430. onClickKeyDict[app.DIK_LALT] = lambda: self.HideName()
  431. onClickKeyDict[app.DIK_LCONTROL] = lambda: self.HideMouseImage()
  432. onClickKeyDict[app.DIK_LSHIFT] = lambda: self.__SetQuickSlotMode()
  433. onClickKeyDict[app.DIK_P] = lambda: self.OpenPetMainGui()
  434. onClickKeyDict[app.DIK_K] = lambda: self.OpenChooseTitle()
  435.  
  436. self.onClickKeyDict=onClickKeyDict
  437.  
  438. def __PressNumKey(self,num):
  439. if time.clock() >= self.utilizareTaste:
  440. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  441.  
  442. if num >= 1 and num <= 9:
  443. if(chrmgr.IsPossibleEmoticon(-1)):
  444. chrmgr.SetEmoticon(-1,int(num)-1)
  445. net.SendEmoticon(int(num)-1)
  446. else:
  447. if num >= 1 and num <= 4:
  448. self.pressNumber(num-1)
  449. else:
  450. chat.AppendChat(chat.CHAT_TYPE_INFO, "Mai asteapta cateva secunde pentru a putea folosi comanda.")
  451.  
  452. def __ClickBKey(self):
  453. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  454. return
  455. else:
  456. if constInfo.PVPMODE_ACCELKEY_ENABLE:
  457. self.ChangePKMode()
  458.  
  459.  
  460. def __PressJKey(self):
  461. import uiTitlePreference
  462. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  463. if player.IsMountingHorse():
  464. net.SendChatPacket("/unmount")
  465. else:
  466. #net.SendChatPacket("/user_horse_ride")
  467. if not uiPrivateShopBuilder.IsBuildingPrivateShop() or not uiOfflineShopBuilder.IsBuildingOfflineShop():
  468. for i in xrange(player.INVENTORY_PAGE_SIZE):
  469. if player.GetItemIndex(i) in (71114, 71116, 71118, 71120):
  470. net.SendItemUsePacket(i)
  471. break
  472.  
  473. if app.ENABLE_TITLE_SYSTEM:
  474. def OpenChooseTitle(self):
  475. import uiTitlePreference
  476. if not uiTitlePreference.STAT:
  477. self.title = uiTitlePreference.Board()
  478. self.title.Open()
  479. else:
  480. return
  481.  
  482. def __PressHKey(self):
  483. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  484. net.SendChatPacket("/user_horse_ride")
  485. else:
  486. self.interface.OpenHelpWindow()
  487.  
  488. def __PressBKey(self):
  489. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  490. net.SendChatPacket("/user_horse_back")
  491. else:
  492. state = "EMOTICON"
  493. self.interface.ToggleCharacterWindow(state)
  494.  
  495. def __PressFKey(self):
  496. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  497. net.SendChatPacket("/user_horse_feed")
  498. else:
  499. app.ZoomCamera(app.CAMERA_TO_POSITIVE)
  500.  
  501. def __PressGKey(self):
  502. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  503. net.SendChatPacket("/ride")
  504. else:
  505. if self.ShowNameFlag:
  506. self.interface.ToggleGuildWindow()
  507. else:
  508. app.PitchCamera(app.CAMERA_TO_POSITIVE)
  509.  
  510. def __ReleaseGKey(self):
  511. app.PitchCamera(app.CAMERA_STOP)
  512.  
  513. def __PressQKey(self):
  514. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  515. if 0==interfaceModule.IsQBHide:
  516. interfaceModule.IsQBHide = 1
  517. self.interface.HideAllQuestButton()
  518. else:
  519. interfaceModule.IsQBHide = 0
  520. self.interface.ShowAllQuestButton()
  521. else:
  522. app.RotateCamera(app.CAMERA_TO_NEGATIVE)
  523.  
  524. def __SetQuickSlotMode(self):
  525. self.pressNumber=ui.__mem_func__(self.__PressQuickSlot)
  526.  
  527. def __SetQuickPageMode(self):
  528. self.pressNumber=ui.__mem_func__(self.__SelectQuickPage)
  529.  
  530. def __PressQuickSlot(self, localSlotIndex):
  531. if time.clock() >= self.utilizareTaste:
  532. player.RequestUseLocalQuickSlot(localSlotIndex)
  533. else:
  534. chat.AppendChat(chat.CHAT_TYPE_INFO, "Mai asteapta cateva secunde pentru a putea folosi comanda.")
  535.  
  536. def __SelectQuickPage(self, pageIndex):
  537. self.quickSlotPageIndex = pageIndex
  538. player.SetQuickPage(pageIndex)
  539.  
  540. def ToggleDebugInfo(self):
  541. self.isShowDebugInfo = not self.isShowDebugInfo
  542.  
  543. if self.isShowDebugInfo:
  544. self.PrintCoord.Show()
  545. self.FrameRate.Show()
  546. self.Pitch.Show()
  547. self.Splat.Show()
  548. self.TextureNum.Show()
  549. self.ObjectNum.Show()
  550. self.ViewDistance.Show()
  551. self.PrintMousePos.Show()
  552. else:
  553. self.PrintCoord.Hide()
  554. self.FrameRate.Hide()
  555. self.Pitch.Hide()
  556. self.Splat.Hide()
  557. self.TextureNum.Hide()
  558. self.ObjectNum.Hide()
  559. self.ViewDistance.Hide()
  560. self.PrintMousePos.Hide()
  561.  
  562. def __BuildDebugInfo(self):
  563. ## Character Position Coordinate
  564. self.PrintCoord = ui.TextLine()
  565. self.PrintCoord.SetFontName(localeInfo.UI_DEF_FONT)
  566. self.PrintCoord.SetPosition(wndMgr.GetScreenWidth() - 270, 0)
  567.  
  568. ## Frame Rate
  569. self.FrameRate = ui.TextLine()
  570. self.FrameRate.SetFontName(localeInfo.UI_DEF_FONT)
  571. self.FrameRate.SetPosition(wndMgr.GetScreenWidth() - 270, 20)
  572.  
  573. ## Camera Pitch
  574. self.Pitch = ui.TextLine()
  575. self.Pitch.SetFontName(localeInfo.UI_DEF_FONT)
  576. self.Pitch.SetPosition(wndMgr.GetScreenWidth() - 270, 40)
  577.  
  578. ## Splat
  579. self.Splat = ui.TextLine()
  580. self.Splat.SetFontName(localeInfo.UI_DEF_FONT)
  581. self.Splat.SetPosition(wndMgr.GetScreenWidth() - 270, 60)
  582.  
  583. ##
  584. self.PrintMousePos = ui.TextLine()
  585. self.PrintMousePos.SetFontName(localeInfo.UI_DEF_FONT)
  586. self.PrintMousePos.SetPosition(wndMgr.GetScreenWidth() - 270, 80)
  587.  
  588. # TextureNum
  589. self.TextureNum = ui.TextLine()
  590. self.TextureNum.SetFontName(localeInfo.UI_DEF_FONT)
  591. self.TextureNum.SetPosition(wndMgr.GetScreenWidth() - 270, 100)
  592.  
  593. # ¿ÀºêÁ§Æ® ±×¸®´Â °³¼ö
  594. self.ObjectNum = ui.TextLine()
  595. self.ObjectNum.SetFontName(localeInfo.UI_DEF_FONT)
  596. self.ObjectNum.SetPosition(wndMgr.GetScreenWidth() - 270, 120)
  597.  
  598. # ½Ã¾ß°Å¸®
  599. self.ViewDistance = ui.TextLine()
  600. self.ViewDistance.SetFontName(localeInfo.UI_DEF_FONT)
  601. self.ViewDistance.SetPosition(0, 0)
  602.  
  603. def __NotifyError(self, msg):
  604. chat.AppendChat(chat.CHAT_TYPE_INFO, msg)
  605.  
  606. def ChangePKMode(self):
  607.  
  608. if not app.IsPressed(app.DIK_LCONTROL):
  609. return
  610.  
  611. if player.GetStatus(player.LEVEL)<constInfo.PVPMODE_PROTECTED_LEVEL:
  612. self.__NotifyError(localeInfo.OPTION_PVPMODE_PROTECT % (constInfo.PVPMODE_PROTECTED_LEVEL))
  613. return
  614.  
  615. curTime = app.GetTime()
  616. if curTime - self.lastPKModeSendedTime < constInfo.PVPMODE_ACCELKEY_DELAY:
  617. return
  618.  
  619. self.lastPKModeSendedTime = curTime
  620.  
  621. curPKMode = player.GetPKMode()
  622. nextPKMode = curPKMode + 1
  623. if nextPKMode == player.PK_MODE_PROTECT:
  624. if 0 == player.GetGuildID():
  625. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OPTION_PVPMODE_CANNOT_SET_GUILD_MODE)
  626. nextPKMode = 0
  627. else:
  628. nextPKMode = player.PK_MODE_GUILD
  629.  
  630. elif nextPKMode == player.PK_MODE_MAX_NUM:
  631. nextPKMode = 0
  632.  
  633. net.SendChatPacket("/PKMode " + str(nextPKMode))
  634. print "/PKMode " + str(nextPKMode)
  635.  
  636. def OnChangePKMode(self):
  637.  
  638. self.interface.OnChangePKMode()
  639.  
  640. try:
  641. self.__NotifyError(localeInfo.OPTION_PVPMODE_MESSAGE_DICT[player.GetPKMode()])
  642. except KeyError:
  643. print "UNKNOWN PVPMode[%d]" % (player.GetPKMode())
  644.  
  645. if constInfo.PVPMODE_TEST_ENABLE:
  646. curPKMode = player.GetPKMode()
  647. alignment, grade = chr.testGetPKData()
  648. self.pkModeNameDict = { 0 : "PEACE", 1 : "REVENGE", 2 : "FREE", 3 : "PROTECT", }
  649. self.testPKMode.SetText("Current PK Mode : " + self.pkModeNameDict.get(curPKMode, "UNKNOWN"))
  650. self.testAlignment.SetText("Current Alignment : " + str(alignment) + " (" + localeInfo.TITLE_NAME_LIST[grade] + ")")
  651.  
  652. # Start
  653. def StartGame(self):
  654. self.RefreshInventory()
  655. self.RefreshEquipment()
  656. self.RefreshCharacter()
  657. self.RefreshSkill()
  658.  
  659. # Refresh
  660. def CheckGameButton(self):
  661. if self.interface:
  662. self.interface.CheckGameButton()
  663.  
  664. def RefreshAlignment(self):
  665. self.interface.RefreshAlignment()
  666.  
  667. def RefreshStatus(self):
  668. self.CheckGameButton()
  669.  
  670. if self.interface:
  671. self.interface.RefreshStatus()
  672.  
  673. if self.playerGauge:
  674. self.playerGauge.RefreshGauge()
  675.  
  676. def RefreshStamina(self):
  677. self.interface.RefreshStamina()
  678.  
  679. def RefreshSkill(self):
  680. self.CheckGameButton()
  681. if self.interface:
  682. self.interface.RefreshSkill()
  683.  
  684. def RefreshQuest(self):
  685. self.interface.RefreshQuest()
  686.  
  687. def RefreshMessenger(self):
  688. self.interface.RefreshMessenger()
  689.  
  690. def RefreshGuildInfoPage(self):
  691. self.interface.RefreshGuildInfoPage()
  692.  
  693. def RefreshGuildBoardPage(self):
  694. self.interface.RefreshGuildBoardPage()
  695.  
  696. def RefreshGuildMemberPage(self):
  697. self.interface.RefreshGuildMemberPage()
  698.  
  699. def RefreshGuildMemberPageGradeComboBox(self):
  700. self.interface.RefreshGuildMemberPageGradeComboBox()
  701.  
  702. def RefreshGuildSkillPage(self):
  703. self.interface.RefreshGuildSkillPage()
  704.  
  705. def RefreshGuildGradePage(self):
  706. self.interface.RefreshGuildGradePage()
  707.  
  708. def RefreshMobile(self):
  709. if self.interface:
  710. self.interface.RefreshMobile()
  711.  
  712. def OnMobileAuthority(self):
  713. self.interface.OnMobileAuthority()
  714.  
  715. def OnBlockMode(self, mode):
  716. self.interface.OnBlockMode(mode)
  717.  
  718. def OpenQuestWindow(self, skin, idx):
  719. self.interface.OpenQuestWindow(skin, idx)
  720.  
  721. def AskGuildName(self):
  722.  
  723. guildNameBoard = uiCommon.InputDialog()
  724. guildNameBoard.SetTitle(localeInfo.GUILD_NAME)
  725. guildNameBoard.SetAcceptEvent(ui.__mem_func__(self.ConfirmGuildName))
  726. guildNameBoard.SetCancelEvent(ui.__mem_func__(self.CancelGuildName))
  727. guildNameBoard.Open()
  728.  
  729. self.guildNameBoard = guildNameBoard
  730.  
  731. def ConfirmGuildName(self):
  732. guildName = self.guildNameBoard.GetText()
  733. if not guildName:
  734. return
  735.  
  736. if net.IsInsultIn(guildName):
  737. self.PopupMessage(localeInfo.GUILD_CREATE_ERROR_INSULT_NAME)
  738. return
  739.  
  740. net.SendAnswerMakeGuildPacket(guildName)
  741. self.guildNameBoard.Close()
  742. self.guildNameBoard = None
  743. return True
  744.  
  745. def CancelGuildName(self):
  746. self.guildNameBoard.Close()
  747. self.guildNameBoard = None
  748. return True
  749.  
  750. ## Refine
  751. def PopupMessage(self, msg):
  752. self.stream.popupWindow.Close()
  753. self.stream.popupWindow.Open(msg, 0, localeInfo.UI_OK)
  754.  
  755. def OpenRefineDialog(self, targetItemPos, nextGradeItemVnum, cost, prob, type=0):
  756. self.interface.OpenRefineDialog(targetItemPos, nextGradeItemVnum, cost, prob, type)
  757.  
  758. def AppendMaterialToRefineDialog(self, vnum, count):
  759. self.interface.AppendMaterialToRefineDialog(vnum, count)
  760.  
  761. def RunUseSkillEvent(self, slotIndex, coolTime):
  762. self.interface.OnUseSkill(slotIndex, coolTime)
  763.  
  764. def ClearAffects(self):
  765. self.affectShower.ClearAffects()
  766.  
  767. def SetAffect(self, affect):
  768. self.affectShower.SetAffect(affect)
  769.  
  770. def ResetAffect(self, affect):
  771. self.affectShower.ResetAffect(affect)
  772.  
  773. # UNKNOWN_UPDATE
  774. def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
  775. self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration)
  776. if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
  777. self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1)
  778. elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type:
  779. self.BINARY_DragonSoulGiveQuilification()
  780.  
  781. def BINARY_NEW_RemoveAffect(self, type, pointIdx):
  782. self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx)
  783. if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
  784. self.interface.DragonSoulDeactivate()
  785.  
  786. # END_OF_UNKNOWN_UPDATE
  787.  
  788. def ActivateSkillSlot(self, slotIndex):
  789. if self.interface:
  790. self.interface.OnActivateSkill(slotIndex)
  791.  
  792. def DeactivateSkillSlot(self, slotIndex):
  793. if self.interface:
  794. self.interface.OnDeactivateSkill(slotIndex)
  795.  
  796. def RefreshEquipment(self):
  797. if self.interface:
  798. self.interface.RefreshInventory()
  799.  
  800. def RefreshInventory(self):
  801. if self.interface:
  802. self.interface.RefreshInventory()
  803.  
  804. def RefreshCharacter(self):
  805. if self.interface:
  806. self.interface.RefreshCharacter()
  807.  
  808. def OnGameOver(self):
  809. self.CloseTargetBoard()
  810. self.OpenRestartDialog()
  811.  
  812. def OpenRestartDialog(self):
  813. self.interface.OpenRestartDialog()
  814.  
  815. def ChangeCurrentSkill(self, skillSlotNumber):
  816. self.interface.OnChangeCurrentSkill(skillSlotNumber)
  817.  
  818. ## TargetBoard
  819. def SetPCTargetBoard(self, vid, name):
  820. self.targetBoard.Open(vid, name)
  821. if app.IsPressed(app.DIK_LCONTROL):
  822. if not player.IsSameEmpire(vid):
  823. return
  824. if player.IsMainCharacterIndex(vid):
  825. return
  826. elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(vid):
  827. return
  828.  
  829. self.interface.OpenWhisperDialog(name)
  830.  
  831.  
  832. def RefreshTargetBoardByVID(self, vid):
  833. self.targetBoard.RefreshByVID(vid)
  834.  
  835. def RefreshTargetBoardByName(self, name):
  836. self.targetBoard.RefreshByName(name)
  837.  
  838. def __RefreshTargetBoard(self):
  839. self.targetBoard.Refresh()
  840.  
  841. def SetHPTargetBoard(self, vid, hpPercentage, iMinHP, iMaxHP):
  842. if vid != self.targetBoard.GetTargetVID():
  843. self.targetBoard.ResetTargetBoard()
  844. self.targetBoard.SetEnemyVID(vid)
  845.  
  846. self.targetBoard.SetHP(hpPercentage, iMinHP, iMaxHP)
  847. self.targetBoard.Show()
  848.  
  849. def CloseTargetBoardIfDifferent(self, vid):
  850. if vid != self.targetBoard.GetTargetVID():
  851. self.targetBoard.Close()
  852.  
  853. def CloseTargetBoard(self):
  854. self.targetBoard.Close()
  855.  
  856. ## View Equipment
  857. def OpenEquipmentDialog(self, vid):
  858. self.interface.OpenEquipmentDialog(vid)
  859.  
  860. def SetEquipmentDialogItem(self, vid, slotIndex, vnum, count):
  861. self.interface.SetEquipmentDialogItem(vid, slotIndex, vnum, count)
  862.  
  863. def SetEquipmentDialogSocket(self, vid, slotIndex, socketIndex, value):
  864. self.interface.SetEquipmentDialogSocket(vid, slotIndex, socketIndex, value)
  865.  
  866. def SetEquipmentDialogAttr(self, vid, slotIndex, attrIndex, type, value):
  867. self.interface.SetEquipmentDialogAttr(vid, slotIndex, attrIndex, type, value)
  868.  
  869. # SHOW_LOCAL_MAP_NAME
  870. def ShowMapName(self, mapName, x, y):
  871.  
  872. if self.mapNameShower:
  873. self.mapNameShower.ShowMapName(mapName, x, y)
  874.  
  875. if self.interface:
  876. self.interface.SetMapName(mapName)
  877. # END_OF_SHOW_LOCAL_MAP_NAME
  878.  
  879. def BINARY_OpenAtlasWindow(self):
  880. self.interface.BINARY_OpenAtlasWindow()
  881.  
  882. ## Chat
  883. def OnRecvWhisper(self, mode, name, line):
  884. if mode == chat.WHISPER_TYPE_GM:
  885. self.interface.RegisterGameMasterName(name)
  886. chat.AppendWhisper(mode, name, line)
  887. self.interface.RecvWhisper(name)
  888.  
  889. def OnRecvWhisperSystemMessage(self, mode, name, line):
  890. chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, line)
  891. self.interface.RecvWhisper(name)
  892.  
  893. def OnRecvWhisperError(self, mode, name, line):
  894. if localeInfo.WHISPER_ERROR.has_key(mode):
  895. chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, localeInfo.WHISPER_ERROR[mode](name))
  896. else:
  897. chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, "Whisper Unknown Error(mode=%d, name=%s)" % (mode, name))
  898. self.interface.RecvWhisper(name)
  899.  
  900. def RecvWhisper(self, name):
  901. self.interface.RecvWhisper(name)
  902.  
  903. def OnPickMoney(self, money):
  904. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_PICK_MONEY % (money))
  905.  
  906. if app.ENABLE_TITLE_SYSTEM:
  907. def RecvTitle(self, title, answer):
  908. nAnswer = answer - 1
  909. DICT = {0 : localeInfo.RECV_TITLE_ANSWER_0, 1 : localeInfo.RECV_TITLE_ANSWER_1, 2 : localeInfo.RECV_TITLE_ANSWER_2, 3 : localeInfo.RECV_TITLE_ANSWER_3}
  910. try:
  911. self.PopupMessage(DICT[nAnswer])
  912. except KeyError:
  913. pass
  914.  
  915. def OnShopError(self, type):
  916. try:
  917. self.PopupMessage(localeInfo.SHOP_ERROR_DICT[type])
  918. except KeyError:
  919. self.PopupMessage(localeInfo.SHOP_ERROR_UNKNOWN % (type))
  920.  
  921. def OnSafeBoxError(self):
  922. self.PopupMessage(localeInfo.SAFEBOX_ERROR)
  923.  
  924. def OnFishingSuccess(self, isFish, fishName):
  925. chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_SUCCESS(isFish, fishName), 2000)
  926.  
  927. # ADD_FISHING_MESSAGE
  928. def OnFishingNotifyUnknown(self):
  929. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_UNKNOWN)
  930.  
  931. def OnFishingWrongPlace(self):
  932. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_WRONG_PLACE)
  933. # END_OF_ADD_FISHING_MESSAGE
  934.  
  935. def OnFishingNotify(self, isFish, fishName):
  936. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_NOTIFY(isFish, fishName))
  937.  
  938. def OnFishingFailure(self):
  939. chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_FAILURE, 2000)
  940.  
  941. def OnCannotPickItem(self):
  942. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_PICK_ITEM)
  943.  
  944. # MINING
  945. def OnCannotMining(self):
  946. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_MINING)
  947. # END_OF_MINING
  948.  
  949. def OnCannotUseSkill(self, vid, type):
  950. if localeInfo.USE_SKILL_ERROR_TAIL_DICT.has_key(type):
  951. textTail.RegisterInfoTail(vid, localeInfo.USE_SKILL_ERROR_TAIL_DICT[type])
  952.  
  953. if localeInfo.USE_SKILL_ERROR_CHAT_DICT.has_key(type):
  954. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_SKILL_ERROR_CHAT_DICT[type])
  955.  
  956. def OnCannotShotError(self, vid, type):
  957. textTail.RegisterInfoTail(vid, localeInfo.SHOT_ERROR_TAIL_DICT.get(type, localeInfo.SHOT_ERROR_UNKNOWN % (type)))
  958.  
  959. ## PointReset
  960. def StartPointReset(self):
  961. self.interface.OpenPointResetDialog()
  962.  
  963. ## Shop
  964. def StartShop(self, vid):
  965. self.interface.OpenShopDialog(vid)
  966.  
  967. def EndShop(self):
  968. self.interface.CloseShopDialog()
  969.  
  970. def RefreshShop(self):
  971. self.interface.RefreshShopDialog()
  972.  
  973. def SetShopSellingPrice(self, Price):
  974. pass
  975.  
  976. ## OfflineShop
  977. def StartOfflineShop(self, vid):
  978. self.interface.OpenOfflineShopDialog(vid)
  979.  
  980. def EndOfflineShop(self):
  981. self.interface.CloseOfflineShopDialog()
  982.  
  983. def RefreshOfflineShop(self):
  984. self.interface.RefreshOfflineShopDialog()
  985.  
  986. ## Exchange
  987. def StartExchange(self):
  988. self.interface.StartExchange()
  989.  
  990. def EndExchange(self):
  991. self.interface.EndExchange()
  992.  
  993. def RefreshExchange(self):
  994. self.interface.RefreshExchange()
  995.  
  996. ## Party
  997. def RecvPartyInviteQuestion(self, leaderVID, leaderName):
  998. partyInviteQuestionDialog = uiCommon.QuestionDialog()
  999. partyInviteQuestionDialog.SetText(leaderName + localeInfo.PARTY_DO_YOU_JOIN)
  1000. partyInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerPartyInvite(arg))
  1001. partyInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerPartyInvite(arg))
  1002. partyInviteQuestionDialog.Open()
  1003. partyInviteQuestionDialog.partyLeaderVID = leaderVID
  1004. self.partyInviteQuestionDialog = partyInviteQuestionDialog
  1005.  
  1006. def AnswerPartyInvite(self, answer):
  1007.  
  1008. if not self.partyInviteQuestionDialog:
  1009. return
  1010.  
  1011. partyLeaderVID = self.partyInviteQuestionDialog.partyLeaderVID
  1012.  
  1013. distance = player.GetCharacterDistance(partyLeaderVID)
  1014. if distance < 0.0 or distance > 5000:
  1015. answer = False
  1016.  
  1017. net.SendPartyInviteAnswerPacket(partyLeaderVID, answer)
  1018.  
  1019. self.partyInviteQuestionDialog.Close()
  1020. self.partyInviteQuestionDialog = None
  1021.  
  1022. def AddPartyMember(self, pid, name):
  1023. self.interface.AddPartyMember(pid, name)
  1024.  
  1025. def UpdatePartyMemberInfo(self, pid):
  1026. self.interface.UpdatePartyMemberInfo(pid)
  1027.  
  1028. def RemovePartyMember(self, pid):
  1029. self.interface.RemovePartyMember(pid)
  1030. self.__RefreshTargetBoard()
  1031.  
  1032. def LinkPartyMember(self, pid, vid):
  1033. self.interface.LinkPartyMember(pid, vid)
  1034.  
  1035. def UnlinkPartyMember(self, pid):
  1036. self.interface.UnlinkPartyMember(pid)
  1037.  
  1038. def UnlinkAllPartyMember(self):
  1039. self.interface.UnlinkAllPartyMember()
  1040.  
  1041. def ExitParty(self):
  1042. self.interface.ExitParty()
  1043. self.RefreshTargetBoardByVID(self.targetBoard.GetTargetVID())
  1044.  
  1045. def ChangePartyParameter(self, distributionMode):
  1046. self.interface.ChangePartyParameter(distributionMode)
  1047.  
  1048. ## Messenger
  1049. def OnMessengerAddFriendQuestion(self, name):
  1050. messengerAddFriendQuestion = uiCommon.QuestionDialog2()
  1051. messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_1 % (name))
  1052. messengerAddFriendQuestion.SetText2(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_2)
  1053. messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend))
  1054. messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend))
  1055. messengerAddFriendQuestion.Open()
  1056. messengerAddFriendQuestion.name = name
  1057. self.messengerAddFriendQuestion = messengerAddFriendQuestion
  1058.  
  1059. def OnAcceptAddFriend(self):
  1060. name = self.messengerAddFriendQuestion.name
  1061. net.SendChatPacket("/messenger_auth y " + name)
  1062. self.OnCloseAddFriendQuestionDialog()
  1063. return True
  1064.  
  1065. def OnDenyAddFriend(self):
  1066. name = self.messengerAddFriendQuestion.name
  1067. net.SendChatPacket("/messenger_auth n " + name)
  1068. self.OnCloseAddFriendQuestionDialog()
  1069. return True
  1070.  
  1071. def OnCloseAddFriendQuestionDialog(self):
  1072. self.messengerAddFriendQuestion.Close()
  1073. self.messengerAddFriendQuestion = None
  1074. return True
  1075.  
  1076. ## SafeBox
  1077. def OpenSafeboxWindow(self, size):
  1078. self.interface.OpenSafeboxWindow(size)
  1079.  
  1080. def RefreshSafebox(self):
  1081. self.interface.RefreshSafebox()
  1082.  
  1083. def RefreshSafeboxMoney(self):
  1084. self.interface.RefreshSafeboxMoney()
  1085.  
  1086. # ITEM_MALL
  1087. def OpenMallWindow(self, size):
  1088. self.interface.OpenMallWindow(size)
  1089.  
  1090. def RefreshMall(self):
  1091. self.interface.RefreshMall()
  1092. # END_OF_ITEM_MALL
  1093.  
  1094. ## Guild
  1095. def RecvGuildInviteQuestion(self, guildID, guildName):
  1096. guildInviteQuestionDialog = uiCommon.QuestionDialog()
  1097. guildInviteQuestionDialog.SetText(guildName + localeInfo.GUILD_DO_YOU_JOIN)
  1098. guildInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerGuildInvite(arg))
  1099. guildInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerGuildInvite(arg))
  1100. guildInviteQuestionDialog.Open()
  1101. guildInviteQuestionDialog.guildID = guildID
  1102. self.guildInviteQuestionDialog = guildInviteQuestionDialog
  1103.  
  1104. def AnswerGuildInvite(self, answer):
  1105.  
  1106. if not self.guildInviteQuestionDialog:
  1107. return
  1108.  
  1109. guildLeaderVID = self.guildInviteQuestionDialog.guildID
  1110. net.SendGuildInviteAnswerPacket(guildLeaderVID, answer)
  1111.  
  1112. self.guildInviteQuestionDialog.Close()
  1113. self.guildInviteQuestionDialog = None
  1114.  
  1115.  
  1116. def DeleteGuild(self):
  1117. self.interface.DeleteGuild()
  1118.  
  1119. ## Clock
  1120. def ShowClock(self, second):
  1121. self.interface.ShowClock(second)
  1122.  
  1123. def HideClock(self):
  1124. self.interface.HideClock()
  1125.  
  1126. ## Emotion
  1127. def BINARY_ActEmotion(self, emotionIndex):
  1128. if self.interface.wndCharacter:
  1129. self.interface.wndCharacter.ActEmotion(emotionIndex)
  1130.  
  1131. ###############################################################################################
  1132. ###############################################################################################
  1133. ## Keyboard Functions
  1134.  
  1135. def CheckFocus(self):
  1136. if False == self.IsFocus():
  1137. if True == self.interface.IsOpenChat():
  1138. self.interface.ToggleChat()
  1139.  
  1140. self.SetFocus()
  1141.  
  1142. def SaveScreen(self):
  1143. print "save screen"
  1144.  
  1145. # SCREENSHOT_CWDSAVE
  1146. if SCREENSHOT_CWDSAVE:
  1147. if not os.path.exists(os.getcwd()+os.sep+"screenshot"):
  1148. os.mkdir(os.getcwd()+os.sep+"screenshot")
  1149.  
  1150. (succeeded, name) = grp.SaveScreenShotToPath(os.getcwd()+os.sep+"screenshot"+os.sep)
  1151. elif SCREENSHOT_DIR:
  1152. (succeeded, name) = grp.SaveScreenShot(SCREENSHOT_DIR)
  1153. else:
  1154. (succeeded, name) = grp.SaveScreenShot()
  1155. # END_OF_SCREENSHOT_CWDSAVE
  1156.  
  1157. if succeeded:
  1158. pass
  1159. """
  1160. chat.AppendChat(chat.CHAT_TYPE_INFO, name + localeInfo.SCREENSHOT_SAVE1)
  1161. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE2)
  1162. """
  1163. else:
  1164. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE_FAILURE)
  1165.  
  1166. def ShowConsole(self):
  1167. if debugInfo.IsDebugMode() or True == self.consoleEnable:
  1168. player.EndKeyWalkingImmediately()
  1169. self.console.OpenWindow()
  1170.  
  1171. def ShowName(self):
  1172. self.ShowNameFlag = True
  1173. self.playerGauge.EnableShowAlways()
  1174. player.SetQuickPage(self.quickSlotPageIndex+1)
  1175.  
  1176. # ADD_ALWAYS_SHOW_NAME
  1177. def __IsShowName(self):
  1178.  
  1179. if systemSetting.IsAlwaysShowName():
  1180. return True
  1181.  
  1182. if self.ShowNameFlag:
  1183. return True
  1184.  
  1185. return False
  1186. # END_OF_ADD_ALWAYS_SHOW_NAME
  1187.  
  1188. def HideName(self):
  1189. self.ShowNameFlag = False
  1190. self.playerGauge.DisableShowAlways()
  1191. player.SetQuickPage(self.quickSlotPageIndex)
  1192.  
  1193. def ShowMouseImage(self):
  1194. self.interface.ShowMouseImage()
  1195.  
  1196. def HideMouseImage(self):
  1197. self.interface.HideMouseImage()
  1198.  
  1199. def StartAttack(self):
  1200. player.SetAttackKeyState(True)
  1201.  
  1202. def EndAttack(self):
  1203. player.SetAttackKeyState(False)
  1204.  
  1205. def MoveUp(self):
  1206. player.SetSingleDIKKeyState(app.DIK_UP, True)
  1207.  
  1208. def MoveDown(self):
  1209. player.SetSingleDIKKeyState(app.DIK_DOWN, True)
  1210.  
  1211. def MoveLeft(self):
  1212. player.SetSingleDIKKeyState(app.DIK_LEFT, True)
  1213.  
  1214. def MoveRight(self):
  1215. player.SetSingleDIKKeyState(app.DIK_RIGHT, True)
  1216.  
  1217. def StopUp(self):
  1218. player.SetSingleDIKKeyState(app.DIK_UP, False)
  1219.  
  1220. def StopDown(self):
  1221. player.SetSingleDIKKeyState(app.DIK_DOWN, False)
  1222.  
  1223. def StopLeft(self):
  1224. player.SetSingleDIKKeyState(app.DIK_LEFT, False)
  1225.  
  1226. def StopRight(self):
  1227. player.SetSingleDIKKeyState(app.DIK_RIGHT, False)
  1228.  
  1229. def PickUpItem(self):
  1230. player.PickCloseItem()
  1231.  
  1232. ###############################################################################################
  1233. ###############################################################################################
  1234. ## Event Handler
  1235.  
  1236. def OnKeyDown(self, key):
  1237. if self.interface.wndWeb and self.interface.wndWeb.IsShow():
  1238. return
  1239.  
  1240. constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)
  1241.  
  1242. try:
  1243. self.onPressKeyDict[key]()
  1244. except KeyError:
  1245. pass
  1246. except:
  1247. raise
  1248.  
  1249. return True
  1250.  
  1251. def OnKeyUp(self, key):
  1252. try:
  1253. self.onClickKeyDict[key]()
  1254. except KeyError:
  1255. pass
  1256. except:
  1257. raise
  1258.  
  1259. return True
  1260.  
  1261. def OnMouseLeftButtonDown(self):
  1262. if self.interface.BUILD_OnMouseLeftButtonDown():
  1263. return
  1264.  
  1265. if mouseModule.mouseController.isAttached():
  1266. self.CheckFocus()
  1267. else:
  1268. hyperlink = ui.GetHyperlink()
  1269. if hyperlink:
  1270. return
  1271. else:
  1272. self.CheckFocus()
  1273. player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);
  1274.  
  1275. return True
  1276.  
  1277. def OnMouseLeftButtonUp(self):
  1278.  
  1279. if self.interface.BUILD_OnMouseLeftButtonUp():
  1280. return
  1281.  
  1282. if mouseModule.mouseController.isAttached():
  1283.  
  1284. attachedType = mouseModule.mouseController.GetAttachedType()
  1285. attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
  1286. attachedItemSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1287. attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
  1288.  
  1289. ## QuickSlot
  1290. if player.SLOT_TYPE_QUICK_SLOT == attachedType:
  1291. player.RequestDeleteGlobalQuickSlot(attachedItemSlotPos)
  1292.  
  1293. ## Inventory
  1294. elif player.SLOT_TYPE_INVENTORY == attachedType:
  1295.  
  1296. if player.ITEM_MONEY == attachedItemIndex:
  1297. self.__PutMoney(attachedType, attachedItemCount, self.PickingCharacterIndex)
  1298. else:
  1299. self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)
  1300.  
  1301. ## DragonSoul
  1302. elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
  1303. self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)
  1304.  
  1305. mouseModule.mouseController.DeattachObject()
  1306.  
  1307. else:
  1308. hyperlink = ui.GetHyperlink()
  1309. if hyperlink:
  1310. if app.IsPressed(app.DIK_LALT):
  1311. link = chat.GetLinkFromHyperlink(hyperlink)
  1312. ime.PasteString(link)
  1313. else:
  1314. self.interface.MakeHyperlinkTooltip(hyperlink)
  1315. return
  1316. else:
  1317. player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)
  1318.  
  1319. #player.EndMouseWalking()
  1320. return True
  1321.  
  1322. def __PutItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, dstChrID):
  1323. if player.SLOT_TYPE_INVENTORY == attachedType or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
  1324. attachedInvenType = player.SlotTypeToInvenType(attachedType)
  1325. if True == chr.HasInstance(self.PickingCharacterIndex) and player.GetMainCharacterIndex() != dstChrID:
  1326. if player.IsEquipmentSlot(attachedItemSlotPos):
  1327. self.stream.popupWindow.Close()
  1328. self.stream.popupWindow.Open(localeInfo.EXCHANGE_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)
  1329. else:
  1330. if chr.IsNPC(dstChrID):
  1331. net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
  1332. else:
  1333. if app.ENABLE_MELEY_LAIR_DUNGEON:
  1334. if chr.IsStone(dstChrID):
  1335. net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
  1336. else:
  1337. net.SendExchangeStartPacket(dstChrID)
  1338. net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
  1339. else:
  1340. net.SendExchangeStartPacket(dstChrID)
  1341. net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
  1342. else:
  1343. self.__DropItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount)
  1344.  
  1345. def __PutMoney(self, attachedType, attachedMoney, dstChrID):
  1346. if True == chr.HasInstance(dstChrID) and player.GetMainCharacterIndex() != dstChrID:
  1347. net.SendExchangeStartPacket(dstChrID)
  1348. net.SendExchangeElkAddPacket(attachedMoney)
  1349. else:
  1350. self.__DropMoney(attachedType, attachedMoney)
  1351.  
  1352. def __DropMoney(self, attachedType, attachedMoney):
  1353. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1354. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
  1355. return
  1356.  
  1357. if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
  1358. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_OFFLINE_SHOP)
  1359. return
  1360.  
  1361. if (uiOfflineShop.IsEditingOfflineShop()):
  1362. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_OFFLINE_SHOP)
  1363. return
  1364.  
  1365. if attachedMoney >= 1000:
  1366. self.stream.popupWindow.Close()
  1367. self.stream.popupWindow.Open(localeInfo.DROP_MONEY_FAILURE_1000_OVER, 0, localeInfo.UI_OK)
  1368. return
  1369.  
  1370. itemDropQuestionDialog = uiCommon.QuestionDialog()
  1371. itemDropQuestionDialog.SetText(localeInfo.DO_YOU_DROP_MONEY % (attachedMoney))
  1372. itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg))
  1373. itemDropQuestionDialog.SetCancelEvent(lambda arg=False: self.RequestDropItem(arg))
  1374. itemDropQuestionDialog.Open()
  1375. itemDropQuestionDialog.dropType = attachedType
  1376. itemDropQuestionDialog.dropCount = attachedMoney
  1377. itemDropQuestionDialog.dropNumber = player.ITEM_MONEY
  1378. self.itemDropQuestionDialog = itemDropQuestionDialog
  1379.  
  1380. def __DropItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount):
  1381. # PRIVATESHOP_DISABLE_ITEM_DROP - °³ÀλóÁ¡ ¿­°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ ¹ö¸² ¹æÁö
  1382. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1383. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
  1384. return
  1385. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1386.  
  1387. # OFFLINESHOP_DISABLE_ITEM_DROP
  1388. if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
  1389. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_OFFLINE_SHOP)
  1390. return
  1391. # END_OFF_OFFLINESHOP_DISABLE_ITEM_DROP
  1392.  
  1393. # OFFLINESHOP_DISABLE_ITEM_DROP2
  1394. if (uiOfflineShop.IsEditingOfflineShop()):
  1395. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_OFFLINE_SHOP)
  1396. return
  1397. # END_OF_OFFLINESHOP_DISABLE_ITEM_DROP2
  1398.  
  1399. if player.SLOT_TYPE_INVENTORY == attachedType and player.IsEquipmentSlot(attachedItemSlotPos):
  1400. self.stream.popupWindow.Close()
  1401. self.stream.popupWindow.Open(localeInfo.DROP_ITEM_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)
  1402.  
  1403. else:
  1404. if player.SLOT_TYPE_INVENTORY == attachedType:
  1405. dropItemIndex = player.GetItemIndex(attachedItemSlotPos)
  1406.  
  1407. item.SelectItem(dropItemIndex)
  1408. dropItemName = item.GetItemName()
  1409.  
  1410. ## Question Text
  1411. questionText = localeInfo.HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, attachedItemCount)
  1412.  
  1413. ## Dialog
  1414. itemDropQuestionDialog = uiCommon.QuestionDialogItem()
  1415. itemDropQuestionDialog.SetText(questionText)
  1416. itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg))
  1417. itemDropQuestionDialog.SetCancelEvent(lambda arg=False: self.RequestDropItem(arg))
  1418. itemDropQuestionDialog.SetDestroyEvent(lambda arg=True: self.RequestDestroyItem(arg))
  1419. itemDropQuestionDialog.Open()
  1420. itemDropQuestionDialog.dropType = attachedType
  1421. itemDropQuestionDialog.dropNumber = attachedItemSlotPos
  1422. itemDropQuestionDialog.dropCount = attachedItemCount
  1423. self.itemDropQuestionDialog = itemDropQuestionDialog
  1424.  
  1425. constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(1)
  1426. elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
  1427. dropItemIndex = player.GetItemIndex(player.DRAGON_SOUL_INVENTORY, attachedItemSlotPos)
  1428.  
  1429. item.SelectItem(dropItemIndex)
  1430. dropItemName = item.GetItemName()
  1431.  
  1432. ## Question Text
  1433. questionText = localeInfo.HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, attachedItemCount)
  1434.  
  1435. ## Dialog
  1436. itemDropQuestionDialog = uiCommon.QuestionDialog()
  1437. itemDropQuestionDialog.SetText(questionText)
  1438. itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg))
  1439. itemDropQuestionDialog.SetCancelEvent(lambda arg=False: self.RequestDropItem(arg))
  1440. itemDropQuestionDialog.Open()
  1441. itemDropQuestionDialog.dropType = attachedType
  1442. itemDropQuestionDialog.dropNumber = attachedItemSlotPos
  1443. itemDropQuestionDialog.dropCount = attachedItemCount
  1444. self.itemDropQuestionDialog = itemDropQuestionDialog
  1445.  
  1446. constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(1)
  1447.  
  1448. def RequestDropItem(self, answer):
  1449. if not self.itemDropQuestionDialog:
  1450. return
  1451.  
  1452. if answer:
  1453. dropType = self.itemDropQuestionDialog.dropType
  1454. dropCount = self.itemDropQuestionDialog.dropCount
  1455. dropNumber = self.itemDropQuestionDialog.dropNumber
  1456.  
  1457. if player.SLOT_TYPE_INVENTORY == dropType:
  1458. if dropNumber == player.ITEM_MONEY:
  1459. net.SendGoldDropPacketNew(dropCount)
  1460. snd.PlaySound("sound/ui/money.wav")
  1461. else:
  1462. # PRIVATESHOP_DISABLE_ITEM_DROP
  1463. self.__SendDropItemPacket(dropNumber, dropCount)
  1464. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1465. elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == dropType:
  1466. # PRIVATESHOP_DISABLE_ITEM_DROP
  1467. self.__SendDropItemPacket(dropNumber, dropCount, player.DRAGON_SOUL_INVENTORY)
  1468. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1469.  
  1470. self.itemDropQuestionDialog.Close()
  1471. self.itemDropQuestionDialog = None
  1472. constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)
  1473.  
  1474. def RequestDestroyItem(self, answer):
  1475. if not self.itemDropQuestionDialog:
  1476. return
  1477. if answer:
  1478. dropType = self.itemDropQuestionDialog.dropType
  1479. dropNumber = self.itemDropQuestionDialog.dropNumber
  1480. if player.SLOT_TYPE_INVENTORY == dropType:
  1481. if dropNumber == player.ITEM_MONEY:
  1482. return
  1483. else:
  1484. self.__SendDestroyItemPacket(dropNumber)
  1485.  
  1486. self.itemDropQuestionDialog.Close()
  1487. self.itemDropQuestionDialog = None
  1488. constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)
  1489.  
  1490. # PRIVATESHOP_DISABLE_ITEM_DROP
  1491. def __SendDropItemPacket(self, itemVNum, itemCount, itemInvenType = player.INVENTORY):
  1492. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1493. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
  1494. return
  1495.  
  1496. if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
  1497. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_OFFLINE_SHOP)
  1498. return
  1499.  
  1500. if (uiOfflineShop.IsEditingOfflineShop()):
  1501. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_OFFLINE_SHOP)
  1502. return
  1503.  
  1504. net.SendItemDropPacketNew(itemInvenType, itemVNum, itemCount)
  1505. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1506.  
  1507. def __SendDestroyItemPacket(self, itemVNum, itemInvenType = player.INVENTORY):
  1508. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1509. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
  1510. return
  1511.  
  1512. if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
  1513. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_OFFLINE_SHOP)
  1514. return
  1515.  
  1516. if (uiOfflineShop.IsEditingOfflineShop()):
  1517. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_OFFLINE_SHOP)
  1518. return
  1519.  
  1520. net.SendItemDestroyPacket(itemVNum)
  1521.  
  1522. def OnMouseRightButtonDown(self):
  1523.  
  1524. self.CheckFocus()
  1525.  
  1526. if True == mouseModule.mouseController.isAttached():
  1527. mouseModule.mouseController.DeattachObject()
  1528.  
  1529. else:
  1530. player.SetMouseState(player.MBT_RIGHT, player.MBS_PRESS)
  1531.  
  1532. return True
  1533.  
  1534. def OnMouseRightButtonUp(self):
  1535. if True == mouseModule.mouseController.isAttached():
  1536. return True
  1537.  
  1538. player.SetMouseState(player.MBT_RIGHT, player.MBS_CLICK)
  1539. return True
  1540.  
  1541. def OnMouseMiddleButtonDown(self):
  1542. player.SetMouseMiddleButtonState(player.MBS_PRESS)
  1543.  
  1544. def OnMouseMiddleButtonUp(self):
  1545. player.SetMouseMiddleButtonState(player.MBS_CLICK)
  1546.  
  1547. def OnUpdate(self):
  1548. app.UpdateGame()
  1549.  
  1550. if self.mapNameShower.IsShow():
  1551. self.mapNameShower.Update()
  1552.  
  1553. if self.isShowDebugInfo:
  1554. self.UpdateDebugInfo()
  1555.  
  1556. if self.enableXMasBoom:
  1557. self.__XMasBoom_Update()
  1558.  
  1559. self.interface.BUILD_OnUpdate()
  1560.  
  1561.  
  1562. def UpdateDebugInfo(self):
  1563. #
  1564. # ij¸¯ÅÍ ÁÂÇ¥ ¹× FPS Ãâ·Â
  1565. (x, y, z) = player.GetMainCharacterPosition()
  1566. nUpdateTime = app.GetUpdateTime()
  1567. nUpdateFPS = app.GetUpdateFPS()
  1568. nRenderFPS = app.GetRenderFPS()
  1569. nFaceCount = app.GetFaceCount()
  1570. fFaceSpeed = app.GetFaceSpeed()
  1571. nST=background.GetRenderShadowTime()
  1572. (fAveRT, nCurRT) = app.GetRenderTime()
  1573. (iNum, fFogStart, fFogEnd, fFarCilp) = background.GetDistanceSetInfo()
  1574. (iPatch, iSplat, fSplatRatio, sTextureNum) = background.GetRenderedSplatNum()
  1575.  
  1576. def OnRender(self):
  1577. app.RenderGame()
  1578.  
  1579. if self.console.Console.collision:
  1580. background.RenderCollision()
  1581. chr.RenderCollision()
  1582.  
  1583. (x, y) = app.GetCursorPosition()
  1584.  
  1585. ########################
  1586. # Picking
  1587. ########################
  1588. textTail.UpdateAllTextTail()
  1589.  
  1590. if True == wndMgr.IsPickedWindow(self.hWnd):
  1591.  
  1592. self.PickingCharacterIndex = chr.Pick()
  1593.  
  1594. if -1 != self.PickingCharacterIndex:
  1595. textTail.ShowCharacterTextTail(self.PickingCharacterIndex)
  1596. if 0 != self.targetBoard.GetTargetVID():
  1597. textTail.ShowCharacterTextTail(self.targetBoard.GetTargetVID())
  1598.  
  1599. # ADD_ALWAYS_SHOW_NAME
  1600. if not self.__IsShowName():
  1601. self.PickingItemIndex = item.Pick()
  1602. if -1 != self.PickingItemIndex:
  1603. textTail.ShowItemTextTail(self.PickingItemIndex)
  1604. # END_OF_ADD_ALWAYS_SHOW_NAME
  1605.  
  1606. ## Show all name in the range
  1607.  
  1608. # ADD_ALWAYS_SHOW_NAME
  1609. if self.__IsShowName():
  1610. textTail.ShowAllTextTail()
  1611. self.PickingItemIndex = textTail.Pick(x, y)
  1612. # END_OF_ADD_ALWAYS_SHOW_NAME
  1613.  
  1614. textTail.UpdateShowingTextTail()
  1615. textTail.ArrangeTextTail()
  1616. if -1 != self.PickingItemIndex:
  1617. textTail.SelectItemName(self.PickingItemIndex)
  1618.  
  1619. grp.PopState()
  1620. grp.SetInterfaceRenderState()
  1621.  
  1622. textTail.Render()
  1623. textTail.HideAllTextTail()
  1624.  
  1625. def OnPressEscapeKey(self):
  1626. if app.TARGET == app.GetCursor():
  1627. app.SetCursor(app.NORMAL)
  1628.  
  1629. elif True == mouseModule.mouseController.isAttached():
  1630. mouseModule.mouseController.DeattachObject()
  1631.  
  1632. else:
  1633. self.interface.OpenSystemDialog()
  1634.  
  1635. return True
  1636.  
  1637. def OnIMEReturn(self):
  1638. if app.IsPressed(app.DIK_LSHIFT):
  1639. self.interface.OpenWhisperDialogWithoutTarget()
  1640. else:
  1641. self.interface.ToggleChat()
  1642. return True
  1643.  
  1644. def OnPressExitKey(self):
  1645. self.interface.ToggleSystemDialog()
  1646. return True
  1647.  
  1648. ## BINARY CALLBACK
  1649. ######################################################################################
  1650.  
  1651. # WEDDING
  1652. def BINARY_LoverInfo(self, name, lovePoint):
  1653. if self.interface.wndMessenger:
  1654. self.interface.wndMessenger.OnAddLover(name, lovePoint)
  1655. if self.affectShower:
  1656. self.affectShower.SetLoverInfo(name, lovePoint)
  1657.  
  1658. def BINARY_UpdateLovePoint(self, lovePoint):
  1659. if self.interface.wndMessenger:
  1660. self.interface.wndMessenger.OnUpdateLovePoint(lovePoint)
  1661. if self.affectShower:
  1662. self.affectShower.OnUpdateLovePoint(lovePoint)
  1663. # END_OF_WEDDING
  1664.  
  1665. def BINARY_AddTargetMonsterDropInfo(self, raceNum, itemVnum, itemCount):
  1666. if not raceNum in constInfo.MONSTER_INFO_DATA:
  1667. constInfo.MONSTER_INFO_DATA.update({raceNum : {}})
  1668. constInfo.MONSTER_INFO_DATA[raceNum].update({"items" : []})
  1669. curList = constInfo.MONSTER_INFO_DATA[raceNum]["items"]
  1670.  
  1671. isUpgradeable = False
  1672. isMetin = False
  1673. item.SelectItem(itemVnum)
  1674. if item.GetItemType() == item.ITEM_TYPE_WEAPON or item.GetItemType() == item.ITEM_TYPE_ARMOR:
  1675. isUpgradeable = True
  1676. elif item.GetItemType() == item.ITEM_TYPE_METIN:
  1677. isMetin = True
  1678.  
  1679. for curItem in curList:
  1680. if isUpgradeable:
  1681. if curItem.has_key("vnum_list") and curItem["vnum_list"][0] / 10 * 10 == itemVnum / 10 * 10:
  1682. if not (itemVnum in curItem["vnum_list"]):
  1683. curItem["vnum_list"].append(itemVnum)
  1684. return
  1685. elif isMetin:
  1686. if curItem.has_key("vnum_list"):
  1687. baseVnum = curItem["vnum_list"][0]
  1688. if curItem.has_key("vnum_list") and (baseVnum - baseVnum%1000) == (itemVnum - itemVnum%1000):
  1689. if not (itemVnum in curItem["vnum_list"]):
  1690. curItem["vnum_list"].append(itemVnum)
  1691. return
  1692. else:
  1693. if curItem.has_key("vnum") and curItem["vnum"] == itemVnum and curItem["count"] == itemCount:
  1694. return
  1695.  
  1696. if isUpgradeable or isMetin:
  1697. curList.append({"vnum_list":[itemVnum], "count":itemCount})
  1698. else:
  1699. curList.append({"vnum":itemVnum, "count":itemCount})
  1700.  
  1701. def BINARY_RefreshTargetMonsterDropInfo(self, raceNum):
  1702. self.targetBoard.RefreshMonsterInfoBoard()
  1703.  
  1704. # QUEST_CONFIRM
  1705. def BINARY_OnQuestConfirm(self, msg, timeout, pid):
  1706. confirmDialog = uiCommon.QuestionDialogWithTimeLimit()
  1707. confirmDialog.Open(msg, timeout)
  1708. confirmDialog.SetAcceptEvent(lambda answer=True, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
  1709. confirmDialog.SetCancelEvent(lambda answer=False, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
  1710. self.confirmDialog = confirmDialog
  1711. # END_OF_QUEST_CONFIRM
  1712.  
  1713. # GIFT command
  1714. def Gift_Show(self):
  1715. self.interface.ShowGift()
  1716.  
  1717. # CUBE
  1718. def BINARY_Cube_Open(self, npcVNUM):
  1719. self.currentCubeNPC = npcVNUM
  1720.  
  1721. self.interface.OpenCubeWindow()
  1722.  
  1723.  
  1724. if npcVNUM not in self.cubeInformation:
  1725. net.SendChatPacket("/cube r_info")
  1726. else:
  1727. cubeInfoList = self.cubeInformation[npcVNUM]
  1728.  
  1729. i = 0
  1730. for cubeInfo in cubeInfoList:
  1731. self.interface.wndCube.AddCubeResultItem(cubeInfo["vnum"], cubeInfo["count"])
  1732.  
  1733. j = 0
  1734. for materialList in cubeInfo["materialList"]:
  1735. for materialInfo in materialList:
  1736. itemVnum, itemCount = materialInfo
  1737. self.interface.wndCube.AddMaterialInfo(i, j, itemVnum, itemCount)
  1738. j = j + 1
  1739.  
  1740. i = i + 1
  1741.  
  1742. self.interface.wndCube.Refresh()
  1743.  
  1744. def BINARY_Cube_Close(self):
  1745. self.interface.CloseCubeWindow()
  1746.  
  1747. # Á¦ÀÛ¿¡ ÇÊ¿äÇÑ °ñµå, ¿¹»óµÇ´Â ¿Ï¼ºÇ°ÀÇ VNUM°ú °³¼ö Á¤º¸ update
  1748. def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
  1749. self.interface.UpdateCubeInfo(gold, itemVnum, count)
  1750.  
  1751. def BINARY_Cube_Succeed(self, itemVnum, count):
  1752. print "Å¥ºê Á¦ÀÛ ¼º°ø"
  1753. self.interface.SucceedCubeWork(itemVnum, count)
  1754. pass
  1755.  
  1756. def BINARY_Cube_Failed(self):
  1757. print "Å¥ºê Á¦ÀÛ ½ÇÆÐ"
  1758. self.interface.FailedCubeWork()
  1759. pass
  1760.  
  1761. def BINARY_Cube_ResultList(self, npcVNUM, listText):
  1762. # ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 ÀÌ·±½ÄÀ¸·Î "/" ¹®ÀÚ·Î ±¸ºÐµÈ ¸®½ºÆ®¸¦ ÁÜ
  1763. #print listText
  1764.  
  1765. if npcVNUM == 0:
  1766. npcVNUM = self.currentCubeNPC
  1767.  
  1768. self.cubeInformation[npcVNUM] = []
  1769.  
  1770. try:
  1771. for eachInfoText in listText.split("/"):
  1772. eachInfo = eachInfoText.split(",")
  1773. itemVnum = int(eachInfo[0])
  1774. itemCount = int(eachInfo[1])
  1775.  
  1776. self.cubeInformation[npcVNUM].append({"vnum": itemVnum, "count": itemCount})
  1777. self.interface.wndCube.AddCubeResultItem(itemVnum, itemCount)
  1778.  
  1779. resultCount = len(self.cubeInformation[npcVNUM])
  1780. requestCount = 7
  1781. modCount = resultCount % requestCount
  1782. splitCount = resultCount / requestCount
  1783. for i in xrange(splitCount):
  1784. #print("/cube r_info %d %d" % (i * requestCount, requestCount))
  1785. net.SendChatPacket("/cube r_info %d %d" % (i * requestCount, requestCount))
  1786.  
  1787. if 0 < modCount:
  1788. #print("/cube r_info %d %d" % (splitCount * requestCount, modCount))
  1789. net.SendChatPacket("/cube r_info %d %d" % (splitCount * requestCount, modCount))
  1790.  
  1791. except RuntimeError, msg:
  1792. dbg.TraceError(msg)
  1793. return 0
  1794.  
  1795. pass
  1796.  
  1797. def BINARY_Cube_MaterialInfo(self, startIndex, listCount, listText):
  1798. # Material Text Format : 125,1|126,2|127,2|123,5&555,5&555,4/120000
  1799. try:
  1800. #print listText
  1801.  
  1802. if 3 > len(listText):
  1803. dbg.TraceError("Wrong Cube Material Infomation")
  1804. return 0
  1805.  
  1806.  
  1807.  
  1808. eachResultList = listText.split("@")
  1809.  
  1810. cubeInfo = self.cubeInformation[self.currentCubeNPC]
  1811.  
  1812. itemIndex = 0
  1813. for eachResultText in eachResultList:
  1814. cubeInfo[startIndex + itemIndex]["materialList"] = [[], [], [], [], []]
  1815. materialList = cubeInfo[startIndex + itemIndex]["materialList"]
  1816.  
  1817. gold = 0
  1818. splitResult = eachResultText.split("/")
  1819. if 1 < len(splitResult):
  1820. gold = int(splitResult[1])
  1821.  
  1822. #print "splitResult : ", splitResult
  1823. eachMaterialList = splitResult[0].split("&")
  1824.  
  1825. i = 0
  1826. for eachMaterialText in eachMaterialList:
  1827. complicatedList = eachMaterialText.split("|")
  1828.  
  1829. if 0 < len(complicatedList):
  1830. for complicatedText in complicatedList:
  1831. (itemVnum, itemCount) = complicatedText.split(",")
  1832. itemVnum = int(itemVnum)
  1833. itemCount = int(itemCount)
  1834. self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount)
  1835.  
  1836. materialList[i].append((itemVnum, itemCount))
  1837.  
  1838. else:
  1839. itemVnum, itemCount = eachMaterialText.split(",")
  1840. itemVnum = int(itemVnum)
  1841. itemCount = int(itemCount)
  1842. self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount)
  1843.  
  1844. materialList[i].append((itemVnum, itemCount))
  1845.  
  1846. i = i + 1
  1847.  
  1848.  
  1849.  
  1850. itemIndex = itemIndex + 1
  1851.  
  1852. self.interface.wndCube.Refresh()
  1853.  
  1854.  
  1855. except RuntimeError, msg:
  1856. dbg.TraceError(msg)
  1857. return 0
  1858.  
  1859. pass
  1860.  
  1861. # END_OF_CUBE
  1862.  
  1863. # ¿ëÈ¥¼®
  1864. def BINARY_Highlight_Item(self, inven_type, inven_pos):
  1865. self.interface.Highligt_Item(inven_type, inven_pos)
  1866.  
  1867. def BINARY_DragonSoulGiveQuilification(self):
  1868. self.interface.DragonSoulGiveQuilification()
  1869.  
  1870. def BINARY_DragonSoulRefineWindow_Open(self):
  1871. self.interface.OpenDragonSoulRefineWindow()
  1872.  
  1873. def BINARY_DragonSoulRefineWindow_RefineFail(self, reason, inven_type, inven_pos):
  1874. self.interface.FailDragonSoulRefine(reason, inven_type, inven_pos)
  1875.  
  1876. def BINARY_DragonSoulRefineWindow_RefineSucceed(self, inven_type, inven_pos):
  1877. self.interface.SucceedDragonSoulRefine(inven_type, inven_pos)
  1878.  
  1879. # END of DRAGON SOUL REFINE WINDOW
  1880.  
  1881. def BINARY_SetBigMessage(self, message):
  1882. self.interface.bigBoard.SetTip(message)
  1883.  
  1884. def BINARY_SetTipMessage(self, message):
  1885. self.interface.tipBoard.SetTip(message)
  1886.  
  1887. def BINARY_AppendNotifyMessage(self, type):
  1888. if not type in localeInfo.NOTIFY_MESSAGE:
  1889. return
  1890. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.NOTIFY_MESSAGE[type])
  1891.  
  1892. def BINARY_Guild_EnterGuildArea(self, areaID):
  1893. self.interface.BULID_EnterGuildArea(areaID)
  1894.  
  1895. def BINARY_Guild_ExitGuildArea(self, areaID):
  1896. self.interface.BULID_ExitGuildArea(areaID)
  1897.  
  1898. def BINARY_GuildWar_OnSendDeclare(self, guildID):
  1899. pass
  1900.  
  1901. def BINARY_GuildWar_OnRecvDeclare(self, guildID, warType):
  1902. mainCharacterName = player.GetMainCharacterName()
  1903. masterName = guild.GetGuildMasterName()
  1904. if mainCharacterName == masterName:
  1905. self.__GuildWar_OpenAskDialog(guildID, warType)
  1906.  
  1907. def BINARY_GuildWar_OnRecvPoint(self, gainGuildID, opponentGuildID, point):
  1908. self.interface.OnRecvGuildWarPoint(gainGuildID, opponentGuildID, point)
  1909.  
  1910. def BINARY_GuildWar_OnStart(self, guildSelf, guildOpp):
  1911. self.interface.OnStartGuildWar(guildSelf, guildOpp)
  1912.  
  1913. def BINARY_GuildWar_OnEnd(self, guildSelf, guildOpp):
  1914. self.interface.OnEndGuildWar(guildSelf, guildOpp)
  1915.  
  1916. def BINARY_BettingGuildWar_SetObserverMode(self, isEnable):
  1917. self.interface.BINARY_SetObserverMode(isEnable)
  1918.  
  1919. def BINARY_BettingGuildWar_UpdateObserverCount(self, observerCount):
  1920. self.interface.wndMiniMap.UpdateObserverCount(observerCount)
  1921.  
  1922. def __GuildWar_UpdateMemberCount(self, guildID1, memberCount1, guildID2, memberCount2, observerCount):
  1923. guildID1 = int(guildID1)
  1924. guildID2 = int(guildID2)
  1925. memberCount1 = int(memberCount1)
  1926. memberCount2 = int(memberCount2)
  1927. observerCount = int(observerCount)
  1928.  
  1929. self.interface.UpdateMemberCount(guildID1, memberCount1, guildID2, memberCount2)
  1930. self.interface.wndMiniMap.UpdateObserverCount(observerCount)
  1931.  
  1932. def __GuildWar_OpenAskDialog(self, guildID, warType):
  1933.  
  1934. guildName = guild.GetGuildName(guildID)
  1935.  
  1936. # REMOVED_GUILD_BUG_FIX
  1937. if "Noname" == guildName:
  1938. return
  1939. # END_OF_REMOVED_GUILD_BUG_FIX
  1940.  
  1941. import uiGuild
  1942. questionDialog = uiGuild.AcceptGuildWarDialog()
  1943. questionDialog.SAFE_SetAcceptEvent(self.__GuildWar_OnAccept)
  1944. questionDialog.SAFE_SetCancelEvent(self.__GuildWar_OnDecline)
  1945. questionDialog.Open(guildName, warType)
  1946.  
  1947. self.guildWarQuestionDialog = questionDialog
  1948.  
  1949. def __GuildWar_CloseAskDialog(self):
  1950. self.guildWarQuestionDialog.Close()
  1951. self.guildWarQuestionDialog = None
  1952.  
  1953. def __GuildWar_OnAccept(self):
  1954.  
  1955. guildName = self.guildWarQuestionDialog.GetGuildName()
  1956.  
  1957. net.SendChatPacket("/war " + guildName)
  1958. self.__GuildWar_CloseAskDialog()
  1959.  
  1960. return 1
  1961.  
  1962. def __GuildWar_OnDecline(self):
  1963.  
  1964. guildName = self.guildWarQuestionDialog.GetGuildName()
  1965.  
  1966. net.SendChatPacket("/nowar " + guildName)
  1967. self.__GuildWar_CloseAskDialog()
  1968.  
  1969. return 1
  1970. ## BINARY CALLBACK
  1971. ######################################################################################
  1972.  
  1973. def __ServerCommand_Build(self):
  1974. serverCommandList={
  1975. "ConsoleEnable" : self.__Console_Enable,
  1976. "DayMode" : self.__DayMode_Update,
  1977. "PRESERVE_DayMode" : self.__PRESERVE_DayMode_Update,
  1978. "CloseRestartWindow" : self.__RestartDialog_Close,
  1979. "OpenPrivateShop" : self.__PrivateShop_Open,
  1980. "OpenOfflineShop" : self.__OfflineShop_Open,
  1981. "PartyHealReady" : self.PartyHealReady,
  1982. "ShowMeSafeboxPassword" : self.AskSafeboxPassword,
  1983. "CloseSafebox" : self.CommandCloseSafebox,
  1984.  
  1985. # ITEM_MALL
  1986. "CloseMall" : self.CommandCloseMall,
  1987. "ShowMeMallPassword" : self.AskMallPassword,
  1988. "item_mall" : self.__ItemMall_Open,
  1989. # END_OF_ITEM_MALL
  1990.  
  1991. "RefineSuceeded" : self.RefineSuceededMessage,
  1992. "RefineFailed" : self.RefineFailedMessage,
  1993. "xmas_snow" : self.__XMasSnow_Enable,
  1994. "xmas_boom" : self.__XMasBoom_Enable,
  1995. "xmas_tree" : self.__XMasTree_Enable,
  1996. "newyear_boom" : self.__XMasBoom_Enable,
  1997. "PartyRequest" : self.__PartyRequestQuestion,
  1998. "PartyRequestDenied" : self.__PartyRequestDenied,
  1999. "horse_state" : self.__Horse_UpdateState,
  2000. "hide_horse_state" : self.__Horse_HideState,
  2001. "WarUC" : self.__GuildWar_UpdateMemberCount,
  2002. "test_server" : self.__EnableTestServerFlag,
  2003. "mall" : self.__InGameShop_Show,
  2004. "ManagerGiftSystem" : self.ManagerGiftSystem,
  2005.  
  2006. "PetEvolution" : self.SetPetEvolution,
  2007. "PetName" : self.SetPetName,
  2008. "PetLevel" : self.SetPetLevel,
  2009. "PetDuration" : self.SetPetDuration,
  2010. "PetBonus" : self.SetPetBonus,
  2011. "PetSkill" : self.SetPetskill,
  2012. "PetIcon" : self.SetPetIcon,
  2013. "PetExp" : self.SetPetExp,
  2014. "PetUnsummon" : self.PetUnsummon,
  2015. "OpenPetIncubator" : self.OpenPetIncubator,
  2016.  
  2017. # WEDDING
  2018. "lover_login" : self.__LoginLover,
  2019. "lover_logout" : self.__LogoutLover,
  2020. "lover_near" : self.__LoverNear,
  2021. "lover_far" : self.__LoverFar,
  2022. "lover_divorce" : self.__LoverDivorce,
  2023. # END_OF_WEDDING
  2024.  
  2025. # PRIVATE_SHOP_PRICE_LIST
  2026. "MyShopPriceList" : self.__PrivateShop_PriceList,
  2027. "set_afk" : self.__Start_Afk_Loop,
  2028. "del_afk" : self.__End_Afk_Loop,
  2029. # END_OF_PRIVATE_SHOP_PRICE_LIST
  2030. }
  2031.  
  2032. self.serverCommander=stringCommander.Analyzer()
  2033. for serverCommandItem in serverCommandList.items():
  2034. self.serverCommander.SAFE_RegisterCallBack(serverCommandItem[0], serverCommandItem[1])
  2035. if app.ENABLE_MELEY_LAIR_DUNGEON:
  2036. self.serverCommander.SAFE_RegisterCallBack("meley_open", self.OpenMeleyRanking)
  2037. self.serverCommander.SAFE_RegisterCallBack("meley_rank", self.AddRankMeleyRanking)
  2038.  
  2039. def BINARY_ServerCommand_Run(self, line):
  2040. #dbg.TraceError(line)
  2041. try:
  2042. #print " BINARY_ServerCommand_Run", line
  2043. return self.serverCommander.Run(line)
  2044. except RuntimeError, msg:
  2045. dbg.TraceError(msg)
  2046. return 0
  2047.  
  2048. def __ProcessPreservedServerCommand(self):
  2049. try:
  2050. command = net.GetPreservedServerCommand()
  2051. while command:
  2052. print " __ProcessPreservedServerCommand", command
  2053. self.serverCommander.Run(command)
  2054. command = net.GetPreservedServerCommand()
  2055. except RuntimeError, msg:
  2056. dbg.TraceError(msg)
  2057. return 0
  2058.  
  2059. def __Start_Afk_Loop(self):
  2060. constInfo.AUTO_AFK_MODE = 1
  2061. self.AfkModeGui.OpenWindow()
  2062.  
  2063. def __End_Afk_Loop(self):
  2064. constInfo.AUTO_AFK_MODE = 0
  2065.  
  2066. def PartyHealReady(self):
  2067. self.interface.PartyHealReady()
  2068.  
  2069. def AskSafeboxPassword(self):
  2070. self.interface.AskSafeboxPassword()
  2071.  
  2072. # ITEM_MALL
  2073. def AskMallPassword(self):
  2074. self.interface.AskMallPassword()
  2075.  
  2076. def __ItemMall_Open(self):
  2077. self.interface.OpenItemMall();
  2078.  
  2079. def CommandCloseMall(self):
  2080. self.interface.CommandCloseMall()
  2081. # END_OF_ITEM_MALL
  2082.  
  2083. def RefineSuceededMessage(self):
  2084. snd.PlaySound("sound/ui/make_soket.wav")
  2085. self.PopupMessage(localeInfo.REFINE_SUCCESS)
  2086.  
  2087. def RefineFailedMessage(self):
  2088. snd.PlaySound("sound/ui/jaeryun_fail.wav")
  2089. self.PopupMessage(localeInfo.REFINE_FAILURE)
  2090.  
  2091. def CommandCloseSafebox(self):
  2092. self.interface.CommandCloseSafebox()
  2093.  
  2094. def SetPetEvolution(self, evo):
  2095. petname = ["Tanar", "Salbatic", "Curajos", "Eroic"]
  2096. self.petmain.SetEvolveName(petname[int(evo)])
  2097.  
  2098. def SetPetName(self, name):
  2099. if len(name) > 1 and name != "":
  2100. self.petmini.Show()
  2101. self.petmain.SetName(name)
  2102.  
  2103. def SetPetLevel(self, level):
  2104. self.petmain.SetLevel(level)
  2105.  
  2106. def SetPetDuration(self, dur, durt):
  2107. if int(durt) > 0:
  2108. self.petmini.SetDuration(dur, durt)
  2109. self.petmain.SetDuration(dur, durt)
  2110.  
  2111. def SetPetBonus(self, hp, dif, att):
  2112. self.petmain.SetHp(hp)
  2113. self.petmain.SetDef(dif)
  2114. self.petmain.SetAt(att)
  2115.  
  2116. def SetPetskill(self, slot, idx, lv):
  2117. if int(lv) > 0:
  2118. self.petmini.SetSkill(slot, idx, lv)
  2119. self.petmain.SetSkill(slot, idx, lv)
  2120. self.affectShower.BINARY_NEW_AddAffect(5400+int(idx),int(constInfo.LASTAFFECT_POINT)+1,int(constInfo.LASTAFFECT_VALUE)+1, 0)
  2121. if int(slot)==0:
  2122. constInfo.SKILL_PET1=5400+int(idx)
  2123. if int(slot)==1:
  2124. constInfo.SKILL_PET2=5400+int(idx)
  2125. if int(slot)==2:
  2126. constInfo.SKILL_PET3=5400+int(idx)
  2127.  
  2128. def SetPetIcon(self, vnum):
  2129. if int(vnum) > 0:
  2130. self.petmini.SetImageSlot(vnum)
  2131. self.petmain.SetImageSlot(vnum)
  2132.  
  2133. def SetPetExp(self, exp, exptot):
  2134. if int(exptot) > 0:
  2135. self.petmini.SetExperience(exp, exptot)
  2136. self.petmain.SetExperience(exp, exptot)
  2137.  
  2138. def PetUnsummon(self):
  2139. self.petmini.SetDefaultInfo()
  2140. self.petmini.Close()
  2141. self.petmain.SetDefaultInfo()
  2142. self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET1),0)
  2143. self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET2),0)
  2144. self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET3),0)
  2145. constInfo.SKILL_PET1 = 0
  2146. constInfo.SKILL_PET2 = 0
  2147. constInfo.SKILL_PET3 = 0
  2148.  
  2149. def OpenPetMainGui(self):
  2150. self.petmain.Show()
  2151. self.petmain.SetTop()
  2152.  
  2153. def OpenPetIncubator(self, pet_new = 0):
  2154. import uipetincubatrice
  2155. self.petinc = uipetincubatrice.PetSystemIncubator(pet_new)
  2156. self.petinc.Show()
  2157. self.petinc.SetTop()
  2158.  
  2159. def OpenPetMini(self):
  2160. self.petmini.Show()
  2161. self.petmini.SetTop()
  2162.  
  2163. def OpenPetFeed(self):
  2164. self.feedwind = uipetfeed.PetFeedWindow()
  2165. self.feedwind.Show()
  2166. self.feedwind.SetTop()
  2167.  
  2168. def Gift_Show(self):
  2169. if constInfo.PET_MAIN == 0:
  2170. self.petmain.Show()
  2171. constInfo.PET_MAIN =1
  2172. self.petmain.SetTop()
  2173. else:
  2174. self.petmain.Hide()
  2175. constInfo.PET_MAIN =0
  2176.  
  2177. # PRIVATE_SHOP_PRICE_LIST
  2178. def __PrivateShop_PriceList(self, itemVNum, itemPrice):
  2179. uiPrivateShopBuilder.SetPrivateShopItemPrice(itemVNum, itemPrice)
  2180. # END_OF_PRIVATE_SHOP_PRICE_LIST
  2181.  
  2182. def __Horse_HideState(self):
  2183. self.affectShower.SetHorseState(0, 0, 0)
  2184.  
  2185. def __Horse_UpdateState(self, level, health, battery):
  2186. self.affectShower.SetHorseState(int(level), int(health), int(battery))
  2187.  
  2188. def __IsXMasMap(self):
  2189. mapDict = ( "metin2_map_n_flame_01",
  2190. "metin2_map_n_desert_01",
  2191. "metin2_map_spiderdungeon",
  2192. "metin2_map_deviltower1", )
  2193.  
  2194. if background.GetCurrentMapName() in mapDict:
  2195. return False
  2196.  
  2197. return True
  2198.  
  2199. def __XMasSnow_Enable(self, mode):
  2200. if "1"==mode:
  2201.  
  2202. if not self.__IsXMasMap():
  2203. return
  2204.  
  2205. print "XMAS_SNOW ON"
  2206. background.EnableSnow(1)
  2207.  
  2208. else:
  2209. print "XMAS_SNOW OFF"
  2210. background.EnableSnow(0)
  2211.  
  2212. def __XMasBoom_Enable(self, mode):
  2213. if "1"==mode:
  2214.  
  2215. if not self.__IsXMasMap():
  2216. return
  2217.  
  2218. print "XMAS_BOOM ON"
  2219. self.__DayMode_Update("dark")
  2220. self.enableXMasBoom = True
  2221. self.startTimeXMasBoom = app.GetTime()
  2222. else:
  2223. print "XMAS_BOOM OFF"
  2224. self.__DayMode_Update("light")
  2225. self.enableXMasBoom = False
  2226.  
  2227. def __XMasTree_Enable(self, grade):
  2228.  
  2229. print "XMAS_TREE ", grade
  2230. background.SetXMasTree(int(grade))
  2231.  
  2232. def __RestartDialog_Close(self):
  2233. self.interface.CloseRestartDialog()
  2234.  
  2235. def __Console_Enable(self):
  2236. constInfo.CONSOLE_ENABLE = True
  2237. self.consoleEnable = True
  2238. app.EnableSpecialCameraMode()
  2239. ui.EnablePaste(True)
  2240.  
  2241. ## PrivateShop
  2242. def __PrivateShop_Open(self):
  2243. self.interface.OpenPrivateShopInputNameDialog()
  2244.  
  2245. def BINARY_PrivateShop_Appear(self, vid, text):
  2246. self.interface.AppearPrivateShop(vid, text)
  2247.  
  2248. def BINARY_PrivateShop_Disappear(self, vid):
  2249. self.interface.DisappearPrivateShop(vid)
  2250.  
  2251. # OfflineShop
  2252. def __OfflineShop_Open(self):
  2253. self.interface.OpenOfflineShopInputNameDialog()
  2254.  
  2255. def BINARY_OfflineShop_Appear(self, vid, text):
  2256. if (chr.GetInstanceType(vid) == chr.INSTANCE_TYPE_NPC):
  2257. self.interface.AppearOfflineShop(vid, text)
  2258.  
  2259. def BINARY_OfflineShop_Disappear(self, vid):
  2260. if (chr.GetInstanceType(vid) == chr.INSTANCE_TYPE_NPC):
  2261. self.interface.DisappearOfflineShop(vid)
  2262.  
  2263. ## DayMode
  2264. def __PRESERVE_DayMode_Update(self, mode):
  2265. if "light"==mode:
  2266. background.SetEnvironmentData(0)
  2267. elif "dark"==mode:
  2268.  
  2269. if not self.__IsXMasMap():
  2270. return
  2271.  
  2272. background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
  2273. background.SetEnvironmentData(1)
  2274.  
  2275. def __DayMode_Update(self, mode):
  2276. if "light"==mode:
  2277. self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToLight)
  2278. elif "dark"==mode:
  2279.  
  2280. if not self.__IsXMasMap():
  2281. return
  2282.  
  2283. self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToDark)
  2284.  
  2285. def __DayMode_OnCompleteChangeToLight(self):
  2286. background.SetEnvironmentData(0)
  2287. self.curtain.FadeIn()
  2288.  
  2289. def __DayMode_OnCompleteChangeToDark(self):
  2290. background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
  2291. background.SetEnvironmentData(1)
  2292. self.curtain.FadeIn()
  2293.  
  2294. ## XMasBoom
  2295. def __XMasBoom_Update(self):
  2296.  
  2297. self.BOOM_DATA_LIST = ( (2, 5), (5, 2), (7, 3), (10, 3), (20, 5) )
  2298. if self.indexXMasBoom >= len(self.BOOM_DATA_LIST):
  2299. return
  2300.  
  2301. boomTime = self.BOOM_DATA_LIST[self.indexXMasBoom][0]
  2302. boomCount = self.BOOM_DATA_LIST[self.indexXMasBoom][1]
  2303.  
  2304. if app.GetTime() - self.startTimeXMasBoom > boomTime:
  2305.  
  2306. self.indexXMasBoom += 1
  2307.  
  2308. for i in xrange(boomCount):
  2309. self.__XMasBoom_Boom()
  2310.  
  2311. def __XMasBoom_Boom(self):
  2312. x, y, z = player.GetMainCharacterPosition()
  2313. randX = app.GetRandom(-150, 150)
  2314. randY = app.GetRandom(-150, 150)
  2315.  
  2316. snd.PlaySound3D(x+randX, -y+randY, z, "sound/common/etc/salute.mp3")
  2317.  
  2318. def __PartyRequestQuestion(self, vid):
  2319. vid = int(vid)
  2320. partyRequestQuestionDialog = uiCommon.QuestionDialog()
  2321. partyRequestQuestionDialog.SetText(chr.GetNameByVID(vid) + localeInfo.PARTY_DO_YOU_ACCEPT)
  2322. partyRequestQuestionDialog.SetAcceptText(localeInfo.UI_ACCEPT)
  2323. partyRequestQuestionDialog.SetCancelText(localeInfo.UI_DENY)
  2324. partyRequestQuestionDialog.SetAcceptEvent(lambda arg=True: self.__AnswerPartyRequest(arg))
  2325. partyRequestQuestionDialog.SetCancelEvent(lambda arg=False: self.__AnswerPartyRequest(arg))
  2326. partyRequestQuestionDialog.Open()
  2327. partyRequestQuestionDialog.vid = vid
  2328. self.partyRequestQuestionDialog = partyRequestQuestionDialog
  2329.  
  2330. def __AnswerPartyRequest(self, answer):
  2331. if not self.partyRequestQuestionDialog:
  2332. return
  2333.  
  2334. vid = self.partyRequestQuestionDialog.vid
  2335.  
  2336. if answer:
  2337. net.SendChatPacket("/party_request_accept " + str(vid))
  2338. else:
  2339. net.SendChatPacket("/party_request_deny " + str(vid))
  2340.  
  2341. self.partyRequestQuestionDialog.Close()
  2342. self.partyRequestQuestionDialog = None
  2343.  
  2344. def __PartyRequestDenied(self):
  2345. self.PopupMessage(localeInfo.PARTY_REQUEST_DENIED)
  2346.  
  2347. def __EnableTestServerFlag(self):
  2348. app.EnableTestServerFlag()
  2349.  
  2350. def __InGameShop_Show(self, url):
  2351. if constInfo.IN_GAME_SHOP_ENABLE:
  2352. self.interface.OpenWebWindow(url)
  2353.  
  2354. # WEDDING
  2355. def __LoginLover(self):
  2356. if self.interface.wndMessenger:
  2357. self.interface.wndMessenger.OnLoginLover()
  2358.  
  2359. def __LogoutLover(self):
  2360. if self.interface.wndMessenger:
  2361. self.interface.wndMessenger.OnLogoutLover()
  2362. if self.affectShower:
  2363. self.affectShower.HideLoverState()
  2364.  
  2365. def __LoverNear(self):
  2366. if self.affectShower:
  2367. self.affectShower.ShowLoverState()
  2368.  
  2369. def __LoverFar(self):
  2370. if self.affectShower:
  2371. self.affectShower.HideLoverState()
  2372.  
  2373. def __LoverDivorce(self):
  2374. if self.interface.wndMessenger:
  2375. self.interface.wndMessenger.ClearLoverInfo()
  2376. if self.affectShower:
  2377. self.affectShower.ClearLoverState()
  2378. # END_OF_WEDDING
  2379.  
  2380. if app.ENABLE_SASH_SYSTEM:
  2381. def ActSash(self, iAct, bWindow):
  2382. if self.interface:
  2383. self.interface.ActSash(iAct, bWindow)
  2384.  
  2385. def AlertSash(self, bWindow):
  2386. snd.PlaySound("sound/ui/make_soket.wav")
  2387. if bWindow:
  2388. self.PopupMessage(localeInfo.SASH_DEL_SERVEITEM)
  2389. else:
  2390. self.PopupMessage(localeInfo.SASH_DEL_ABSORDITEM)
  2391.  
  2392. def OnClickSearch(self):
  2393. if constInfo.IS_OPEN_SSW == 0:
  2394. self.shopsearch.Open()
  2395. constInfo.IS_OPEN_SSW = 1
  2396. else:
  2397. self.shopsearch.Close()
  2398.  
  2399. if app.ENABLE_MELEY_LAIR_DUNGEON:
  2400. def OpenMeleyRanking(self):
  2401. if self.interface:
  2402. self.interface.OpenMeleyRanking()
  2403.  
  2404. def AddRankMeleyRanking(self, data):
  2405. if self.interface:
  2406. line = int(data.split("#")[1])
  2407. name = str(data.split("#")[2])
  2408. members = int(data.split("#")[3])
  2409. seconds = int(data.split("#")[4])
  2410. minutes = seconds // 60
  2411. seconds %= 60
  2412. if seconds > 0:
  2413. time = localeInfo.TIME_MIN_SEC % (minutes, seconds)
  2414. else:
  2415. time = localeInfo.TIME_MIN % (minutes)
  2416.  
  2417. self.interface.RankMeleyRanking(line, name, members, time)
Advertisement
Add Comment
Please, Sign In to add comment