Guest User

Game.py

a guest
Dec 22nd, 2020
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 98.65 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 player
  10. import snd
  11. import chat
  12. import textTail
  13. import snd
  14. import net
  15. import effect
  16. import wndMgr
  17. import fly
  18. import systemSetting
  19. import quest
  20. import guild
  21. import skill
  22. import messenger
  23. if app.ENABLE_ADMIN_BAN_MANAGER:
  24. import uiadmintool
  25. import constInfo
  26. import exchange
  27. import ime
  28. import uiScriptLocale
  29. import ui
  30. import uiCommon
  31. import uiPhaseCurtain
  32. import uiMapNameShower
  33. import uiAffectShower
  34. import uiPlayerGauge
  35. import uiCharacter
  36. import uiTarget
  37. import uipacanele
  38. import uiPrivateShopBuilder
  39. import serverInfo
  40. import mouseModule
  41. import consoleModule
  42. import uisystem
  43. import localeInfo
  44. import uikick
  45. import uiban
  46. import uiunban
  47. import uiblockchat
  48. import playerSettingModule
  49. import interfaceModule
  50. import WhisperManager
  51.  
  52. import musicInfo
  53. import debugInfo
  54. import stringCommander
  55. if app.ENABLE_SPECIAL_CHAT:
  56. import uispecialchat
  57.  
  58. import uiItemLottery
  59. import uitriviapanel
  60. import uibosstracking
  61.  
  62. from _weakref import proxy
  63.  
  64. SCREENSHOT_CWDSAVE = False
  65. SCREENSHOT_DIR = None
  66.  
  67. if localeInfo.IsEUROPE():
  68. SCREENSHOT_CWDSAVE = True
  69.  
  70. if localeInfo.IsCIBN10():
  71. SCREENSHOT_CWDSAVE = False
  72. SCREENSHOT_DIR = "YT2W"
  73.  
  74. cameraDistance = 1550.0
  75. cameraPitch = 27.0
  76. cameraRotation = 0.0
  77. cameraHeight = 100.0
  78.  
  79. testAlignment = 0
  80. # PROFESSIONAL_BIOLOG_SYSTEM
  81. if app.ENABLE_BIOLOG_SYSTEM:
  82. import uiprofessionalbiolog
  83. # END_OF_PROFESSIONAL_BIOLOG_SYSTEM
  84. BPisLoaded = 0
  85.  
  86. class GameWindow(ui.ScriptWindow):
  87. def __init__(self, stream):
  88. ui.ScriptWindow.__init__(self, "GAME")
  89. self.SetWindowName("game")
  90. net.SetPhaseWindow(net.PHASE_WINDOW_GAME, self)
  91. player.SetGameWindow(self)
  92.  
  93. self.quickSlotPageIndex = 0
  94. self.lastPKModeSendedTime = 0
  95. self.pressNumber = None
  96.  
  97. self.uiNewShopCreate = None
  98. self.uiNewShop = None
  99.  
  100. if app.ENABLE_SPECIAL_CHAT:
  101. self.specialChat = None
  102.  
  103. self.guildWarQuestionDialog = None
  104. self.interface = None
  105. self.targetBoard = None
  106. self.console = None
  107. self.mapNameShower = None
  108. self.affectShower = None
  109. self.playerGauge = None
  110. self.mount = None
  111. self.stream=stream
  112. self.interface = interfaceModule.Interface()
  113. self.interface.MakeInterface()
  114. self.interface.ShowDefaultWindows()
  115.  
  116. import uiPrivateShopSearch
  117. self.PrivateShopSearch = uiPrivateShopSearch.PrivateShopSearch(self.interface)
  118. self.PrivateShopSearch.Close(1)
  119.  
  120. self.curtain = uiPhaseCurtain.PhaseCurtain()
  121. self.curtain.speed = 0.03
  122. self.curtain.Hide()
  123.  
  124. self.targetBoard = uiTarget.TargetBoard()
  125. self.targetBoard.SetWhisperEvent(ui.__mem_func__(self.interface.OpenWhisperDialog))
  126. self.targetBoard.Hide()
  127.  
  128. self.console = consoleModule.ConsoleWindow()
  129. self.console.BindGameClass(self)
  130. self.console.SetConsoleSize(wndMgr.GetScreenWidth(), 200)
  131. self.console.Hide()
  132.  
  133. self.mapNameShower = uiMapNameShower.MapNameShower()
  134. self.affectShower = uiAffectShower.AffectShower()
  135. self.triviapanel = uitriviapanel.TriviaPanelWindow()
  136. self.pacanele = uipacanele.Pacanele()
  137. self.pacanele.Hide()
  138.  
  139. if app.ENABLE_ADMIN_BAN_MANAGER:
  140. self.wndAdminTool = uiadmintool.AdminTool()
  141.  
  142. constInfo.wndItemLottery = uiItemLottery.ItemLotteryWindow()
  143.  
  144. self.playerGauge = uiPlayerGauge.PlayerGauge(self)
  145. self.playerGauge.Hide()
  146.  
  147. self.bosstracking = uibosstracking.BossTrackingSystemWindow()
  148. self.bosstracking.Hide()
  149.  
  150. if app.ENABLE_WHISPER_ADMIN_SYSTEM:
  151. self.adminWhisperManager = WhisperManager.WhisperManager()
  152. # self.mount = uimount_window.New_Window_Mount()
  153. #wj 2014.1.2. ESC키를 누를 시 우선적으로 DropQuestionDialog를 끄도록 만들었다. 하지만 처음에 itemDropQuestionDialog가 선언되어 있지 않아 ERROR가 발생하여 init에서 선언과 동시에 초기화 시킴.
  154. self.itemDropQuestionDialog = None
  155.  
  156. self.__SetQuickSlotMode()
  157.  
  158. self.__ServerCommand_Build()
  159. self.__ProcessPreservedServerCommand()
  160.  
  161. def __del__(self):
  162. player.SetGameWindow(0)
  163. net.ClearPhaseWindow(net.PHASE_WINDOW_GAME, self)
  164. ui.ScriptWindow.__del__(self)
  165.  
  166. def Open(self):
  167. app.SetFrameSkip(1)
  168.  
  169. self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
  170.  
  171. self.quickSlotPageIndex = 0
  172. self.PickingCharacterIndex = -1
  173. self.PickingItemIndex = -1
  174. self.consoleEnable = False
  175. self.isShowDebugInfo = False
  176. self.ShowNameFlag = False
  177.  
  178. self.litere_event = ui.Button()
  179. self.litere_event.SetParent(self)
  180. self.litere_event.SetPosition(wndMgr.GetScreenWidth()-370,0)
  181. self.litere_event.SetUpVisual("d:/ymir work/eventlitere/status_letters.tga")
  182. self.litere_event.SetOverVisual("d:/ymir work/eventlitere/status_letters.tga")
  183. self.litere_event.SetDownVisual("d:/ymir work/eventlitere/status_letters.tga")
  184. self.litere_event.SetToolTipText("Open Event")
  185. self.litere_event.SetEvent(lambda : net.SendChatPacket("/letters_open"))
  186.  
  187. import uiNewShop
  188. self.uiNewShop = uiNewShop.ShopDialog()
  189. self.uiNewShop.Close()
  190. self.uiNewShopCreate = uiNewShop.ShopDialogCreate()
  191. self.uiNewShopCreate.Hide()
  192.  
  193. self.enableXMasBoom = False
  194. self.startTimeXMasBoom = 0.0
  195. self.indexXMasBoom = 0
  196.  
  197. global cameraDistance, cameraPitch, cameraRotation, cameraHeight
  198.  
  199. app.SetCamera(cameraDistance, cameraPitch, cameraRotation, cameraHeight)
  200.  
  201. constInfo.SET_DEFAULT_CAMERA_MAX_DISTANCE()
  202. constInfo.SET_DEFAULT_CHRNAME_COLOR()
  203. constInfo.SET_DEFAULT_FOG_LEVEL()
  204. constInfo.SET_DEFAULT_CONVERT_EMPIRE_LANGUAGE_ENABLE()
  205. constInfo.SET_DEFAULT_USE_ITEM_WEAPON_TABLE_ATTACK_BONUS()
  206. constInfo.SET_DEFAULT_USE_SKILL_EFFECT_ENABLE()
  207.  
  208. # TWO_HANDED_WEAPON_ATTACK_SPEED_UP
  209. constInfo.SET_TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE()
  210. # END_OF_TWO_HANDED_WEAPON_ATTACK_SPEED_UP
  211.  
  212. import event
  213. event.SetLeftTimeString(localeInfo.UI_LEFT_TIME)
  214.  
  215. textTail.EnablePKTitle(constInfo.PVPMODE_ENABLE)
  216.  
  217. if constInfo.PVPMODE_TEST_ENABLE:
  218. self.testPKMode = ui.TextLine()
  219. self.testPKMode.SetFontName(localeInfo.UI_DEF_FONT)
  220. self.testPKMode.SetPosition(0, 15)
  221. self.testPKMode.SetWindowHorizontalAlignCenter()
  222. self.testPKMode.SetHorizontalAlignCenter()
  223. self.testPKMode.SetFeather()
  224. self.testPKMode.SetOutline()
  225. self.testPKMode.Show()
  226.  
  227. self.testAlignment = ui.TextLine()
  228. self.testAlignment.SetFontName(localeInfo.UI_DEF_FONT)
  229. self.testAlignment.SetPosition(0, 35)
  230. self.testAlignment.SetWindowHorizontalAlignCenter()
  231. self.testAlignment.SetHorizontalAlignCenter()
  232. self.testAlignment.SetFeather()
  233. self.testAlignment.SetOutline()
  234. self.testAlignment.Show()
  235.  
  236. if app.ENABLE_SPECIAL_CHAT:
  237. if self.specialChat:
  238. self.specialChat.Hide()
  239. specialChat = uispecialchat.SpecialChat(self, wndMgr.GetScreenWidth() - 400 - 40, wndMgr.GetScreenHeight()/1.1)
  240. self.specialChat = specialChat
  241.  
  242. self.__BuildKeyDict()
  243. self.__BuildDebugInfo()
  244.  
  245. uiPrivateShopBuilder.Clear()
  246.  
  247. exchange.InitTrading()
  248.  
  249.  
  250. snd.SetMusicVolume(systemSetting.GetMusicVolume()*net.GetFieldMusicVolume())
  251. snd.SetSoundVolume(systemSetting.GetSoundVolume())
  252.  
  253. netFieldMusicFileName = net.GetFieldMusicFileName()
  254. if netFieldMusicFileName:
  255. snd.FadeInMusic("BGM/" + netFieldMusicFileName)
  256. elif musicInfo.fieldMusic != "":
  257. snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
  258.  
  259. self.__SetQuickSlotMode()
  260. self.__SelectQuickPage(self.quickSlotPageIndex)
  261.  
  262. self.SetFocus()
  263. self.Show()
  264. app.ShowCursor()
  265.  
  266. net.SendEnterGamePacket()
  267. try:
  268. self.StartGame()
  269. except:
  270. import exception
  271. exception.Abort("GameWindow.Open")
  272.  
  273. self.cubeInformation = {}
  274. self.currentCubeNPC = 0
  275.  
  276. if systemSetting.IsShowOfflineShop() == 0:
  277. net.SendChatPacket("/show_hide_shops 0")
  278. else:
  279. net.SendChatPacket("/show_hide_shops 1")
  280.  
  281. def Close(self):
  282. self.Hide()
  283.  
  284. global cameraDistance, cameraPitch, cameraRotation, cameraHeight
  285. (cameraDistance, cameraPitch, cameraRotation, cameraHeight) = app.GetCamera()
  286.  
  287. if musicInfo.fieldMusic != "":
  288. snd.FadeOutMusic("BGM/"+ musicInfo.fieldMusic)
  289.  
  290. self.onPressKeyDict = None
  291. self.onClickKeyDict = None
  292.  
  293. chat.Close()
  294. snd.StopAllSound()
  295. grp.InitScreenEffect()
  296. chr.Destroy()
  297. textTail.Clear()
  298. quest.Clear()
  299. background.Destroy()
  300. guild.Destroy()
  301. messenger.Destroy()
  302. skill.ClearSkillData()
  303. wndMgr.Unlock()
  304. self.uiNewShop.Hide()
  305. self.uiNewShopCreate.Hide()
  306. uiPrivateShopBuilder.Clear()
  307. mouseModule.mouseController.DeattachObject()
  308.  
  309. if self.guildWarQuestionDialog:
  310. self.guildWarQuestionDialog.Close()
  311.  
  312. self.guildNameBoard = None
  313. self.partyRequestQuestionDialog = None
  314. self.partyInviteQuestionDialog = None
  315. self.guildInviteQuestionDialog = None
  316. self.guildWarQuestionDialog = None
  317. self.messengerAddFriendQuestion = None
  318.  
  319. # UNKNOWN_UPDATE
  320. self.itemDropQuestionDialog = None
  321. # END_OF_UNKNOWN_UPDATE
  322.  
  323. # QUEST_CONFIRM
  324. self.confirmDialog = None
  325. # END_OF_QUEST_CONFIRM
  326.  
  327. self.PrintCoord = None
  328. self.FrameRate = None
  329. self.Pitch = None
  330. self.Splat = None
  331. self.TextureNum = None
  332. self.ObjectNum = None
  333. self.ViewDistance = None
  334. self.PrintMousePos = None
  335.  
  336. self.ClearDictionary()
  337.  
  338. self.playerGauge = None
  339. self.mapNameShower = None
  340. self.affectShower = None
  341. self.mount = None
  342. if self.console:
  343. self.console.BindGameClass(0)
  344. self.console.Close()
  345. self.console=None
  346.  
  347. if self.bosstracking:
  348. self.bosstracking.Destroy()
  349. self.bosstracking = None
  350.  
  351. if self.targetBoard:
  352. self.targetBoard.Destroy()
  353. self.targetBoard = None
  354.  
  355. if self.interface:
  356. self.interface.HideAllWindows()
  357. self.interface.Close()
  358. self.interface=None
  359.  
  360. if self.PrivateShopSearch:
  361. self.PrivateShopSearch.Close(1)
  362. self.PrivateShopSearch = None
  363.  
  364. if app.ENABLE_SPECIAL_CHAT:
  365. if self.specialChat:
  366. self.specialChat.ClearAll()
  367. self.specialChat.Destroy()
  368.  
  369. player.ClearSkillDict()
  370. player.ResetCameraRotation()
  371.  
  372. self.KillFocus()
  373. app.HideCursor()
  374.  
  375. print "---------------------------------------------------------------------------- CLOSE GAME WINDOW"
  376.  
  377. def BossTracking(self):
  378. import constInfo
  379. constInfo.BOSS_TRACKING = 1
  380.  
  381. def GetBossTrackingInformation(self, btcadi1, btcadi2, btcadi3, btcadi4, btcadi5, btcadi6, btalevkral1, btalevkral2, btalevkral3, btalevkral4, btalevkral5, btalevkral6, btkorumcek1, btkorumcek2, btkorumcek3, btkorumcek4, btkorumcek5, btkorumcek6, btsarikaplan1, btsarikaplan2, btsarikaplan3, btsarikaplan4, btsarikaplan5, btsarikaplan6, btbuzkralice1, btbuzkralice2, btbuzkralice3, btbuzkralice4, btbuzkralice5, btbuzkralice6, btdokuzk1, btdokuzk2, btdokuzk3, btdokuzk4, btdokuzk5, btdokuzk6, btcolejder1, btcolejder2, btcolejder3, btcolejder4, btcolejder5, btcolejder6, btagac1, btagac2, btagac3, btagac4, btagac5, btagac6, btkomutan1, btkomutan2, btkomutan3, btkomutan4, btkomutan5, btkomutan6, btkaranlik1, btkaranlik2, btkaranlik3, btkaranlik4, btkaranlik5, btkaranlik6):
  382. self.bosstracking.GetMobInformation(btcadi1, btcadi2, btcadi3, btcadi4, btcadi5, btcadi6, btalevkral1, btalevkral2, btalevkral3, btalevkral4, btalevkral5, btalevkral6, btkorumcek1, btkorumcek2, btkorumcek3, btkorumcek4, btkorumcek5, btkorumcek6, btsarikaplan1, btsarikaplan2, btsarikaplan3, btsarikaplan4, btsarikaplan5, btsarikaplan6, btbuzkralice1, btbuzkralice2, btbuzkralice3, btbuzkralice4, btbuzkralice5, btbuzkralice6, btdokuzk1, btdokuzk2, btdokuzk3, btdokuzk4, btdokuzk5, btdokuzk6, btcolejder1, btcolejder2, btcolejder3, btcolejder4, btcolejder5, btcolejder6, btagac1, btagac2, btagac3, btagac4, btagac5, btagac6, btkomutan1, btkomutan2, btkomutan3, btkomutan4, btkomutan5, btkomutan6, btkaranlik1, btkaranlik2, btkaranlik3, btkaranlik4, btkaranlik5, btkaranlik6)
  383.  
  384. def BossTrackingUpdate(self):
  385. net.SendChatPacket("/bosstrackingtest")
  386.  
  387. def BossTrackingSystemShow(self):
  388. self.bosstracking.Show()
  389. net.SendChatPacket("/bosstrackingtest")
  390.  
  391.  
  392. def __BuildKeyDict(self):
  393. onPressKeyDict = {}
  394.  
  395. onPressKeyDict[app.DIK_1] = lambda : self.__PressNumKey(1)
  396. onPressKeyDict[app.DIK_2] = lambda : self.__PressNumKey(2)
  397. onPressKeyDict[app.DIK_3] = lambda : self.__PressNumKey(3)
  398. onPressKeyDict[app.DIK_4] = lambda : self.__PressNumKey(4)
  399. onPressKeyDict[app.DIK_5] = lambda : self.__PressNumKey(5)
  400. onPressKeyDict[app.DIK_6] = lambda : self.__PressNumKey(6)
  401. onPressKeyDict[app.DIK_7] = lambda : self.__PressNumKey(7)
  402. onPressKeyDict[app.DIK_8] = lambda : self.__PressNumKey(8)
  403. onPressKeyDict[app.DIK_9] = lambda : self.__PressNumKey(9)
  404. onPressKeyDict[app.DIK_F1] = lambda : self.__PressQuickSlot(4)
  405. onPressKeyDict[app.DIK_F2] = lambda : self.__PressQuickSlot(5)
  406. onPressKeyDict[app.DIK_F3] = lambda : self.__PressQuickSlot(6)
  407. onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7)
  408. # onPressKeyDict[app.DIK_F5] = lambda : self.interface.ToggleSwitchbotWindow()
  409. # onPressKeyDict[app.DIK_F6] = lambda : self.interface.ShowItemFinder()
  410. # onPressKeyDict[app.DIK_F7] = lambda : self.__OpenSearchShop()
  411. onPressKeyDict[app.DIK_F5] = lambda : self.OpenWhisperSystem()
  412. if app.ENABLE_ADMIN_BAN_MANAGER:
  413. onPressKeyDict[app.DIK_F6] = lambda : self.OpenAdminTool()
  414. onPressKeyDict[app.DIK_F7] = lambda : self.ShowPacenele()
  415. onPressKeyDict[app.DIK_F8] = lambda : self.BossTracking()
  416.  
  417. onPressKeyDict[app.DIK_LALT] = lambda : self.ShowName()
  418. onPressKeyDict[app.DIK_LCONTROL] = lambda : self.ShowMouseImage()
  419. onPressKeyDict[app.DIK_SYSRQ] = lambda : self.SaveScreen()
  420. onPressKeyDict[app.DIK_SPACE] = lambda : self.StartAttack()
  421.  
  422. onPressKeyDict[app.DIK_UP] = lambda : self.MoveUp()
  423. onPressKeyDict[app.DIK_DOWN] = lambda : self.MoveDown()
  424. onPressKeyDict[app.DIK_LEFT] = lambda : self.MoveLeft()
  425. onPressKeyDict[app.DIK_RIGHT] = lambda : self.MoveRight()
  426. onPressKeyDict[app.DIK_W] = lambda : self.MoveUp()
  427. onPressKeyDict[app.DIK_S] = lambda : self.MoveDown()
  428. onPressKeyDict[app.DIK_A] = lambda : self.MoveLeft()
  429. onPressKeyDict[app.DIK_D] = lambda : self.MoveRight()
  430.  
  431. onPressKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_TO_POSITIVE)
  432. onPressKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_TO_NEGATIVE)
  433. onPressKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_TO_NEGATIVE)
  434. onPressKeyDict[app.DIK_G] = self.__PressGKey
  435. onPressKeyDict[app.DIK_Q] = self.__PressQKey
  436.  
  437. onPressKeyDict[app.DIK_NUMPAD9] = lambda: app.MovieResetCamera()
  438. onPressKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_TO_NEGATIVE)
  439. onPressKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_TO_POSITIVE)
  440. onPressKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_TO_NEGATIVE)
  441. onPressKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_TO_POSITIVE)
  442. onPressKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_TO_NEGATIVE)
  443. onPressKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_TO_POSITIVE)
  444. onPressKeyDict[app.DIK_GRAVE] = lambda : self.PickUpItem()
  445. onPressKeyDict[app.DIK_Z] = lambda : self.PickUpItem()
  446. onPressKeyDict[app.DIK_C] = lambda state = "STATUS": self.interface.ToggleCharacterWindow(state)
  447. onPressKeyDict[app.DIK_V] = lambda state = "SKILL": self.interface.ToggleCharacterWindow(state)
  448. onPressKeyDict[app.DIK_N] = lambda state = "QUEST": self.interface.ToggleCharacterWindow(state)
  449. onPressKeyDict[app.DIK_I] = lambda : self.interface.ToggleInventoryWindow()
  450. onPressKeyDict[app.DIK_O] = lambda : self.interface.ToggleDragonSoulWindowWithNoInfo()
  451. onPressKeyDict[app.DIK_M] = lambda : self.interface.PressMKey()
  452. onPressKeyDict[app.DIK_ADD] = lambda : self.interface.MiniMapScaleUp()
  453. onPressKeyDict[app.DIK_SUBTRACT] = lambda : self.interface.MiniMapScaleDown()
  454. onPressKeyDict[app.DIK_L] = lambda : self.interface.ToggleChatLogWindow()
  455. onPressKeyDict[app.DIK_LSHIFT] = lambda : self.__SetQuickPageMode()
  456.  
  457. onPressKeyDict[app.DIK_J] = lambda : self.__PressJKey()
  458. onPressKeyDict[app.DIK_H] = lambda : self.__PressHKey()
  459. onPressKeyDict[app.DIK_B] = lambda : self.__PressBKey()
  460. onPressKeyDict[app.DIK_F] = lambda : self.__PressFKey()
  461.  
  462. self.onPressKeyDict = onPressKeyDict
  463.  
  464. onClickKeyDict = {}
  465. onClickKeyDict[app.DIK_UP] = lambda : self.StopUp()
  466. onClickKeyDict[app.DIK_DOWN] = lambda : self.StopDown()
  467. onClickKeyDict[app.DIK_LEFT] = lambda : self.StopLeft()
  468. onClickKeyDict[app.DIK_RIGHT] = lambda : self.StopRight()
  469. onClickKeyDict[app.DIK_SPACE] = lambda : self.EndAttack()
  470.  
  471. onClickKeyDict[app.DIK_W] = lambda : self.StopUp()
  472. onClickKeyDict[app.DIK_S] = lambda : self.StopDown()
  473. onClickKeyDict[app.DIK_A] = lambda : self.StopLeft()
  474. onClickKeyDict[app.DIK_D] = lambda : self.StopRight()
  475. onClickKeyDict[app.DIK_Q] = lambda: app.RotateCamera(app.CAMERA_STOP)
  476. onClickKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_STOP)
  477. onClickKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_STOP)
  478. onClickKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_STOP)
  479. onClickKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_STOP)
  480. onClickKeyDict[app.DIK_G] = lambda: self.__ReleaseGKey()
  481. onClickKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
  482. onClickKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
  483. onClickKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
  484. onClickKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
  485. onClickKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
  486. onClickKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
  487. onClickKeyDict[app.DIK_LALT] = lambda: self.HideName()
  488. onClickKeyDict[app.DIK_LCONTROL] = lambda: self.HideMouseImage()
  489. onClickKeyDict[app.DIK_LSHIFT] = lambda: self.__SetQuickSlotMode()
  490. onClickKeyDict[app.DIK_K] = lambda: self.interface.ToggleSpecialStorageWindow()
  491. onClickKeyDict[app.DIK_X] = lambda: self.__SetRestartLauncher()
  492.  
  493.  
  494. self.onClickKeyDict=onClickKeyDict
  495.  
  496. def __PressNumKey(self,num):
  497. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  498.  
  499. if num >= 1 and num <= 9:
  500. if(chrmgr.IsPossibleEmoticon(-1)):
  501. chrmgr.SetEmoticon(-1,int(num)-1)
  502. net.SendEmoticon(int(num)-1)
  503. else:
  504. if num >= 1 and num <= 4:
  505. self.pressNumber(num-1)
  506.  
  507. def __ClickBKey(self):
  508. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  509. return
  510. else:
  511. if constInfo.PVPMODE_ACCELKEY_ENABLE:
  512. self.ChangePKMode()
  513.  
  514.  
  515. def __PressJKey(self):
  516. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  517. if player.IsMountingHorse():
  518. net.SendChatPacket("/unmount")
  519. else:
  520. if not uiPrivateShopBuilder.IsBuildingPrivateShop():
  521. for i in xrange(player.INVENTORY_PAGE_SIZE):
  522. if player.GetItemIndex(i) in (71114, 71116, 71118, 71120):
  523. net.SendItemUsePacket(i)
  524. break
  525. def __PressHKey(self):
  526. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  527. net.SendChatPacket("/user_horse_ride")
  528.  
  529. def __PressBKey(self):
  530. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  531. net.SendChatPacket("/user_horse_back")
  532. else:
  533. state = "EMOTICON"
  534. self.interface.ToggleCharacterWindow(state)
  535.  
  536. def __PressFKey(self):
  537. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  538. net.SendChatPacket("/user_horse_feed")
  539. else:
  540. app.ZoomCamera(app.CAMERA_TO_POSITIVE)
  541.  
  542. def __PressGKey(self):
  543. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  544. net.SendChatPacket("/ride")
  545. else:
  546. if self.ShowNameFlag:
  547. self.interface.ToggleGuildWindow()
  548. else:
  549. app.PitchCamera(app.CAMERA_TO_POSITIVE)
  550.  
  551. def __ReleaseGKey(self):
  552. app.PitchCamera(app.CAMERA_STOP)
  553.  
  554. if app.ENABLE_ADMIN_BAN_MANAGER:
  555. def OpenAdminTool(self):
  556. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL): # Open window with CTRL + F5
  557. if self.wndAdminTool.IsShow():
  558. self.wndAdminTool.Hide()
  559. else:
  560. self.wndAdminTool.Show()
  561.  
  562. def __PressQKey(self):
  563. if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
  564. if 0==interfaceModule.IsQBHide:
  565. interfaceModule.IsQBHide = 1
  566. self.interface.HideAllQuestButton()
  567. else:
  568. interfaceModule.IsQBHide = 0
  569. self.interface.ShowAllQuestButton()
  570. else:
  571. app.RotateCamera(app.CAMERA_TO_NEGATIVE)
  572.  
  573. def __SetQuickSlotMode(self):
  574. self.pressNumber=ui.__mem_func__(self.__PressQuickSlot)
  575.  
  576. def __SetQuickPageMode(self):
  577. self.pressNumber=ui.__mem_func__(self.__SelectQuickPage)
  578.  
  579. def __PressQuickSlot(self, localSlotIndex):
  580. if localeInfo.IsARABIC():
  581. if 0 <= localSlotIndex and localSlotIndex < 4:
  582. player.RequestUseLocalQuickSlot(3-localSlotIndex)
  583. else:
  584. player.RequestUseLocalQuickSlot(11-localSlotIndex)
  585. else:
  586. player.RequestUseLocalQuickSlot(localSlotIndex)
  587.  
  588. def __SelectQuickPage(self, pageIndex):
  589. self.quickSlotPageIndex = pageIndex
  590. player.SetQuickPage(pageIndex)
  591.  
  592. def ToggleDebugInfo(self):
  593. self.isShowDebugInfo = not self.isShowDebugInfo
  594.  
  595. if self.isShowDebugInfo:
  596. self.PrintCoord.Show()
  597. self.FrameRate.Show()
  598. self.Pitch.Show()
  599. self.Splat.Show()
  600. self.TextureNum.Show()
  601. self.ObjectNum.Show()
  602. self.ViewDistance.Show()
  603. self.PrintMousePos.Show()
  604. else:
  605. self.PrintCoord.Hide()
  606. self.FrameRate.Hide()
  607. self.Pitch.Hide()
  608. self.Splat.Hide()
  609. self.TextureNum.Hide()
  610. self.ObjectNum.Hide()
  611. self.ViewDistance.Hide()
  612. self.PrintMousePos.Hide()
  613.  
  614. def __BuildDebugInfo(self):
  615. self.PrintCoord = ui.TextLine()
  616. self.PrintCoord.SetFontName(localeInfo.UI_DEF_FONT)
  617. self.PrintCoord.SetPosition(wndMgr.GetScreenWidth() - 270, 0)
  618.  
  619. self.FrameRate = ui.TextLine()
  620. self.FrameRate.SetFontName(localeInfo.UI_DEF_FONT)
  621. self.FrameRate.SetPosition(wndMgr.GetScreenWidth() - 270, 20)
  622.  
  623. self.Pitch = ui.TextLine()
  624. self.Pitch.SetFontName(localeInfo.UI_DEF_FONT)
  625. self.Pitch.SetPosition(wndMgr.GetScreenWidth() - 270, 40)
  626.  
  627. self.Splat = ui.TextLine()
  628. self.Splat.SetFontName(localeInfo.UI_DEF_FONT)
  629. self.Splat.SetPosition(wndMgr.GetScreenWidth() - 270, 60)
  630.  
  631. self.PrintMousePos = ui.TextLine()
  632. self.PrintMousePos.SetFontName(localeInfo.UI_DEF_FONT)
  633. self.PrintMousePos.SetPosition(wndMgr.GetScreenWidth() - 270, 80)
  634.  
  635. self.TextureNum = ui.TextLine()
  636. self.TextureNum.SetFontName(localeInfo.UI_DEF_FONT)
  637. self.TextureNum.SetPosition(wndMgr.GetScreenWidth() - 270, 100)
  638.  
  639. self.ObjectNum = ui.TextLine()
  640. self.ObjectNum.SetFontName(localeInfo.UI_DEF_FONT)
  641. self.ObjectNum.SetPosition(wndMgr.GetScreenWidth() - 270, 120)
  642.  
  643. self.ViewDistance = ui.TextLine()
  644. self.ViewDistance.SetFontName(localeInfo.UI_DEF_FONT)
  645. self.ViewDistance.SetPosition(0, 0)
  646.  
  647. def __NotifyError(self, msg):
  648. chat.AppendChat(chat.CHAT_TYPE_INFO, msg)
  649.  
  650. def ChangePKMode(self):
  651.  
  652. if not app.IsPressed(app.DIK_LCONTROL):
  653. return
  654.  
  655. if player.GetStatus(player.LEVEL)<constInfo.PVPMODE_PROTECTED_LEVEL:
  656. self.__NotifyError(localeInfo.OPTION_PVPMODE_PROTECT % (constInfo.PVPMODE_PROTECTED_LEVEL))
  657. return
  658.  
  659. curTime = app.GetTime()
  660. if curTime - self.lastPKModeSendedTime < constInfo.PVPMODE_ACCELKEY_DELAY:
  661. return
  662.  
  663. self.lastPKModeSendedTime = curTime
  664.  
  665. curPKMode = player.GetPKMode()
  666. nextPKMode = curPKMode + 1
  667. if nextPKMode == player.PK_MODE_PROTECT:
  668. if 0 == player.GetGuildID():
  669. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OPTION_PVPMODE_CANNOT_SET_GUILD_MODE)
  670. nextPKMode = 0
  671. else:
  672. nextPKMode = player.PK_MODE_GUILD
  673.  
  674. elif nextPKMode == player.PK_MODE_MAX_NUM:
  675. nextPKMode = 0
  676.  
  677. net.SendChatPacket("/PKMode " + str(nextPKMode))
  678. print "/PKMode " + str(nextPKMode)
  679.  
  680. def OnChangePKMode(self):
  681.  
  682. self.interface.OnChangePKMode()
  683.  
  684. try:
  685. self.__NotifyError(localeInfo.OPTION_PVPMODE_MESSAGE_DICT[player.GetPKMode()])
  686. except KeyError:
  687. print "UNKNOWN PVPMode[%d]" % (player.GetPKMode())
  688.  
  689. if constInfo.PVPMODE_TEST_ENABLE:
  690. curPKMode = player.GetPKMode()
  691. alignment, grade = chr.testGetPKData()
  692. self.pkModeNameDict = { 0 : "PEACE", 1 : "REVENGE", 2 : "FREE", 3 : "PROTECT", }
  693. self.testPKMode.SetText("Current PK Mode : " + self.pkModeNameDict.get(curPKMode, "UNKNOWN"))
  694. self.testAlignment.SetText("Current Alignment : " + str(alignment) + " (" + localeInfo.TITLE_NAME_LIST[grade] + ")")
  695.  
  696. if app.WJ_ENABLE_TRADABLE_ICON:
  697. def BINARY_AddItemToExchange(self, inven_type, inven_pos, display_pos):
  698. if inven_type == player.INVENTORY:
  699. self.interface.CantTradableItemExchange(display_pos, inven_pos)
  700.  
  701. def StartGame(self):
  702. self.RefreshInventory()
  703. self.RefreshEquipment()
  704. self.RefreshCharacter()
  705. self.RefreshSkill()
  706.  
  707. if app.ENABLE_ENVIRONMENT_EFFECT_OPTION:
  708. systemSetting.SetNightModeOption(systemSetting.GetNightModeOption())
  709. # systemSetting.SetSnowModeOption(systemSetting.GetSnowModeOption())
  710. # systemSetting.SetSnowTextureModeOption(systemSetting.GetSnowTextureModeOption())
  711.  
  712. if app.ENABLE_ENVIRONMENT_EFFECT_OPTION:
  713. def BINARY_Recv_Night_Mode(self, mode):
  714. self.__DayMode_Update(mode)
  715.  
  716. def CheckGameButton(self):
  717. if self.interface:
  718. self.interface.CheckGameButton()
  719.  
  720. def RefreshAlignment(self):
  721. self.interface.RefreshAlignment()
  722.  
  723. def RefreshStatus(self):
  724. self.CheckGameButton()
  725.  
  726. if self.interface:
  727. self.interface.RefreshStatus()
  728.  
  729. if self.playerGauge:
  730. self.playerGauge.RefreshGauge()
  731.  
  732. def RefreshStamina(self):
  733. self.interface.RefreshStamina()
  734.  
  735. def RefreshSkill(self):
  736. self.CheckGameButton()
  737. if self.interface:
  738. self.interface.RefreshSkill()
  739.  
  740. def RefreshQuest(self):
  741. self.interface.RefreshQuest()
  742.  
  743. def RefreshMessenger(self):
  744. self.interface.RefreshMessenger()
  745.  
  746. def RefreshGuildInfoPage(self):
  747. self.interface.RefreshGuildInfoPage()
  748.  
  749. def RefreshGuildBoardPage(self):
  750. self.interface.RefreshGuildBoardPage()
  751.  
  752. def RefreshGuildMemberPage(self):
  753. self.interface.RefreshGuildMemberPage()
  754.  
  755. def RefreshGuildMemberPageGradeComboBox(self):
  756. self.interface.RefreshGuildMemberPageGradeComboBox()
  757.  
  758. def RefreshGuildSkillPage(self):
  759. self.interface.RefreshGuildSkillPage()
  760.  
  761. def RefreshGuildGradePage(self):
  762. self.interface.RefreshGuildGradePage()
  763.  
  764. def RefreshMobile(self):
  765. if self.interface:
  766. self.interface.RefreshMobile()
  767.  
  768. def OnMobileAuthority(self):
  769. self.interface.OnMobileAuthority()
  770.  
  771. def OnBlockMode(self, mode):
  772. self.interface.OnBlockMode(mode)
  773.  
  774. def OpenQuestWindow(self, skin, idx):
  775. if constInfo.INPUT_IGNORE == 1:
  776. return
  777. else:
  778. self.interface.OpenQuestWindow(skin, idx)
  779.  
  780. def AskGuildName(self):
  781.  
  782. guildNameBoard = uiCommon.InputDialog()
  783. guildNameBoard.SetTitle(localeInfo.GUILD_NAME)
  784. guildNameBoard.SetAcceptEvent(ui.__mem_func__(self.ConfirmGuildName))
  785. guildNameBoard.SetCancelEvent(ui.__mem_func__(self.CancelGuildName))
  786. guildNameBoard.Open()
  787.  
  788. self.guildNameBoard = guildNameBoard
  789.  
  790. def ConfirmGuildName(self):
  791. guildName = self.guildNameBoard.GetText()
  792. if not guildName:
  793. return
  794.  
  795. if net.IsInsultIn(guildName):
  796. self.PopupMessage(localeInfo.GUILD_CREATE_ERROR_INSULT_NAME)
  797. return
  798.  
  799. net.SendAnswerMakeGuildPacket(guildName)
  800. self.guildNameBoard.Close()
  801. self.guildNameBoard = None
  802. return True
  803.  
  804. def CancelGuildName(self):
  805. self.guildNameBoard.Close()
  806. self.guildNameBoard = None
  807. return True
  808.  
  809. def PopupMessage(self, msg):
  810. self.stream.popupWindow.Close()
  811. self.stream.popupWindow.Open(msg, 0, localeInfo.UI_OK)
  812.  
  813. def OpenRefineDialog(self, targetItemPos, nextGradeItemVnum, cost, prob, type=0):
  814. self.interface.OpenRefineDialog(targetItemPos, nextGradeItemVnum, cost, prob, type)
  815.  
  816. def AppendMaterialToRefineDialog(self, vnum, count):
  817. self.interface.AppendMaterialToRefineDialog(vnum, count)
  818.  
  819. def RunUseSkillEvent(self, slotIndex, coolTime):
  820. self.interface.OnUseSkill(slotIndex, coolTime)
  821.  
  822. def ClearAffects(self):
  823. self.affectShower.ClearAffects()
  824.  
  825. def SetAffect(self, affect):
  826. self.affectShower.SetAffect(affect)
  827.  
  828. def ResetAffect(self, affect):
  829. self.affectShower.ResetAffect(affect)
  830.  
  831. def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
  832. self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration)
  833.  
  834. if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
  835. self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1)
  836.  
  837. elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type:
  838. self.BINARY_DragonSoulGiveQuilification()
  839.  
  840. if app.ENABLE_BATTLE_PASS:
  841. if type == chr.NEW_AFFECT_BATTLE_PASS:
  842. if self.interface:
  843. if self.interface.wndBattlePassButton:
  844. self.interface.wndBattlePassButton.ShowButton()
  845. self.interface.wndBattlePassButton.Show()
  846.  
  847. if self.interface.wndBattlePass:
  848. self.interface.wndBattlePass.SetBattlePassInfo(value, duration)
  849.  
  850. def BINARY_NEW_RemoveAffect(self, type, pointIdx):
  851. self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx)
  852. if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
  853. self.interface.DragonSoulDeactivate()
  854.  
  855. if app.ENABLE_BATTLE_PASS:
  856. if type == chr.NEW_AFFECT_BATTLE_PASS:
  857. if self.interface and self.interface.wndBattlePassButton:
  858. self.interface.wndBattlePassButton.HideButton()
  859. self.interface.wndBattlePassButton.Hide()
  860.  
  861. def ActivateSkillSlot(self, slotIndex):
  862. if self.interface:
  863. self.interface.OnActivateSkill(slotIndex)
  864.  
  865. def DeactivateSkillSlot(self, slotIndex):
  866. if self.interface:
  867. self.interface.OnDeactivateSkill(slotIndex)
  868.  
  869. def RefreshEquipment(self):
  870. if self.interface:
  871. self.interface.RefreshInventory()
  872.  
  873. def RefreshInventory(self):
  874. if self.interface:
  875. self.interface.RefreshInventory()
  876.  
  877. def RefreshCharacter(self):
  878. if self.interface:
  879. self.interface.RefreshCharacter()
  880.  
  881. def OnGameOver(self):
  882. self.CloseTargetBoard()
  883. self.OpenRestartDialog()
  884.  
  885. def OpenRestartDialog(self):
  886. self.interface.OpenRestartDialog()
  887.  
  888. def ChangeCurrentSkill(self, skillSlotNumber):
  889. self.interface.OnChangeCurrentSkill(skillSlotNumber)
  890.  
  891. def SetPCTargetBoard(self, vid, name):
  892. self.targetBoard.Open(vid, name)
  893.  
  894. if app.IsPressed(app.DIK_LCONTROL):
  895.  
  896. if not player.IsSameEmpire(vid):
  897. return
  898.  
  899. if player.IsMainCharacterIndex(vid):
  900. return
  901. elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(vid):
  902. return
  903.  
  904. self.interface.OpenWhisperDialog(name)
  905.  
  906.  
  907. def RefreshTargetBoardByVID(self, vid):
  908. self.targetBoard.RefreshByVID(vid)
  909.  
  910. def RefreshTargetBoardByName(self, name):
  911. self.targetBoard.RefreshByName(name)
  912.  
  913. def __RefreshTargetBoard(self):
  914. self.targetBoard.Refresh()
  915.  
  916. if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
  917. def SetHPTargetBoard(self, vid, hpPercentage, iMinHP, iMaxHP):
  918. if vid != self.targetBoard.GetTargetVID():
  919. self.targetBoard.ResetTargetBoard()
  920. self.targetBoard.SetEnemyVID(vid)
  921.  
  922. self.targetBoard.SetHP(hpPercentage, iMinHP, iMaxHP)
  923. self.targetBoard.Show()
  924. else:
  925. def SetHPTargetBoard(self, vid, hpPercentage):
  926. if vid != self.targetBoard.GetTargetVID():
  927. self.targetBoard.ResetTargetBoard()
  928. self.targetBoard.SetEnemyVID(vid)
  929.  
  930. self.targetBoard.SetHP(hpPercentage)
  931. self.targetBoard.Show()
  932.  
  933. def CloseTargetBoardIfDifferent(self, vid):
  934. if vid != self.targetBoard.GetTargetVID():
  935. self.targetBoard.Close()
  936.  
  937. def CloseTargetBoard(self):
  938. self.targetBoard.Close()
  939.  
  940. def OpenEquipmentDialog(self, vid):
  941. self.interface.OpenEquipmentDialog(vid)
  942.  
  943. def SetEquipmentDialogItem(self, vid, slotIndex, vnum, count):
  944. self.interface.SetEquipmentDialogItem(vid, slotIndex, vnum, count)
  945.  
  946. def SetEquipmentDialogSocket(self, vid, slotIndex, socketIndex, value):
  947. self.interface.SetEquipmentDialogSocket(vid, slotIndex, socketIndex, value)
  948.  
  949. def SetEquipmentDialogAttr(self, vid, slotIndex, attrIndex, type, value):
  950. self.interface.SetEquipmentDialogAttr(vid, slotIndex, attrIndex, type, value)
  951.  
  952. def ShowMapName(self, mapName, x, y):
  953.  
  954. if self.mapNameShower:
  955. self.mapNameShower.ShowMapName(mapName, x, y)
  956.  
  957. if self.interface:
  958. self.interface.SetMapName(mapName)
  959.  
  960. def BINARY_OpenAtlasWindow(self):
  961. self.interface.BINARY_OpenAtlasWindow()
  962.  
  963. def OnRecvWhisper(self, mode, name, line):
  964. if mode == chat.WHISPER_TYPE_GM:
  965. self.interface.RegisterGameMasterName(name)
  966. chat.AppendWhisper(mode, name, line)
  967. self.interface.RecvWhisper(name)
  968.  
  969. def OnRecvWhisperSystemMessage(self, mode, name, line):
  970. chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, line)
  971. self.interface.RecvWhisper(name)
  972.  
  973. def OnRecvWhisperError(self, mode, name, line):
  974. if localeInfo.WHISPER_ERROR.has_key(mode):
  975. chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, localeInfo.WHISPER_ERROR[mode](name))
  976. else:
  977. chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, "Whisper Unknown Error(mode=%d, name=%s)" % (mode, name))
  978. self.interface.RecvWhisper(name)
  979.  
  980. def RecvWhisper(self, name):
  981. self.interface.RecvWhisper(name)
  982.  
  983. if app.ENABLE_WHISPER_ADMIN_SYSTEM:
  984. def OnRecvWhisperAdminSystem(self, name, line, color):
  985.  
  986. def ExistCustomColor(val):
  987. return (val > 0)
  988.  
  989. def GetColor(type):
  990. WHISPER_COLOR_MESSAGE = {
  991. 0: "|cffffffff|H|h",
  992. 1: "|cffff796a|H|h",
  993. 2: "|cffb1ff80|H|h",
  994. 3: "|cff46deff|H|h"
  995. }
  996. return WHISPER_COLOR_MESSAGE[type]
  997.  
  998. def ResizeTextWithColor(color, text):
  999. return str("%s%s|h|r" % (GetColor(color), text))
  1000.  
  1001. import datetime
  1002. now = datetime.datetime.now()
  1003. ret = line.replace("#", " ")
  1004.  
  1005. if ExistCustomColor(int(color)):
  1006. ret = ResizeTextWithColor(int(color), ret)
  1007. else:
  1008. ret = ResizeTextWithColor(0, ret)
  1009.  
  1010. text = localeInfo.WHISPER_ADMIN_MESSAGE % (now.strftime("%Y-%m-%d %H:%M"), ret)
  1011.  
  1012. self.interface.RegisterGameMasterName(name)
  1013. chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, name, text)
  1014. self.interface.RecvWhisper(name)
  1015.  
  1016. def OnPickMoney(self, money):
  1017. if app.ENABLE_SPECIAL_CHAT:
  1018. self.SpecialChatOnPick(money, 0)
  1019. else:
  1020. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_PICK_MONEY % (money))
  1021.  
  1022. if app.ENABLE_SPECIAL_CHAT:
  1023. def OnPickItem(self, item):
  1024. item_vnum = int(item)
  1025. self.SpecialChatOnPick(0, item_vnum)
  1026.  
  1027. def SpecialChatOnPick(self, money=0, item_vnum=0):
  1028. if money > 0:
  1029. money_str = localeInfo.NumberToMoneyString(money)
  1030. self.specialChat.AddSpecialChatLine(localeInfo.SC_PICK_MONEY % (money_str))
  1031. if item_vnum > 0:
  1032. import item
  1033. item.SelectItem(item_vnum)
  1034. self.specialChat.AddSpecialChatLine(localeInfo.SC_PICK_ITEM % (item.GetItemName()))
  1035.  
  1036. def OnShopError(self, type):
  1037. try:
  1038. self.PopupMessage(localeInfo.SHOP_ERROR_DICT[type])
  1039. except KeyError:
  1040. self.PopupMessage(localeInfo.SHOP_ERROR_UNKNOWN % (type))
  1041.  
  1042. def OnSafeBoxError(self):
  1043. self.PopupMessage(localeInfo.SAFEBOX_ERROR)
  1044.  
  1045. def OnFishingSuccess(self, isFish, fishName):
  1046. chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_SUCCESS(isFish, fishName), 2000)
  1047.  
  1048. # ADD_FISHING_MESSAGE
  1049. def OnFishingNotifyUnknown(self):
  1050. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_UNKNOWN)
  1051.  
  1052. def OnFishingWrongPlace(self):
  1053. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_WRONG_PLACE)
  1054. # END_OF_ADD_FISHING_MESSAGE
  1055.  
  1056. def OnFishingNotify(self, isFish, fishName):
  1057. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_NOTIFY(isFish, fishName))
  1058.  
  1059. def OnFishingFailure(self):
  1060. chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_FAILURE, 2000)
  1061.  
  1062. def OnCannotPickItem(self):
  1063. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_PICK_ITEM)
  1064.  
  1065. # MINING
  1066. def OnCannotMining(self):
  1067. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_MINING)
  1068. # END_OF_MINING
  1069.  
  1070. def OnCannotUseSkill(self, vid, type):
  1071. if localeInfo.USE_SKILL_ERROR_TAIL_DICT.has_key(type):
  1072. textTail.RegisterInfoTail(vid, localeInfo.USE_SKILL_ERROR_TAIL_DICT[type])
  1073.  
  1074. if localeInfo.USE_SKILL_ERROR_CHAT_DICT.has_key(type):
  1075. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_SKILL_ERROR_CHAT_DICT[type])
  1076.  
  1077. def OnCannotShotError(self, vid, type):
  1078. textTail.RegisterInfoTail(vid, localeInfo.SHOT_ERROR_TAIL_DICT.get(type, localeInfo.SHOT_ERROR_UNKNOWN % (type)))
  1079.  
  1080. ## PointReset
  1081. def StartPointReset(self):
  1082. self.interface.OpenPointResetDialog()
  1083.  
  1084. ## Shop
  1085.  
  1086. def StartShop(self, vid):
  1087. self.interface.OpenShopDialog(vid)
  1088.  
  1089. def EndShop(self):
  1090. self.interface.CloseShopDialog()
  1091.  
  1092. def RefreshShop(self):
  1093. self.interface.RefreshShopDialog()
  1094.  
  1095. def SetShopSellingPrice(self, Price):
  1096. pass
  1097.  
  1098. ## Exchange
  1099. def StartExchange(self):
  1100. self.interface.StartExchange()
  1101.  
  1102. def StartDice(self):
  1103. self.interface.StartDice()
  1104.  
  1105. def EndDice(self):
  1106. self.interface.EndDice()
  1107.  
  1108. def RefreshDice(self):
  1109. self.interface.RefreshDice()
  1110.  
  1111. def __DiceHasDone(self, myNumber, targetNumber):
  1112. self.interface.AddDiceNumber(myNumber, targetNumber)
  1113.  
  1114. def EndExchange(self):
  1115. self.interface.EndExchange()
  1116.  
  1117. def RefreshExchange(self):
  1118. self.interface.RefreshExchange()
  1119.  
  1120. ## Party
  1121. def RecvPartyInviteQuestion(self, leaderVID, leaderName):
  1122. partyInviteQuestionDialog = uiCommon.QuestionDialog()
  1123. partyInviteQuestionDialog.SetText(leaderName + localeInfo.PARTY_DO_YOU_JOIN)
  1124. partyInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerPartyInvite(arg))
  1125. partyInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerPartyInvite(arg))
  1126. partyInviteQuestionDialog.Open()
  1127. partyInviteQuestionDialog.partyLeaderVID = leaderVID
  1128. self.partyInviteQuestionDialog = partyInviteQuestionDialog
  1129.  
  1130. def AnswerPartyInvite(self, answer):
  1131.  
  1132. if not self.partyInviteQuestionDialog:
  1133. return
  1134.  
  1135. partyLeaderVID = self.partyInviteQuestionDialog.partyLeaderVID
  1136.  
  1137. distance = player.GetCharacterDistance(partyLeaderVID)
  1138. if distance < 0.0 or distance > 5000:
  1139. answer = False
  1140.  
  1141. net.SendPartyInviteAnswerPacket(partyLeaderVID, answer)
  1142.  
  1143. self.partyInviteQuestionDialog.Close()
  1144. self.partyInviteQuestionDialog = None
  1145.  
  1146. def AddPartyMember(self, pid, name):
  1147. self.interface.AddPartyMember(pid, name)
  1148.  
  1149. def UpdatePartyMemberInfo(self, pid):
  1150. self.interface.UpdatePartyMemberInfo(pid)
  1151.  
  1152. def RemovePartyMember(self, pid):
  1153. self.interface.RemovePartyMember(pid)
  1154. self.__RefreshTargetBoard()
  1155.  
  1156. def LinkPartyMember(self, pid, vid):
  1157. self.interface.LinkPartyMember(pid, vid)
  1158.  
  1159. def UnlinkPartyMember(self, pid):
  1160. self.interface.UnlinkPartyMember(pid)
  1161.  
  1162. def UnlinkAllPartyMember(self):
  1163. self.interface.UnlinkAllPartyMember()
  1164.  
  1165. def ExitParty(self):
  1166. self.interface.ExitParty()
  1167. self.RefreshTargetBoardByVID(self.targetBoard.GetTargetVID())
  1168.  
  1169. def ChangePartyParameter(self, distributionMode):
  1170. self.interface.ChangePartyParameter(distributionMode)
  1171.  
  1172. ## Messenger
  1173. def OnMessengerAddFriendQuestion(self, name):
  1174. messengerAddFriendQuestion = uiCommon.QuestionDialog2()
  1175. messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_1 % (name))
  1176. messengerAddFriendQuestion.SetText2(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_2)
  1177. messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend))
  1178. messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend))
  1179. messengerAddFriendQuestion.Open()
  1180. messengerAddFriendQuestion.name = name
  1181. self.messengerAddFriendQuestion = messengerAddFriendQuestion
  1182.  
  1183. def OnAcceptAddFriend(self):
  1184. name = self.messengerAddFriendQuestion.name
  1185. net.SendChatPacket("/messenger_auth y " + name)
  1186. self.OnCloseAddFriendQuestionDialog()
  1187. return True
  1188.  
  1189. def OnDenyAddFriend(self):
  1190. name = self.messengerAddFriendQuestion.name
  1191. net.SendChatPacket("/messenger_auth n " + name)
  1192. self.OnCloseAddFriendQuestionDialog()
  1193. return True
  1194.  
  1195. def OnCloseAddFriendQuestionDialog(self):
  1196. self.messengerAddFriendQuestion.Close()
  1197. self.messengerAddFriendQuestion = None
  1198. return True
  1199.  
  1200. ## SafeBox
  1201. def OpenSafeboxWindow(self, size):
  1202. self.interface.OpenSafeboxWindow(size)
  1203.  
  1204. def RefreshSafebox(self):
  1205. self.interface.RefreshSafebox()
  1206.  
  1207. def RefreshSafeboxMoney(self):
  1208. self.interface.RefreshSafeboxMoney()
  1209.  
  1210. # ITEM_MALL
  1211. def OpenMallWindow(self, size):
  1212. self.interface.OpenMallWindow(size)
  1213.  
  1214. def RefreshMall(self):
  1215. self.interface.RefreshMall()
  1216. # END_OF_ITEM_MALL
  1217.  
  1218. ## Guild
  1219. def RecvGuildInviteQuestion(self, guildID, guildName):
  1220. guildInviteQuestionDialog = uiCommon.QuestionDialog()
  1221. guildInviteQuestionDialog.SetText(guildName + localeInfo.GUILD_DO_YOU_JOIN)
  1222. guildInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerGuildInvite(arg))
  1223. guildInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerGuildInvite(arg))
  1224. guildInviteQuestionDialog.Open()
  1225. guildInviteQuestionDialog.guildID = guildID
  1226. self.guildInviteQuestionDialog = guildInviteQuestionDialog
  1227.  
  1228. def AnswerGuildInvite(self, answer):
  1229.  
  1230. if not self.guildInviteQuestionDialog:
  1231. return
  1232.  
  1233. guildLeaderVID = self.guildInviteQuestionDialog.guildID
  1234. net.SendGuildInviteAnswerPacket(guildLeaderVID, answer)
  1235.  
  1236. self.guildInviteQuestionDialog.Close()
  1237. self.guildInviteQuestionDialog = None
  1238.  
  1239.  
  1240. def DeleteGuild(self):
  1241. self.interface.DeleteGuild()
  1242.  
  1243. ## Clock
  1244. def ShowClock(self, second):
  1245. self.interface.ShowClock(second)
  1246.  
  1247. def HideClock(self):
  1248. self.interface.HideClock()
  1249.  
  1250. ## Emotion
  1251. def BINARY_ActEmotion(self, emotionIndex):
  1252. if self.interface.wndCharacter:
  1253. self.interface.wndCharacter.ActEmotion(emotionIndex)
  1254.  
  1255. ###############################################################################################
  1256. ###############################################################################################
  1257. ## Keyboard Functions
  1258.  
  1259. def CheckFocus(self):
  1260. if False == self.IsFocus():
  1261. if True == self.interface.IsOpenChat():
  1262. self.interface.ToggleChat()
  1263.  
  1264. self.SetFocus()
  1265.  
  1266. def SaveScreen(self):
  1267. print "save screen"
  1268.  
  1269. # SCREENSHOT_CWDSAVE
  1270. if SCREENSHOT_CWDSAVE:
  1271. if not os.path.exists(os.getcwd()+os.sep+"screenshot"):
  1272. os.mkdir(os.getcwd()+os.sep+"screenshot")
  1273.  
  1274. (succeeded, name) = grp.SaveScreenShotToPath(os.getcwd()+os.sep+"screenshot"+os.sep)
  1275. elif SCREENSHOT_DIR:
  1276. (succeeded, name) = grp.SaveScreenShot(SCREENSHOT_DIR)
  1277. else:
  1278. (succeeded, name) = grp.SaveScreenShot()
  1279. # END_OF_SCREENSHOT_CWDSAVE
  1280.  
  1281. if succeeded:
  1282. pass
  1283. """
  1284. chat.AppendChat(chat.CHAT_TYPE_INFO, name + localeInfo.SCREENSHOT_SAVE1)
  1285. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE2)
  1286. """
  1287. else:
  1288. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE_FAILURE)
  1289.  
  1290. def ShowConsole(self):
  1291. if debugInfo.IsDebugMode() or True == self.consoleEnable:
  1292. player.EndKeyWalkingImmediately()
  1293. self.console.OpenWindow()
  1294.  
  1295. def ShowName(self):
  1296. self.ShowNameFlag = True
  1297. self.playerGauge.EnableShowAlways()
  1298. player.SetQuickPage(self.quickSlotPageIndex+1)
  1299.  
  1300. # ADD_ALWAYS_SHOW_NAME
  1301. def __IsShowName(self):
  1302.  
  1303. if systemSetting.IsAlwaysShowName():
  1304. return True
  1305.  
  1306. if self.ShowNameFlag:
  1307. return True
  1308.  
  1309. return False
  1310. # END_OF_ADD_ALWAYS_SHOW_NAME
  1311.  
  1312. def HideName(self):
  1313. self.ShowNameFlag = False
  1314. self.playerGauge.DisableShowAlways()
  1315. player.SetQuickPage(self.quickSlotPageIndex)
  1316.  
  1317. def ShowMouseImage(self):
  1318. self.interface.ShowMouseImage()
  1319.  
  1320. def HideMouseImage(self):
  1321. self.interface.HideMouseImage()
  1322.  
  1323. def StartAttack(self):
  1324. player.SetAttackKeyState(True)
  1325.  
  1326. def EndAttack(self):
  1327. player.SetAttackKeyState(False)
  1328.  
  1329. def MoveUp(self):
  1330. player.SetSingleDIKKeyState(app.DIK_UP, True)
  1331.  
  1332. def MoveDown(self):
  1333. player.SetSingleDIKKeyState(app.DIK_DOWN, True)
  1334.  
  1335. def MoveLeft(self):
  1336. player.SetSingleDIKKeyState(app.DIK_LEFT, True)
  1337.  
  1338. def MoveRight(self):
  1339. player.SetSingleDIKKeyState(app.DIK_RIGHT, True)
  1340.  
  1341. def StopUp(self):
  1342. player.SetSingleDIKKeyState(app.DIK_UP, False)
  1343.  
  1344. def StopDown(self):
  1345. player.SetSingleDIKKeyState(app.DIK_DOWN, False)
  1346.  
  1347. def StopLeft(self):
  1348. player.SetSingleDIKKeyState(app.DIK_LEFT, False)
  1349.  
  1350. def StopRight(self):
  1351. player.SetSingleDIKKeyState(app.DIK_RIGHT, False)
  1352.  
  1353. def PickUpItem(self):
  1354. player.PickCloseItemVector()
  1355.  
  1356. ###############################################################################################
  1357. ###############################################################################################
  1358. ## Event Handler
  1359.  
  1360. def OnKeyDown(self, key):
  1361. if self.interface.wndWeb and self.interface.wndWeb.IsShow():
  1362. return
  1363.  
  1364. if key == app.DIK_ESC:
  1365. self.RequestDropItem(False)
  1366. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
  1367.  
  1368. try:
  1369. self.onPressKeyDict[key]()
  1370. except KeyError:
  1371. pass
  1372. except:
  1373. raise
  1374.  
  1375. return True
  1376.  
  1377. def OnKeyUp(self, key):
  1378. try:
  1379. if self.onClickKeyDict:
  1380. self.onClickKeyDict[key]()
  1381. except KeyError:
  1382. pass
  1383. except:
  1384. raise
  1385.  
  1386. return True
  1387.  
  1388. def OnMouseLeftButtonDown(self):
  1389. if self.interface.BUILD_OnMouseLeftButtonDown():
  1390. return
  1391.  
  1392. if mouseModule.mouseController.isAttached():
  1393. self.CheckFocus()
  1394. else:
  1395. hyperlink = ui.GetHyperlink()
  1396. if hyperlink:
  1397. return
  1398. else:
  1399. self.CheckFocus()
  1400. player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);
  1401.  
  1402. return True
  1403.  
  1404. def OnMouseLeftButtonUp(self):
  1405.  
  1406. if self.interface.BUILD_OnMouseLeftButtonUp():
  1407. return
  1408.  
  1409. if mouseModule.mouseController.isAttached():
  1410.  
  1411. attachedType = mouseModule.mouseController.GetAttachedType()
  1412. attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
  1413. attachedItemSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1414. attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
  1415.  
  1416. ## QuickSlot
  1417. if player.SLOT_TYPE_QUICK_SLOT == attachedType:
  1418. player.RequestDeleteGlobalQuickSlot(attachedItemSlotPos)
  1419.  
  1420. ## Inventory
  1421. elif player.SLOT_TYPE_INVENTORY == attachedType:
  1422.  
  1423. if player.ITEM_MONEY == attachedItemIndex:
  1424. self.__PutMoney(attachedType, attachedItemCount, self.PickingCharacterIndex)
  1425. else:
  1426. self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)
  1427.  
  1428. ## DragonSoul
  1429. elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
  1430. self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)
  1431.  
  1432. if app.ENABLE_SPECIAL_STORAGE:
  1433. if player.SLOT_TYPE_UPGRADE_INVENTORY == attachedType or\
  1434. player.SLOT_TYPE_BOOK_INVENTORY == attachedType or\
  1435. player.SLOT_TYPE_STONE_INVENTORY == attachedType or\
  1436. player.SLOT_TYPE_BONUS_INVENTORY == attachedType or\
  1437. player.SLOT_TYPE_CHEST_INVENTORY == attachedType or\
  1438. player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
  1439. self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)
  1440.  
  1441. mouseModule.mouseController.DeattachObject()
  1442.  
  1443. else:
  1444. hyperlink = ui.GetHyperlink()
  1445. if hyperlink:
  1446. if app.IsPressed(app.DIK_LALT):
  1447. link = chat.GetLinkFromHyperlink(hyperlink)
  1448. ime.PasteString(link)
  1449. else:
  1450. self.interface.MakeHyperlinkTooltip(hyperlink)
  1451. return
  1452. else:
  1453. player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)
  1454.  
  1455. #player.EndMouseWalking()
  1456. return True
  1457.  
  1458. def __PutItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, dstChrID):
  1459. if app.ENABLE_SPECIAL_STORAGE:
  1460. if player.SLOT_TYPE_INVENTORY == attachedType or\
  1461. player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType or\
  1462. player.SLOT_TYPE_UPGRADE_INVENTORY == attachedType or\
  1463. player.SLOT_TYPE_BOOK_INVENTORY == attachedType or\
  1464. player.SLOT_TYPE_STONE_INVENTORY == attachedType or\
  1465. player.SLOT_TYPE_BONUS_INVENTORY == attachedType or\
  1466. player.SLOT_TYPE_CHEST_INVENTORY == attachedType:
  1467. attachedInvenType = player.SlotTypeToInvenType(attachedType)
  1468. if True == chr.HasInstance(self.PickingCharacterIndex) and player.GetMainCharacterIndex() != dstChrID:
  1469. if player.IsEquipmentSlot(attachedItemSlotPos) and\
  1470. player.SLOT_TYPE_DRAGON_SOUL_INVENTORY != attachedType and\
  1471. player.SLOT_TYPE_UPGRADE_INVENTORY != attachedType and\
  1472. player.SLOT_TYPE_BOOK_INVENTORY != attachedType and\
  1473. player.SLOT_TYPE_STONE_INVENTORY != attachedType and\
  1474. player.SLOT_TYPE_BONUS_INVENTORY != attachedType and\
  1475. player.SLOT_TYPE_CHEST_INVENTORY != attachedType:
  1476. self.stream.popupWindow.Close()
  1477. self.stream.popupWindow.Open(localeInfo.EXCHANGE_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)
  1478. else:
  1479. if chr.IsNPC(dstChrID):
  1480. net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
  1481. else:
  1482. net.SendExchangeStartPacket(dstChrID)
  1483. net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
  1484. else:
  1485. self.__DropItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount)
  1486. else:
  1487. if player.SLOT_TYPE_INVENTORY == attachedType or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
  1488. attachedInvenType = player.SlotTypeToInvenType(attachedType)
  1489. if True == chr.HasInstance(self.PickingCharacterIndex) and player.GetMainCharacterIndex() != dstChrID:
  1490. if player.IsEquipmentSlot(attachedItemSlotPos) and player.SLOT_TYPE_DRAGON_SOUL_INVENTORY != attachedType:
  1491. self.stream.popupWindow.Close()
  1492. self.stream.popupWindow.Open(localeInfo.EXCHANGE_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)
  1493. else:
  1494. if chr.IsNPC(dstChrID):
  1495. net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
  1496. else:
  1497. net.SendExchangeStartPacket(dstChrID)
  1498. net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
  1499. else:
  1500. self.__DropItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount)
  1501.  
  1502. def __PutMoney(self, attachedType, attachedMoney, dstChrID):
  1503. if True == chr.HasInstance(dstChrID) and player.GetMainCharacterIndex() != dstChrID:
  1504. net.SendExchangeStartPacket(dstChrID)
  1505. net.SendExchangeElkAddPacket(attachedMoney)
  1506. else:
  1507. self.__DropMoney(attachedType, attachedMoney)
  1508.  
  1509. def __DropMoney(self, attachedType, attachedMoney):
  1510. # PRIVATESHOP_DISABLE_ITEM_DROP - 개인상점 열고 있는 동안 아이템 버림 방지
  1511. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1512. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
  1513. return
  1514. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1515.  
  1516. if attachedMoney>=1000:
  1517. self.stream.popupWindow.Close()
  1518. self.stream.popupWindow.Open(localeInfo.DROP_MONEY_FAILURE_1000_OVER, 0, localeInfo.UI_OK)
  1519. return
  1520.  
  1521. itemDropQuestionDialog = uiCommon.QuestionDialogItem()
  1522. itemDropQuestionDialog.SetText(localeInfo.DO_YOU_DROP_MONEY % (attachedMoney))
  1523. itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg))
  1524. itemDropQuestionDialog.SetDestroyEvent(lambda arg=TRUE: self.RequestDestroyItem(arg))
  1525. itemDropQuestionDialog.SetCancelEvent(lambda arg=False: self.RequestDropItem(arg))
  1526. itemDropQuestionDialog.Open()
  1527. itemDropQuestionDialog.dropType = attachedType
  1528. itemDropQuestionDialog.dropCount = attachedMoney
  1529. itemDropQuestionDialog.dropNumber = player.ITEM_MONEY
  1530. self.itemDropQuestionDialog = itemDropQuestionDialog
  1531.  
  1532. def __DropItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount):
  1533. # PRIVATESHOP_DISABLE_ITEM_DROP - 개인상점 열고 있는 동안 아이템 버림 방지
  1534. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1535. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
  1536. return
  1537. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1538.  
  1539. if player.SLOT_TYPE_INVENTORY == attachedType and player.IsEquipmentSlot(attachedItemSlotPos):
  1540. self.stream.popupWindow.Close()
  1541. self.stream.popupWindow.Open(localeInfo.DROP_ITEM_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)
  1542.  
  1543. else:
  1544. if player.SLOT_TYPE_INVENTORY == attachedType:
  1545. dropItemIndex = player.GetItemIndex(attachedItemSlotPos)
  1546.  
  1547. item.SelectItem(dropItemIndex)
  1548. dropItemName = item.GetItemName()
  1549.  
  1550. ## Question Text
  1551. questionText = localeInfo.HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, attachedItemCount)
  1552.  
  1553. ## Dialog
  1554. itemDropQuestionDialog = uiCommon.QuestionDialogItem()
  1555. itemDropQuestionDialog.SetText(questionText)
  1556. itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg))
  1557. itemDropQuestionDialog.SetDestroyEvent(lambda arg=TRUE: self.RequestDestroyItem(arg))
  1558. itemDropQuestionDialog.SetCancelEvent(lambda arg=False: self.RequestDropItem(arg))
  1559. itemDropQuestionDialog.SetCancelEvent(lambda arg=False: self.RequestDropItemStorage(arg))
  1560. itemDropQuestionDialog.Open()
  1561. itemDropQuestionDialog.dropType = attachedType
  1562. itemDropQuestionDialog.dropNumber = attachedItemSlotPos
  1563. itemDropQuestionDialog.dropCount = attachedItemCount
  1564. self.itemDropQuestionDialog = itemDropQuestionDialog
  1565.  
  1566. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  1567. elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
  1568. dropItemIndex = player.GetItemIndex(player.DRAGON_SOUL_INVENTORY, attachedItemSlotPos)
  1569.  
  1570. item.SelectItem(dropItemIndex)
  1571. dropItemName = item.GetItemName()
  1572.  
  1573. ## Question Text
  1574. questionText = localeInfo.HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, attachedItemCount)
  1575.  
  1576. ## Dialog
  1577. itemDropQuestionDialog = uiCommon.QuestionDialogItem()
  1578. itemDropQuestionDialog.SetText(questionText)
  1579. itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg))
  1580. itemDropQuestionDialog.SetDestroyEvent(lambda arg=TRUE: self.RequestDestroyItem(arg))
  1581. itemDropQuestionDialog.SetCancelEvent(lambda arg=False: self.RequestDropItem(arg))
  1582. itemDropQuestionDialog.Open()
  1583. itemDropQuestionDialog.dropType = attachedType
  1584. itemDropQuestionDialog.dropNumber = attachedItemSlotPos
  1585. itemDropQuestionDialog.dropCount = attachedItemCount
  1586. self.itemDropQuestionDialog = itemDropQuestionDialog
  1587.  
  1588. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  1589.  
  1590. if app.ENABLE_SPECIAL_STORAGE:
  1591. if player.SLOT_TYPE_UPGRADE_INVENTORY == attachedType or\
  1592. player.SLOT_TYPE_BOOK_INVENTORY == attachedType or\
  1593. player.SLOT_TYPE_STONE_INVENTORY == attachedType or\
  1594. player.SLOT_TYPE_BONUS_INVENTORY == attachedType or\
  1595. player.SLOT_TYPE_CHEST_INVENTORY == attachedType:
  1596. dropItemIndex = player.GetItemIndex(player.SlotTypeToInvenType(attachedType), attachedItemSlotPos)
  1597.  
  1598. item.SelectItem(dropItemIndex)
  1599. dropItemName = item.GetItemName()
  1600.  
  1601. ## Question Text
  1602. questionText = localeInfo.HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, attachedItemCount)
  1603.  
  1604. ## Dialog
  1605. itemDropQuestionDialog = uiCommon.QuestionDialog()
  1606. itemDropQuestionDialog.SetText(questionText)
  1607. itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg))
  1608. itemDropQuestionDialog.SetCancelEvent(lambda arg=False: self.RequestDropItem(arg))
  1609. itemDropQuestionDialog.Open()
  1610. itemDropQuestionDialog.dropType = attachedType
  1611. itemDropQuestionDialog.dropNumber = attachedItemSlotPos
  1612. itemDropQuestionDialog.dropCount = attachedItemCount
  1613. self.itemDropQuestionDialog = itemDropQuestionDialog
  1614.  
  1615. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  1616.  
  1617. def RequestDropItem(self, answer):
  1618. if not self.itemDropQuestionDialog:
  1619. return
  1620.  
  1621. if answer:
  1622. dropType = self.itemDropQuestionDialog.dropType
  1623. dropCount = self.itemDropQuestionDialog.dropCount
  1624. dropNumber = self.itemDropQuestionDialog.dropNumber
  1625.  
  1626. if player.SLOT_TYPE_INVENTORY == dropType:
  1627. if dropNumber == player.ITEM_MONEY:
  1628. net.SendGoldDropPacketNew(dropCount)
  1629. snd.PlaySound("sound/ui/money.wav")
  1630. else:
  1631. # PRIVATESHOP_DISABLE_ITEM_DROP
  1632. self.__SendDropItemPacket(dropNumber, dropCount)
  1633. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1634. elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == dropType:
  1635. # PRIVATESHOP_DISABLE_ITEM_DROP
  1636. self.__SendDropItemPacket(dropNumber, dropCount, player.DRAGON_SOUL_INVENTORY)
  1637. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1638. if app.ENABLE_SPECIAL_STORAGE:
  1639. if player.SLOT_TYPE_UPGRADE_INVENTORY == dropType or\
  1640. player.SLOT_TYPE_BOOK_INVENTORY == dropType or\
  1641. player.SLOT_TYPE_STONE_INVENTORY == dropType or\
  1642. player.SLOT_TYPE_BONUS_INVENTORY == dropType or\
  1643. player.SLOT_TYPE_CHEST_INVENTORY == dropType:
  1644. self.__SendDropItemPacket(dropNumber, dropCount, player.SlotTypeToInvenType(dropType))
  1645.  
  1646.  
  1647. self.itemDropQuestionDialog.Close()
  1648. self.itemDropQuestionDialog = None
  1649.  
  1650. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
  1651.  
  1652. def RequestDestroyItem(self, answer):
  1653. if not self.itemDropQuestionDialog:
  1654. return
  1655. if answer:
  1656. dropType = self.itemDropQuestionDialog.dropType
  1657. dropNumber = self.itemDropQuestionDialog.dropNumber
  1658. if player.SLOT_TYPE_INVENTORY == dropType:
  1659. if dropNumber == player.ITEM_MONEY:
  1660. return
  1661. else:
  1662. self.__SendDestroyItemPacket(dropNumber)
  1663.  
  1664. self.itemDropQuestionDialog.Close()
  1665. self.itemDropQuestionDialog = None
  1666. constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)
  1667.  
  1668. def RequestDropItemStorage(self, answer):
  1669. if not self.itemDropQuestionDialog:
  1670. return
  1671.  
  1672. if answer:
  1673. dropType = self.itemDropQuestionDialog.dropType
  1674. dropCount = self.itemDropQuestionDialog.dropCount
  1675. dropNumber = self.itemDropQuestionDialog.dropNumber
  1676.  
  1677. if player.SLOT_TYPE_INVENTORY == dropType:
  1678. if dropNumber == player.ITEM_MONEY:
  1679. net.SendGoldDropPacketNew(dropCount)
  1680. snd.PlaySound("sound/ui/money.wav")
  1681. else:
  1682. # PRIVATESHOP_DISABLE_ITEM_DROP
  1683. self.__SendDropItemPacket(dropNumber, dropCount)
  1684. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1685. elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == dropType:
  1686. # PRIVATESHOP_DISABLE_ITEM_DROP
  1687. self.__SendDropItemPacket(dropNumber, dropCount, player.DRAGON_SOUL_INVENTORY)
  1688. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1689. if app.ENABLE_SPECIAL_STORAGE:
  1690. if player.SLOT_TYPE_UPGRADE_INVENTORY == dropType or\
  1691. player.SLOT_TYPE_BOOK_INVENTORY == dropType or\
  1692. player.SLOT_TYPE_STONE_INVENTORY == dropType or\
  1693. player.SLOT_TYPE_BONUS_INVENTORY == dropType or\
  1694. player.SLOT_TYPE_CHEST_INVENTORY == dropType:
  1695. self.__SendDropItemPacket(dropNumber, dropCount, player.SlotTypeToInvenType(dropType))
  1696.  
  1697. self.itemDropQuestionDialog.Close()
  1698. self.itemDropQuestionDialog = None
  1699.  
  1700. # PRIVATESHOP_DISABLE_ITEM_DROP
  1701. def __SendDropItemPacket(self, itemVNum, itemCount, itemInvenType = player.INVENTORY):
  1702. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1703. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
  1704. return
  1705.  
  1706. net.SendItemDropPacketNew(itemInvenType, itemVNum, itemCount)
  1707. # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
  1708.  
  1709. def __SendDestroyItemPacket(self, itemVNum, itemInvenType = player.INVENTORY):
  1710. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1711. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
  1712. return
  1713. net.SendItemDestroyPacket(itemVNum)
  1714.  
  1715. def OnMouseRightButtonDown(self):
  1716.  
  1717. self.CheckFocus()
  1718.  
  1719. if True == mouseModule.mouseController.isAttached():
  1720. mouseModule.mouseController.DeattachObject()
  1721.  
  1722. else:
  1723. player.SetMouseState(player.MBT_RIGHT, player.MBS_PRESS)
  1724.  
  1725. return True
  1726.  
  1727. def OnMouseRightButtonUp(self):
  1728. if True == mouseModule.mouseController.isAttached():
  1729. return True
  1730.  
  1731. player.SetMouseState(player.MBT_RIGHT, player.MBS_CLICK)
  1732. return True
  1733.  
  1734. def OnMouseMiddleButtonDown(self):
  1735. player.SetMouseMiddleButtonState(player.MBS_PRESS)
  1736.  
  1737. def OnMouseMiddleButtonUp(self):
  1738. player.SetMouseMiddleButtonState(player.MBS_CLICK)
  1739.  
  1740. def OnUpdate(self):
  1741. app.UpdateGame()
  1742.  
  1743. if self.mapNameShower.IsShow():
  1744. self.mapNameShower.Update()
  1745.  
  1746. if self.isShowDebugInfo:
  1747. self.UpdateDebugInfo()
  1748.  
  1749. if self.enableXMasBoom:
  1750. self.__XMasBoom_Update()
  1751.  
  1752. if 1== constInfo.BOSS_TRACKING:
  1753. constInfo.BOSS_TRACKING = 0
  1754. self.BossTrackingSystemShow()
  1755.  
  1756. if constInfo.E_LITERE_STATUS == 1:
  1757. self.litere_event.Show()
  1758. else:
  1759. self.litere_event.Hide()
  1760.  
  1761. if 1 == constInfo.AUTO_PICK_UP:
  1762. self.PickUpItem()
  1763.  
  1764. self.interface.BUILD_OnUpdate()
  1765.  
  1766.  
  1767. def UpdateDebugInfo(self):
  1768. #
  1769. # 캐릭터 좌표 및 FPS 출력
  1770. (x, y, z) = player.GetMainCharacterPosition()
  1771. nUpdateTime = app.GetUpdateTime()
  1772. nUpdateFPS = app.GetUpdateFPS()
  1773. nRenderFPS = app.GetRenderFPS()
  1774. nFaceCount = app.GetFaceCount()
  1775. fFaceSpeed = app.GetFaceSpeed()
  1776. nST=background.GetRenderShadowTime()
  1777. (fAveRT, nCurRT) = app.GetRenderTime()
  1778. (iNum, fFogStart, fFogEnd, fFarCilp) = background.GetDistanceSetInfo()
  1779. (iPatch, iSplat, fSplatRatio, sTextureNum) = background.GetRenderedSplatNum()
  1780. if iPatch == 0:
  1781. iPatch = 1
  1782.  
  1783. #(dwRenderedThing, dwRenderedCRC) = background.GetRenderedGraphicThingInstanceNum()
  1784.  
  1785. self.PrintCoord.SetText("Coordinate: %.2f %.2f %.2f ATM: %d" % (x, y, z, app.GetAvailableTextureMemory()/(1024*1024)))
  1786. xMouse, yMouse = wndMgr.GetMousePosition()
  1787. self.PrintMousePos.SetText("MousePosition: %d %d" % (xMouse, yMouse))
  1788.  
  1789. self.FrameRate.SetText("UFPS: %3d UT: %3d FS %.2f" % (nUpdateFPS, nUpdateTime, fFaceSpeed))
  1790.  
  1791. if fAveRT>1.0:
  1792. self.Pitch.SetText("RFPS: %3d RT:%.2f(%3d) FC: %d(%.2f) " % (nRenderFPS, fAveRT, nCurRT, nFaceCount, nFaceCount/fAveRT))
  1793.  
  1794. self.Splat.SetText("PATCH: %d SPLAT: %d BAD(%.2f)" % (iPatch, iSplat, fSplatRatio))
  1795. #self.Pitch.SetText("Pitch: %.2f" % (app.GetCameraPitch())
  1796. #self.TextureNum.SetText("TN : %s" % (sTextureNum))
  1797. #self.ObjectNum.SetText("GTI : %d, CRC : %d" % (dwRenderedThing, dwRenderedCRC))
  1798. self.ViewDistance.SetText("Num : %d, FS : %f, FE : %f, FC : %f" % (iNum, fFogStart, fFogEnd, fFarCilp))
  1799.  
  1800. def OnRender(self):
  1801. app.RenderGame()
  1802.  
  1803. if self.console.Console.collision:
  1804. background.RenderCollision()
  1805. chr.RenderCollision()
  1806.  
  1807. (x, y) = app.GetCursorPosition()
  1808.  
  1809. ########################
  1810. # Picking
  1811. ########################
  1812. textTail.UpdateAllTextTail()
  1813.  
  1814. if True == wndMgr.IsPickedWindow(self.hWnd):
  1815.  
  1816. self.PickingCharacterIndex = chr.Pick()
  1817.  
  1818. if -1 != self.PickingCharacterIndex:
  1819. textTail.ShowCharacterTextTail(self.PickingCharacterIndex)
  1820. if 0 != self.targetBoard.GetTargetVID():
  1821. textTail.ShowCharacterTextTail(self.targetBoard.GetTargetVID())
  1822.  
  1823. # ADD_ALWAYS_SHOW_NAME
  1824. if not self.__IsShowName():
  1825. self.PickingItemIndex = item.Pick()
  1826. if -1 != self.PickingItemIndex:
  1827. textTail.ShowItemTextTail(self.PickingItemIndex)
  1828. # END_OF_ADD_ALWAYS_SHOW_NAME
  1829.  
  1830. ## Show all name in the range
  1831.  
  1832. # ADD_ALWAYS_SHOW_NAME
  1833. if self.__IsShowName():
  1834. textTail.ShowAllTextTail()
  1835. self.PickingItemIndex = textTail.Pick(x, y)
  1836.  
  1837. if app.ENABLE_SHOPNAMES_RANGE:
  1838. if systemSetting.IsShowSalesText():
  1839. uiPrivateShopBuilder.UpdateADBoard()
  1840. # END_OF_ADD_ALWAYS_SHOW_NAME
  1841.  
  1842. textTail.UpdateShowingTextTail()
  1843. textTail.ArrangeTextTail()
  1844. if -1 != self.PickingItemIndex:
  1845. textTail.SelectItemName(self.PickingItemIndex)
  1846.  
  1847. grp.PopState()
  1848. grp.SetInterfaceRenderState()
  1849.  
  1850. textTail.Render()
  1851. textTail.HideAllTextTail()
  1852.  
  1853. def OnPressEscapeKey(self):
  1854. if app.TARGET == app.GetCursor():
  1855. app.SetCursor(app.NORMAL)
  1856.  
  1857. elif True == mouseModule.mouseController.isAttached():
  1858. mouseModule.mouseController.DeattachObject()
  1859.  
  1860. else:
  1861. self.interface.OpenSystemDialog()
  1862.  
  1863. return True
  1864.  
  1865. def OnIMEReturn(self):
  1866. if app.IsPressed(app.DIK_LSHIFT):
  1867. self.interface.OpenWhisperDialogWithoutTarget()
  1868. else:
  1869. self.interface.ToggleChat()
  1870. return True
  1871.  
  1872. def OnPressExitKey(self):
  1873. self.interface.ToggleSystemDialog()
  1874. return True
  1875.  
  1876. ## BINARY CALLBACK
  1877. ######################################################################################
  1878.  
  1879. # WEDDING
  1880. def BINARY_LoverInfo(self, name, lovePoint):
  1881. if self.interface.wndMessenger:
  1882. self.interface.wndMessenger.OnAddLover(name, lovePoint)
  1883. if self.affectShower:
  1884. self.affectShower.SetLoverInfo(name, lovePoint)
  1885.  
  1886. def BINARY_UpdateLovePoint(self, lovePoint):
  1887. if self.interface.wndMessenger:
  1888. self.interface.wndMessenger.OnUpdateLovePoint(lovePoint)
  1889. if self.affectShower:
  1890. self.affectShower.OnUpdateLovePoint(lovePoint)
  1891. # END_OF_WEDDING
  1892.  
  1893. if app.ENABLE_SEND_TARGET_INFO:
  1894. def BINARY_AddTargetMonsterDropInfo(self, raceNum, itemVnum, itemCount):
  1895. if not raceNum in constInfo.MONSTER_INFO_DATA:
  1896. constInfo.MONSTER_INFO_DATA.update({raceNum : {}})
  1897. constInfo.MONSTER_INFO_DATA[raceNum].update({"items" : []})
  1898. curList = constInfo.MONSTER_INFO_DATA[raceNum]["items"]
  1899.  
  1900. isUpgradeable = False
  1901. isMetin = False
  1902. item.SelectItem(itemVnum)
  1903. if item.GetItemType() == item.ITEM_TYPE_WEAPON or item.GetItemType() == item.ITEM_TYPE_ARMOR:
  1904. isUpgradeable = True
  1905. elif item.GetItemType() == item.ITEM_TYPE_METIN:
  1906. isMetin = True
  1907.  
  1908. for curItem in curList:
  1909. if isUpgradeable:
  1910. if curItem.has_key("vnum_list") and curItem["vnum_list"][0] / 10 * 10 == itemVnum / 10 * 10:
  1911. if not (itemVnum in curItem["vnum_list"]):
  1912. curItem["vnum_list"].append(itemVnum)
  1913. return
  1914. elif isMetin:
  1915. if curItem.has_key("vnum_list"):
  1916. baseVnum = curItem["vnum_list"][0]
  1917. if curItem.has_key("vnum_list") and (baseVnum - baseVnum%1000) == (itemVnum - itemVnum%1000):
  1918. if not (itemVnum in curItem["vnum_list"]):
  1919. curItem["vnum_list"].append(itemVnum)
  1920. return
  1921. else:
  1922. if curItem.has_key("vnum") and curItem["vnum"] == itemVnum and curItem["count"] == itemCount:
  1923. return
  1924.  
  1925. if isUpgradeable or isMetin:
  1926. curList.append({"vnum_list":[itemVnum], "count":itemCount})
  1927. else:
  1928. curList.append({"vnum":itemVnum, "count":itemCount})
  1929.  
  1930. def BINARY_RefreshTargetMonsterDropInfo(self, raceNum):
  1931. self.targetBoard.RefreshMonsterInfoBoard()
  1932.  
  1933. # QUEST_CONFIRM
  1934. def BINARY_OnQuestConfirm(self, msg, timeout, pid):
  1935. confirmDialog = uiCommon.QuestionDialogWithTimeLimit()
  1936. confirmDialog.Open(msg, timeout)
  1937. confirmDialog.SetAcceptEvent(lambda answer=True, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
  1938. confirmDialog.SetCancelEvent(lambda answer=False, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
  1939. self.confirmDialog = confirmDialog
  1940. # END_OF_QUEST_CONFIRM
  1941.  
  1942. # GIFT command
  1943. def Gift_Show(self):
  1944. self.interface.ShowGift()
  1945.  
  1946. # CUBE
  1947. def BINARY_Cube_Open(self, npcVNUM):
  1948. self.currentCubeNPC = npcVNUM
  1949.  
  1950. self.interface.OpenCubeWindow()
  1951.  
  1952.  
  1953. if npcVNUM not in self.cubeInformation:
  1954. net.SendChatPacket("/cube r_info")
  1955. else:
  1956. cubeInfoList = self.cubeInformation[npcVNUM]
  1957.  
  1958. i = 0
  1959. for cubeInfo in cubeInfoList:
  1960. self.interface.wndCube.AddCubeResultItem(cubeInfo["vnum"], cubeInfo["count"])
  1961.  
  1962. j = 0
  1963. for materialList in cubeInfo["materialList"]:
  1964. for materialInfo in materialList:
  1965. itemVnum, itemCount = materialInfo
  1966. self.interface.wndCube.AddMaterialInfo(i, j, itemVnum, itemCount)
  1967. j = j + 1
  1968.  
  1969. i = i + 1
  1970.  
  1971. self.interface.wndCube.Refresh()
  1972.  
  1973. def BINARY_Cube_Close(self):
  1974. self.interface.CloseCubeWindow()
  1975.  
  1976. # 제작에 필요한 골드, 예상되는 완성품의 VNUM과 개수 정보 update
  1977. def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
  1978. self.interface.UpdateCubeInfo(gold, itemVnum, count)
  1979.  
  1980. def BINARY_Cube_Succeed(self, itemVnum, count):
  1981. print "큐브 제작 성공"
  1982. self.interface.SucceedCubeWork(itemVnum, count)
  1983. pass
  1984.  
  1985. def BINARY_Cube_Failed(self):
  1986. print "큐브 제작 실패"
  1987. self.interface.FailedCubeWork()
  1988. pass
  1989.  
  1990. def BINARY_Cube_ResultList(self, npcVNUM, listText):
  1991. # ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 이런식으로 "/" 문자로 구분된 리스트를 줌
  1992. #print listText
  1993.  
  1994. if npcVNUM == 0:
  1995. npcVNUM = self.currentCubeNPC
  1996.  
  1997. self.cubeInformation[npcVNUM] = []
  1998.  
  1999. try:
  2000. for eachInfoText in listText.split("/"):
  2001. eachInfo = eachInfoText.split(",")
  2002. itemVnum = int(eachInfo[0])
  2003. itemCount = int(eachInfo[1])
  2004.  
  2005. self.cubeInformation[npcVNUM].append({"vnum": itemVnum, "count": itemCount})
  2006. self.interface.wndCube.AddCubeResultItem(itemVnum, itemCount)
  2007.  
  2008. resultCount = len(self.cubeInformation[npcVNUM])
  2009. requestCount = 7
  2010. modCount = resultCount % requestCount
  2011. splitCount = resultCount / requestCount
  2012. for i in xrange(splitCount):
  2013. #print("/cube r_info %d %d" % (i * requestCount, requestCount))
  2014. net.SendChatPacket("/cube r_info %d %d" % (i * requestCount, requestCount))
  2015.  
  2016. if 0 < modCount:
  2017. #print("/cube r_info %d %d" % (splitCount * requestCount, modCount))
  2018. net.SendChatPacket("/cube r_info %d %d" % (splitCount * requestCount, modCount))
  2019.  
  2020. except RuntimeError, msg:
  2021. dbg.TraceError(msg)
  2022. return 0
  2023.  
  2024. pass
  2025.  
  2026. def BINARY_Cube_MaterialInfo(self, startIndex, listCount, listText):
  2027. # Material Text Format : 125,1|126,2|127,2|123,5&555,5&555,4/120000
  2028. try:
  2029. #print listText
  2030.  
  2031. if 3 > len(listText):
  2032. dbg.TraceError("Wrong Cube Material Infomation")
  2033. return 0
  2034.  
  2035.  
  2036.  
  2037. eachResultList = listText.split("@")
  2038.  
  2039. cubeInfo = self.cubeInformation[self.currentCubeNPC]
  2040.  
  2041. itemIndex = 0
  2042. for eachResultText in eachResultList:
  2043. cubeInfo[startIndex + itemIndex]["materialList"] = [[], [], [], [], []]
  2044. materialList = cubeInfo[startIndex + itemIndex]["materialList"]
  2045.  
  2046. gold = 0
  2047. splitResult = eachResultText.split("/")
  2048. if 1 < len(splitResult):
  2049. gold = int(splitResult[1])
  2050.  
  2051. #print "splitResult : ", splitResult
  2052. eachMaterialList = splitResult[0].split("&")
  2053.  
  2054. i = 0
  2055. for eachMaterialText in eachMaterialList:
  2056. complicatedList = eachMaterialText.split("|")
  2057.  
  2058. if 0 < len(complicatedList):
  2059. for complicatedText in complicatedList:
  2060. (itemVnum, itemCount) = complicatedText.split(",")
  2061. itemVnum = int(itemVnum)
  2062. itemCount = int(itemCount)
  2063. self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount)
  2064.  
  2065. materialList[i].append((itemVnum, itemCount))
  2066.  
  2067. else:
  2068. itemVnum, itemCount = eachMaterialText.split(",")
  2069. itemVnum = int(itemVnum)
  2070. itemCount = int(itemCount)
  2071. self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount)
  2072.  
  2073. materialList[i].append((itemVnum, itemCount))
  2074.  
  2075. i = i + 1
  2076.  
  2077.  
  2078.  
  2079. itemIndex = itemIndex + 1
  2080.  
  2081. self.interface.wndCube.Refresh()
  2082.  
  2083.  
  2084. except RuntimeError, msg:
  2085. dbg.TraceError(msg)
  2086. return 0
  2087.  
  2088. pass
  2089.  
  2090. # END_OF_CUBE
  2091.  
  2092. # def BINARY_Highlight_Item(self, inven_type, inven_pos):
  2093. # self.interface.Highligt_Item(inven_type, inven_pos)
  2094.  
  2095. def BINARY_DragonSoulGiveQuilification(self):
  2096. self.interface.DragonSoulGiveQuilification()
  2097.  
  2098. def BINARY_DragonSoulRefineWindow_Open(self):
  2099. self.interface.OpenDragonSoulRefineWindow()
  2100.  
  2101. def BINARY_DragonSoulRefineWindow_RefineFail(self, reason, inven_type, inven_pos):
  2102. self.interface.FailDragonSoulRefine(reason, inven_type, inven_pos)
  2103.  
  2104. def BINARY_DragonSoulRefineWindow_RefineSucceed(self, inven_type, inven_pos):
  2105. self.interface.SucceedDragonSoulRefine(inven_type, inven_pos)
  2106.  
  2107. # END of DRAGON SOUL REFINE WINDOW
  2108.  
  2109. def BINARY_SetBigMessage(self, message):
  2110. self.interface.bigBoard.SetTip(message)
  2111.  
  2112. def BINARY_SetTipMessage(self, message):
  2113. self.interface.tipBoard.SetTip(message)
  2114.  
  2115. def BINARY_AppendNotifyMessage(self, type):
  2116. if not type in localeInfo.NOTIFY_MESSAGE:
  2117. return
  2118. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.NOTIFY_MESSAGE[type])
  2119.  
  2120. def BINARY_Guild_EnterGuildArea(self, areaID):
  2121. self.interface.BULID_EnterGuildArea(areaID)
  2122.  
  2123. def BINARY_Guild_ExitGuildArea(self, areaID):
  2124. self.interface.BULID_ExitGuildArea(areaID)
  2125.  
  2126. def BINARY_GuildWar_OnSendDeclare(self, guildID):
  2127. pass
  2128.  
  2129. def BINARY_GuildWar_OnRecvDeclare(self, guildID, warType):
  2130. mainCharacterName = player.GetMainCharacterName()
  2131. masterName = guild.GetGuildMasterName()
  2132. if mainCharacterName == masterName:
  2133. self.__GuildWar_OpenAskDialog(guildID, warType)
  2134.  
  2135. def BINARY_GuildWar_OnRecvPoint(self, gainGuildID, opponentGuildID, point):
  2136. self.interface.OnRecvGuildWarPoint(gainGuildID, opponentGuildID, point)
  2137.  
  2138. def BINARY_GuildWar_OnStart(self, guildSelf, guildOpp):
  2139. self.interface.OnStartGuildWar(guildSelf, guildOpp)
  2140.  
  2141. def BINARY_GuildWar_OnEnd(self, guildSelf, guildOpp):
  2142. self.interface.OnEndGuildWar(guildSelf, guildOpp)
  2143.  
  2144. def BINARY_BettingGuildWar_SetObserverMode(self, isEnable):
  2145. self.interface.BINARY_SetObserverMode(isEnable)
  2146.  
  2147. def BINARY_BettingGuildWar_UpdateObserverCount(self, observerCount):
  2148. self.interface.wndMiniMap.UpdateObserverCount(observerCount)
  2149.  
  2150. ###################################################################
  2151. # title_name : Professional Biolog System
  2152. # date_created : 2016.08.07
  2153. # filename : game.py
  2154. # author : VegaS
  2155. # version_actual : Version 0.0.8
  2156. #
  2157. # PROFESSIONAL_BIOLOG_SYSTEM
  2158. if app.ENABLE_BIOLOG_SYSTEM:
  2159. def BINARY_Biolog_Update(self, pLeftTime, pCountActual, pCountNeed, pVnum):
  2160. uiprofessionalbiolog.BIOLOG_BINARY_LOADED["time"][0] = int(pLeftTime) + app.GetGlobalTimeStamp()
  2161. uiprofessionalbiolog.BIOLOG_BINARY_LOADED["countActual"][0] = str(pCountActual)
  2162. uiprofessionalbiolog.BIOLOG_BINARY_LOADED["countNeed"][0] = str(pCountNeed)
  2163. uiprofessionalbiolog.BIOLOG_BINARY_LOADED["vnum"][0] = int(pVnum)
  2164.  
  2165. def BINARY_Biolog_SendMessage(self, pMessage):
  2166. if str(pMessage) != "":
  2167. self.wndBiologMessage = uiCommon.popupdialog()
  2168. self.wndBiologMessage.SetWidth(350)
  2169. self.wndBiologMessage.SetText((str(pMessage).replace("$"," ")))
  2170. self.wndBiologMessage.Show()
  2171. else:
  2172. chat.AppendChat(chat.CHAT_TYPE_INFO, "Error, i could not initialize message from server!")
  2173.  
  2174. def BINARY_Biolog_PopUp(self, iRewardType, iRewardItem, iBonusName_1, iBonusValue_1, iBonusName_2, iBonusValue_2):
  2175. self.wndBiologSlider = uiprofessionalbiolog.Biolog_FinishSlider()
  2176. self.wndBiologSlider.BINARY_BiologPopUp_Load([str(iRewardType), int(iRewardItem), str(iBonusName_1), int(iBonusValue_1), str(iBonusName_2), int(iBonusValue_2)])
  2177. self.wndBiologSlider.Show()
  2178.  
  2179. def BINARY_Biolog_SelectReward(self, iTypeWindow, iRewardType, iBonusName_1, iBonusValue_1, iBonusName_2, iBonusValue_2, iBonusName_3, iBonusValue_3):
  2180. self.wndBiologSelectReward = uiprofessionalbiolog.Biolog_SelectReward()
  2181. self.wndBiologSelectReward.Open_SelectRewardType([int(iTypeWindow), str(iRewardType), str(iBonusName_1), int(iBonusValue_1), str(iBonusName_2), int(iBonusValue_2), str(iBonusName_3), int(iBonusValue_3)])
  2182. self.wndBiologSelectReward.SetTitle((str(iRewardType).replace("$"," ")))
  2183. self.wndBiologSelectReward.SetCenterPosition()
  2184. self.wndBiologSelectReward.SetTop()
  2185. self.wndBiologSelectReward.Show()
  2186. # END_OF_PROFESSIONAL_BIOLOG_SYSTEM
  2187.  
  2188. def __GuildWar_UpdateMemberCount(self, guildID1, memberCount1, guildID2, memberCount2, observerCount):
  2189. guildID1 = int(guildID1)
  2190. guildID2 = int(guildID2)
  2191. memberCount1 = int(memberCount1)
  2192. memberCount2 = int(memberCount2)
  2193. observerCount = int(observerCount)
  2194.  
  2195. self.interface.UpdateMemberCount(guildID1, memberCount1, guildID2, memberCount2)
  2196. self.interface.wndMiniMap.UpdateObserverCount(observerCount)
  2197.  
  2198. def __GuildWar_OpenAskDialog(self, guildID, warType):
  2199.  
  2200. guildName = guild.GetGuildName(guildID)
  2201.  
  2202. # REMOVED_GUILD_BUG_FIX
  2203. if "Noname" == guildName:
  2204. return
  2205. # END_OF_REMOVED_GUILD_BUG_FIX
  2206.  
  2207. import uiGuild
  2208. questionDialog = uiGuild.AcceptGuildWarDialog()
  2209. questionDialog.SAFE_SetAcceptEvent(self.__GuildWar_OnAccept)
  2210. questionDialog.SAFE_SetCancelEvent(self.__GuildWar_OnDecline)
  2211. questionDialog.Open(guildName, warType)
  2212.  
  2213. self.guildWarQuestionDialog = questionDialog
  2214.  
  2215. def __GuildWar_CloseAskDialog(self):
  2216. self.guildWarQuestionDialog.Close()
  2217. self.guildWarQuestionDialog = None
  2218.  
  2219. def __GuildWar_OnAccept(self):
  2220.  
  2221. guildName = self.guildWarQuestionDialog.GetGuildName()
  2222.  
  2223. net.SendChatPacket("/war " + guildName)
  2224. self.__GuildWar_CloseAskDialog()
  2225.  
  2226. return 1
  2227.  
  2228. def __GuildWar_OnDecline(self):
  2229.  
  2230. guildName = self.guildWarQuestionDialog.GetGuildName()
  2231.  
  2232. net.SendChatPacket("/nowar " + guildName)
  2233. self.__GuildWar_CloseAskDialog()
  2234.  
  2235. return 1
  2236. ## BINARY CALLBACK
  2237. ######################################################################################
  2238.  
  2239. def __ServerCommand_Build(self):
  2240. serverCommandList={
  2241. "ConsoleEnable" : self.__Console_Enable,
  2242. "DayMode" : self.__DayMode_Update,
  2243. "PRESERVE_DayMode" : self.__PRESERVE_DayMode_Update,
  2244. "CloseRestartWindow" : self.__RestartDialog_Close,
  2245. "OpenPrivateShop" : self.__PrivateShop_Open,
  2246. "PartyHealReady" : self.PartyHealReady,
  2247. "ShowMeSafeboxPassword" : self.AskSafeboxPassword,
  2248. "CloseSafebox" : self.CommandCloseSafebox,
  2249. ##NEW SHOP
  2250. "shop" :self.NewShop,
  2251. "shop_clear" :self.ShopClear,
  2252. "shop_add" :self.ShopAdd,
  2253. "shop_item" :self.ShopItem,
  2254. "shop_cost" :self.ShopCost,
  2255. "shop_cost_clear" :self.ShopCostClear,
  2256. "shop_item_clear" :self.ShopItemClear,
  2257.  
  2258. #####GIFT SYSTEM
  2259. "gift_clear" :self.gift_clear,
  2260. "gift_item" :self.gift_item,
  2261. "gift_info" :self.gift_show,
  2262. "gift_load" :self.gift_load,
  2263. ###
  2264. # ITEM_MALL
  2265. "CloseMall" : self.CommandCloseMall,
  2266. "ShowMeMallPassword" : self.AskMallPassword,
  2267. "item_mall" : self.__ItemMall_Open,
  2268. # END_OF_ITEM_MALL
  2269.  
  2270. #Buton Teleport
  2271. "Telep" : self.__MakeTelep,
  2272. "antiexp" : self.__antiexp,
  2273.  
  2274. ## MYSTERY BOX
  2275. "TMysteryBoxItems" : self.RewardMysteryBox,
  2276. "RewardMysteryBox" : self.RewardRefreshMB,
  2277. "MysteryBoxPrice" : self.MysteryBoxYang,
  2278. "OpenMysteryBox" : self.interface.WindowMysteryBox,
  2279. "RefreshPrizes" : self.interface.RefreshMysteryBox,
  2280. "CloseMysteryBox" : self.interface.CloseMysteryBox,
  2281. ## MYSTERY BOX
  2282.  
  2283. "RefineSuceeded" : self.RefineSuceededMessage,
  2284. "RefineFailed" : self.RefineFailedMessage,
  2285. "xmas_snow" : self.__XMasSnow_Enable,
  2286. "xmas_boom" : self.__XMasBoom_Enable,
  2287. "xmas_song" : self.__XMasSong_Enable,
  2288. "xmas_tree" : self.__XMasTree_Enable,
  2289. "newyear_boom" : self.__XMasBoom_Enable,
  2290. "PartyRequest" : self.__PartyRequestQuestion,
  2291. "PartyRequestDenied" : self.__PartyRequestDenied,
  2292. "horse_state" : self.__Horse_UpdateState,
  2293. "hide_horse_state" : self.__Horse_HideState,
  2294. "WarUC" : self.__GuildWar_UpdateMemberCount,
  2295. "test_server" : self.__EnableTestServerFlag,
  2296. "mall" : self.__InGameShop_Show,
  2297.  
  2298. # PROFESSIONAL_BIOLOG_SYSTEM
  2299. "BINARY_Biolog_Update" : self.BINARY_Biolog_Update,
  2300. "BINARY_Biolog_SendMessage" : self.BINARY_Biolog_SendMessage,
  2301. "BINARY_Biolog_PopUp" : self.BINARY_Biolog_PopUp,
  2302. "BINARY_Biolog_SelectReward" : self.BINARY_Biolog_SelectReward,
  2303. # END_OF_PROFESSIONAL_BIOLOG_SYSTEM
  2304.  
  2305. "getinputbegin" : self.__Input_Get_Vegas_1,
  2306. "getinputend" : self.__Input_Get_Vegas_2,
  2307. "getinput" : self.__Input_Get_Vegas_3,
  2308. "SELECT_JOB" : self.SelectJob,
  2309.  
  2310. "OpenCBGui" : self.OpenBlockChatGui,
  2311. "OpenCBGui1" : self.OpenBlockChatGui1,
  2312. "OpenCBGui2" : self.OpenBlockChatGui2,
  2313. "OpenCBGui3" : self.OpenBlockChatGui3,
  2314. "OpenCBGui4" : self.OpenBlockChatGui4,
  2315.  
  2316. "OpenTriviaPanel" : self.__OpenTriviaPanel,
  2317. "BossTracking" : self.GetBossTrackingInformation,
  2318. "BossTrackingUpdatePacket" : self.BossTrackingUpdate,
  2319.  
  2320. # WEDDING
  2321. "lover_login" : self.__LoginLover,
  2322. "lover_logout" : self.__LogoutLover,
  2323. "lover_near" : self.__LoverNear,
  2324. "lover_far" : self.__LoverFar,
  2325. "lover_divorce" : self.__LoverDivorce,
  2326. "PlayMusic" : self.__PlayMusic,
  2327. # END_OF_WEDDING
  2328.  
  2329. "eveniment_litere" :self.send_status,
  2330. "letters_drop" :self.SDropLitere,
  2331. "OpenLetterWindow" :self.interface.ShowBoardEvent,
  2332.  
  2333. "searched_item" : self.SitemFinder,
  2334. "searched_item_count" : self.SitemFinderCounter,
  2335.  
  2336. "SetCurentMount" : self.SetCurentMount,
  2337. "SetMountName" : self.SetMountName,
  2338.  
  2339. # PRIVATE_SHOP_PRICE_LIST
  2340. "MyShopPriceList" : self.__PrivateShop_PriceList,
  2341. # END_OF_PRIVATE_SHOP_PRICE_LIST
  2342.  
  2343. "il": self.__ItemLottery,
  2344. "DiceDone" : self.__DiceHasDone,
  2345. "Muiecharmeine" : self.Muiecharmeine,
  2346. "SugiBaek" : self.MuieBaek,
  2347. "GambleOn" : self.GambleOn,
  2348. "Carte" : self.Carte,
  2349. }
  2350.  
  2351. serverCommandList["OpenShopSearch"]=self.PrivateShopSearch.Show
  2352. serverCommandList["CloseShopSearch"]=self.PrivateShopSearch.CloseByItem
  2353. serverCommandList["GetSearchedItemData"]=self.PrivateShopSearch.LoadItems
  2354. serverCommandList["CreateSearchedItemList"]=self.PrivateShopSearch.CreateListUI
  2355. serverCommandList["RemoveItemFromList"]=self.PrivateShopSearch.RemoveItemFromList
  2356. serverCommandList["RemoveItemsFromList"]=self.PrivateShopSearch.RemoveItemsFromList
  2357. serverCommandList["ShopResearchItem"]=self.PrivateShopSearch.ReSearchItem
  2358.  
  2359. if app.DUNGEON_LIST_TIME:
  2360. serverCommandList.update({"SetQuestTimer" : self.SetQuestTimer,})
  2361. serverCommandList.update({"refreshDungeonStatus" : self.__RefreshDungStatus,})
  2362. serverCommandList["BINARY_DungeonList_Open"]=self.OpenTimerWindow
  2363.  
  2364. if app.ENABLE_WHISPER_ADMIN_SYSTEM:
  2365. serverCommandList["OnRecvWhisperAdminSystem"] = self.OnRecvWhisperAdminSystem
  2366.  
  2367. self.serverCommander=stringCommander.Analyzer()
  2368. for serverCommandItem in serverCommandList.items():
  2369. self.serverCommander.SAFE_RegisterCallBack(
  2370. serverCommandItem[0], serverCommandItem[1]
  2371. )
  2372.  
  2373. def __MakeTelep(self, qid):
  2374. constInfo.Telepqin= int(qid)
  2375.  
  2376. def __antiexp(self, qid):
  2377. constInfo.antiexp= int(qid)
  2378.  
  2379. if app.ENABLE_CUBE_RENEWAL_WORLDARD:
  2380. def BINARY_CUBE_RENEWAL_OPEN(self):
  2381. if self.interface:
  2382. self.interface.BINARY_CUBE_RENEWAL_OPEN()
  2383.  
  2384. def BINARY_ServerCommand_Run(self, line):
  2385. try:
  2386. return self.serverCommander.Run(line)
  2387. except RuntimeError, msg:
  2388. dbg.TraceError(msg)
  2389. return 0
  2390.  
  2391. def __ProcessPreservedServerCommand(self):
  2392. try:
  2393. command = net.GetPreservedServerCommand()
  2394. while command:
  2395. print " __ProcessPreservedServerCommand", command
  2396. self.serverCommander.Run(command)
  2397. command = net.GetPreservedServerCommand()
  2398. except RuntimeError, msg:
  2399. dbg.TraceError(msg)
  2400. return 0
  2401.  
  2402. def PartyHealReady(self):
  2403. self.interface.PartyHealReady()
  2404.  
  2405. def AskSafeboxPassword(self):
  2406. self.interface.AskSafeboxPassword()
  2407.  
  2408. # ITEM_MALL
  2409. def AskMallPassword(self):
  2410. self.interface.AskMallPassword()
  2411.  
  2412. def __ItemMall_Open(self):
  2413. self.interface.OpenItemMall();
  2414.  
  2415. def CommandCloseMall(self):
  2416. self.interface.CommandCloseMall()
  2417. # END_OF_ITEM_MALL
  2418.  
  2419. def RefineSuceededMessage(self):
  2420. snd.PlaySound("sound/ui/make_soket.wav")
  2421. self.PopupMessage(localeInfo.REFINE_SUCCESS)
  2422.  
  2423. def RefineFailedMessage(self):
  2424. snd.PlaySound("sound/ui/jaeryun_fail.wav")
  2425. self.PopupMessage(localeInfo.REFINE_FAILURE)
  2426.  
  2427. def CommandCloseSafebox(self):
  2428. self.interface.CommandCloseSafebox()
  2429.  
  2430. # PRIVATE_SHOP_PRICE_LIST
  2431. def __PrivateShop_PriceList(self, itemVNum, itemPrice):
  2432. uiPrivateShopBuilder.SetPrivateShopItemPrice(itemVNum, itemPrice)
  2433. # END_OF_PRIVATE_SHOP_PRICE_LIST
  2434.  
  2435. def __Horse_HideState(self):
  2436. self.affectShower.SetHorseState(0, 0, 0)
  2437.  
  2438. def __Horse_UpdateState(self, level, health, battery):
  2439. self.affectShower.SetHorseState(int(level), int(health), int(battery))
  2440.  
  2441. def Muiecharmeine(self, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15):
  2442. self.pacanele.Update(int(arg1), int(arg2), int(arg3), int(arg4), int(arg5), int(arg6), int(arg7), int(arg8), int(arg9), int(arg10), int(arg11), int(arg12), int(arg13), int(arg14), int(arg15))
  2443.  
  2444. def MuieBaek(self, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15):
  2445. self.pacanele.Visual(int(arg1), int(arg2), int(arg3), int(arg4), int(arg5), int(arg6), int(arg7), int(arg8), int(arg9), int(arg10), int(arg11), int(arg12), int(arg13), int(arg14), int(arg15))
  2446.  
  2447. def GambleOn(self, arg1, arg2):
  2448. self.pacanele.Collect(int(arg1), int(arg2))
  2449. constInfo.Pacaneazz = int(arg1)
  2450.  
  2451. def Carte(self, arg1, arg2, arg3):
  2452. self.pacanele.CartePrimita(int(arg1), int(arg2), int(arg3))
  2453.  
  2454. def ShowPacenele(self):
  2455. self.pacanele.Show()
  2456.  
  2457. def __IsXMasMap(self):
  2458. mapDict = ( "metin2_map_n_flame_01",
  2459. "metin2_map_n_desert_01",
  2460. "metin2_map_spiderdungeon",
  2461. "metin2_map_deviltower1", )
  2462.  
  2463. if background.GetCurrentMapName() in mapDict:
  2464. return False
  2465.  
  2466. return True
  2467.  
  2468. def __XMasSnow_Enable(self, mode):
  2469.  
  2470. self.__XMasSong_Enable(mode)
  2471.  
  2472. if "1"==mode:
  2473.  
  2474. if not self.__IsXMasMap():
  2475. return
  2476.  
  2477. print "XMAS_SNOW ON"
  2478. background.EnableSnow(1)
  2479.  
  2480. else:
  2481. print "XMAS_SNOW OFF"
  2482. background.EnableSnow(0)
  2483.  
  2484. def __XMasBoom_Enable(self, mode):
  2485. if "1"==mode:
  2486.  
  2487. if not self.__IsXMasMap():
  2488. return
  2489.  
  2490. print "XMAS_BOOM ON"
  2491. self.__DayMode_Update("dark")
  2492. self.enableXMasBoom = True
  2493. self.startTimeXMasBoom = app.GetTime()
  2494. else:
  2495. print "XMAS_BOOM OFF"
  2496. self.__DayMode_Update("light")
  2497. self.enableXMasBoom = False
  2498.  
  2499. def __XMasTree_Enable(self, grade):
  2500.  
  2501. print "XMAS_TREE ", grade
  2502. background.SetXMasTree(int(grade))
  2503.  
  2504. def __XMasSong_Enable(self, mode):
  2505. if "1"==mode:
  2506. print "XMAS_SONG ON"
  2507.  
  2508. XMAS_BGM = "xmas.mp3"
  2509.  
  2510. if app.IsExistFile("BGM/" + XMAS_BGM)==1:
  2511. if musicInfo.fieldMusic != "":
  2512. snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)
  2513.  
  2514. musicInfo.fieldMusic=XMAS_BGM
  2515. snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
  2516.  
  2517. else:
  2518. print "XMAS_SONG OFF"
  2519.  
  2520. if musicInfo.fieldMusic != "":
  2521. snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)
  2522.  
  2523. musicInfo.fieldMusic=musicInfo.METIN2THEMA
  2524. snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
  2525.  
  2526. def __RestartDialog_Close(self):
  2527. self.interface.CloseRestartDialog()
  2528.  
  2529. def __Console_Enable(self):
  2530. constInfo.CONSOLE_ENABLE = True
  2531. self.consoleEnable = True
  2532. app.EnableSpecialCameraMode()
  2533. ui.EnablePaste(True)
  2534.  
  2535. ## PrivateShop
  2536. def __PrivateShop_Open(self):
  2537. #self.interface.OpenPrivateShopInputNameDialog()
  2538. self.uiNewShop.Show()
  2539.  
  2540. def BINARY_PrivateShop_Appear(self, vid, text):
  2541. if chr.GetInstanceType(vid) in [chr.INSTANCE_TYPE_PLAYER, chr.INSTANCE_TYPE_NPC]:
  2542. self.interface.AppearPrivateShop(vid, text)
  2543.  
  2544. def BINARY_PrivateShop_Disappear(self, vid):
  2545. self.interface.DisappearPrivateShop(vid)
  2546.  
  2547. ## DayMode
  2548. def __PRESERVE_DayMode_Update(self, mode):
  2549. if "light"==mode:
  2550. background.SetEnvironmentData(0)
  2551. elif "dark"==mode:
  2552.  
  2553. if not self.__IsXMasMap():
  2554. return
  2555.  
  2556. background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
  2557. background.SetEnvironmentData(1)
  2558.  
  2559. def __DayMode_Update(self, mode):
  2560. if "light"==mode:
  2561. self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToLight)
  2562. elif "dark"==mode:
  2563.  
  2564. if not self.__IsXMasMap():
  2565. return
  2566.  
  2567. self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToDark)
  2568.  
  2569. def __DayMode_OnCompleteChangeToLight(self):
  2570. background.SetEnvironmentData(0)
  2571. self.curtain.FadeIn()
  2572.  
  2573. def __DayMode_OnCompleteChangeToDark(self):
  2574. background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
  2575. background.SetEnvironmentData(1)
  2576. self.curtain.FadeIn()
  2577.  
  2578. ## XMasBoom
  2579. def __XMasBoom_Update(self):
  2580.  
  2581. self.BOOM_DATA_LIST = ( (2, 5), (5, 2), (7, 3), (10, 3), (20, 5) )
  2582. if self.indexXMasBoom >= len(self.BOOM_DATA_LIST):
  2583. return
  2584.  
  2585. boomTime = self.BOOM_DATA_LIST[self.indexXMasBoom][0]
  2586. boomCount = self.BOOM_DATA_LIST[self.indexXMasBoom][1]
  2587.  
  2588. if app.GetTime() - self.startTimeXMasBoom > boomTime:
  2589.  
  2590. self.indexXMasBoom += 1
  2591.  
  2592. for i in xrange(boomCount):
  2593. self.__XMasBoom_Boom()
  2594.  
  2595. def __XMasBoom_Boom(self):
  2596. x, y, z = player.GetMainCharacterPosition()
  2597. randX = app.GetRandom(-150, 150)
  2598. randY = app.GetRandom(-150, 150)
  2599.  
  2600. snd.PlaySound3D(x+randX, -y+randY, z, "sound/common/etc/salute.mp3")
  2601.  
  2602. def __PartyRequestQuestion(self, vid):
  2603. vid = int(vid)
  2604. partyRequestQuestionDialog = uiCommon.QuestionDialog()
  2605. partyRequestQuestionDialog.SetText(chr.GetNameByVID(vid) + localeInfo.PARTY_DO_YOU_ACCEPT)
  2606. partyRequestQuestionDialog.SetAcceptText(localeInfo.UI_ACCEPT)
  2607. partyRequestQuestionDialog.SetCancelText(localeInfo.UI_DENY)
  2608. partyRequestQuestionDialog.SetAcceptEvent(lambda arg=True: self.__AnswerPartyRequest(arg))
  2609. partyRequestQuestionDialog.SetCancelEvent(lambda arg=False: self.__AnswerPartyRequest(arg))
  2610. partyRequestQuestionDialog.Open()
  2611. partyRequestQuestionDialog.vid = vid
  2612. self.partyRequestQuestionDialog = partyRequestQuestionDialog
  2613.  
  2614. def __AnswerPartyRequest(self, answer):
  2615. if not self.partyRequestQuestionDialog:
  2616. return
  2617.  
  2618. vid = self.partyRequestQuestionDialog.vid
  2619.  
  2620. if answer:
  2621. net.SendChatPacket("/party_request_accept " + str(vid))
  2622. else:
  2623. net.SendChatPacket("/party_request_deny " + str(vid))
  2624.  
  2625. self.partyRequestQuestionDialog.Close()
  2626. self.partyRequestQuestionDialog = None
  2627.  
  2628. def __PartyRequestDenied(self):
  2629. self.PopupMessage(localeInfo.PARTY_REQUEST_DENIED)
  2630.  
  2631. def __EnableTestServerFlag(self):
  2632. app.EnableTestServerFlag()
  2633.  
  2634. def __InGameShop_Show(self, url):
  2635. if constInfo.IN_GAME_SHOP_ENABLE:
  2636. self.interface.OpenWebWindow(url)
  2637.  
  2638. # WEDDING
  2639. def __LoginLover(self):
  2640. if self.interface.wndMessenger:
  2641. self.interface.wndMessenger.OnLoginLover()
  2642.  
  2643. def __LogoutLover(self):
  2644. if self.interface.wndMessenger:
  2645. self.interface.wndMessenger.OnLogoutLover()
  2646. if self.affectShower:
  2647. self.affectShower.HideLoverState()
  2648.  
  2649. def __LoverNear(self):
  2650. if self.affectShower:
  2651. self.affectShower.ShowLoverState()
  2652.  
  2653. if app.ENABLE_WHISPER_ADMIN_SYSTEM:
  2654. def OpenWhisperSystem(self):
  2655. if self.adminWhisperManager.IsShow():
  2656. self.adminWhisperManager.Hide()
  2657. else:
  2658. self.adminWhisperManager.Show()
  2659.  
  2660. def __LoverFar(self):
  2661. if self.affectShower:
  2662. self.affectShower.HideLoverState()
  2663.  
  2664. def __LoverDivorce(self):
  2665. if self.interface.wndMessenger:
  2666. self.interface.wndMessenger.ClearLoverInfo()
  2667. if self.affectShower:
  2668. self.affectShower.ClearLoverState()
  2669.  
  2670. def __PlayMusic(self, flag, filename):
  2671. flag = int(flag)
  2672. if flag:
  2673. snd.FadeOutAllMusic()
  2674. musicInfo.SaveLastPlayFieldMusic()
  2675. snd.FadeInMusic("BGM/" + filename)
  2676. else:
  2677. snd.FadeOutAllMusic()
  2678. musicInfo.LoadLastPlayFieldMusic()
  2679. snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
  2680.  
  2681. if app.ENABLE_SASH_SYSTEM:
  2682. def ActSash(self, iAct, bWindow):
  2683. if self.interface:
  2684. self.interface.ActSash(iAct, bWindow)
  2685.  
  2686. def AlertSash(self, bWindow):
  2687. snd.PlaySound("sound/ui/make_soket.wav")
  2688. if bWindow:
  2689. self.PopupMessage(localeInfo.SASH_DEL_SERVEITEM)
  2690. else:
  2691. self.PopupMessage(localeInfo.SASH_DEL_ABSORDITEM)
  2692.  
  2693. if app.ENABLE_CHANGELOOK_SYSTEM:
  2694. def ActChangeLook(self, iAct):
  2695. if self.interface:
  2696. self.interface.ActChangeLook(iAct)
  2697.  
  2698. def AlertChangeLook(self):
  2699. self.PopupMessage(localeInfo.CHANGE_LOOK_DEL_ITEM)
  2700.  
  2701. # END_OF_WEDDING
  2702. def NewShop(self):
  2703. if self.uiNewShop:
  2704. self.uiNewShop.Show()
  2705.  
  2706. def ShopClear(self):
  2707. if self.uiNewShop:
  2708. self.uiNewShop.HideAll()
  2709. constInfo.MyShops=[]
  2710. def ShopCostClear(self):
  2711. constInfo.shop_cost=[]
  2712. def ShopCost(self,id,time,time_val,price):
  2713. constInfo.shop_cost.append({"id":int(id),"time":int(time),"time_val":int(time_val),"price":int(price)})
  2714. def ShopAdd(self,shop_id,shop_vid,szSign,gold,count,sold,days,date_close):
  2715. if self.uiNewShop:
  2716. shop={
  2717. "id":shop_id,
  2718. "vid":shop_vid,
  2719. "name":szSign.replace("\\"," ").replace("_","#"),
  2720. "gold":gold,
  2721. "sold":sold,
  2722. "items":int(count)-int(sold),
  2723. "days":days,
  2724. "time":date_close
  2725. }
  2726. self.uiNewShop.Load(shop)
  2727. constInfo.MyShops.append(shop)
  2728. def ShopItemClear(self):
  2729. if self.uiNewShop:
  2730. self.uiNewShop.ClearItems()
  2731. def ShopItem(self,data):
  2732. d=data.split("#")
  2733. c = counter()
  2734. id=d[0]
  2735. vnum=d[1]
  2736. count=d[2]
  2737. slot=d[3]
  2738. price=d[4]
  2739. s=d[5]
  2740. a=d[6]
  2741. sockets=[]
  2742. for key in s.split("|"):
  2743. sockets.append(int(key))
  2744.  
  2745. attrs=[]
  2746. for key in a.split("|"):
  2747. a=key.split(",")
  2748. attrs.append([int(a[1]),int(a[0])])
  2749. if self.uiNewShop:
  2750. self.uiNewShop.AddItem(slot,{"id":id,"vnum":vnum,"count":count,"price":price,"sockets":sockets,"attrs":attrs})
  2751.  
  2752. ####GIFT SYSTEM#####
  2753. def gift_clear(self):
  2754. constInfo.gift_items={}
  2755. self.interface.ClearGift()
  2756. def gift_item(self, id, vnum, count, pos, date_add, give, reason, szSockets, szAttrs):
  2757. c = counter()
  2758. sockets=[]
  2759. for key in szSockets.split("|"):
  2760. sockets.append(int(key))
  2761.  
  2762. attrs=[]
  2763. for key in szAttrs.split("|"):
  2764. a=key.split(",")
  2765. attrs.append([int(a[0]),int(a[1])])
  2766. constInfo.gift_items[int(pos)]={"id":int(id),"vnum":int(vnum),"count":int(count),"pos":int(pos),"date_add":int(date_add),"reason":reason.replace("_"," "),"give":give.replace("_"," "),"sockets":sockets,"attrs":attrs}
  2767. def gift_load(self):
  2768. self.interface.wndGiftBox.Refresh()
  2769. def gift_show(self,pages):
  2770. self.interface.wndGiftBox.pageNum=int(pages)
  2771. self.interface.OpenGift()
  2772.  
  2773. def OpenBlockChatGui(self):
  2774. self.blockchatgui.OpenWindow()
  2775.  
  2776. def OpenBlockChatGui1(self):
  2777. self.blockchatgui1.OpenWindow()
  2778.  
  2779. def OpenBlockChatGui2(self):
  2780. self.blockchatgui2.OpenWindow()
  2781.  
  2782. def OpenBlockChatGui3(self):
  2783. self.blockchatgui3.OpenWindow()
  2784.  
  2785. def OpenBlockChatGui4(self):
  2786. self.blockchatgui4.OpenWindow()
  2787.  
  2788. def SetCurentMount(self, mount):
  2789. constInfo.CURRENT_MOUNT = int(mount)
  2790. self.mount.SetMountImage()
  2791.  
  2792. def SetMountName(self, name):
  2793. constInfo.CURRENT_MOUNT_NAME = str(name)
  2794. self.mount.SetMountImage()
  2795.  
  2796. def __OpenSearchShop(self):
  2797. print "click_open_search"
  2798. net.SendChatPacket("/open_search")
  2799.  
  2800. if app.ENABLE_SHOW_CHEST_DROP:
  2801. def BINARY_AddChestDropInfo(self, chestVnum, pageIndex, slotIndex, itemVnum, itemCount):
  2802. if self.interface:
  2803. self.interface.AddChestDropInfo(chestVnum, pageIndex, slotIndex, itemVnum, itemCount)
  2804.  
  2805. def BINARY_RefreshChestDropInfo(self, chestVnum):
  2806. if self.interface:
  2807. self.interface.RefreshChestDropInfo(chestVnum)
  2808.  
  2809. if app.DUNGEON_LIST_TIME:
  2810. def OpenTimerWindow(self):
  2811. self.interface.OpenTimerWindow()
  2812.  
  2813. def SetQuestTimer(self, index, time):
  2814. self.interface.SetQuestTimer(int(index), int(time))
  2815.  
  2816. def __RefreshDungStatus(self):
  2817. self.interface.refreshDungeonStatus()
  2818.  
  2819. def __SetRestartLauncher(self):
  2820. if chr.IsGameMaster(player.GetMainCharacterIndex()):
  2821. os.startfile("bin_metin2_live.exe")
  2822. app.Exit()
  2823.  
  2824. if app.ENABLE_MOVE_CHANNEL:
  2825. def __GetServerID(self):
  2826. serverID = 1
  2827. for i in serverInfo.REGION_DICT[0].keys():
  2828. if serverInfo.REGION_DICT[0][i]["name"] == net.GetServerInfo().split(",")[0]:
  2829. serverID = int(i)
  2830. break
  2831.  
  2832. return serverID
  2833.  
  2834. def RefreshChannel(self, channel):
  2835. channelName = ""
  2836. serverName = serverInfo.REGION_DICT[0][self.__GetServerID()]["name"]
  2837. if channel in serverInfo.REGION_DICT[0][self.__GetServerID()]["channel"]:
  2838. channelName = serverInfo.REGION_DICT[0][self.__GetServerID()]["channel"][int(channel)]["name"]
  2839. elif channel == 99:
  2840. channelName = "CH General"
  2841. else:
  2842. channelName = "CH Necunoscut"
  2843.  
  2844. net.SetServerInfo("%s, %s" % (serverName,channelName))
  2845. if self.interface:
  2846. self.interface.wndMiniMap.serverInfo.SetText(net.GetServerInfo())
  2847.  
  2848. if app.ENABLE_SWITCHBOT:
  2849. def RefreshSwitchbotWindow(self):
  2850. self.interface.RefreshSwitchbotWindow()
  2851.  
  2852. def RefreshSwitchbotItem(self, slot):
  2853. self.interface.RefreshSwitchbotItem(slot)
  2854.  
  2855. def RewardMysteryBox(self, item_vnum, item_count, index, size):
  2856. constInfo.vnum_mystery[int(index)]={"iVnum":int(item_vnum), "iCount":int(item_count), "i":int(index)}
  2857. constInfo.size_mystery = int(size)
  2858.  
  2859. def RewardRefreshMB(self, itemVnum):
  2860. constInfo.MysteryBoxVnum = int(itemVnum)
  2861.  
  2862. def MysteryBoxYang(self, price):
  2863. constInfo.MysteryBoxPrice = int(price)
  2864.  
  2865. if app.ENABLE_GEM_SYSTEM:
  2866. def OpenGemShop(self):
  2867. if self.interface:
  2868. self.interface.OpenGemShop()
  2869.  
  2870. def CloseGemShop(self):
  2871. if self.interface:
  2872. self.interface.CloseGemShop()
  2873.  
  2874. def RefreshGemShop(self):
  2875. if self.interface:
  2876. self.interface.RefreshGemShop()
  2877.  
  2878. def __Input_Get_Vegas_1(self):
  2879. constInfo.INPUT_IGNORE = 1
  2880.  
  2881. def __Input_Get_Vegas_2(self):
  2882. constInfo.INPUT_IGNORE = 0
  2883.  
  2884. def __Input_Get_Vegas_3(self):
  2885. net.SendQuestInputStringPacket("1")
  2886.  
  2887. def SelectJob(self, cmd):
  2888. import uiselectjob
  2889. cmd = cmd.split('#')
  2890. if cmd[0] == 'QID':
  2891. constInfo.SelectJob['QID'] = int(cmd[1])
  2892. elif cmd[0] == 'INPUT':
  2893. constInfo.INPUT_IGNORE = int(cmd[1])
  2894. elif cmd[0] == 'SEND':
  2895. net.SendQuestInputStringPacket(str(constInfo.SelectJob['QCMD']))
  2896. constInfo.SelectJob['QCMD'] = ''
  2897. elif cmd[0] == 'OPEN':
  2898. self.job_select = uiselectjob.JobSelectWindow()
  2899. self.job_select.Open()
  2900. elif cmd[0] == 'CLOSE':
  2901. self.job_select = uiselectjob.JobSelectWindow()
  2902. self.job_select.RealClose()
  2903.  
  2904. def GetInputStart(self):
  2905. constInfo.INPUT_IGNORE = 1
  2906.  
  2907. def GetInputStop(self):
  2908. constInfo.INPUT_IGNORE = 0
  2909.  
  2910. if app.ENABLE_BATTLE_PASS:
  2911. def BINARY_BattlePassOpen(self):
  2912. if self.interface:
  2913. self.interface.OpenBattlePass()
  2914.  
  2915. def BINARY_BattlePassAddMission(self, missionType, missionInfo1, missionInfo2, missionInfo3):
  2916. if self.interface:
  2917. self.interface.AddBattlePassMission(missionType, missionInfo1, missionInfo2, missionInfo3)
  2918.  
  2919. def BINARY_BattlePassAddMissionReward(self, missionType, itemVnum, itemCount):
  2920. if self.interface:
  2921. self.interface.AddBattlePassMissionReward(missionType, itemVnum, itemCount)
  2922.  
  2923. def BINARY_BattlePassUpdate(self, missionType, newProgress):
  2924. if self.interface:
  2925. self.interface.UpdateBattlePassMission(missionType, newProgress)
  2926.  
  2927. def BINARY_BattlePassAddReward(self, itemVnum, itemCount):
  2928. if self.interface:
  2929. self.interface.AddBattlePassReward(itemVnum, itemCount)
  2930.  
  2931. def BINARY_BattlePassAddRanking(self, pos, playerName, finishTime):
  2932. if self.interface:
  2933. self.interface.AddBattlePassRanking(pos, playerName, finishTime)
  2934.  
  2935. def BINARY_BattlePassRefreshRanking(self):
  2936. if self.interface:
  2937. self.interface.RefreshBattlePassRanking()
  2938.  
  2939. def BINARY_BattlePassOpenRanking(self):
  2940. if self.interface:
  2941. self.interface.OpenBattlePassRanking()
  2942.  
  2943. def SitemFinder(self, i, item, mob, i_vnum, count, prob, actives, mob_vnum):
  2944. mob = str(mob).replace("_", " ")
  2945. item = str(item).replace("_", " ")
  2946. self.interface.AppendInfoFinder(int(i), str(mob), int(prob), int(actives), int(i_vnum), int(count), str(item))
  2947. constInfo.finder_items[int(i)]={"iMobVnum":mob_vnum}
  2948.  
  2949. def SitemFinderCounter(self, count):
  2950. constInfo.finder_counts = int(count)
  2951.  
  2952. def __ItemLottery(self, data):
  2953. constInfo.wndItemLottery.Prepare(data)
  2954.  
  2955. def __OpenTriviaPanel(self):
  2956. if chr.IsGameMaster(player.GetMainCharacterIndex()):
  2957. self.triviapanel.OpenWindow()
  2958.  
  2959. if app.ENABLE_FISH_EVENT:
  2960. def MiniGameFishEvent(self, isEnable, lasUseCount):
  2961. if self.interface:
  2962. self.interface.SetFishEventStatus(isEnable)
  2963. self.interface.MiniGameFishCount(lasUseCount)
  2964. self.interface.IntegrationEventBanner()
  2965.  
  2966. def MiniGameFishUse(self, shape, useCount):
  2967. self.interface.MiniGameFishUse(shape, useCount)
  2968.  
  2969. def MiniGameFishAdd(self, pos, shape):
  2970. self.interface.MiniGameFishAdd(pos, shape)
  2971.  
  2972. def MiniGameFishReward(self, vnum):
  2973. self.interface.MiniGameFishReward(vnum)
  2974.  
  2975. def SDropLitere(self, item_vnum, item_count, index, size):
  2976. constInfo.drop_letters[int(index)]={"iVnum":int(item_vnum),"iCount":int(item_count)}
  2977. constInfo.vnums_letters = int(size)
  2978.  
  2979. def send_status(self, status):
  2980. constInfo.E_LITERE_STATUS = int(status)
  2981.  
  2982. # Pagina bonusuri
  2983. def __BonusPage(self):
  2984. import PaginaBonusuri
  2985. global BPisLoaded
  2986. try:
  2987. if BPisLoaded != 1:
  2988. exec 'PaginaBonusuri.BonusBoardDialog().Show()'
  2989. else:
  2990. pass
  2991. except ImportError:
  2992. import dbg,app
  2993. dbg.Trace('PaginaBonusuri.py Importing error')
  2994. app.Abort()
  2995. # Pagina bonusuri, sfarsit
  2996.  
Advertisement
Add Comment
Please, Sign In to add comment