Guest User

Game.PY

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