trus7

game.py

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