Quote:
Originally Posted by .ℓт ოﻨօ〤™
hallo com, habe hier ne quest warum bekommt man keine Coins zugeschrieben?
hier ist die quest bitte hilft mir .
PHP Code:
quest dr_gutschein begin state start begin when 80014.use or 80015.use or 80016.use begin local p = 100 if item.get_vnum() == 80015 then p = 500 elseif item.get_vnum() == 80016 then p = 1000 end local accountid = mysql_query("SELECT * FROM player.player WHERE name='"..pc.get_name().."'","root","DBPW","player","DEINEIP") local coins = mysql_query("SELECT * FROM account.account WHERE id='"..accountid.account_id[1].."'","root","DBPW","account","DEINEIP") say_title("Drachenmünzen Gutschein") say("Hallo "..pc.get_name()..".") say("Möchtest du diesen Gutschein") say("im Wert von "..p.." Drachenmünzen einlösen?") if select ("Ja","Nein") == 2 then return end local updatecoins = mysql_query("UPDATE account.account SET coins='"..coins.coins[1]+p.."' WHERE id='"..accountid.account_id[1].."'","root","DBPW","account","DEINEIP") chat("Deine Drachenmünzen wurden dir erfolgreich gutgeschrieben.") end end end
|
Die Abfrage ist unnötig:
Code:
local p = 100
if item.get_vnum() == 80015 then
p = 500
elseif item.get_vnum() == 80016 then
p = 1000
end
Kann man viel simpler und leichter anpassbar machen
ebenso wie diese query:
Code:
local accountid = mysql_query("SELECT * FROM player.player WHERE name='"..pc.get_name().."'","root","DBPW","player","DEINEIP")
wozu gibt es die questfunktion "pc.get_account_id()" ?
und diese query:
Code:
local coins = mysql_query("SELECT * FROM account.account WHERE id='"..accountid.account_id[1].."'","root","DBPW","account","DEINEIP")
ist ebenso unnötig, man kann im update den aktuellen wert nehmen + einen neuen wert dazurechnen
Dann kommt hinzu, was zwar egal ist aber trotzdem unnötig, dass den den Update in eine Variable gelegt hast. Das brauchst du nicht machen. Ausserdem hast du die coins (die in der DB den Datentyp int haben) mit '' gesetzt. In MySQL macht das zwar nichts aus, trotzdem sollte man sich daran nicht gewöhnen. In anderen DB-Systemen hätte das auch dadurch nicht geklappt ;) (das gleiche auch bei der Account-ID)
Dazu hast du 1. vergessen abzufragen, ob das item noch im Inventar ist wenn der Spieler auf Ja drückt (kann man einfach rüberhandeln während der Text kommt) und du hast es nicht removed.
Und warum es nicht geklappt hat:
Code:
"root","DBPW","account","DEINEIP"
an der Stelle muss natürlich was eingetragen werden, wenn nichts eingetragen wird, wird automatisch das aus der config genommen.
Hier die korrigierte Quest:
Code:
quest dr_gutschein begin
state start begin
when 80014.use or 80015.use or 80016.use begin
local coins = ({
[80014] = 100,
[80015] = 500,
[80016] = 1000
})[item.get_vnum()]
say_title("Drachenmünzen Gutschein")
say("Hallo "..pc.get_name()..".")
say("Möchtest du diesen Gutschein")
say("im Wert von "..coins.." Drachenmünzen einlösen?")
if select("Ja","Nein") == 2 then return end
if pc.count_item(item.get_vnum()) < 1 then
syschat("Nice try ...")
return
end
pc.remove_item(item.get_vnum(), 1)
mysql_query("UPDATE account.account SET coins = coins+"..coins.." WHERE id = "..pc.get_account_id().." LIMIT 1;")
syschat("Deine Drachenmünzen wurden dir erfolgreich gutgeschrieben.")
end
end
end