Advertisement
Guest User

Untitled

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