xBBBay
-
Posts
15 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by xBBBay
-
-
1010 08:38:21522 :: File "uiMiniMap.py", line 138, in OnUpdate 1010 08:38:21523 :: NameError 1010 08:38:21523 :: : 1010 08:38:21523 :: global name 'bgk' is not defined 1010 08:38:21523 ::
def OnUpdate(self): import time,app global bgk nRenderFPS=app.GetRenderFPS() fps="FPS:%3d"%(nRenderFPS) gc=time.strftime("%d") aycek=time.strftime("%B") yilx=time.strftime("%Y") gun=time.strftime("%A") b=" " ti=" - " yazifps="FPS:" st=time.strftime("%H:%M:%S") text="Jakosc: " if bgk<=30 and bgk>0:kl="Doskonala!" elif bgk<=50 and bgk>35:kl="Dobra" elif bgk<= 100 and bgk>50:kl="Srednia" elif bgk>= 100:kl="Zla" bagla=b+gc+b+aycek+b+yilx+b+gun+b+st+ti+text+kl+ti+fps self.reonasobject.SetText(bagla) self.reonasobject.Show()
-
Open your system.py, then search:
def __pack_import(name,globals=None,locals=None,fromlist=None):
and write one more argument for this function, for example:
def __pack_import(name,globals=None,locals=None,fromlist=None, arg5 = None):
-
Hi, I have a problem but limit yang removed when buy something, I might add yang yang is set to 0 only visually but in the database, the logoff is so much less what I bought some item. How do I fix this?
Before buy:
After purchasing (item cost 30kk):
After logoff
Ty for helping.
-
Use unsigned long long.
-
-
When setgold 2kkk is good, when and 300-400kk set 0yang.
- first column 5555555...
-
when compiling error:
virtual long long GetStatus(DWORD dwType) = 0;
//edit
Im edit and no error.
ss:
https://metin2.download/picture/CRLInX8GBetAOnfs5noA0VpZf7cQxg4r/.jpg
help me.
-
-
Im use K in bin client and not working.
In base gold - bigint
https://metin2.download/picture/7dv62ZgWGvLNpYNNlIX7yE5D4GwoJ8BW/.jpg
-
Its OK,
how to edit client?
PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
return Py_BuildValue("ULL", CPythonPlayer::Instance().GetStatus(POINT_GOLD));
}Its bad:
sysser:
0808 11:37:15088 :: Traceback (most recent call last):
0808 11:37:15088 :: File "networkModule.py", line 239, in SetGamePhase
0808 11:37:15088 :: File "game.py", line 98, in __init__
0808 11:37:15089 :: File "interfaceModule.py", line 287, in MakeInterface
0808 11:37:15089 :: File "interfaceModule.py", line 171, in __MakeWindows
0808 11:37:15089 :: File "uiInventory.py", line 252, in __init__
0808 11:37:15090 :: File "uiInventory.py", line 393, in __LoadWindow
0808 11:37:15090 :: File "uiInventory.py", line 615, in RefreshStatus
0808 11:37:15090 :: SystemError
0808 11:37:15090 :: :
0808 11:37:15090 :: bad format char passed to Py_BuildValue
0808 11:37:15090 :: -
Hallo,how to make the maximum amount of yang?
Im change:
char.cpp - long long CHARACTER::GetAllowedGold() const
char.h - long long gold;
tables.h - long long gold;
length.h - GOLD_MAX = 999000000000LL,
And error game
In file included from char.cpp:4:
../../common/VnumHelper.h:59:32: warning: no newline at end of file
In file included from char.cpp:25:
shop_manager.h:40:7: warning: no newline at end of file
In file included from char.cpp:62:
PetSystem.h:163:31: warning: no newline at end of file
char.cpp:7208: warning: this decimal constant is unsigned only in ISO C90
char.cpp:7216:2: warning: no newline at end of file
In file included from char_battle.cpp:27:
shop_manager.h:40:7: warning: no newline at end of file
In file included from char_horse.cpp:14:
../../common/VnumHelper.h:59:32: warning: no newline at end of file
In file included from char_item.cpp:44:
../../common/VnumHelper.h:59:32: warning: no newline at end of file
In file included from char_item.cpp:47:
belt_inventory_helper.h:108:42: warning: no newline at end of file
In file included from PetSystem.cpp:8:
PetSystem.h:163:31: warning: no newline at end of file
In file included from PetSystem.cpp:9:
../../common/VnumHelper.h:59:32: warning: no newline at end of file
PetSystem.cpp:637:2: warning: no newline at end of file
In file included from char_state.cpp:25:
../../common/VnumHelper.h:59:32: warning: no newline at end of file
char.cpp:3000: error: prototype for 'long long int CHARACTER::GetAllowedGold() const' does not match any in class 'CHARACTER'
char.h:1173: error: candidate is: INT CHARACTER::GetAllowedGold() const
char.cpp:3000: error: 'long long int CHARACTER::GetAllowedGold() const' cannot be overloaded
char.h:1173: error: with 'INT CHARACTER::GetAllowedGold() const'
char.cpp: In member function 'void CHARACTER::PointChange(BYTE, int, bool, bool)':
char.cpp:3089: warning: comparison between signed and unsigned integer expressions
In file included from char_item.cpp:47:
belt_inventory_helper.h: In static member function 'static BYTE CBeltInventoryHelper::GetBeltGradeByRefineLevel(int)':
belt_inventory_helper.h:28: warning: comparison between signed and unsigned integer expressions
char_item.cpp: In member function 'bool CHARACTER::IsEmptyItemGrid(TItemPos, BYTE, int) const':
char_item.cpp:640: warning: comparison is always false due to limited range of data type
char_item.cpp:666: warning: comparison is always false due to limited range of data type
In file included from cmd_general.cpp:36:
../../common/VnumHelper.h:59:32: warning: no newline at end of file
char_item.cpp: In member function 'bool CHARACTER::UseItemEx(CItem*, TItemPos)':
char_item.cpp:2387: warning: format '%d' expects type 'int', but argument 6 has type 'long int'
char_item.cpp:2391: warning: format '%d' expects type 'int', but argument 6 has type 'long int'
char_item.cpp:2403: warning: format '%d' expects type 'int', but argument 5 has type 'long int'
char_item.cpp:2407: warning: format '%d' expects type 'int', but argument 5 has type 'long int'
char_item.cpp:2434: warning: format '%d' expects type 'int', but argument 6 has type 'long int'
char_item.cpp:2442: warning: format '%d' expects type 'int', but argument 5 has type 'long int'
char_item.cpp:5090: warning: comparison between signed and unsigned integer expressions
gmake: *** [OBJDIR/char.o] Bł±d 1
gmake: *** Oczekiwanie na niezakończone zadania....
PetSystem.cpp: In member function 'virtual bool CPetActor::_UpdateFollowAI()':
PetSystem.cpp:246: warning: unused variable 'bDoMoveAlone'
char_item.cpp: In member function 'bool CHARACTER::UseItem(TItemPos, TItemPos)':
char_item.cpp:5162: warning: unused variable 'wDestCell'
char_item.cpp:5163: warning: unused variable 'bDestInven'
PetSystem.cpp: In member function 'CPetActor* CPetSystem::Summon(DWORD, CItem*, const char*, bool, DWORD)':
PetSystem.cpp:552: warning: unused variable 'petVID'
char_item.cpp: In member function 'bool CHARACTER::EquipItem(CItem*, int)':
char_item.cpp:6103: warning: array subscript has type 'char'
char_item.cpp: In member function 'void CHARACTER::BuffOnAttr_AddBuffsFromItem(CItem*)':
char_item.cpp:6167: warning: comparison between signed and unsigned integer expressions
char_item.cpp: In member function 'void CHARACTER::BuffOnAttr_RemoveBuffsFromItem(CItem*)':
char_item.cpp:6179: warning: comparison between signed and unsigned integer expressions
char_item.cpp: In member function 'bool CHARACTER::CanEquipNow(CItem*, const TItemPos&, const TItemPos&)':
char_item.cpp:7365: warning: unused variable 'itemType'
char_item.cpp:7366: warning: unused variable 'itemSubType'
constants.cpp:371: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:372: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:373: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:374: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:375: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:376: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:377: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:378: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:379: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:380: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:381: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:382: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:383: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:384: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:385: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:386: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:387: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:388: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:389: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:390: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:391: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:392: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:393: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:394: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:395: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:396: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:397: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:398: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:399: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:400: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:401: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:402: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:403: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:404: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:405: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:406: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:407: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:408: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:409: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:410: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:411: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:412: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:413: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:414: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:415: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:416: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:417: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:418: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:419: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:420: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:421: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:422: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:423: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:424: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:425: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:426: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:427: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:428: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:429: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:430: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:431: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:432: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:433: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:434: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:435: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:436: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:437: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:438: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:439: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:440: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:441: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:442: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:443: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:444: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:445: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:446: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:447: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:448: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:449: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:450: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:451: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:452: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:453: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:454: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:455: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:456: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:457: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:458: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:459: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:460: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:461: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:462: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:463: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:464: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:465: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:466: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:467: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:468: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:469: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:470: warning: this decimal constant is unsigned only in ISO C90
constants.cpp:471: warning: this decimal constant is unsigned only in ISO C90
char_item.cpp: In member function 'bool CHARACTER::IsEmptyItemGrid(TItemPos, BYTE, int) const':
char_item.cpp:679: warning: control reaches end of non-void function
char_state.cpp: In member function 'virtual void CHARACTER::StateMove()':
char_state.cpp:901: warning: unused variable 'rider'
In file included from config.cpp:22:
check_server.h: In static member function 'static bool CheckServer::CheckIp(const char*)':
check_server.h:24: warning: comparison between signed and unsigned integer expressions
config.cpp: In function 'void config_init(const std::string&)':
config.cpp:435: warning: NULL used in arithmetic
config.cpp:459: warning: NULL used in arithmetic
config.cpp:483: warning: NULL used in arithmetic
config.cpp:505: warning: unused variable 'line'
cmd_gm.cpp: In function 'void do_set_stat(CHARACTER*, const char*, int, int)':
cmd_gm.cpp:3935: warning: NULL used in arithmetic
char_item.cpp: In member function 'void CHARACTER::BuffOnAttr_ValueChange(BYTE, BYTE, BYTE)':
char_item.cpp:6214: warning: 'pBuff' may be used uninitialized in this function
cmd_gm.cpp: In function 'void do_use_item(CHARACTER*, const char*, int, int)':
cmd_gm.cpp:4357: warning: 'cell' may be used uninitialized in this function
cmd_gm.cpp: In function 'void do_set_stat(CHARACTER*, const char*, int, int)':
cmd_gm.cpp:3977: warning: 'n' may be used uninitialized in this function
cmd_gm.cpp: In function 'void do_mob_ld(CHARACTER*, const char*, int, int)':
cmd_gm.cpp:855: warning: 'x' may be used uninitialized in this function
cmd_gm.cpp:855: warning: 'y' may be used uninitialized in this function -
Hello, today I started to play with the source and at the first shot went higher equipment all done as in the tutorial, but something is not working. Bin compilled db & game too.
Sysser:
0805 15:40:32473 ::uiInventory.py(line:310) __LoadWindowui.py(line:2720) GetChildInventoryWindow.LoadWindow.BindObject - <type 'exceptions.KeyError'>:'Equipment_Tab_03'0805 15:40:32474 :: ============================================================================================================0805 15:40:32474 :: Abort!!!!uiinventoryimport uiimport playerimport mouseModuleimport netimport appimport sndimport itemimport playerimport chatimport grpimport uiScriptLocaleimport uiRefineimport uiAttachMetinimport uiPickMoneyimport uiCommonimport uiPrivateShopBuilder # 개인상점 열동안 ItemMove 방지import localeInfoimport constInfoimport imeimport wndMgrITEM_MALL_BUTTON_ENABLE = TRUEITEM_FLAG_APPLICABLE = 1 << 14class CostumeWindow(ui.ScriptWindow):def __init__(self, wndInventory):import exceptionif not app.ENABLE_COSTUME_SYSTEM:exception.Abort("What do you do?")returnif not wndInventory:exception.Abort("wndInventory parameter must be set to InventoryWindow")returnui.ScriptWindow.__init__(self)self.isLoaded = 0self.wndInventory = wndInventory;self.__LoadWindow()def __del__(self):ui.ScriptWindow.__del__(self)def Show(self):self.__LoadWindow()self.RefreshCostumeSlot()ui.ScriptWindow.Show(self)def Close(self):self.Hide()def __LoadWindow(self):if self.isLoaded == 1:returnself.isLoaded = 1try:pyScrLoader = ui.PythonScriptLoader()pyScrLoader.LoadScriptFile(self, "UIScript/CostumeWindow.py")except:import exceptionexception.Abort("CostumeWindow.LoadWindow.LoadObject")try:wndEquip = self.GetChild("CostumeSlot")self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))except:import exceptionexception.Abort("CostumeWindow.LoadWindow.BindObject")## EquipmentwndEquip.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))wndEquip.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))self.wndEquip = wndEquipdef RefreshCostumeSlot(self):getItemVNum=player.GetItemIndexfor i in xrange(item.COSTUME_SLOT_COUNT):slotNumber = item.COSTUME_SLOT_START + iself.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)self.wndEquip.RefreshSlot()class BeltInventoryWindow(ui.ScriptWindow):def __init__(self, wndInventory):import exceptionif not app.ENABLE_NEW_EQUIPMENT_SYSTEM:exception.Abort("What do you do?")returnif not wndInventory:exception.Abort("wndInventory parameter must be set to InventoryWindow")returnui.ScriptWindow.__init__(self)self.isLoaded = 0self.wndInventory = wndInventory;self.wndBeltInventoryLayer = Noneself.wndBeltInventorySlot = Noneself.expandBtn = Noneself.minBtn = Noneself.__LoadWindow()def __del__(self):ui.ScriptWindow.__del__(self)def Show(self, openBeltSlot = FALSE):self.__LoadWindow()self.RefreshSlot()ui.ScriptWindow.Show(self)if openBeltSlot:self.OpenInventory()else:self.CloseInventory()def Close(self):self.Hide()def IsOpeningInventory(self):return self.wndBeltInventoryLayer.IsShow()def OpenInventory(self):self.wndBeltInventoryLayer.Show()self.expandBtn.Hide()self.AdjustPositionAndSize()def CloseInventory(self):self.wndBeltInventoryLayer.Hide()self.expandBtn.Show()self.AdjustPositionAndSize()## 현재 인벤토리 위치를 기준으로 BASE 위치를 계산, 리턴.. 숫자 하드코딩하기 정말 싫지만 방법이 없다..def GetBasePosition(self):x, y = self.wndInventory.GetGlobalPosition()return x - 148, y + 241def AdjustPositionAndSize(self):bx, by = self.GetBasePosition()if self.IsOpeningInventory():self.SetPosition(bx, by)self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())else:self.SetPosition(bx + 138, by);self.SetSize(10, self.GetHeight())def __LoadWindow(self):if self.isLoaded == 1:returnself.isLoaded = 1try:pyScrLoader = ui.PythonScriptLoader()pyScrLoader.LoadScriptFile(self, "UIScript/BeltInventoryWindow.py")except:import exceptionexception.Abort("CostumeWindow.LoadWindow.LoadObject")try:self.ORIGINAL_WIDTH = self.GetWidth()wndBeltInventorySlot = self.GetChild("BeltInventorySlot")self.wndBeltInventoryLayer = self.GetChild("BeltInventoryLayer")self.expandBtn = self.GetChild("ExpandBtn")self.minBtn = self.GetChild("MinimizeBtn")self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):slotNumber = item.BELT_INVENTORY_SLOT_START + iwndBeltInventorySlot.SetCoverButton(slotNumber, "d:/ymir work/ui/game/quest/slot_button_01.sub",\"d:/ymir work/ui/game/quest/slot_button_01.sub",\"d:/ymir work/ui/game/quest/slot_button_01.sub",\"d:/ymir work/ui/game/belt_inventory/slot_disabled.tga", FALSE, FALSE)except:import exceptionexception.Abort("CostumeWindow.LoadWindow.BindObject")## EquipmentwndBeltInventorySlot.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))wndBeltInventorySlot.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))wndBeltInventorySlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))wndBeltInventorySlot.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))wndBeltInventorySlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))wndBeltInventorySlot.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))self.wndBeltInventorySlot = wndBeltInventorySlotdef RefreshSlot(self):getItemVNum=player.GetItemIndexfor i in xrange(item.BELT_INVENTORY_SLOT_COUNT):slotNumber = item.BELT_INVENTORY_SLOT_START + iself.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), player.GetItemCount(slotNumber))self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, TRUE)avail = "0"if player.IsAvailableBeltInventoryCell(slotNumber):self.wndBeltInventorySlot.EnableCoverButton(slotNumber)else:self.wndBeltInventorySlot.DisableCoverButton(slotNumber)self.wndBeltInventorySlot.RefreshSlot()class InventoryWindow(ui.ScriptWindow):USE_TYPE_TUPLE = ("USE_CLEAN_SOCKET", "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ATTRIBUTE2", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET")questionDialog = NonetooltipItem = NonewndCostume = NonewndBelt = NonedlgPickMoney = NonesellingSlotNumber = -1isLoaded = 0isOpenedCostumeWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 코스츔이 열려있었는지 여부-_-; 네이밍 ㅈㅅisOpenedBeltWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅdef __init__(self):ui.ScriptWindow.__init__(self)self.__LoadWindow()def __del__(self):ui.ScriptWindow.__del__(self)def Show(self):self.__LoadWindow()ui.ScriptWindow.Show(self)# 인벤토리를 닫을 때 코스츔이 열려있었다면 인벤토리를 열 때 코스츔도 같이 열도록 함.if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:self.wndCostume.Show()# 인벤토리를 닫을 때 벨트 인벤토리가 열려있었다면 같이 열도록 함.if self.wndBelt:self.wndBelt.Show(self.isOpenedBeltWindowWhenClosingInventory)def BindInterfaceClass(self, interface):self.interface = interfacedef __LoadWindow(self):if self.isLoaded == 1:returnself.isLoaded = 1try:pyScrLoader = ui.PythonScriptLoader()if ITEM_MALL_BUTTON_ENABLE:pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "InventoryWindow.py")else:pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py")except:import exceptionexception.Abort("InventoryWindow.LoadWindow.LoadObject")try:wndItem = self.GetChild("ItemSlot")wndEquip = self.GetChild("EquipmentSlot")self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))self.wndMoney = self.GetChild("Money")self.wndMoneySlot = self.GetChild("Money_Slot")self.mallButton = self.GetChild2("MallButton")self.DSSButton = self.GetChild2("DSSButton")self.costumeButton = self.GetChild2("CostumeButton")self.inventoryTab = []self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))self.inventoryTab.append(self.GetChild("Inventory_Tab_05"))self.equipmentTab = []self.equipmentTab.append(self.GetChild("Equipment_Tab_01"))self.equipmentTab.append(self.GetChild("Equipment_Tab_02"))self.equipmentTab.append(self.GetChild("Equipment_Tab_03"))self.equipmentTab.append(self.GetChild("Equipment_Tab_04"))self.equipmentTab.append(self.GetChild("Equipment_Tab_05"))if self.costumeButton and not app.ENABLE_COSTUME_SYSTEM:self.costumeButton.Hide()self.costumeButton.Destroy()self.costumeButton = 0# Belt Inventory Windowself.wndBelt = Noneif app.ENABLE_NEW_EQUIPMENT_SYSTEM:self.wndBelt = BeltInventoryWindow(self)except:import exceptionexception.Abort("InventoryWindow.LoadWindow.BindObject")## ItemwndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))## EquipmentwndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))## PickMoneyDialogdlgPickMoney = uiPickMoney.PickMoneyDialog()dlgPickMoney.LoadDialog()dlgPickMoney.Hide()## RefineDialogself.refineDialog = uiRefine.RefineDialog()self.refineDialog.Hide()## AttachMetinDialogself.attachMetinDialog = uiAttachMetin.AttachMetinDialog()self.attachMetinDialog.Hide()## MoneySlotself.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))self.inventoryTab[4].SetEvent(lambda arg=4: self.SetInventoryPage(arg))self.inventoryTab[0].Down()self.equipmentTab[0].SetEvent(lambda arg=0: self.SetEquipmentPage(arg))self.equipmentTab[1].SetEvent(lambda arg=1: self.SetEquipmentPage(arg))self.equipmentTab[2].SetEvent(lambda arg=2: self.SetEquipmentPage(arg))self.equipmentTab[3].SetEvent(lambda arg=3: self.SetEquipmentPage(arg))self.equipmentTab[4].SetEvent(lambda arg=4: self.SetEquipmentPage(arg))self.equipmentTab[0].Down()self.equipmentTab[0].Hide()self.equipmentTab[1].Hide()self.wndItem = wndItemself.wndEquip = wndEquipself.dlgPickMoney = dlgPickMoney# MallButtonif self.mallButton:self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))if self.DSSButton:self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton))# Costume Buttonif self.costumeButton:self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))self.wndCostume = None####### Refreshself.SetInventoryPage(0)self.SetEquipmentPage(0)self.RefreshItemSlot()self.RefreshStatus()def Destroy(self):self.ClearDictionary()self.dlgPickMoney.Destroy()self.dlgPickMoney = 0self.refineDialog.Destroy()self.refineDialog = 0self.attachMetinDialog.Destroy()self.attachMetinDialog = 0self.tooltipItem = Noneself.wndItem = 0self.wndEquip = 0self.dlgPickMoney = 0self.wndMoney = 0self.wndMoneySlot = 0self.questionDialog = Noneself.mallButton = Noneself.DSSButton = Noneself.interface = Noneif self.wndCostume:self.wndCostume.Destroy()self.wndCostume = 0if self.wndBelt:self.wndBelt.Destroy()self.wndBelt = Noneself.inventoryTab = []self.equipmentTab = []def Hide(self):if None != self.tooltipItem:self.tooltipItem.HideToolTip()if self.wndCostume:self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow() # 인벤토리 창이 닫힐 때 코스츔이 열려 있었는가?self.wndCostume.Close()if self.wndBelt:self.isOpenedBeltWindowWhenClosingInventory = self.wndBelt.IsOpeningInventory() # 인벤토리 창이 닫힐 때 벨트 인벤토리도 열려 있었는가?print "Is Opening Belt Inven?? ", self.isOpenedBeltWindowWhenClosingInventoryself.wndBelt.Close()if self.dlgPickMoney:self.dlgPickMoney.Close()self.OnCloseQuestionDialog()wndMgr.Hide(self.hWnd)def Close(self):self.Hide()def SetInventoryPage(self, page):self.inventoryPageIndex = pageself.inventoryTab[(page+1)%5].SetUp()self.inventoryTab[(page+2)%5].SetUp()self.inventoryTab[(page+3)%5].SetUp()self.inventoryTab[(page+4)%5].SetUp()self.RefreshBagSlotWindow()def SetEquipmentPage(self, page):self.equipmentPageIndex = pageself.equipmentTab[1-page].SetUp()self.RefreshEquipSlotWindow()def ClickMallButton(self):print "click_mall_button"net.SendChatPacket("/click_mall")# DSSButtondef ClickDSSButton(self):print "click_dss_button"self.interface.ToggleDragonSoulWindow()def ClickCostumeButton(self):print "Click Costume Button"if self.wndCostume:if self.wndCostume.IsShow():self.wndCostume.Hide()else:self.wndCostume.Show()else:self.wndCostume = CostumeWindow(self)self.wndCostume.Show()def OpenPickMoneyDialog(self):if mouseModule.mouseController.isAttached():attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()if player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType():if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())snd.PlaySound("sound/ui/money.wav")mouseModule.mouseController.DeattachObject()else:curMoney = player.GetElk()if curMoney <= 0:returnself.dlgPickMoney.SetTitleName(localeInfo.PICK_MONEY_TITLE)self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))self.dlgPickMoney.Open(curMoney)self.dlgPickMoney.SetMax(7) # 인벤토리 990000 제한 버그 수정def OnPickMoney(self, money):mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)def OnPickItem(self, count):itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndexselectedItemVNum = player.GetItemIndex(itemSlotIndex)mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)def __InventoryLocalSlotPosToGlobalSlotPos(self, local):if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or player.IsBeltInventorySlot(local):return localreturn self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + localdef RefreshBagSlotWindow(self):getItemVNum=player.GetItemIndexgetItemCount=player.GetItemCountsetItemVNum=self.wndItem.SetItemSlotfor i in xrange(player.INVENTORY_PAGE_SIZE):slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)itemCount = getItemCount(slotNumber)# itemCount == 0이면 소켓을 비운다.if 0 == itemCount:self.wndItem.ClearSlot(i)continueelif 1 == itemCount:itemCount = 0itemVnum = getItemVNum(slotNumber)setItemVNum(i, itemVnum, itemCount)## 자동물약 (HP: #72723 ~ #72726, SP: #72727 ~ #72730) 특수처리 - 아이템인데도 슬롯에 활성화/비활성화 표시를 위한 작업임 - [hyo]if constInfo.IS_AUTO_POTION(itemVnum):# metinSocket - [0] : 활성화 여부, [1] : 사용한 양, [2] : 최대 용량metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]if slotNumber >= player.INVENTORY_PAGE_SIZE:slotNumber -= player.INVENTORY_PAGE_SIZEisActivated = 0 != metinSocket[0]if isActivated:self.wndItem.ActivateSlot(slotNumber)potionType = 0;if constInfo.IS_AUTO_POTION_HP(itemVnum):potionType = player.AUTO_POTION_TYPE_HPelif constInfo.IS_AUTO_POTION_SP(itemVnum):potionType = player.AUTO_POTION_TYPE_SPusedAmount = int(metinSocket[1])totalAmount = int(metinSocket[2])player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))else:self.wndItem.DeactivateSlot(slotNumber)elif itemVnum == 70019:metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]isActivated = 0 != metinSocket[0]if slotNumber >= player.INVENTORY_PAGE_SIZE:slotNumber -= player.INVENTORY_PAGE_SIZEif isActivated:self.wndItem.ActivateSlot(slotNumber)else:self.wndItem.DeactivateSlot(slotNumber)self.wndItem.RefreshSlot()if self.wndBelt:self.wndBelt.RefreshSlot()def RefreshEquipSlotWindow(self):getItemVNum=player.GetItemIndexgetItemCount=player.GetItemCountsetItemVNum=self.wndEquip.SetItemSlotfor i in xrange(player.EQUIPMENT_PAGE_COUNT):slotNumber = player.EQUIPMENT_SLOT_START + iitemCount = getItemCount(slotNumber)if itemCount <= 1:itemCount = 0setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)if app.ENABLE_NEW_EQUIPMENT_SYSTEM:for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):slotNumber = player.NEW_EQUIPMENT_SLOT_START + iitemCount = getItemCount(slotNumber)if itemCount <= 1:itemCount = 0setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)print "ENABLE_NEW_EQUIPMENT_SYSTEM", slotNumber, itemCount, getItemVNum(slotNumber)self.wndEquip.RefreshSlot()if self.wndCostume:self.wndCostume.RefreshCostumeSlot()def RefreshItemSlot(self):self.RefreshBagSlotWindow()self.RefreshEquipSlotWindow()def RefreshStatus(self):money = player.GetElk()self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))def SetItemToolTip(self, tooltipItem):self.tooltipItem = tooltipItemdef SellItem(self):if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count)snd.PlaySound("sound/ui/money.wav")self.OnCloseQuestionDialog()def OnDetachMetinFromItem(self):if None == self.questionDialog:return#net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)self.OnCloseQuestionDialog()def OnCloseQuestionDialog(self):if self.questionDialog:self.questionDialog.Close()self.questionDialog = None## Slot Eventdef SelectEmptySlot(self, selectedSlotPos):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returnselectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)if mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()if player.SLOT_TYPE_INVENTORY == attachedSlotType:itemCount = player.GetItemCount(attachedSlotPos)attachedCount = mouseModule.mouseController.GetAttachedItemCount()self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)if item.IsRefineScroll(attachedItemIndex):self.wndItem.SetUseMode(FALSE)elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:mouseModule.mouseController.RunCallBack("INVENTORY")elif player.SLOT_TYPE_SHOP == attachedSlotType:net.SendShopBuyPacket(attachedSlotPos)elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:if player.ITEM_MONEY == attachedItemIndex:net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())snd.PlaySound("sound/ui/money.wav")else:net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos)elif player.SLOT_TYPE_MALL == attachedSlotType:net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)mouseModule.mouseController.DeattachObject()def SelectItemSlot(self, itemSlotIndex):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returnitemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)if mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()if player.SLOT_TYPE_INVENTORY == attachedSlotType:self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)mouseModule.mouseController.DeattachObject()else:curCursorNum = app.GetCursor()if app.SELL == curCursorNum:self.__SellItem(itemSlotIndex)elif app.BUY == curCursorNum:chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO)elif app.IsPressed(app.DIK_LALT):link = player.GetItemLink(itemSlotIndex)ime.PasteString(link)elif app.IsPressed(app.DIK_LSHIFT):itemCount = player.GetItemCount(itemSlotIndex)if itemCount > 1:self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))self.dlgPickMoney.Open(itemCount)self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex#else:#selectedItemVNum = player.GetItemIndex(itemSlotIndex)#mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)elif app.IsPressed(app.DIK_LCONTROL):itemIndex = player.GetItemIndex(itemSlotIndex)if TRUE == item.CanAddToQuickSlotItem(itemIndex):player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)else:chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)else:selectedItemVNum = player.GetItemIndex(itemSlotIndex)itemCount = player.GetItemCount(itemSlotIndex)mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):self.wndItem.SetUseMode(TRUE)else:self.wndItem.SetUseMode(FALSE)snd.PlaySound("sound/ui/pick.wav")def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):if srcItemSlotPos == dstItemSlotPos:returnif item.IsRefineScroll(srcItemVID):self.RefineItem(srcItemSlotPos, dstItemSlotPos)self.wndItem.SetUseMode(FALSE)elif item.IsMetin(srcItemVID):self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos)elif item.IsDetachScroll(srcItemVID):self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos)elif item.IsKey(srcItemVID):self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE:self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)else:#snd.PlaySound("sound/ui/drop.wav")## 이동시킨 곳이 장착 슬롯일 경우 아이템을 사용해서 장착 시킨다 - [levites]if player.IsEquipmentSlot(dstItemSlotPos):## 들고 있는 아이템이 장비일때만if item.IsEquipmentVID(srcItemVID):self.__UseItem(srcItemSlotPos)else:self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)#net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0)def __SellItem(self, itemSlotPos):if not player.IsEquipmentSlot(itemSlotPos):self.sellingSlotNumber = itemSlotPositemIndex = player.GetItemIndex(itemSlotPos)itemCount = player.GetItemCount(itemSlotPos)self.sellingSlotitemIndex = itemIndexself.sellingSlotitemCount = itemCountitem.SelectItem(itemIndex)itemPrice = item.GetISellItemPrice()if item.Is1GoldItem():itemPrice = itemCount / itemPrice / 5else:itemPrice = itemPrice * itemCount / 5item.GetItemName(itemIndex)itemName = item.GetItemName()self.questionDialog = uiCommon.QuestionDialog()self.questionDialog.SetText(localeInfo.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice))self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem))self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))self.questionDialog.Open()self.questionDialog.count = itemCountdef RefineItem(self, scrollSlotPos, targetSlotPos):scrollIndex = player.GetItemIndex(scrollSlotPos)targetIndex = player.GetItemIndex(targetSlotPos)if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):return###########################################################self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)#net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)return#######################################################################################################################net.SendRequestRefineInfoPacket(targetSlotPos)#return###########################################################result = player.CanRefine(scrollIndex, targetSlotPos)if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:#snd.PlaySound("sound/ui/jaeryun_fail.wav")chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_MORE_SOCKET)elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:#snd.PlaySound("sound/ui/jaeryun_fail.wav")chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NEED_BETTER_SCROLL)elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:#snd.PlaySound("sound/ui/jaeryun_fail.wav")chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_SOCKET_DISABLE_ITEM)elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:#snd.PlaySound("sound/ui/jaeryun_fail.wav")chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)if player.REFINE_OK != result:returnself.refineDialog.Open(scrollSlotPos, targetSlotPos)def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):scrollIndex = player.GetItemIndex(scrollSlotPos)targetIndex = player.GetItemIndex(targetSlotPos)if not player.CanDetach(scrollIndex, targetSlotPos):chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)returnself.questionDialog = uiCommon.QuestionDialog()self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN)self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem))self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))self.questionDialog.Open()self.questionDialog.sourcePos = scrollSlotPosself.questionDialog.targetPos = targetSlotPosdef AttachMetinToItem(self, metinSlotPos, targetSlotPos):metinIndex = player.GetItemIndex(metinSlotPos)targetIndex = player.GetItemIndex(targetSlotPos)item.SelectItem(metinIndex)itemName = item.GetItemName()result = player.CanAttachMetin(metinIndex, targetSlotPos)if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result:chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_SOCKET(itemName))elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)if player.ATTACH_METIN_OK != result:returnself.attachMetinDialog.Open(metinSlotPos, targetSlotPos)def OverOutItem(self):self.wndItem.SetUsableItem(FALSE)if None != self.tooltipItem:self.tooltipItem.HideToolTip()def OverInItem(self, overSlotPos):overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)self.wndItem.SetUsableItem(FALSE)if mouseModule.mouseController.isAttached():attachedItemType = mouseModule.mouseController.GetAttachedType()if player.SLOT_TYPE_INVENTORY == attachedItemType:attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos):self.wndItem.SetUsableItem(TRUE)self.ShowToolTip(overSlotPos)returnself.ShowToolTip(overSlotPos)def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):"다른 아이템에 사용할 수 있는 아이템인가?"if item.IsRefineScroll(srcItemVNum):return TRUEelif item.IsMetin(srcItemVNum):return TRUEelif item.IsDetachScroll(srcItemVNum):return TRUEelif item.IsKey(srcItemVNum):return TRUEelif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:return TRUEelse:if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE:return TRUEreturn FALSEdef __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):"대상 아이템에 사용할 수 있는가?"if srcSlotPos == dstSlotPos:return FALSEif item.IsRefineScroll(srcItemVNum):if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):return TRUEelif item.IsMetin(srcItemVNum):if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):return TRUEelif item.IsDetachScroll(srcItemVNum):if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos):return TRUEelif item.IsKey(srcItemVNum):if player.CanUnlock(srcItemVNum, dstSlotPos):return TRUEelif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:return TRUEelse:useType=item.GetUseType(srcItemVNum)if "USE_CLEAN_SOCKET" == useType:if self.__CanCleanBrokenMetinStone(dstSlotPos):return TRUEelif "USE_CHANGE_ATTRIBUTE" == useType:if self.__CanChangeItemAttrList(dstSlotPos):return TRUEelif "USE_ADD_ATTRIBUTE" == useType:if self.__CanAddItemAttr(dstSlotPos):return TRUEelif "USE_ADD_ATTRIBUTE2" == useType:if self.__CanAddItemAttr(dstSlotPos):return TRUEelif "USE_ADD_ACCESSORY_SOCKET" == useType:if self.__CanAddAccessorySocket(dstSlotPos):return TRUEelif "USE_PUT_INTO_ACCESSORY_SOCKET" == useType:if self.__CanPutAccessorySocket(dstSlotPos, srcItemVNum):return TRUE;elif "USE_PUT_INTO_BELT_SOCKET" == useType:dstItemVNum = player.GetItemIndex(dstSlotPos)print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNumitem.SelectItem(dstItemVNum)if item.ITEM_TYPE_BELT == item.GetItemType():return TRUEreturn FALSEdef __CanCleanBrokenMetinStone(self, dstSlotPos):dstItemVNum = player.GetItemIndex(dstSlotPos)if dstItemVNum == 0:return FALSEitem.SelectItem(dstItemVNum)if item.ITEM_TYPE_WEAPON != item.GetItemType():return FALSEfor i in xrange(player.METIN_SOCKET_MAX_NUM):if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:return TRUEreturn FALSEdef __CanChangeItemAttrList(self, dstSlotPos):dstItemVNum = player.GetItemIndex(dstSlotPos)if dstItemVNum == 0:return FALSEitem.SelectItem(dstItemVNum)if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):return FALSEfor i in xrange(player.METIN_SOCKET_MAX_NUM):if player.GetItemAttribute(dstSlotPos, i) != 0:return TRUEreturn FALSEdef __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):dstItemVNum = player.GetItemIndex(dstSlotPos)if dstItemVNum == 0:return FALSEitem.SelectItem(dstItemVNum)if item.GetItemType() != item.ITEM_TYPE_ARMOR:return FALSEif not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):return FALSEcurCount = player.GetItemMetinSocket(dstSlotPos, 0)maxCount = player.GetItemMetinSocket(dstSlotPos, 1)if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()):return FALSEif curCount>=maxCount:return FALSEreturn TRUEdef __CanAddAccessorySocket(self, dstSlotPos):dstItemVNum = player.GetItemIndex(dstSlotPos)if dstItemVNum == 0:return FALSEitem.SelectItem(dstItemVNum)if item.GetItemType() != item.ITEM_TYPE_ARMOR:return FALSEif not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):return FALSEcurCount = player.GetItemMetinSocket(dstSlotPos, 0)maxCount = player.GetItemMetinSocket(dstSlotPos, 1)ACCESSORY_SOCKET_MAX_SIZE = 3if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:return FALSEreturn TRUEdef __CanAddItemAttr(self, dstSlotPos):dstItemVNum = player.GetItemIndex(dstSlotPos)if dstItemVNum == 0:return FALSEitem.SelectItem(dstItemVNum)if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):return FALSEattrCount = 0for i in xrange(player.METIN_SOCKET_MAX_NUM):if player.GetItemAttribute(dstSlotPos, i) != 0:attrCount += 1if attrCount<4:return TRUEreturn FALSEdef ShowToolTip(self, slotIndex):if None != self.tooltipItem:self.tooltipItem.SetInventoryItem(slotIndex)def OnTop(self):if None != self.tooltipItem:self.tooltipItem.SetTop()def OnPressEscapeKey(self):self.Close()return TRUEdef UseItemSlot(self, slotIndex):curCursorNum = app.GetCursor()if app.SELL == curCursorNum:returnif constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():returnslotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)if app.ENABLE_DRAGON_SOUL_SYSTEM:if self.wndDragonSoulRefine.IsShow():self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)returnself.__UseItem(slotIndex)mouseModule.mouseController.DeattachObject()self.OverOutItem()def __UseItem(self, slotIndex):ItemVNum = player.GetItemIndex(slotIndex)item.SelectItem(ItemVNum)if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):self.questionDialog = uiCommon.QuestionDialog()self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_ITEM)self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))self.questionDialog.Open()self.questionDialog.slotIndex = slotIndexelse:self.__SendUseItemPacket(slotIndex)def __UseItemQuestionDialog_OnCancel(self):self.OnCloseQuestionDialog()def __UseItemQuestionDialog_OnAccept(self):self.__SendUseItemPacket(self.questionDialog.slotIndex)if self.questionDialog:self.questionDialog.Close()self.questionDialog = Nonedef __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):# 개인상점 열고 있는 동안 아이템 사용 방지if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)returnnet.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)def __SendUseItemPacket(self, slotPos):# 개인상점 열고 있는 동안 아이템 사용 방지if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)returnnet.SendItemUsePacket(slotPos)def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):# 개인상점 열고 있는 동안 아이템 사용 방지if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)returnnet.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):if app.ENABLE_DRAGON_SOUL_SYSTEM:self.wndDragonSoulRefine = wndDragonSoulRefinedef OnMoveWindow(self, x, y):# print "Inventory Global Pos : ", self.GetGlobalPosition()if self.wndBelt:# print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()self.wndBelt.AdjustPositionAndSize()
0 YANG (yang limit problem)
in Community Support - Questions & Answers
Posted
except ValueError:
money = 1000000000000000LL
?