Unendliche Schleife

12/10/2013 20:26 123snake123#1
Hey

ich suche schon seit stunden und bin am probieren eine unendliche Schleife in meine Quest einzubauen.

Code:
quest p2 begin
	state start begin
		when login begin
		
			if pc.get_map_index() == 21 and pc.count_item("27006") >= 1 then
		
				syschat("___")
				warp_to_village()
				return
			end
			
			
		end
	end
end

Der if "Block" soll alle 1-2 Sekunden wiederholt werden.

Wäre auch dankbar für kleine Tipps die mir beim nachdenken wieterhelfen^^

Mfg
12/10/2013 20:42 Der Ehrengast#2
wozu soll das gut sein? wenn ich den map index wechsel zählt das als login und dann wird ey neu geprüft?
12/10/2013 20:47 123snake123#3
Aber aber auf einem andren map index ich kann´s auch so schreiben


PHP Code:
quest p2 begin
    state start begin
        when login with pc
.get_map_index() == 21 begin
        
            
if  pc.count_item("27006") >= 1 then
        
                syschat
("___")
                
warp_to_village()
                return
            
end
            
            
        end
    end
end 
12/10/2013 20:49 .ProjektX²#4
guck dir mal nen loop_timer an, der macht das was du suchst.
12/10/2013 21:01 Ivica.Lovro#5
Ich kenne mich jetzt nicht so gut mit LUA aus, aber es gibt doch bestimmt soetwas wie eine Until-Schleife?
12/10/2013 21:04 He3o Sippel#6
So sollte es klappen

PHP Code:
quest p2 begin
    state start begin
        when login begin
            loop_timer
("backport"1)
        
end
        
        when backport
.timer begin
            
if pc.get_map_index() == 21 and pc.count_item(27006) >= 1 then
                syschat
("___")
                
warp_to_village()
                
clear_timer("backport")
                return
            
end
        end
    end
end 
12/10/2013 21:15 123snake123#7
Habe zwar nix gelernt dabei aber es funzt danke^^

Nur ein Problem
Der befehl clear_timer("backport") wir von putty nicht erkannt, habe ihn aus der quest entfernt und jetzt funzt sie.

ISt das schlimm wenn der Befehl da nicht drin ist?
12/10/2013 21:23 He3o Sippel#8
Quote:
Originally Posted by 123snake123 View Post
Habe zwar nix gelernt dabei aber es funzt danke^^

Nur ein Problem
Der befehl clear_timer("backport") wir von putty nicht erkannt, habe ihn aus der quest entfernt und jetzt funzt sie.

ISt das schlimm wenn der Befehl da nicht drin ist?
Also zum lernen :

Beim Login
PHP Code:
when login begin 
wird ein timer gesetzt
PHP Code:
timer("backport"
Das ist kein gewöhnlicher timer sondern ein Loop_timer deuts. Wiederholung_timer , dieser hat den Intervall 1
PHP Code:
loop_timer("backport",1
Bedeutet das sobald man sich einloggt
PHP Code:
 when login begin 
startet die Quest den loop_timer backport mit dem Intervall 1
PHP Code:
 loop_timer("backport",1

Jetzt müssen wir noch sagen was passieren soll , wenn der Intervall von 1 "abgelaufen ist".
PHP Code:
 when backport.timer begin 
Den Rest solltest du eigt. selbst Wissen If-Abfrage etc...


Zu 2.

clear_timer("backport") solltest du eigt. drinn lassen , da das dafür zuständig ist das der Loop_timer Namens Backport gestoppt wird. Dieser hat ja einen Intervall von 1 und wird somit jede Sekunde ausgefürt = Jede Sekunde eine If-Abfrage = Unötige Server Belastung.
12/10/2013 21:29 123snake123#9
dann funzt die quest aber nicht bei mir^^
was kann ich den dagegen tun?
12/10/2013 21:30 He3o Sippel#10
Add mich in Skype : xxxrezaxxx25
12/10/2013 21:37 123snake123#11
Habe es bei mir in den functions ist der clear_timer so : cleartimer^^

jetzt geht es danke schön

ich habe ca. 15 Items zu verbieten, wenn ich da immer eingebe or pc.count_item......

wird das ja ewig lang, da gibt`s doch was um das kürzer zu machen.

Geht das mit ner Tabelle?
12/10/2013 21:38 .ProjektX²#12
der looptimer ist keine belastung fuer den server, den kannste auch auf 0.01 stelle :-|
12/10/2013 21:41 He3o Sippel#13
Quote:
Originally Posted by 123snake123 View Post
Habe es bei mir in den functions ist der clear_timer so : cleartimer^^

jetzt geht es danke schön

ich habe ca. 15 Items zu verbieten, wenn ich da immer eingebe or pc.count_item......

wird das ja ewig lang, da gibt`s doch was um das kürzer zu machen.

Geht das mit ner Tabelle?
Mit einer Tabelle oder einfach

PHP Code:
 if pc.get_map_index() == 21 and pc.count_item(27006) >= or pc.count_item(2) >= or pc.count_item(3) >= 1 then 


Quote:
Originally Posted by .ProjektX² View Post
der looptimer ist keine belastung fuer den server, den kannste auch auf 0.01 stelle :-|
Kann sein aber trotzdem schöner so zu schreiben ;)