Tárgy el tűnés (K)

Indította Nicko, 2012-12-07, 14:48:41

2012-12-07, 14:48:41 Utolsó szerkesztés: 2013-02-04, 10:04:40 Szerző: [MOD]Aegist
Sziasztok nagyon sokan panaszkodnak,hogy az itemshopos tárgyak eltünek teleportálás után, mi lehet az oka?

2012-12-07, 14:52:44 #1 Utolsó szerkesztés: 2012-12-07, 15:12:17 Szerző: ATAG
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)...