[Quest]Problem befehl

07/12/2015 03:28 OoKaMi_#1
Ich komme mit meiner Quest nicht weiter b.z.w. mit dem Befehl.
Wollte eine Quest schreiben, das ich mit einem Item den Char ändern kann, sprich den "Job" in dem fall Krieger zu Sura.
An sich klappt es auch schon, aber sobalt ich das Item benutze werden alle Chars wo Krieger sind zum Sura, und ich will aber das nur dieser Char geändert wird, der das Item benutzt.
Und ich weiß, das ich in der Quest noch ein bann von 20 minuten einbauen muss, so das der Char aktualisiert wird.
Villt kann ihn mir ja jemand mit einbauen...
Villt kann mir jemand dabei weiter helfen, würde mich freuen ;)

Hier meine Quest:

HTML Code:
quest test begin   
	state start begin
		when 70021.use begin
		item.remove(70021,1)
		say("Na dann los")
		mysql_query("UPDATE player.player SET player.job = '0' WHERE job = '2'")
		end
	end
end
MFG
07/12/2015 07:35 #dynastie#2
In deinem Query werden ja auch alle Spieler behandelt und nicht alleine der mit dem du die Quest ausführst. Musst also im Query noch über die PID oder den Spielernamen das Ganze updaten lassen damit es nur bei dem einen Spieler ausgeführt wird.

PHP Code:
Example
SELECT 
FROM Customers
WHERE Country
='Germany'
AND City='Berlin'
07/12/2015 08:31 OoKaMi_#3
Ehrlich gesagt verstehe ich es nicht.
07/12/2015 10:49 rollback#4
Quote:
Originally Posted by #dynastie View Post
In deinem Query werden ja auch alle Spieler behandelt und nicht alleine der mit dem du die Quest ausführst. Musst also im Query noch über die PID oder den Spielernamen das Ganze updaten lassen damit es nur bei dem einen Spieler ausgeführt wird.

PHP Code:
Example
SELECT 
FROM Customers
WHERE Country
='Germany'
AND City='Berlin'
Das wäre aber ein schlechtes DB-Design ;D
Besser so:

Code:
SELECT customers.*, countries.name, cities.name
FROM customers
INNER JOIN countries
ON customers.countryid = countries.id
INNER JOIN cities
ON customers.cityid = cities.id
WHERE countries.name = 'Germany'
AND cities.name = 'Berlin';
für den Fall hier ist aber dein Beispiel natürlich besser.

Hab ihm die Quest mal korrigiert:
[Only registered and activated users can see links. Click Here To Register...]
07/13/2015 02:37 OoKaMi_#5
Dankeschön Sensi, nun geht die Quest.
Habe versucht den Mysql bann befehl einzubauen, doch leider funktioniert es nicht. Um Ehrlich zu sein, habe ich keinen Plan wie ich mit den Mysql befehlen arbeiten muss :D Könntest du mir den villt mit einbauen ?

Habe nur den hier:
HTML Code:
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL 20 MINUTE WHERE id = (SELECT account_id FROM player.player WHERE name='"..spl[2].."');")
Kann mir aber schon denken das er nicht funktioniert.

MFG
07/13/2015 09:37 rollback#6
Versuchs mal so:
Code:
mysql_query("UPDATE account.account SET availDt = CURRENT_TIMESTAMP+60*20 WHERE id = "..pc.get_account_id().." LIMIT 1;")
07/13/2015 12:24 OoKaMi_#7
Danke Funktioniert, bloß es setzt immer den alten Job wieder zurück.
07/14/2015 04:54 OoKaMi_#8
#

#push
07/14/2015 13:38 Benhero#9
Lässt du den Spieler nach dem Wechsel Disconnecten? Wenn nicht, musst du dies tun.
Stichwocht Cache speicherung.. Ansonsten wird der alte wert über der/die/das Cache wieder in die Datenbank geschrieben
07/15/2015 06:37 OoKaMi_#10
Quote:
Lässt du den Spieler nach dem Wechsel Disconnecten? Wenn nicht, musst du dies tun.
Stichwocht Cache speicherung.. Ansonsten wird der alte wert über der/die/das Cache wieder in die Datenbank geschrieben
Ja lasse ich, hier noch mal die Quest.

HTML Code:
quest test begin 
	state start begin
		when 70021.use with pc.get_job() == 0 begin
			say("Na dann los")
			item.remove(70021)
			wait()
			mysql_query("UPDATE account.account SET availDt = CURRENT_TIMESTAMP+60*30 WHERE id = "..pc.get_account_id().." LIMIT 1;")
			mysql_query("UPDATE player.player SET job = 5 WHERE id = "..pc.get_player_id().." AND job = 0 LIMIT 1;")
			cmdchat("exit")
		end	
	end
end