Itemshop leltár probléma

Started by gergo1995, 2021-07-13, 00:40:30

2021-07-13, 00:40:30 Last Edit: 2021-07-13, 00:42:24 by gergo1995
Sziasztok!

Olyan problémába ütköztem, hogy ha megveszek valamit az itemshopból, akkor a leltárban csak az utoljára vásárolt tárgy kerül be, pl.: megveszek 200db köpit, 1db optolót, 1db opt cserélőt, akkor csak az opt cserélő kerül be az itemshop leltárba. is_log-ban benne van, hogy megvettem, SÉ-t le is vonja, viszont az itemshop leltárba csak az utoljára megvásárolt tárgy kerül be. A segítséget előre is köszönöm!

Az semmit nem számít mi van az is_logban, ami számít az az hogy mi van az item_awardban. A kérdéses "eltűnt" itemek belekerülnek-e, ha igen akkor "taken"-e, kaptak-e id-t, az szerepel-e az item táblában. Ha ez mind oké akkor a db-dben lesz a hiba ahol betölti a tárgyakat az is ablakba.

Ha esetleg nem item_awardos itemshopot használsz (nagy hiba) akkor módosítsd át a webedben a query-t hogy az item_awardba inserteljen, amúgy sem szabad több okból sem direkten az itembe illeszteni mert úgy az id-k nem lesznek lefoglalva, anno a nagy szervereknél emiatt voltak a "random" cucc eltűnések.

Az item_award-ba bekerül, viszont rárakja az itemshop leltárban a másik cuccra, és így az előző cucc eltűnik, olyan mint ha nem működne az itemshop leltárban csak az első "rublika".

Biztos vagy benne hogy rárakja vagy csak feltételezed? Mármint ellenőrizted az item táblában a MALL-on lévő cuccok pos oszlopának a számát és ugyan az?

Ebben az esetben itt van a hiba: CClientManager::RESULT_SAFEBOX_LOAD (ClientManager.cpp)
Mégpedig ez nem működik nálad valamiért:
int iPos;
if ((iPos = grid.FindBlank(1, it->second->bSize)) == -1)
break;


ennek a kódja pedig a CGrid::FindBlank (grid.cpp)-ben van és -1-et ad vissza ha nincs szabad hely.

Én amúgy nem hinném hogy tényleg rárakja, ahogy látod ha nincs szabad hely akkor nem a 0-ra rakja hanem egyszerűen megáll a kód és a folyamat sikertelen lesz tehát nem is lesz insertelve az item táblába. Persze ha nem alap forrást használsz akkor valaki belepiszkálhatott.

Ha mégis rárakja egymásra tehát látod hogy a pos megegyezik akkor írd le és tovább gondoljuk de ahogy látod az (alap) kód ilyet nem enged meg plusz akkor egy relog után a 2. tárgy megjelenne elvileg.