brauche mal einen PHP/MYSQL experten! Ich bin keiner !
habe folgendes Ingameitemshopskript:

Leider funktionert (auch mit dem fixx) die Betsellung einer z.B. Waffe mit 3 Slots nicht.
(HIER EINMAL DER INHALT DIESER DATEI!) - Abschnitt wo der Fehler ist, habe ich etwas durch Kommentierung gekennzeichnet (weiter unten).Quote:
Habe verschiedene Möglichkeiten getestet. Folgende dateien habe ich im verdacht:
/page/buy.php
PHP Code:
<?php
if (!isset($data))
{
echo "<script>alert('Es ist ein Fehler aufgetreten!');history.back();</script>";
exit;
}
$item = intval($_GET["item"]);
$login = $db->e($data["login"]);
$query = sprintf("select * from ".$tbl[3]." where id = %d", $_GET['item']);
$check = $db->q($query);
$info = $db->fetchObject($check);
// Mileage Plugin
$mileage = $db->result($db->q(sprintf('SELECT type FROM '.$tbl[2].' WHERE id = %d',$info->cat)), 0) == 2 ? true : false;
$cash = $mileage ? $data['mileage'] : $data['coins'];
// Mileage Plugin
if (!$info)
{
echo "<script>alert('Das gewählte Item existiert nicht!');history.back();</script>";
exit;
}
if ($cash < $info->price or $cash == 0 or $cash < 0)
{
echo "<script>alert('Dein Guthaben reicht nicht aus um dies zukaufen!');history.back();</script>";
exit;
}
if ($info->type == 1)
{
$exec = "SELECT value0,value1,value2 FROM player.item_proto WHERE vnum = '".$info->value."' LIMIT 1";
$item = $db->getFirst($exec);
$result = $db->q("INSERT INTO player.item_award VALUES (null, 0, '".$data['login']."', ".$info->value.", ".$info->count.", NOW(), null, null, 'Itemshop Kauf am ".date('d.m.Y')." um ".date('h:i')."', ".$item[0].", ".$item[1].", ".$item[2].", '1');");
if ($db->affectedRows() != 0)
{
if (!$mileage)
{
if (!$db->q("UPDATE account.account SET coins = coins-".$info->price." WHERE id = ".$data['acc_id']))
{
echo "<script>alert('Es ist ein Fehler aufgetreten!');history.back();</script>";
exit;
}
} else
{
if (!$db->q("UPDATE account.account SET mileage = mileage-".$info->price." WHERE id = ".$data['acc_id']))
{
echo "<script>alert('Es ist ein Fehler aufgetreten!');history.back();</script>";
exit;
}
}
// $db->q("INSERT INTO ".$tbl[7]." VALUES ('".$data['acc_id']."','".$data["login"]."','".$info->price."','".$info->value."','".$info->count."','".$info->name."',NOW(),'".$info->type."')");
$db->q("INSERT INTO ".$tbl[7]." VALUES ('".$data["login"]."','".$info->price."','".$info->value."','".$info->count."','".$info->name."',NOW(),'".$info->type."')");
echo '<h3>Erfolgreich gekauft</h3>
<div id="confirmBox">
<div class="itemDesc confirmDesc">
<p>
Erfolgreich gekauft!
<br>
<br>
Du hast dieses Item für Yamuna2 gekauft!
<br>
Das Yamuna2-Team bedankt sich für deinen Einkauf.
<br>
<br>
<br>
Du hast das Item '.$info->name.' gekauft! </p><br class="clearfloat" />
<br>
</div>
</div>';
} else
{
echo "<script>alert('Es ist ein Fehler aufgetreten. Versuch es bitte nochmal!');history.back();</script>";
exit;
}
} elseif ($info->type == 2)
{
// Itemshopbuff Name: exp gold fish usw.
if ($info->name == "Doppelte Erfahrung")
{
$len = $info->value;
if (!$db->fetchObject($db->q("SELECT silver_expire FROM account.account WHERE silver_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET silver_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET silver_expire = DATE_ADD(silver_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
echo ' <h3>Erfolgreich gekauft</h3>
<div id="confirmBox">
<div class="itemDesc confirmDesc">>
<p>
Du hast fuuml;r '.$len.' Tage doppelte Erfahrung gekauft! </p><br class="clearfloat" />
</div>
</div>
';
} elseif ($info->name == "Doppelter Yangdrop")
{
$len = $info->value;
if (!$db->fetchObject($db->q("SELECT * FROM account.account where money_drop_rate_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET money_drop_rate_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET money_drop_rate_expire = DATE_ADD(money_drop_rate_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
echo ' <h3>Erfolgreich gekauft</h3>
<div id="confirmBox">
<div class="itemDesc confirmDesc">>
<p>
Du hast fuuml;r '.$len.' Tage doppelten Yang Dropp gekauft! </p><br class="clearfloat" />
</div>
</div>';
} elseif ($info->name == "Doppelte Droprate")
{
$len = $info->value;
if (!$db->fetchObject($db->q("SELECT * FROM account.account where goldmoney_drop_rate_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET gold_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET gold_expire = DATE_ADD(gold_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
echo ' <h3>Erfolgreich gekauft</h3>
<div id="confirmBox">
<div class="itemDesc confirmDesc">>
<p>
Du hast fuuml;r '.$len.' Tage doppelte Dropprate gekauft! </p><br class="clearfloat" />
</div>
</div>';
} elseif ($info->name == "Alle Itemshopbuffs")
{
$len = $info->value;
if (!$db->fetchObject($db->q("SELECT * FROM account.account where money_drop_rate_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET money_drop_rate_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET money_drop_rate_expire = DATE_ADD(money_drop_rate_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
if (!$db->fetchObject($db->q("SELECT * FROM account.account where silver_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET silver_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET silver_expire = DATE_ADD(silver_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
if (!$db->fetchObject($db->q("SELECT * FROM account.account where gold_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET gold_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET gold_expire = DATE_ADD(gold_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
if (!$db->fetchObject($db->q("SELECT * FROM account.account where safebox_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET safebox_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET safebox_expire = DATE_ADD(safebox_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
if (!$db->fetchObject($db->q("SELECT * FROM account.account where autoloot_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET autoloot_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET autoloot_expire = DATE_ADD(autoloot_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
if (!$db->fetchObject($db->q("SELECT * FROM account.account where marriage_fast_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET marriage_fast_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET marriage_fast_expire = DATE_ADD(marriage_fast_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
if (!$db->fetchObject($db->q("SELECT * FROM account.account where money_drop_rate_expire > now() and login = '".$data["login"]."'")))
{
$exec = $db->q("UPDATE account.account SET money_drop_rate_expire = DATE_ADD(NOW(),INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
} else
{
$exec = $db->q("UPDATE account.account SET money_drop_rate_expire = DATE_ADD(silver_expire,INTERVAL ".$len." DAY) WHERE login = '".$data["login"]."';");
}
echo ' <h3>Erfolgreich gekauft</h3>
<div id="confirmBox">
<div class="itemDesc confirmDesc">>
<p>
Du hast fuuml;r '.$len.' Tage alle Itemshop Buffs gekauft! </p><br class="clearfloat" />
</div>
</div>';
} else
{
echo "<script>alert('Es ist ein Fehler aufgetreten. Versuch es bitte nochmal!');history.back();</script>";
exit;
}
$cashminus = $db->q("UPDATE account.account SET coins = coins-".$info->price." WHERE id = ".$data['acc_id']);
$data["coins"] = $cash - $info->price;
$db->q("INSERT INTO log_nl2.itemshop_log VALUES ('".$data["login"]."','".$info->price."','".$info->value."','".$info->count."','".$info->name."',NOW(),'".$info->type."')");
}
//EVTL HIER DER FEHLER???????
elseif ($info->type = 3)
{
$stone = explode(';', $info->stones);
if (!empty($info->stones))
{
$result = $db->q("INSERT INTO player.item_award VALUES (null, 0, '".$data['login']."', ".$info->value.", ".$info->count.", NOW(), null, null, 'Itemshop Kauf am ".date('d.m.Y')." um ".date('h:i')."', ".$stone[0].", ".$stone[1].", ".$stone[2].", '1');");
} else
{
$stone[0] = 0;
$stone[1] = 0;
$stone[2] = 0;
$result = $db->q("INSERT INTO player.item_award VALUES (null, 0, '".$data['login']."', ".$info->value.", ".$info->count.", NOW(), null, null, 'Itemshop Kauf am ".date('d.m.Y')." um ".date('h:i')."', ".$stone[0].", ".$stone[1].", ".$stone[2].", '1');");
}
///
if ($db->affectedRows() != 0)
{
if (!$mileage)
{
if (!$db->q("UPDATE account.account SET coins = coins-".$info->price." WHERE id = ".$data['acc_id']))
{
echo "<script>alert('Es ist ein Fehler aufgetreten!');history.back();</script>";
exit;
}
} else
{
if (!$db->q("UPDATE account.account SET mileage = mileage-".$info->price." WHERE id = ".$data['acc_id']))
{
echo "<script>alert('Es ist ein Fehler aufgetreten!');history.back();</script>";
exit;
}
}
$db->q("INSERT INTO ".$tbl[7]." VALUES ('".$data["login"]."','".$info->price."','".$info->value."','".$info->count."','".$info->name."',NOW(),'".$info->type."')");
echo '<h3>Erfolgreich gekauft</h3>
<div id="confirmBox">
<div class="itemDesc confirmDesc">
<p>
Erfolgreich gekauft!
<br>
<br>
Du hast dieses Item für Yamuna2 gekauft!
<br>
Das Yamuna2-Team bedankt sich für deinen Einkauf.
<br>
<br>
<br>
Du hast das Item '.$info->name.' gekauft! </p><br class="clearfloat" />
<br>
</div>
</div>';
} else
{
echo "<script>alert('Es ist ein Fehler aufgetreten. Versuch es bitte nochmal!');history.back();</script>";
exit;
}
} else
{
echo "<script>alert('Kategoriefehler!');?cat=1;</script>";
exit;
}
?>
Könnt ihr vllt. eine Lösung finden? bzw habt ihr eine?
Oder empfehlt ihr mir ein buggfreies Skript?
Danke für jede Hilfe!
Gruß






