[SERVICE] Die Questkontrolle

09/17/2014 19:23 Avulsed#10471
Quote:
Originally Posted by .Orcgasm View Post
Nächstes Problem:
PHP Code:
state information begin
        when letter begin
            local v 
= find_npc_by_vnum(20080)
            if 
v != 0 then
            target
.vid("__TARGET__ "Die Geschichte des Cureya!")
            end
            send_letter("
Die Geschichte des Cureya!")
            end
        end
        when button or info begin
            say_title("
Cureya")
            say("")
            say("
Die bitte des Biologen:")
            say("
cureya")
            say("
eueeeeeeeeeeeeeeeee")
            say("
jsjjjsjsjsjsjsjsjsjjs")
            say("
kskskskskskss")
            say("
Viel Glück.")
            say("")
        end 
Da kommt kein LETTER oder Pfeil um zum NPC hinzugehen (klicken) bringt auch nichts ? was ist das <.<

(das ist nicht die ganze Quest !!!
Die Quest ladet auch vernünftig alles drum und dran nur klicken bzw letter kommt nicht!
Versuch es mal so:

PHP Code:
state information begin
        when letter begin
            local v 
= find_npc_by_vnum(20080)
            if 
v != 0 then
            target
.vid("__TARGET__ ",v,"Die Geschichte des Cureya!")
            
end
            send_letter
("Die Geschichte des Cureya!")
            
end
        end
        when button 
or info begin
            say_title
("Cureya")
            
say("")
            
say("Die bitte des Biologen:")
            
say("cureya")
            
say("eueeeeeeeeeeeeeeeee")
            
say("jsjjjsjsjsjsjsjsjsjjs")
            
say("kskskskskskss")
            
say("Viel Glück.")
            
say("")
        
end 
09/20/2014 01:13 Luna.Host#10472
Hallo,

Egal welchen Mob man killt man bekommt Coins.

PHP Code:
quest boss_kill_coins begin
    state start begin
        when kill with npc
.get_race() == 691 or 791 or 5163 or 2091 or 2191 or 1901 or 2206 or 1192 or 1304 or 1091 or 1092 or 1093 or 2493 begin -- MonsterID ergänzen
            mysql_query
('UPDATE account.account SET coins = coins+ 5 WHERE id = '..pc.get_account_id()..' LIMIT 1')
            
syschat("Du hast ein Boss getötet, Dir wurden 5 Coins gutgeschrieben.")
        
end
    end
end 
Ich danke für jede Hilfe.
09/20/2014 10:53 .yorliK#10473
Quote:
Originally Posted by Akaja™ View Post
Hallo,

Egal welchen Mob man killt man bekommt Coins.


Ich danke für jede Hilfe.
Code:
quest boss_kill_coins begin 
	state start begin 
		function check_tabelle(t, v)
			for i=1, table.getn(t), 1 do
				if t[i]==v then
					return true
				end
			end
		end
		when kill with not npc.is_pc() begin
			monster ={691, 791, 5163, 2091, 2191, 1901, 2206, 1192, 1304, 1091, 1092, 1093, 2493} -- Alle Bosse hier eintragen
			if boss_kill_coins.check_tabelle(monster, npc.get_race()) then
				mysql_query('UPDATE account.account SET coins = coins+ 5 WHERE id = '..pc.get_account_id()..' LIMIT 1') 
				syschat("Du hast ein Boss getötet, Dir wurden 5 Coins gutgeschrieben.") 
			end
		end 
	end 
end
09/20/2014 11:35 Endless.#10474
Meine Testquest läuft nicht..

Code:
quest trial begin
	state start begin
		when login begin
			if pc.get_map_index() == 197 then
				say ("Testfunktion")
			end
		end
	end
	state destroy begin
		when 8028.kill begin
			say ("Du hast den Metinstein zerstört!")
			say ("Nun musst du es schaffen viele")
			say ("Wellen von den übelsten Wesen")
			say ("zu überleben. Hier kommt sie auch")
			say ("schon.. Die 1. Welle!!")
			set_state(welle1)
			mob.spawn(101, 102, 51, 0, 0, 10)
		end
	end
	state welle1 begin
		when 101.kill begin
			if count == 10 then
				say ("Testrunde beendet")
				set_state(ende)
			end
		end
	end
	state ende begin
	end
end
Fehlercode: Keiner
Merkmal: Nach dem ich meine 10 Testmobs gekillt habe, passiert nix..
Und meine Testchars können nur 1x diesen Testlauf ausführen..

Kann mir jemand helfen? Hab sehr lange nichts mehr in dieser Richtung gemacht :S



Gruß, Endless :)
09/20/2014 11:45 .yorliK#10475
Quote:
Originally Posted by Endless. View Post
Meine Testquest läuft nicht..

Fehlercode: Keiner
Merkmal: Nach dem ich meine 10 Testmobs gekillt habe, passiert nix..
Und meine Testchars können nur 1x diesen Testlauf ausführen..

Kann mir jemand helfen? Hab sehr lange nichts mehr in dieser Richtung gemacht :S



Gruß, Endless :)

Na klar.. das sieht so aus, als hättest du nie irgendetwas in dieser Richtung gemacht!

Wie kann der Count denn überhaupt steigen?! Wie soll dieser Testlauf nochmal gemacht werden, wenn du einen "ende" state setzt, der nichts mehr bewirkt? Stell dir vor, das ist wie ne Sackgasse. Wenn du schon ne Quest kontrolliert haben möchtest, dann dichte uns doch bitte keine Märchen auf, nur damit die Quest danach so funktioniert wie du dir das vorstellst. (Verwende dann doch lieber die Questerstellung)

Wenn das alles nicht so ist, entschuldige ich mich für die Beschuldigungen, aber es kommt halt einfach so rüber.

Code:
quest trial begin
	state start begin
		when login begin
			if pc.get_map_index() == 197 then
				say ("Testfunktion")
				set_state(destroy)
			end
		end
	end
	state destroy begin
		when kill with npc.get_race()==8028 begin
			say ("Du hast den Metinstein zerstört!")
			say ("Nun musst du es schaffen viele")
			say ("Wellen von den übelsten Wesen")
			say ("zu überleben. Hier kommt sie auch")
			say ("schon.. Die 1. Welle!!")
			mob.spawn(101, 102, 51, 0, 0, 10)
			pc.setqf("test_count", 0)
			set_state(welle1)
		end
	end
	state welle1 begin
		when kill with npc.get_race()==101 begin
			pc.setqf("test_count", pc.getqf("test_count")+1)
			if pc.getqf("test_count")== 10 then
				say ("Testrunde beendet, durch einen Relog")
				say("kann der Testlauf erneut gemacht werden.")
				set_state(start)
			end
		end
	end
end
09/20/2014 12:01 Endless.#10476
Danke erstmal.. Aber trotzdem kein Grund gleich so streng zu werden.. ich dachte nur ,das ich durch das login auf der Map INDEX den "start" state auslöse und habe es nicht geahnt, das man da diese race Funktion braucht.. Diese Quest soll am Ende 10 Wellen, Bosse und einen Teleport bringen.. das kann ich soweit, nur deswegen habe ich hier auch nur die kleine Testquest gepostet, damit ich den Fehler finde..
09/21/2014 03:36 Chaosnightx3#10477
Guten morgen Leute, da ich zurzeit bisschen am basteln bin und zurzeit questing lerne.
Möchte ich gerne etwas wissen.
Die Quest "funktioniert" zurzeit so wie cih sie geschriebe habe, mit den States etc.

Das Problem ist nur... das die States sich bei einem Relog oder porten wieder zurück setzen und man wieder beim start der Quest ist...

Dann möchte ich gerne wissen, wie ich eine Dropp definition reinschreibe, wenn z.b. vorher in der Quest steht: Bringe mir xxx Zeug!

ich möchte das gerne mit when xxx.killl
und dann mit einer If abfrage, dass man die Items hat und dann zum Npc gehen muss...


mfg
09/21/2014 12:59 .yorliK#10478
Quote:
Originally Posted by Chaosnightx3 View Post
Guten morgen Leute, da ich zurzeit bisschen am basteln bin und zurzeit questing lerne.
Möchte ich gerne etwas wissen.
Die Quest "funktioniert" zurzeit so wie cih sie geschriebe habe, mit den States etc.

Das Problem ist nur... das die States sich bei einem Relog oder porten wieder zurück setzen und man wieder beim start der Quest ist...

Dann möchte ich gerne wissen, wie ich eine Dropp definition reinschreibe, wenn z.b. vorher in der Quest steht: Bringe mir xxx Zeug!

ich möchte das gerne mit when xxx.killl
und dann mit einer If abfrage, dass man die Items hat und dann zum Npc gehen muss...

mfg
09/21/2014 13:16 Chaosnightx3#10479
Ich werde es testen, vielen dank! :)


edit: kann ich dort auch mehrere ID´s eintragen ?
also mehrere Mobs ID´s.
09/21/2014 13:37 .yorliK#10480
Quote:
Originally Posted by Chaosnightx3 View Post
Ich werde es testen, vielen dank! :)


edit: kann ich dort auch mehrere ID´s eintragen ?
also mehrere Mobs ID´s.
Ja das kannst du:
Code:
when kill with npc.get_race()==101 or npc.get_race()==102 or npc.get_race()==103 begin
...und das dann immer so weiter :)
09/21/2014 13:51 Chaosnightx3#10481
Wunderbar, ich danke dir.

Sollte noch was sein, werde ich mich bei dir per Pn melden, wenn dies ok ist. :)
09/21/2014 15:58 Endless.#10482
Eine Frage habe ich noch.. hoffe das ich nicht gleich wieder irgendwie abgestempelt werde.. also:

PHP Code:
quest trial begin
    state start begin
        when login begin
            
if pc.get_map_index() == 197 then
                say 
("Testfunktion")
                
set_state(destroy)
            
end
        end
    end
    state destroy begin
        when kill with npc
.get_race()==8028 begin
            say 
("Du hast den Metinstein zerstört!")
            
say ("Nun musst du es schaffen viele")
            
say ("Wellen von den übelsten Wesen")
            
say ("zu überleben. Hier kommt sie auch")
            
say ("schon.. Die 1. Welle!!")
            
mob.spawn(101, 102, 51, 0, 0, 10)
            
pc.setqf("test_count", 0)
            
set_state(welle1)
        
end
    end
    state welle1 begin
        when kill with npc
.get_race()==101 begin
            pc
.setqf("test_count", pc.getqf("test_count")+1)
            if 
pc.getqf("test_count")== 10 then
                say 
("Testrunde beendet, durch einen Relog")
                
say("kann der Testlauf erneut gemacht werden.")
                
set_state(start)
            
end
        end
    end
end 
Habe die Quest zwar schon ausgebaut und die ist sogut wie fertig.. aber wenn jemand in der zwischenzeit ein Kick bekommt, es dem jenigen zu heftig wird oder sonst was womit er sich ausloggen will/muss.. kann dieser Spieler nicht von vorne beginnen, sobald er die Map betritt.. ich würde es so regeln wollen, das man nach nem Relog oder einem Kick einfach von neu beginnen muss..

Danach gebe ich auch Ruhe..


Gruß, Endless
09/21/2014 16:10 QuickFlameZ#10483
Quote:
Originally Posted by Kilroy. View Post
Ja das kannst du:
Code:
when kill with npc.get_race()==101 or npc.get_race()==102 or npc.get_race()==103 begin
...und das dann immer so weiter :)
Oder einfach:
PHP Code:
bsp.
when kill with npc.get_race()>=101 and npc.get_race()<=105 begin 
09/21/2014 16:11 Repzx.#10484
PHP Code:
quest Repzx_2 begin
    state start begin
        when 70010.
use begin
            
if string.find(pc.get_name(), "VIP]") == nil then
                say_title
("VIP-Status")
                
say("")
                
say("Mit diesem Item kannst du dich")
                
say("zum VIP ernennen.")
                
say("")
                
say("Willst du es aktivieren oder eher nicht?")
                if 
select("Ja","Nein")==2 then
                    say_title
("VIP-Status")
                    
say("")
                    
say("Okay dann nen anderes Mal.")
                else
                    
say_title("VIP-Status")
                    
say("")
                    
say("Viel Spass mit deinem VIP Account.")
                    
say_reward("Relog durchführen!")
                    
mysql_query("UPDATE player.player SET name='[VIP]"..pc.get_name().."' WHERE name='"..pc.get_name().."'")
                
end
            
else
                
say_title("VIP-Status")
                
say("")
                
say("Du hast deinen VIP-Status ")
                
say("schon aktiviert. Sollte dies nicht der")
                
say("Fall sein, kontaktiere bitte einen Teamler")
            
end
        end
    end
end 
Kriege Fehler wenn ich in die Maschine eingebe "m2 qc"
09/21/2014 17:37 .yorliK#10485
Quote:
Originally Posted by Endless. View Post
Eine Frage habe ich noch.. hoffe das ich nicht gleich wieder irgendwie abgestempelt werde..

Habe die Quest zwar schon ausgebaut und die ist sogut wie fertig.. aber wenn jemand in der zwischenzeit ein Kick bekommt, es dem jenigen zu heftig wird oder sonst was womit er sich ausloggen will/muss.. kann dieser Spieler nicht von vorne beginnen, sobald er die Map betritt.. ich würde es so regeln wollen, das man nach nem Relog oder einem Kick einfach von neu beginnen muss...


Gruß, Endless




Quote:
Originally Posted by QuickFlameZ View Post
Oder einfach:
PHP Code:
bsp.
when kill with npc.get_race()>=101 and npc.get_race()<=105 begin 
Wer sagt denn das er die IDs 101 bis 105 nimmt? Das war nur ein Beispiel, damit er versteht, das er so mehrere Mobs verschiedener ID's nehmen kann.




Quote:
Originally Posted by Repzx. View Post

Kriege Fehler wenn ich in die Maschine eingebe "m2 qc"
Was denn für einen Fehler? Ich hab sie getestet, griege keinen Fehler, vermuten kann ich aber das dir die Funktion "string.find" fehlt. Dafür öffne einfach die quest_functions Datei im Questverzeichnis und schreibe dort string.find rein.