Metin2 Hungarian Forum

Metin2 => Szerver készítés => Privát szerverek => Segítség => A témát indította: gergo1995 Dátum 2021-07-13, 00:40:30

Cím: Itemshop leltár probléma
Írta: gergo1995 Dátum 2021-07-13, 00:40:30
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!
Cím: Re:Itemshop leltár probléma
Írta: TMP4 Dátum 2021-07-13, 12:55:08
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.
Cím: Re:Itemshop leltár probléma
Írta: gergo1995 Dátum 2021-07-13, 13:21:10
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".(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fwww.kepfeltoltes.eu%2Fimages%2F2021%2F07%2F13%2F221jghjvjhvh.jpg&hash=878d6ad98bbf1c87847e115ab425c183198ca21b)
Cím: Re:Itemshop leltár probléma
Írta: TMP4 Dátum 2021-07-13, 17:06:23
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.
EhPortal 1.39 © 2025, WebDev