Item törlő

Indította xTryx, 2018-03-15, 15:25:50

Sziasztok beraktam ezt a csodálatos item törlő rendszert, ami nem nagyon szertne működni.


### ConstInfo.py

BorrarItems = {
"QID" : 0,
"BORRAR" : "",
}

### Game.py

En el __ServerCommand_Build, pegar esto:

"BORRAR" : self.ManagerBorrar,

Al final del game.py pegar esto:

def ManagerBorrar(self, cmd):
cmd = cmd.split("|")
if cmd[0] == "QID":
constInfo.BorrarItems["QID"] = int(cmd[1])
elif cmd[0] == "SEND":
net.SendQuestInputStringPacket(str(constInfo.BorrarItems["BORRAR"]))
constInfo.BorrarItems["BORRAR"] = ""
elif cmd[0] == "INPUT":
constInfo.INPUT_IGNORE = int(cmd[1])

### uiInventory.py

Debajo de

wndEquip = self.GetChild("EquipmentSlot")

Pegar esto:

wndBorrar = self.GetChild("BorrarSlot")

Debajo de:

self.costumeButton = self.GetChild2("CostumeButton")

Pegar:

self.borrar_items = self.GetChild2("BorrarItems")

Debajo de:

self.attachMetinDialog.Hide()

Pegar esto:

self.drag = ui.Bar()
self.drag.SetPosition(13+50,538)
self.drag.SetParent(self)
self.drag.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, 0.0))
self.drag.SetSize(32,32)
self.drag.OnMouseLeftButtonUp = lambda: self.Add_Item()
self.drag.Show()

wndBorrar.SetOverInItemEvent(ui.__mem_func__(self.OverBorrarIn))
wndBorrar.SetOverOutItemEvent(ui.__mem_func__(self.OverBorrarOut))

self.RemoveQuestion = uiCommon.QuestionDialog()
self.RemoveQuestion.SetAcceptEvent(lambda arg = TRUE: self.Borrar_Item(arg))
self.RemoveQuestion.SetCancelEvent(lambda arg = FALSE: self.Borrar_Item(arg))
self.RemoveQuestion.Close()

Debajo del def Close(self):

Pegar esto:

def OverBorrarIn(self):
self.ShowToolTip(0)

def OverBorrarOut(self):
self.tooltipItem.HideToolTip()

def Add_Item(self):
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()

# item.SelectItem(attachedSlotVnum)
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
item.SelectItem(attachedSlotVnum)
self.RemoveQuestion.SetText("żSeguro que quieres borrar "+str(item.GetItemName())+"?")
self.RemoveQuestion.Open()
constInfo.BorrarItems["BORRAR"] = ""
constInfo.BorrarItems["BORRAR"] = "BORRAR|"+str(attachedSlotPos)+"|"+str(attachedSlotVnum)
#chat.AppendChat(1, constInfo.BorrarItems["BORRAR"])

mouseModule.mouseController.DeattachObject()

def Borrar_Item(self, arg):
if arg:
event.QuestButtonClick(constInfo.BorrarItems["QID"])

self.RemoveQuestion.Close()

### locale/inventorywindow.py

Debajo de:

## Item Slot
{
"name" : "ItemSlot",
"type" : "grid_table",

"x" : 8,
"y" : 246,

"start_index" : 0,
"x_count" : 5,
"y_count" : 9,
"x_step" : 32,
"y_step" : 32,

"image" : "d:/ymir work/ui/public/Slot_Base.sub"
},

Pegar esto:

## Borar Items Slot
{
"name" : "BorrarItems",
"type" : "image",

"x" : 13,
"y" : 538,

"image" : "locale/es/ui/inventario/borrar_items.tga",

"children" :
(
{
"name" : "BorrarSlot",
"type" : "slot",

"x" : 0,
"y" : 0,

"width" : 32,
"height" : 32,

"slot" : (
{"index":0, "x":0, "y":0, "width":32, "height":32},
),
},
),
},


Elvileg minden rendben van a questet beraktam, szerveroldalt fordítottam, de hiába húzom rá a tárgyat még addig se jutok el hogy kiírja hogy akarom-e törölni. Öteletek?


Minek quest hozzá?  :o
Én forrásban írtam meg.

Nem tudom. Találtam, mondom kipróbálom.
A forrást meg csak olvasni tudom, meg picit szerkeszteni. Az írás még nem megy.

Am nem azért de questel ezt h lehetne?
Van olyan funkció h X-edik slotot törölje? Use v Take-nél van olyan h item.remove, de így nem hiszem h lehetséges lenne, ha csak nem nyúltak forrásba és írtak rá 1 funkciót, de akk már az egészet meg lehet benne írni.


### questlua_item.cpp

Debajo de la función item_remove (int item_remove(lua_State* L)), pegar esto:

int item_remove_stack(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();
if (item != NULL) {
if (q.GetCurrentCharacterPtr() == item->GetOwner()) {
ITEM_MANAGER::instance().RemoveItem(item);
} else {
sys_err("Tried to remove invalid item %p", get_pointer(item));
}
q.ClearCurrentItem();
}

return 0;
}

Debajo de:

{ "remove", item_remove },

Pegar esto:

{ "remove_stack", item_remove_stack },


ennyi van forrás részen

Van forrás piszkálás de azért még quest is mellé? ;D ;D
Mányifikó szisztöm 8)

Hát nem találtam jobbat :D

Minj csinálok tutot róla akk...

Azt megköszönném.


Ez nem tetszik neki.

Áh... az indítós struktúra lemaradt, javítom.

Én így csináltam :D
igaz nem nagy cucc meg nem is olyan "rendszer" stílusú, de működik. :D



quest item_destroy begin
state start begin
when 20095.take begin
say_title("Seon-Hae:")
say("")
say("Te tényleg ezt nekem szeretnéd adni? Köszönöm")
say("eladom és veszek belöle 1 vagy talán 2 sört.")
say("")
say_item_vnum(item.get_vnum())
say("")
wait()
say_reward("Most még meggondolhatod magad!")
say("")
local s = select("Igen akarom","Mégse")
if s == 1 then
syschat("Ezt a tárgyat adtad Seon-Haenak: "..item.get_name(item.get_vnum()))
item.remove()
end
end
when 20095.chat. "A szegénység!" begin
say_title("Seon-Hae:")
say("")
say("Üdvözöllek "..pc.get_name().."! ")
say("Ha van bármi felesleges tárgyad amitől meg szeretnél")
say("válni akkor kérlek csak")
say_reward("húzd rám azt a tárgyat!")
end
end
end

Persze meg lehet, de így bármikor tudsz, nem csak bizonyos npc-nél.

Idézetet írta: 5310pati Dátum 2018-03-16, 14:12:48
Persze meg lehet, de így bármikor tudsz, nem csak bizonyos npc-nél.

Egy kis teleportálásba meg A-ból B-be menetelben tudtommal még nem halt bele senki. :D

Nem, de ha vkinek nem tetszik vmi otthagyja a szervert :D
De ha már itt tartunk felesleges eldobhatatlan, eladhatatlan, stb. tárgyakat rásózni a playerekre és nincs szükség ilyen rendszerre.

Vagy ha mégis ilyen, akkor meg legyen olyan éréke, hogy ne akarjanak megszabadulni tőle... ???
"Tisztelet a kivételnek! Mindig tisztelet a kivételnek!"
"KezdÅ' vagyok, ne nézz le... (:"