Metin2 Hungarian Forum

Metin2 => Segítség => Szerver készítés => Privát szerverek => Archívum => A témát indította: Nicko Dátum 2012-12-07, 14:48:41

Cím: Tárgy el tűnés (K)
Írta: Nicko Dátum 2012-12-07, 14:48:41
Sziasztok nagyon sokan panaszkodnak,hogy az itemshopos tárgyak eltünek teleportálás után, mi lehet az oka?
Cím: Re:Tárgy el tűnés miért?
Írta: ATAG Dátum 2012-12-07, 14:52:44
A hibás itemshop okozza. Ha nem az item_award táblába kapják a tárgyakat (és legtöbb esetben nem), akkor portolásnál egyszerűen más tárgy kerül arra az id-ra.

Ilyen megoldáshoz az item tábla elejére/közepére/végére csinálni kell egy jó nagy üres helyet. Magyarul az auto_increment értéket megnöveled pár száz millióval.
A játék onnan kezdi majd az új ID-k osztogatását, az itemshoppal pedig ebbe az üres helybe pakolászhatod a tárgyakat (nyilvánvalóan akkor nem bízhatod az inkrementálást a mysql-re, hanem php-val kell keresni üres sorszámot).

Az eredeti kínai itemshop pont ilyen elven működött, érdemes meglesni a kódját...
Cím: Re:Tárgy el tűnés miért?
Írta: Nicko Dátum 2012-12-07, 14:58:46
Sajnos ezt nem igazán értem.

Nekem az item_award űres.
Cím: Re:Tárgy el tűnés miért?
Írta: ATAG Dátum 2012-12-07, 15:14:45
Pont azért gázos, mert az IS az item táblába rakja a tárgyakat, így összeakad szerverrel. A game felül írja más tárgyal az ID-t és már el is tűnt a leltárból a cucc.
Ha item helyett az item_award táblába tenné, akkor semmi probléma nem lenne. Ahhoz persze kicsit át kell írni a szkriptet, mert más értékek kellenek neki.
Cím: Re:Tárgy el tűnés miért?
Írta: Nicko Dátum 2012-12-07, 15:16:42
Tehát akkor magyarul itemshop.php-ban van a hiba?
Cím: Re:Tárgy el tűnés miért?
Írta: ATAG Dátum 2012-12-07, 16:15:28
Igen!

Részlet az eredeti kódból, ez keresi meg az "üres" helyet, amit nem ír felül a game:

$exec="select id from item where LENGTH(id)=9 order by id desc limit 1";
$result=mysql_query($exec);
$rs=mysql_fetch_object($result);
if ($rs) {
if($rs->id >= 400000200){
$id=$rs->id;
}else{
$id=400000200;
}
}else{
$id=400000200;
}
mysql_free_result($result);
$id++;
*/


Ebben értelemszerűen 400000200-től indulnak az itemshopos tárgyak id-jei ($id)...
EhPortal 1.39 © 2025, WebDev