Nem láttál még ilyet az fix! ( Bónusz eltűnés )

Indította Logan, 2018-03-16, 12:17:22

2018-03-16, 12:17:22 Utolsó szerkesztés: 2018-03-18, 21:43:44 Szerző: Logan
Sziasztok!

Nagyon megvagyok lőve egy igen egyedi és kínos hibával.
Sajnos bónuszok tűnnek el a szerveremen és akárhányszor kitudom produkálni a hibajelenséget!

Mikor tűnik el a bónusz:
-Karakter cserekor/kijelentkezéskor
-Teleportáláskor

A bónusz megmarad ha:
-Kidobod a tárgyat a földre
-Vagy ha beteszed raktárba

Itt van egy videó róla hogy vizuálisan is lássátok miről lenne szó:
https://www.youtube.com/watch?v=9I6-7CQCS1E

Én azt sejtem hogy itt valami az Inventory-val fog hibádzani.
Van bent a szerverben két "rendszer":
-A Slot mark rendszer ami megjelöli az NPC-nek nem átadható tárgyakat
-Meg az a rendszer ami kijelöli azokat a tárgyakat amit vásároltunk, vagy felvettük a földről és még nem láttuk

A MYSQL részt már átnéztem az item_attr és az item_attr_rare táblák eredetiek és nincs bajuk.

Bármilyen segítő szót/tanácsot meghallgatok és megis köszönöm!

Tehát bent van a highlight system és az inventory slot marking system?

Attól nem megy tönkre a bónusz, hiszen ahhoz nincs semmilyen köze sem a dolognak.


Nekem a 6. kövektől jött elő ilyen színtű hibám, de rájöttem, hogy miért.
Először is sorrendnek kell lennie az player.item_attr táblában, melyben a bónuszoknak sorban kell lennie. (Unknown type xy). Ilyen bónuszaim voltak.

A te hibádra az lehet a megoldás, hogy valamiért az item táblád nem menti el rendesen a bónuszt, de ezt sysser-be jelzi a DB ha nem jó.

2018-03-16, 18:03:53 #2 Utolsó szerkesztés: 2018-03-16, 18:15:23 Szerző: Logan
Sziasztok!

Bővebb infókat tudtam hozni, amikor a bónuszokat ráhúzom a fegyverre azt még helyesen elmenti az item táblába a szerver egészen attrtype0-tól az utolsóig.
De amikor relog-olok visszaállítja az összes értéket 0-ra az elejétől a végéig, a kövek bennemaradnak a tárgyakban, azokkal nem hülyéskedik.

Sima db syslog ezt írja:
Mar 16 18:06:51.701852 :: [PLAYER_LOAD] ID [ST]Logan pid 68712 gold 1302192720
Mar 16 18:06:51.801720 :: QID_QUEST 8
Mar 16 18:06:51.801762 :: QUEST_LOAD: count 34 PID 68712
Mar 16 18:06:51.801776 :: info of pLoginData1 before call ItemAwardfunction 682023104
Mar 16 18:06:51.801801 :: QID_AFFECT 8
Mar 16 18:06:54.3490 :: [    10100] return 0/0/0 async 0/0/0
Mar 16 18:06:59.1652 :: [    10150] return 0/0/0 async 0/0/1
Mar 16 18:07:04.3531 :: [    10200] return 0/0/0 async 0/0/0
Mar 16 18:07:09.3497 :: [    10250] return 0/0/0 async 0/0/0
Mar 16 18:07:14.1652 :: [    10300] return 0/0/0 async 0/0/0
Mar 16 18:07:19.3530 :: [    10350] return 0/0/0 async 0/0/0


+1 info, az item_proto-m notxt-s!

DB forrásod át kellene nézned, mert a clientmanager.cpp azt hiszem abban van az attrvalue0 oszlopok meghatározása.

(Nem biztos hogy clientmanager.cpp, csak így fejből próbálok segíteni)

Sziasztok!

Megsikerült javítanom, de a hétvégém ráment hogy rúgjam rojtosra...
A hiba a game fájl forráskódjában volt méghozzá az input_db.cpp-ben.

Az eredeti érintetlen forráskód így néz ki (Kraizy.tgz-s):
item->SetSkipSave(true);
item->SetSockets(p->alSockets);
item->SetAttributes(p->aAttr);

Nekem meg így nézett ki:
item->SetSkipSave(true);
item->SetSockets(p->alSockets);
item->SetLastOwnerPID(p->owner);


Természetesen ahogy átírtam ilyenre:
item->SetSkipSave(true);
item->SetSockets(p->alSockets);
                item->SetAttributes(p->aAttr);
item->SetLastOwnerPID(p->owner);

A probléma azonnal megjavult...

A tippem helyes volt, az a rendszer okozhatta ahol megjelölődik az új tárgy amit felveszel a földről vagy NPC-től megveszel, ja valószínűleg anno azt rakhattam be rosszul (felülírtam a item->SetAttributes(p->aAttr); ezzel: item->SetLastOwnerPID(p->owner);).

Ráment az egész hétvégém, de legalább megtanultam hogy egyetlen sor mennyire pokollá teheti az ember életét ;)

Sírok kínomban...

Ilyen ez, mert rákeresel aztán ki van jelölve a sorod és CTRL+V-vel már felül is íródik. Aztán fordításnál nem serül ki sajnos.