Metin2 Hungarian Forum

Metin2 => Szerver készítés => Privát szerverek => Segítség => A témát indította: TrueLev Dátum 2017-07-26, 12:06:17

Cím: Tárgy tárgya húzása
Írta: TrueLev Dátum 2017-07-26, 12:06:17
Sziasztok,

Azt akarom, hogyha egy bizonyos tárgyat egy másik tárgyra húzom, akkor ne piros négyzet legyen hanem sárga.
(Az akció aminek le kell futnia lefut, csak piros a négyzet tehát csak szépséghiba, de javítani szeretném)
Ezt hol és hogy lehetne pontosan beállítani pythonban?
Cím: Re:Tárgy tárgya húzása
Írta: [VIP]P3NG3R Dátum 2017-07-26, 12:18:21
uiInventory.py
__DropSrcItemToDestItemInInventory
__CanUseSrcItemToDstItem
__IsUsableItemToItem
Cím: Re:Tárgy tárgya húzása
Írta: TrueLev Dátum 2017-07-26, 12:25:08
Nem tudtam teljesen rájönni ezekbe mit, nem tudnál esetleg egy konkrét példát?
Pl 5-ös itemvnum cuccokat 6-os itemvnum cuccra húzva sárga legyen.
Cím: Re:Tárgy tárgya húzása
Írta: [VIP]P3NG3R Dátum 2017-07-26, 12:49:32
Először is ebben
__IsUsableItemToItem
meg kell adni h a kurzor "alatti" tárgy használható-e más tárgyakon, majd itt
__CanUseSrcItemToDstItem
azt hogy a tárgy használható-e azon a tárgyon, ahol a kurzor van.

def __IsUsableItemToItem(self, srcItemVnum, srcSlotPos):
if srcItemVnum == 5:
return True
elif....


def __CanUseSrcItemToDstItem(self, srcItemVnum, srcSlotPos, dstSlotPos):
if srcSlotPos == dstSlotPos:
return False

dstItemVnum = player.GetItemIndex(dstSlotPos)
dstItemCount = player.GetItemCount(dstSlotPos)
if srcItemVnum == dstItemVnum:
return player.IsFlagBySlot(player.INVENTORY, dstSlotPos, item.ITEM_FLAG_STACKABLE) and not player.IsAntiFlagBySlot(player.INVENTORY, dstSlotPos, item.ITEM_ANTIFLAG_STACK) and dstItemCount < player.GetItemStackMax(): #GetItemStackMax returns a value from serverside

if srcItemVnum == 5 and dstItemVnum == 6:
return True


Valahogy így. A stackos cuccost hagy ki az saját, nem fog működni a c++ rész nélkül :>.
Cím: Re:Tárgy tárgya húzása
Írta: TrueLev Dátum 2017-07-26, 13:02:56
Idézglobal name 'srcItemVnum' is not defined

Mind a kettőnél ott írja ahol van az if srcItemVnum == 5:


Szerk: Megvan, ez kell még bele:
srcItemVnum = player.GetItemIndex(srcSlotPos)
Ezt a kódok elejére illesztve működik, köszi :)
EhPortal 1.39 © 2025, WebDev