|
You last visited: Today at 08:32
Advertisement
[(Zwangs-)Release] Achievementshop
Discussion on [(Zwangs-)Release] Achievementshop within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
06/18/2014, 19:28
|
#76
|
elite*gold: 0
Join Date: Jul 2012
Posts: 68
Received Thanks: 2
|
fix? thx
SYSERR: Jun 17 13:06:42 :: WriteRunningStateToSyserr: LUA_ERROR: quest achievement.start click
SYSERR: Jun 17 13:06:43 :: RunState: LUA_ERROR: [string "achievement"]:12: attempt to index field `?' (a nil value)
SYSERR: Jun 17 13:06:43 :: WriteRunningStateToSyserr: LUA_ERROR: quest achievement.start click
SYSERR: Jun 17 13:06:43 :: RunState: LUA_ERROR: [string "achievement"]:12: attempt to index field `?' (a nil value)
SYSERR: Jun 17 13:06:43 :: WriteRunningStateToSyserr: LUA_ERROR: quest achievement.start click
SYSERR: Jun 17 13:06:44 :: RunState: LUA_ERROR: [string "achievement"]:12: attempt to index field `?' (a nil value)
SYSERR: Jun 17 13:06:44 :: WriteRunningStateToSyserr: LUA_ERROR: quest achievement.start click
SYSERR: Jun 17 13:06:46 :: RunState: LUA_ERROR: [string "achievement"]:12: attempt to index field `?' (a nil value)
SYSERR: Jun 17 13:06:46 :: WriteRunningStateToSyserr: LUA_ERROR: quest achievement.start click
SYSERR: Jun 17 13:07:29 :: RunState: LUA_ERROR: [string "achievement"]:12: attempt to index field `?' (a nil value)
SYSERR: Jun 17 13:07:29 :: WriteRunningStateToSyserr: LUA_ERROR: quest achievement.start click
SYSERR: Jun 17 13:08:33 :: RunState: LUA_ERROR: [string "achievement"]:12: attempt to index field `?' (a nil value)
SYSERR: Jun 17 13:08:33 :: WriteRunningStateToSyserr: LUA_ERROR: quest achievement.start click
|
|
|
06/18/2014, 20:32
|
#77
|
elite*gold: 75
Join Date: Mar 2012
Posts: 2,655
Received Thanks: 742
|
Neues Problem:
PHP Code:
SYSERR: Jun 18 20:14:28 :: WriteRunningStateToSyserr: LUA_ERROR: quest achievement.start click SYSERR: Jun 18 20:14:28 :: RunState: LUA_ERROR: [string "achievement"]:9: attempt to perform arithmetic on local `p' (a nil value) WITH ERRORCODE 1 SYSERR: Jun 18 20:14:28 :: RunState: LUA_STATE: index 0 ref 3
Zeile 7-9 vom Quest:
PHP Code:
cmdchat("getinputbegin") local ret = input(cmdchat(par)) cmdchat("getinputend")
|
|
|
06/18/2014, 23:20
|
#78
|
elite*gold: 0
Join Date: Jul 2012
Posts: 68
Received Thanks: 2
|
because this error.
in sysserr in cliente
0618 16:15:18487 :: Unknown Server Command setachieve 130 | setachieve
0618 16:15:18487 :: Unknown Server Command achievement Perro Salvaje_getötet#1%130 | achievement
:S
|
|
|
06/19/2014, 00:33
|
#79
|
elite*gold: 75
Join Date: Mar 2012
Posts: 2,655
Received Thanks: 742
|
add the all functions and last site is the reuploa
|
|
|
06/19/2014, 05:41
|
#80
|
elite*gold: 0
Join Date: Jul 2012
Posts: 68
Received Thanks: 2
|
Quote:
Originally Posted by .Despero™
add the all functions and last site is the reuploa
|
Thank you. but did not understand
|
|
|
06/20/2014, 06:48
|
#81
|
elite*gold: 0
Join Date: Jul 2012
Posts: 68
Received Thanks: 2
|
Solvent thx
|
|
|
06/24/2014, 02:57
|
#82
|
elite*gold: 14
Join Date: Jul 2010
Posts: 372
Received Thanks: 85
|
Da sieht man es mal wieder, wozu sich die mühe machen und eigene Sachen entwerfen wenn sie im Endeffekt eh geklaut werden und jeder sich Arme und Beine ausreißt um es als erstes zu klauen, wirklich schade..
Nice work, schade ums Release..
|
|
|
06/25/2014, 14:29
|
#83
|
elite*gold: 0
Join Date: Mar 2010
Posts: 1,086
Received Thanks: 557
|
Quote:
Originally Posted by .Seriox™
Da sieht man es mal wieder, wozu sich die mühe machen und eigene Sachen entwerfen wenn sie im Endeffekt eh geklaut werden und jeder sich Arme und Beine ausreißt um es als erstes zu klauen, wirklich schade..
Nice work, schade ums Release..
|
Deshalb kommt nur noch Mist in der M2 Szenerie raus. Weil sich niemand mehr die mühe macht
|
|
|
06/30/2014, 12:51
|
#84
|
elite*gold: 0
Join Date: Feb 2012
Posts: 17
Received Thanks: 15
|
Quote:
Originally Posted by .Despero™
Das hab ich jetzt gelöst wenn ich was kaufe kommt was falsches also ein anderes Item .. und das hier:
shop_item
shop:
Quest:
Ingame:
|
Switch the def OpenQuestWindow in game.py
Paste this
def OpenQuestWindow(self, skin, idx):
if constInfo.INPUT_IGNORE == 1:
return
else:
self.interface.OpenQuestWindow(skin, idx)
And they're not quest window
|
|
|
05/23/2016, 22:41
|
#85
|
elite*gold: 0
Join Date: Aug 2010
Posts: 197
Received Thanks: 32
|
Achievement Shop
Moin ,
ich kann irgendwie kein Item kaufen Ingame.
Bild:
Meine uishop :
PHP Code:
import net import player import item import snd import shop import net import wndMgr import app import chat
import ui import uiCommon import mouseModule import localeInfo import constInfo import event
################################################################################################### ## Shop class ShopDialog(ui.ScriptWindow):
def __init__(self): ui.ScriptWindow.__init__(self) self.tooltipItem = 0 self.xShopStart = 0 self.yShopStart = 0 self.questionDialog = None self.popup = None self.itemBuyQuestionDialog = None self.shopPrice = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
def __del__(self): ui.ScriptWindow.__del__(self) def __GetRealIndex(self, i): return self.tabIdx * shop.SHOP_SLOT_COUNT + i
def Refresh(self): getItemID=shop.GetItemID getItemCount=shop.GetItemCount setItemID=self.itemSlotWindow.SetItemSlot for i in xrange(shop.SHOP_SLOT_COUNT): idx = self.__GetRealIndex(i) itemCount = getItemCount(idx) if itemCount <= 1: itemCount = 0 setItemID(i, getItemID(idx), itemCount)
wndMgr.RefreshSlot(self.itemSlotWindow.GetWindowHandle())
def SetShopPrice(self, arg): slots = arg.split("|") for i in xrange(40): self.shopPrice[i] = int(slots[i])
def SetItemData(self, pos, itemID, itemCount, itemPrice): shop.SetItemData(pos, itemID, itemCount, itemPrice)
def LoadDialog(self): try: PythonScriptLoader = ui.PythonScriptLoader() PythonScriptLoader.LoadScriptFile(self, "UIScript/shopdialog.py") except: import exception exception.Abort("ShopDialog.LoadDialog.LoadObject")
smallTab1 = None smallTab2 = None smallTab3 = None middleTab1 = None middleTab2 = None try: GetObject = self.GetChild self.itemSlotWindow = GetObject("ItemSlot") self.btnBuy = GetObject("BuyButton") self.btnSell = GetObject("SellButton") self.btnClose = GetObject("CloseButton") self.titleBar = GetObject("TitleBar") middleTab1 = GetObject("MiddleTab1") middleTab2 = GetObject("MiddleTab2") smallTab1 = GetObject("SmallTab1") smallTab2 = GetObject("SmallTab2") smallTab3 = GetObject("SmallTab3") except: import exception exception.Abort("ShopDialog.LoadDialog.BindObject")
self.itemSlotWindow.SetSlotStyle(wndMgr.SLOT_STYLE_NONE) self.itemSlotWindow.SAFE_SetButtonEvent("LEFT", "EMPTY", self.SelectEmptySlot) self.itemSlotWindow.SAFE_SetButtonEvent("LEFT", "EXIST", self.SelectItemSlot) self.itemSlotWindow.SAFE_SetButtonEvent("RIGHT", "EXIST", self.UnselectItemSlot)
self.itemSlotWindow.SetOverInItemEvent(ui.__mem_func__(self.OverInItem)) self.itemSlotWindow.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
self.btnBuy.SetToggleUpEvent(ui.__mem_func__(self.CancelShopping)) self.btnBuy.SetToggleDownEvent(ui.__mem_func__(self.OnBuy))
self.btnSell.SetToggleUpEvent(ui.__mem_func__(self.CancelShopping)) self.btnSell.SetToggleDownEvent(ui.__mem_func__(self.OnSell))
self.btnClose.SetEvent(ui.__mem_func__(self.AskClosePrivateShop))
self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
self.smallRadioButtonGroup = ui.RadioButtonGroup.Create([[smallTab1, lambda : self.OnClickTabButton(0), None], [smallTab2, lambda : self.OnClickTabButton(1), None], [smallTab3, lambda : self.OnClickTabButton(2), None]]) self.middleRadioButtonGroup = ui.RadioButtonGroup.Create([[middleTab1, lambda : self.OnClickTabButton(0), None], [middleTab2, lambda : self.OnClickTabButton(1), None]])
self.__HideMiddleTabs() self.__HideSmallTabs() self.tabIdx = 0 self.coinType = shop.SHOP_COIN_TYPE_GOLD self.Refresh() def __ShowBuySellButton(self): self.btnBuy.Show() self.btnSell.Show() def __ShowMiddleTabs(self): self.middleRadioButtonGroup.Show() def __ShowSmallTabs(self): self.smallRadioButtonGroup.Show() def __HideBuySellButton(self): self.btnBuy.Hide() self.btnSell.Hide() def __HideMiddleTabs(self): self.middleRadioButtonGroup.Hide() def __HideSmallTabs(self): self.smallRadioButtonGroup.Hide() def __SetTabNames(self): if shop.GetTabCount() == 2: self.middleRadioButtonGroup.SetText(0, shop.GetTabName(0)) self.middleRadioButtonGroup.SetText(1, shop.GetTabName(1)) elif shop.GetTabCount() == 3: self.smallRadioButtonGroup.SetText(0, shop.GetTabName(0)) self.smallRadioButtonGroup.SetText(1, shop.GetTabName(1)) self.smallRadioButtonGroup.SetText(2, shop.GetTabName(2)) def Destroy(self): self.shopPrice = None constInfo.IsItemShop = 0
self.Close() self.ClearDictionary()
self.tooltipItem = 0 self.itemSlotWindow = 0 self.btnBuy = 0 self.btnSell = 0 self.btnClose = 0 self.titleBar = 0 self.questionDialog = None self.popup = None
def Open(self, vid):
isPrivateShop = False isMainPlayerPrivateShop = False
import chr if chr.IsNPC(vid): isPrivateShop = False else: isPrivateShop = True
if player.IsMainCharacterIndex(vid):
isMainPlayerPrivateShop = True
self.btnBuy.Hide() self.btnSell.Hide() self.btnClose.Show()
else:
isMainPlayerPrivateShop = False
self.btnBuy.Show() self.btnSell.Show() self.btnClose.Hide()
shop.Open(isPrivateShop, isMainPlayerPrivateShop)
self.tabIdx = 0
if isPrivateShop: self.__HideMiddleTabs() self.__HideSmallTabs() else: if shop.GetTabCount() == 1: self.__ShowBuySellButton() self.__HideMiddleTabs() self.__HideSmallTabs() elif shop.GetTabCount() == 2: self.__HideBuySellButton() self.__ShowMiddleTabs() self.__HideSmallTabs() self.__SetTabNames() self.middleRadioButtonGroup.OnClick(0) elif shop.GetTabCount() == 3: self.__HideBuySellButton() self.__HideMiddleTabs() self.__ShowSmallTabs() self.__SetTabNames() self.middleRadioButtonGroup.OnClick(1)
self.Refresh() self.SetTop() self.Show()
(self.xShopStart, self.yShopStart, z) = player.GetMainCharacterPosition()
def Close(self): self.shopPrice = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] constInfo.IsItemShop = 0 if self.itemBuyQuestionDialog: self.itemBuyQuestionDialog.Close() self.itemBuyQuestionDialog = None constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0) if self.questionDialog: self.OnCloseQuestionDialog() shop.Close() net.SendShopEndPacket() self.CancelShopping() self.tooltipItem.HideToolTip() self.Hide()
def GetIndexFromSlotPos(self, slotPos): return self.tabIdx * shop.SHOP_SLOT_COUNT + slotPos def OnClickTabButton(self, idx): self.tabIdx = idx self.Refresh() def AskClosePrivateShop(self): questionDialog = uiCommon.QuestionDialog() questionDialog.SetText(localeInfo.PRIVATE_SHOP_CLOSE_QUESTION) questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnClosePrivateShop)) questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) questionDialog.Open() self.questionDialog = questionDialog
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
return True
def OnClosePrivateShop(self): net.SendChatPacket("/close_shop") self.OnCloseQuestionDialog() return True
def OnPressEscapeKey(self): self.Close() return True
def OnPressExitKey(self): self.Close() return True
def OnBuy(self): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO) app.SetCursor(app.BUY) self.btnSell.SetUp()
def OnSell(self): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_SELL_INFO) app.SetCursor(app.SELL) self.btnBuy.SetUp()
def CancelShopping(self): self.btnBuy.SetUp() self.btnSell.SetUp() app.SetCursor(app.NORMAL)
def __OnClosePopupDialog(self): self.pop = None constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
## 용혼석 팔리는 기능 추가. def SellAttachedItem(self):
if shop.IsPrivateShop(): mouseModule.mouseController.DeattachObject() return
attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedCount = mouseModule.mouseController.GetAttachedItemCount() if localeInfo.IsBRAZIL() == 0: attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex() if player.SLOT_TYPE_INVENTORY == attachedSlotType or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType:
if localeInfo.IsBRAZIL(): itemIndex = player.GetItemIndex(attachedSlotPos) item.SelectItem(itemIndex) else: item.SelectItem(attachedItemIndex) if item.IsAntiFlag(item.ANTIFLAG_SELL): popup = uiCommon.PopupDialog() popup.SetText(localeInfo.SHOP_CANNOT_SELL_ITEM) popup.SetAcceptEvent(self.__OnClosePopupDialog) popup.Open() self.popup = popup return itemtype = player.INVENTORY
if localeInfo.IsBRAZIL() == 0: if player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType: itemtype = player.DRAGON_SOUL_INVENTORY if player.IsValuableItem(itemtype, attachedSlotPos):
itemPrice = item.GetISellItemPrice()
if item.Is1GoldItem(): itemPrice = attachedCount / itemPrice / 5 else: itemPrice = itemPrice * max(1, attachedCount) / 5
itemName = item.GetItemName()
questionDialog = uiCommon.QuestionDialog() questionDialog.SetText(localeInfo.DO_YOU_SELL_ITEM(itemName, attachedCount, itemPrice))
questionDialog.SetAcceptEvent(lambda arg1=attachedSlotPos, arg2=attachedCount, arg3 = itemtype: self.OnSellItem(arg1, arg2, arg3)) questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) questionDialog.Open() self.questionDialog = questionDialog constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
else: self.OnSellItem(attachedSlotPos, attachedCount, itemtype)
else: snd.PlaySound("sound/ui/loginfail.wav")
mouseModule.mouseController.DeattachObject()
def OnSellItem(self, slotPos, count, itemtype): net.SendShopSellPacketNew(slotPos, count, itemtype) snd.PlaySound("sound/ui/money.wav") self.OnCloseQuestionDialog()
def NieMamPP(self): self.popup = uiCommon.PopupDialog() self.popup.SetText("Du hast nicht genug A-Punkte") self.popup.SetAcceptEvent(self.__OnClosePopupDialog) self.popup.Open()
def OnCloseQuestionDialog(self): if not self.questionDialog: return self.questionDialog.Close() self.questionDialog = None constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
def SelectEmptySlot(self, selectedSlotPos):
isAttached = mouseModule.mouseController.isAttached() if isAttached: self.SellAttachedItem()
def UnselectItemSlot(self, selectedSlotPos): if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1: return if shop.IsPrivateShop(): self.AskBuyItem(selectedSlotPos) else: if constInfo.IsItemShop == 1: self.BuyFromIS(selectedSlotPos) else: net.SendShopBuyPacket(self.__GetRealIndex(selectedSlotPos))
def SelectItemSlot(self, selectedSlotPos): if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1: return
isAttached = mouseModule.mouseController.isAttached() selectedSlotPos = self.__GetRealIndex(selectedSlotPos) if isAttached: self.SellAttachedItem()
else:
if True == shop.IsMainPlayerPrivateShop(): return
curCursorNum = app.GetCursor() if app.BUY == curCursorNum: if constInfo.IsItemShop == 1: self.AskBuyFromIS(selectedSlotPos) else: self.AskBuyItem(selectedSlotPos)
elif app.SELL == curCursorNum: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_SELL_INFO)
else: selectedItemID = shop.GetItemID(selectedSlotPos) itemCount = shop.GetItemCount(selectedSlotPos)
type = player.SLOT_TYPE_SHOP if shop.IsPrivateShop(): type = player.SLOT_TYPE_PRIVATE_SHOP
mouseModule.mouseController.AttachObject(self, type, selectedSlotPos, selectedItemID, itemCount) mouseModule.mouseController.SetCallBack("INVENTORY", ui.__mem_func__(self.DropToInventory)) snd.PlaySound("sound/ui/pick.wav")
def DropToInventory(self): attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() self.AskBuyItem(attachedSlotPos, constInfo.IsItemShop)
def BuyFromIS(self, slotPos, type=0): constInfo.INPUT_DATA = slotPos event.QuestButtonClick(constInfo.IS_QUEST) if type == 1: self.itemBuyQuestionDialog.Close() self.itemBuyQuestionDialog = None
def AskBuyFromIS(self, slotPos): itemIndex = shop.GetItemID(slotPos) itemPrice = shop.GetItemPrice(slotPos) itemCount = shop.GetItemCount(slotPos)
item.SelectItem(itemIndex) itemName = item.GetItemName()
itemBuyQuestionDialog = uiCommon.QuestionDialog() itemBuyQuestionDialog.SetText("Czy chcesz kupic " + itemName + " za " + (self.NumberToMoneyString(self.shopPrice[slotPos])[:-5]) + " TR?") itemBuyQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.BuyFromIS(slotPos, 1)) itemBuyQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.AnswerBuyItem(arg, type)) itemBuyQuestionDialog.Open() itemBuyQuestionDialog.pos = slotPos self.itemBuyQuestionDialog = itemBuyQuestionDialog
def AskBuyItem(self, slotPos, type=0): if type == 1: self.AskBuyFromIS(slotPos) return slotPos = self.__GetRealIndex(slotPos) itemIndex = shop.GetItemID(slotPos) itemPrice = shop.GetItemPrice(slotPos) itemCount = shop.GetItemCount(slotPos)
item.SelectItem(itemIndex) itemName = item.GetItemName()
itemBuyQuestionDialog = uiCommon.QuestionDialog() itemBuyQuestionDialog.SetText(localeInfo.DO_YOU_BUY_ITEM(itemName, itemCount, localeInfo.NumberToMoneyString(itemPrice))) itemBuyQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerBuyItem(arg, type)) itemBuyQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerBuyItem(arg, type)) itemBuyQuestionDialog.Open() itemBuyQuestionDialog.pos = slotPos self.itemBuyQuestionDialog = itemBuyQuestionDialog constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
def AnswerBuyItem(self, flag, type):
if flag: pos = self.itemBuyQuestionDialog.pos if type == 0: net.SendShopBuyPacket(pos) else: self.BuyFromIS(pos)
self.itemBuyQuestionDialog.Close() self.itemBuyQuestionDialog = None constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
def SetItemToolTip(self, tooltipItem): self.tooltipItem = tooltipItem
def OverInItem(self, slotIndex): slotIndex = self.__GetRealIndex(slotIndex) if mouseModule.mouseController.isAttached(): return
if 0 != self.tooltipItem: if constInfo.IsItemShop == 0: if shop.SHOP_COIN_TYPE_GOLD == shop.GetTabCoinType(self.tabIdx): self.tooltipItem.SetShopItem(slotIndex, 0, 0) else: self.tooltipItem.SetShopItemBySecondaryCoin(slotIndex) else: self.tooltipItem.SetShopItem(slotIndex, self.shopPrice[slotIndex], 1)
def OverOutItem(self): if 0 != self.tooltipItem: self.tooltipItem.HideToolTip()
def OnUpdate(self):
USE_SHOP_LIMIT_RANGE = 1000
(x, y, z) = player.GetMainCharacterPosition() if abs(x - self.xShopStart) > USE_SHOP_LIMIT_RANGE or abs(y - self.yShopStart) > USE_SHOP_LIMIT_RANGE: self.Close()
class MallPageDialog(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self)
def __del__(self): ui.ScriptWindow.__del__(self)
def Destroy(self): self.ClearDictionary()
def Open(self): scriptLoader = ui.PythonScriptLoader() scriptLoader.LoadScriptFile(self, "uiscript/mallpagedialog.py")
self.GetChild("titlebar").SetCloseEvent(ui.__mem_func__(self.Close)) (x, y)=self.GetGlobalPosition() x+=10 y+=30 MALL_PAGE_WIDTH = 600 MALL_PAGE_HEIGHT = 480 app.ShowWebPage( "http://metin2.co.kr/08_mall/game_mall/login_fail.htm", (x, y, x+MALL_PAGE_WIDTH, y+MALL_PAGE_HEIGHT))
self.Lock() self.Show() def Close(self): app.HideWebPage() self.Unlock() self.Hide() def OnPressEscapeKey(self): self.Close() return True
uiinventory.py :
PHP Code:
import ui import player import mouseModule import net import app import snd import item import player import chat import grp import uiScriptLocale import uiRefine import uiAttachMetin import uiPickMoney import uiCommon import uiPrivateShopBuilder # 개인상점 열동안 ItemMove 방지 import localeInfo import constInfo import ime import event import wndMgr import config
ITEM_MALL_BUTTON_ENABLE = True
ITEM_FLAG_APPLICABLE = 1 << 14
class CostumeWindow(ui.ScriptWindow):
def __init__(self, wndInventory): import exception if not app.ENABLE_COSTUME_SYSTEM: exception.Abort("What do you do?") return
if not wndInventory: exception.Abort("wndInventory parameter must be set to InventoryWindow") return ui.ScriptWindow.__init__(self)
self.isLoaded = 0 self.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: return
self.isLoaded = 1
try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "UIScript/CostumeWindow.py") except: import exception exception.Abort("CostumeWindow.LoadWindow.LoadObject")
try: wndEquip = self.GetChild("CostumeSlot") self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close)) except: import exception exception.Abort("CostumeWindow.LoadWindow.BindObject")
## Equipment wndEquip.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 = wndEquip
def RefreshCostumeSlot(self): getItemVNum=player.GetItemIndex for i in xrange(item.COSTUME_SLOT_COUNT): slotNumber = item.COSTUME_SLOT_START + i self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
self.wndEquip.RefreshSlot() class BeltInventoryWindow(ui.ScriptWindow):
def __init__(self, wndInventory): import exception if not app.ENABLE_NEW_EQUIPMENT_SYSTEM: exception.Abort("What do you do?") return
if not wndInventory: exception.Abort("wndInventory parameter must be set to InventoryWindow") return ui.ScriptWindow.__init__(self)
self.isLoaded = 0 self.wndInventory = wndInventory; self.wndBeltInventoryLayer = None self.wndBeltInventorySlot = None self.expandBtn = None self.minBtn = None
self.__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 + 241 def 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: return
self.isLoaded = 1
try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "koriscript/BeltInventoryWindow.py") except: import exception exception.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 + i wndBeltInventorySlot.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 exception exception.Abort("CostumeWindow.LoadWindow.BindObject")
## Equipment wndBeltInventorySlot.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 = wndBeltInventorySlot
def RefreshSlot(self): getItemVNum=player.GetItemIndex for i in xrange(item.BELT_INVENTORY_SLOT_COUNT): slotNumber = item.BELT_INVENTORY_SLOT_START + i self.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 = None tooltipItem = None wndCostume = None wndBelt = None dlgPickMoney = None sellingSlotNumber = -1 isLoaded = 0 inventoryPageIndex = 0 isOpenedCostumeWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 코스츔이 열려있었는지 여부-_-; 네이밍 ㅈㅅ isOpenedBeltWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅ
def __init__(self): ui.ScriptWindow.__init__(self) self.OpenBoniSwitcherEvent = lambda : None 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 = interface def __LoadWindow(self): if self.isLoaded == 1: return
self.isLoaded = 1
try: 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 exception exception.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.wndMds = self.GetChild("Mds") self.wndMdsSlot = self.GetChild("Mds_Slot") self.wndPremium = self.GetChild("Premium") self.wndPremiumSlot = self.GetChild("Premium_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"))
if self.costumeButton and not app.ENABLE_COSTUME_SYSTEM: self.costumeButton.Hide() self.costumeButton.Destroy() self.costumeButton = 0
# Belt Inventory Window self.wndBelt = None if app.ENABLE_NEW_EQUIPMENT_SYSTEM: self.wndBelt = BeltInventoryWindow(self) except: import exception exception.Abort("InventoryWindow.LoadWindow.BindObject")
## Item wndItem.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))
## Equipment wndEquip.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))
## PickMoneyDialog dlgPickMoney = uiPickMoney.PickMoneyDialog() dlgPickMoney.LoadDialog() dlgPickMoney.Hide()
## RefineDialog self.refineDialog = uiRefine.RefineDialog() self.refineDialog.Hide()
## AttachMetinDialog self.attachMetinDialog = uiAttachMetin.AttachMetinDialog() self.attachMetinDialog.Hide()
## MoneySlot self.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[0].Down() self.equipmentTab[0].Hide() self.equipmentTab[1].Hide() self.listHighlightedSlot = []
self.wndItem = wndItem self.wndEquip = wndEquip self.dlgPickMoney = dlgPickMoney
# MallButton if self.mallButton: self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))
if self.DSSButton: self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton)) # Costume Button if self.costumeButton: self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))
self.wndCostume = None #####
## Refresh self.SetInventoryPage(0) self.SetEquipmentPage(0) self.RefreshItemSlot() self.RefreshStatus()
def Destroy(self): self.ClearDictionary()
self.dlgPickMoney.Destroy() self.dlgPickMoney = 0
self.refineDialog.Destroy() self.refineDialog = 0
self.attachMetinDialog.Destroy() self.attachMetinDialog = 0
self.tooltipItem = None self.wndItem = 0 self.wndEquip = 0 self.dlgPickMoney = 0 self.wndMoney = 0 self.wndMoneySlot = 0 self.wndMds = 0 self.wndMdsSlot = 0 self.wndPremium = 0 self.wndPremiumSlot = 0 self.questionDialog = None self.drag = None self.mallButton = None self.DSSButton = None self.interface = None
if self.wndCostume: self.wndCostume.Destroy() self.wndCostume = 0 if self.wndBelt: self.wndBelt.Destroy() self.wndBelt = None self.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.isOpenedBeltWindowWhenClosingInventory self.wndBelt.Close() if self.dlgPickMoney: self.dlgPickMoney.Close()
self.OnCloseQuestionDialog() wndMgr.Hide(self.hWnd) def Close(self): self.Hide()
def SetInventoryPage(self, page): if self.inventoryPageIndex != page: self.__HighlightSlot_ClearCurrentPage() self.inventoryPageIndex = page for i in xrange(5): if i != self.inventoryPageIndex: self.inventoryTab[i].SetUp() self.inventoryTab[self.inventoryPageIndex].Down() self.RefreshBagSlotWindow()
def SetEquipmentPage(self, page): self.equipmentPageIndex = page self.equipmentTab[1-page].SetUp() self.RefreshEquipSlotWindow()
def ClickMallButton(self): print "click_mall_button" net.SendChatPacket("/click_mall")
# DSSButton def 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: return
self.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.itemGlobalSlotIndex selectedItemVNum = 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 local
return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
def RefreshBagSlotWindow(self): getItemVNum=player.GetItemIndex getItemCount=player.GetItemCount setItemVNum=self.wndItem.SetItemSlot for i in xrange(player.INVENTORY_PAGE_SIZE): slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i) itemCount = getItemCount(slotNumber) # itemCount == 0이면 소켓을 비운다. if 0 == itemCount: self.wndItem.ClearSlot(i) continue elif 1 == itemCount: itemCount = 0 itemVnum = 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_SIZE if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex: slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex isActivated = 0 != metinSocket[0] if isActivated: self.wndItem.ActivateSlot(slotNumber) potionType = 0; if constInfo.IS_AUTO_POTION_HP(itemVnum): potionType = player.AUTO_POTION_TYPE_HP elif constInfo.IS_AUTO_POTION_SP(itemVnum): potionType = player.AUTO_POTION_TYPE_SP usedAmount = int(metinSocket[1]) totalAmount = int(metinSocket[2]) player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i)) else: self.wndItem.DeactivateSlot(slotNumber) self.__HighlightSlot_RefreshCurrentPage() self.wndItem.RefreshSlot()
if self.wndBelt: self.wndBelt.RefreshSlot()
def RefreshEquipSlotWindow(self): getItemVNum=player.GetItemIndex getItemCount=player.GetItemCount setItemVNum=self.wndEquip.SetItemSlot for i in xrange(player.EQUIPMENT_PAGE_COUNT): slotNumber = player.EQUIPMENT_SLOT_START + i itemCount = getItemCount(slotNumber) if itemCount <= 1: itemCount = 0 setItemVNum(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 + i itemCount = getItemCount(slotNumber) if itemCount <= 1: itemCount = 0 setItemVNum(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 UpdatePremiumInSlot(self): import constInfo value = str(constInfo.ACHIEVEMENT_POINTS) self.wndPremium.SetText(str(constInfo.ACHIEVEMENT_POINTS) + " A-Punkte") def OnUpdate(self): import constInfo self.wndMds.SetText(str(constInfo.mds) + " Coins")
def SetItemToolTip(self, tooltipItem): self.tooltipItem = tooltipItem # 슬롯 highlight 관련 def __HighlightSlot_ClearCurrentPage(self): for i in xrange(self.wndItem.GetSlotCount()): slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i) if slotNumber in self.listHighlightedSlot: self.wndItem.DeactivateSlot(i) self.listHighlightedSlot.remove(slotNumber) def __HighlightSlot_RefreshCurrentPage(self): for i in xrange(self.wndItem.GetSlotCount()): slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i) if slotNumber in self.listHighlightedSlot: self.wndItem.ActivateSlot(i) def HighlightSlot(self, slot): if not slot in self.listHighlightedSlot: self.listHighlightedSlot.append (slot) # 슬롯 highlight 관련 끝
def 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 Event def SelectEmptySlot(self, selectedSlotPos): if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1: return
selectedSlotPos = 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: if constInfo.IsItemShop == 0: net.SendShopBuyPacket(attachedSlotPos) else: import uiShop self.wndShop = uiShop.ShopDialog() self.wndShop.BuyFromIS(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: return
itemSlotIndex = 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: return elif srcItemVID == player.GetItemIndex(dstItemSlotPos): self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0) return if 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 = itemSlotPos itemIndex = player.GetItemIndex(itemSlotPos) itemCount = player.GetItemCount(itemSlotPos) self.sellingSlotitemIndex = itemIndex self.sellingSlotitemCount = itemCount
item.SelectItem(itemIndex) itemPrice = item.GetISellItemPrice()
if item.Is1GoldItem(): itemPrice = itemCount / itemPrice / 5 else: itemPrice = itemPrice * itemCount / 5
item.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 = itemCount
def 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: return
self.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) return
self.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 = scrollSlotPos self.questionDialog.targetPos = targetSlotPos
def 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: return
self.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) if overSlotPos in self.listHighlightedSlot: self.wndItem.DeactivateSlot(overSlotPos) self.listHighlightedSlot.remove(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) return self.ShowToolTip(overSlotPos)
def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos): "다른 아이템에 사용할 수 있는 아이템인가?"
if item.IsRefineScroll(srcItemVNum): return True elif item.IsMetin(srcItemVNum): return True elif item.IsDetachScroll(srcItemVNum): return True elif item.IsKey(srcItemVNum): return True elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE: return True else: if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE: return True return False
def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos): "대상 아이템에 사용할 수 있는가?"
if srcSlotPos == dstSlotPos: return False if srcItemVNum == player.GetItemIndex(dstSlotPos): if player.GetItemCount(dstSlotPos) < 200: return True elif item.IsRefineScroll(srcItemVNum): if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos): return True elif item.IsMetin(srcItemVNum): if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos): return True elif item.IsDetachScroll(srcItemVNum): if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos): return True elif item.IsKey(srcItemVNum): if player.CanUnlock(srcItemVNum, dstSlotPos): return True
elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE: return True
else: useType=item.GetUseType(srcItemVNum)
if "USE_CLEAN_SOCKET" == useType: if self.__CanCleanBrokenMetinStone(dstSlotPos): return True elif "USE_CHANGE_ATTRIBUTE" == useType: if self.__CanChangeItemAttrList(dstSlotPos): return True elif "USE_ADD_ATTRIBUTE" == useType: if self.__CanAddItemAttr(dstSlotPos): return True elif "USE_ADD_ATTRIBUTE2" == useType: if self.__CanAddItemAttr(dstSlotPos): return True elif "USE_ADD_ACCESSORY_SOCKET" == useType: if self.__CanAddAccessorySocket(dstSlotPos): return True elif "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, dstItemVNum
item.SelectItem(dstItemVNum) if item.ITEM_TYPE_BELT == item.GetItemType(): return True
return False
def __CanCleanBrokenMetinStone(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return False
item.SelectItem(dstItemVNum) if item.ITEM_TYPE_WEAPON != item.GetItemType(): return False
for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE: return True
return False
def __CanChangeItemAttrList(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return False
item.SelectItem(dstItemVNum) if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR): return False
for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemAttribute(dstSlotPos, i) != 0: return True
return False
def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return False
item.SelectItem(dstItemVNum)
if item.GetItemType() != item.ITEM_TYPE_ARMOR: return False
if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR): return False
curCount = player.GetItemMetinSocket(dstSlotPos, 0) maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()): return False if curCount>=maxCount: return False
return True
def __CanAddAccessorySocket(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return False
item.SelectItem(dstItemVNum)
if item.GetItemType() != item.ITEM_TYPE_ARMOR: return False
if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR): return False
curCount = player.GetItemMetinSocket(dstSlotPos, 0) maxCount = player.GetItemMetinSocket(dstSlotPos, 1) ACCESSORY_SOCKET_MAX_SIZE = 3 if maxCount >= ACCESSORY_SOCKET_MAX_SIZE: return False
return True
def __CanAddItemAttr(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return False
item.SelectItem(dstItemVNum) if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR): return False attrCount = 0 for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemAttribute(dstSlotPos, i) != 0: attrCount += 1
if attrCount<4: return True return False
def 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 True
def UseItemSlot(self, slotIndex): curCursorNum = app.GetCursor() if app.SELL == curCursorNum: return
if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS(): return
slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
if app.ENABLE_DRAGON_SOUL_SYSTEM: if self.wndDragonSoulRefine.IsShow(): self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1) return self.__UseItem(slotIndex) mouseModule.mouseController.DeattachObject() self.OverOutItem()
def SetOpenBoniSwitcherEvent(self, event): self.OpenBoniSwitcherEvent = ui.__mem_func__(event)
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 = slotIndex else: 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 = None
def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos): # 개인상점 열고 있는 동안 아이템 사용 방지 if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP) return
net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
def __SendUseItemPacket(self, slotPos): # 개인상점 열고 있는 동안 아이템 사용 방지 if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP) return
net.SendItemUsePacket(slotPos) def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount): # 개인상점 열고 있는 동안 아이템 사용 방지 if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP) return
net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount) def SetDragonSoulRefineWindow(self, wndDragonSoulRefine): if app.ENABLE_DRAGON_SOUL_SYSTEM: self.wndDragonSoulRefine = wndDragonSoulRefine def OnMoveWindow(self, x, y): # print "Inventory Global Pos : ", self.GetGlobalPosition() if self.wndBelt: # print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition() self.wndBelt.AdjustPositionAndSize()
syserr :
PHP Code:
0523 22:27:11210 :: Traceback (most recent call last):
0523 22:27:11210 :: File "uiInventory.py", line 635, in OnUpdate
0523 22:27:11210 :: AttributeError 0523 22:27:11210 :: : 0523 22:27:11210 :: 'int' object has no attribute 'SetText' 0523 22:27:11210 ::
Hab auch die shop auf 49 Name und 0
Und hab auch die shop_item auf 49 19 1
Ich kann beim Gemi auch Sachen kaufen nur mit den AP irgendwie nicht.
Hoffe es kann mir jemand helfen bekomme das schon
seit tagen nicht hin.
Skype : eristguterjunge_95
MFG
|
|
|
05/24/2016, 00:04
|
#86
|
elite*gold: 0
Join Date: Jul 2011
Posts: 20
Received Thanks: 3
|
Danke fürs release
|
|
|
|
|
Similar Threads
|
[Zwangs-Release]Aza Homepage
10/03/2013 - Metin2 PServer Guides & Strategies - 12 Replies
http://www.elitepvpers.com/forum/metin2-pserver-gu ides-strategies/2882600-zwangs-release-aza-homepag e-script.html
Die Version², wenn Aza damit ein Problem hat soll er sich bitte bei mir melden.
Screen:http://i.epvpimg.com/CuU3h.jpg
Download:https://mega.co.nz/#!Y8VTXQzS!biNiPBuWfN to14yQ1yG3sn9f6BNJQdneOmVRedixXuw
|
[Release] Zwangs Passwortänderung
07/20/2013 - Metin2 PServer Guides & Strategies - 26 Replies
Hallo e*pvp,
Da ja in letzter Zeit immer mehr Server gehackt werden und oftmals nur die account.sql released werden hatte ich vor einige Zeit mal das Skript für Shiro2 gemacht.
Es ist so aufgebaut das man die Account-ID braucht, das Passwort, ein Charakternamen und die Anzahl der Charaktere. Sollte alles stimmen wird das Passwort geändert und der Accountstatus geht zurück auf OK.
Ihr fügt die sysbugpwchange.php in eurem Pages Ordner ein. Ihr müsst ggf. anpassung an eurem Design machen....
|
[Zwangs-Release] Injashi Homepage
03/16/2013 - Metin2 PServer Guides & Strategies - 33 Replies
Hallo Leute, da ich gesehen habe das viele, sehr viele Leute meine Gekaufte Homepage Rippen und weiter verkaufen, sehe ich mich gezwungen diese nun öffentlich zu machen.
Es handelt sich, wie ihr Sicherlich schon um die Injashi Homepage von Chris ( iKyroja ), welche so Aussieht :
http://fc04.deviantart.net/fs71/f/2012/189/3/0/in jashi_webdesign_by_ikyroja-d56g85e.jpg
Diese Homepage bietet euch :
Komplette anpassung in HTML und CSS.
Ein Funktionierender und einfacher jQuery Slider.
|
[Re-Release]Achievementshop Quest
02/19/2012 - Metin2 PServer Guides & Strategies - 26 Replies
Joa, wie wohl damals bekannt wurde, wurde mein damaliger Server, der inzwischen nicht mehr existiert wohl einmal ausgeräumt.
Die Achievementshop Quest ist meine Quest, genauso wie damals der verbuggte Ranking Quest.
Werde nacher einfach meine Files releasen, da die ja anscheinend immernoch schön gekauft werden, sodass die, die ihr Geld da reingesteckt haben schön dumm aussehen dürfen ;)
Dazu überlege ich mir den Tradehack(Video mitsamt Thread folgt^^) zu publizieren.
Zum...
|
All times are GMT +2. The time now is 08:32.
|
|