Sziasztok nagyon sokan panaszkodnak,hogy az itemshopos tárgyak eltünek teleportálás után, mi lehet az oka?
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...
Sajnos ezt nem igazán értem.
Nekem az item_award űres.
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.
Tehát akkor magyarul itemshop.php-ban van a hiba?
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)...