6-7.opt vissza rakása 40K

Indította Zeratul, 2017-04-17, 07:08:24

Sziasztok!


A mai nap vissza akartam rakni a 6-7. optolót de nem sikerült, be került de nem ad hozzá bónuszt a tárgyakhoz és azt szeretném kérdezni hogy lehet orvosolni a hibát?


item_names.txt, item_proto, navicat, item_proto.txt, item_desc.txt, item_list-ben is bele került így nemtudom mi lehet a hiba?
Még kezdÅ' vagyok de igyekszek tanulni :-) !

Forrásban engedélyezve van a 6-7 opt?

item_protonál kb ilyen? 71051 眞·재가비서 ITEM_USE USE_SPECIAL 1 NONE STACKABLE | LOG | ITEM_APPLICABLE NONE NONE 100000 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
71052 眞·재경비서 ITEM_USE USE_SPECIAL 1 NONE STACKABLE | LOG | ITEM_APPLICABLE NONE NONE 500000 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0

71051 Ŕç°ćşńĽ­ ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
71052 Ŕç°ˇşńĽ­ ITEM_USE USE_ADD_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
Még kezdÅ' vagyok de igyekszek tanulni :-) !

2017-04-17, 07:48:58 #4 Utolsó szerkesztés: 2017-04-17, 07:52:46 Szerző: fabtam11
http://metin2hungary.net/index.php/topic,183898.msg967142.html#msg967142
emez rámutat arra h lehet USE_SPECIAL-ra kéne tenni amazt a kettőt és esetleg akkor működőképessé válnának.
de javíts ki, ha tévednék! :o

Az sem működik még engedélyezve is van
Még kezdÅ' vagyok de igyekszek tanulni :-) !


Nekem is volt vele bajom, de így fog működni.

KLIENS OLDALON ÍGY LEGYEN:

71051 Ŕç°ćşńĽ­ ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
71052 Ŕç°ˇşńĽ­ ITEM_USE USE_ADD_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0


SZERVER OLDALON ÍGY LEGYEN:

71051 Ŕç°ćşńĽ­ ITEM_USE USE_SPECIAL 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
71052 Ŕç°ˇşńĽ­ ITEM_USE USE_SPECIAL 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0

KLIENS OLDALON ÍGY LEGYEN:
Kód: [Kijelölés]71051 Ŕç°ćşńĽ­ ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
71052 Ŕç°ˇşńĽ­ ITEM_USE USE_ADD_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE |
Még kezdÅ' vagyok de igyekszek tanulni :-) !


én csak oda írtam amit te írtál hogy kliens oldal úgy legyen de kliens oldalon nem is úgy nézki az item_proto ezért kérdeztem vissza
Még kezdÅ' vagyok de igyekszek tanulni :-) !

Igen, azért kellene úgy megcsinálni, ahogy írtam.

A kliens részbe hogy kell megírni hogy működjön mert én így írtam meg :




<ItemDef Vnum="71051" Name="ňء¤Ŕç°ˇşńĽ­" LocalizedName="Tárgy Elvarázsolás" Type="3" SubType="10" Weight="0" Size="1" AntiFlags="74112" Flags="8196" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0"  />
<ItemDef Vnum="71052" Name="ňء¤Ŕç°ćşńĽ­" LocalizedName="Túlszárnyaló Tárgy" Type="3" SubType="10" Weight="0" Size="1" AntiFlags="74112" Flags="8196" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0"  />


Még kezdÅ' vagyok de igyekszek tanulni :-) !

nekem se jó, ráhúzom a fegyverre és piros ikon... hogy nem lehet ráhúzni =S

Feljebb leírtam, hogy kell megcsinálni. Nekem úgy működik.

Mivel kliensben az uiinventory.py fájl nem a valós flag értéket vizsgálva dönti el, hogy egy  tárgy használható-e a másik tárggyal vagy sem, hanem egy a fájlban előállított szám alapján, ami szinte mindenhol így van. A publikus dump_proto-k tartalmaznak olyan flag értékeket, amiket se a szerver, se a kliens nem használ, még csak definiálva sincs egyikben se, így a dump_proto a legtöbb tárgy flagját elrontja. Sőt! Még a proto bontók is ezekkel a hamis flag értékekkel lettek megírva, feltételezem a konvertáló programok is.

Itt a flag lista a dump_proto forrásából:
string arFlag[] = {
"ITEM_TUNABLE",
"ITEM_SAVE",
"ITEM_STACKABLE",
"COUNT_PER_1GOLD",
"ITEM_SLOW_QUERY",
"ITEM_UNIQUE",
"ITEM_MAKECOUNT",
"ITEM_IRREMOVABLE",
"CONFIRM_WHEN_USE",
"QUEST_USE",
"QUEST_USE_MULTIPLE",
"QUEST_GIVE",
"ITEM_QUEST",
"LOG",
"STACKABLE",
"SLOW_QUERY",
"REFINEABLE",
"IRREMOVABLE",
"ITEM_APPLICABLE"
};


Ebből az ITEM_QUEST, STACKABLE, SLOW_QUERY, REFINEABLE és az IRREMOVABLE mind duplikátumok, false értékek, amik eltolják az ITEM_APPLICABLE flag valódi értékét így az uiInventory.py fájlban megnevezett lokális változóban már nem azonos azzal, ami az item_proto-ban szerepel.

Ehhez hasonló elágazás van a kliens uiInventory.py fájljában mint ez:
elif player.GetItemFlags(srcSlotPos) & item.ITEM_FLAG_APPLICABLE) == item.ITEM_FLAG_APPLICABLE:
return True

Elméletileg három helyen:
__DropSrcItemToDestItemInInventory
__CanUseSrcItemToDstItem
__IsUsableItemToItem

Ez az én kliensemből való, látható, hogy nem egy lokális változó szerint vizsgálja a tárgy flagját, hanem a modul egy konstans értéke alapján, ami ennyi:
PyModule_AddIntConstant(poModule, "ITEM_FLAG_APPLICABLE", CItemData::ITEM_FLAG_APPLICABLE);


Azért ajánlott így használni akár ezt, akár más területen az efféle kódokat, mert ha kerül be egy új érték -isten tudja miért- a felsorolás közepébe, akkor nem lesz belőle baj, mert a lekérdezés a valódi értéket adja vissza, viszont ha lokálisan van megnevezve az egyik érték, aminek valójában már megnőtt az értéke, akkor már gond van, ha csak nem aktualizálod magadnak.

Erre az egész item_proto-s dologra is kell némi logikus gondolkodásmód, mi hogy és miért működik úgy ahogy. A leltár szintúgy, alapból egy ótvar az egész, de mindennek megvan a maga szerepe, még ha azt a szerver nem is használja az adott időben.

No persze, mint mindenre úgy erre is több megoldás lehetséges, én gyökerestül irtottam ki a férgesét ;D.
Bár érthetetlen miért nem folytatták azon elvet, hogy ha már ITEM_USE a tárgy akkor miért nem kapott külön subtype-ot? Ez is olyan fej/írás módszer, egyszer ez, egyszer az és kész is bughalom :o.

az elif részt kell űtírni akkor arra a PyModule-ra hogy működjön?
Még kezdÅ' vagyok de igyekszek tanulni :-) !

Akinek sikerült vissza rakni az tudna segíteni privátban vagy kirakjam azt amiket beraktam, hátha én írtam el valamit?
Még kezdÅ' vagyok de igyekszek tanulni :-) !