Quest Hilfe

02/02/2015 10:07 Drαεth#1
Bräuchte mal etwas Hilfe bei einer Quest.

Geht es wenn man ca 500 Spielminuten hat danach eine Quest erscheint?
(pc.get_playertime)

Kleine Beispiel quest wäre Gut!
02/02/2015 10:13 rollback#2
untested

PHP Code:
quest example begin
    state start begin
        when login 
or kill with pc.get_playertime >= 500 begin
            set_state
("info")
        
end
    end
    state info begin
        when letter begin
            send_letter
("Deine Quest")
        
end
        when button 
or info begin
            say_title
("Bla bla deine Quest pipapo")
            
say("du musst 1x wildhund töten.")
            
local start_quest select("quest starten""noch nicht")
            if 
start_quest == 2 then
                
return
            else
                
say("quest gestartet")
                
set_state("quest_do")
            
end
        end
    end
    state quest_do begin
        when kill with npc
.get_race() == 101 begin
            say
("quest abgeschlossen")
            
set_state("_COMPLETE_")
        
end
    end
    state _COMPLETE_ begin
    end
end 
Das nächste mal in die Questerstellung :)
02/02/2015 13:45 Rextrus#3
Die Funktion ist für die Katz.
Probiers mal hiermit. Ist auch nicht getestet.
02/02/2015 14:11 Drαεth#4
Quote:
Originally Posted by Dexteɾ View Post
Die Funktion ist für die Katz.
Probiers mal hiermit. Ist auch nicht getestet.
Ist der Timer in Spielminuten? Oder allgemein?
Weil ich will die funktion so benutzen , das man nach 500 Minuten ein Item bekommt & eins gelöscht wird :)
02/02/2015 14:16 rollback#5
Quote:
Originally Posted by Drαεth View Post
Ist der Timer in Spielminuten? Oder allgemein?
Weil ich will die funktion so benutzen , das man nach 500 Minuten ein Item bekommt & eins gelöscht wird :)
Der Timer startet beim ersten Login, also jain ... Ich weiss net was mit dem Timer passiert wenn man sich ausloggt. Wenn die Funktion net klappt würde ich es so machen:

PHP Code:
quest example begin
    state start begin
        when login with tonumber
(mysql_query("SELECT playtime FROM player.player WHERE id = "..pc.get_player_id()..";")[1][1]) >= 500 begin
            pc
.remove_item()
            
pc.give_item2()
            
set_state("_COMPLETE_")
        
end
    end
    state _COMPLETE_ begin
    end
end 
02/02/2015 15:15 Rextrus#6
Quote:
Originally Posted by [Sensenmann] View Post
Der Timer startet beim ersten Login, also jain ... Ich weiss net was mit dem Timer passiert wenn man sich ausloggt. Wenn die Funktion net klappt würde ich es so machen:

PHP Code:
quest example begin
    state start begin
        when login with tonumber
(mysql_query("SELECT playtime FROM player.player WHERE id = "..pc.get_player_id()..";")[1][1]) >= 500 begin
            pc
.remove_item()
            
pc.give_item2()
            
set_state("_COMPLETE_")
        
end
    end
    state _COMPLETE_ begin
    end
end 
Das wäre ganz schön belastend^^ Bei jedem Login von jedem Spieler unter 500 Spielminuten checken.. naja :D
Funktion hab ich mal getestet, funkt nicht.
P.S.: Die Funktion heißt nicht pc.get_playertime, sondern pc.get_playtime/pc.getplaytime :D
02/02/2015 15:25 rollback#7
Quote:
Originally Posted by Dexteɾ View Post
Das wäre ganz schön belastend^^ Bei jedem Login von jedem Spieler unter 500 Spielminuten checken.. naja :D
Funktion hab ich mal getestet, funkt nicht.
P.S.: Die Funktion heißt nicht pc.get_playertime, sondern pc.get_playtime/pc.getplaytime :D
Klar wäre es das ... aber sehe grad keine andere Möglichkeit :x
Der timer läuft soweit ich weiss auch weiter wenn man sich ausloggt. Aber korrigier mich falls ich falsch liege
02/02/2015 15:28 Lefloyd#8
Setz beim ersten Login einen Flag & frag den bei jedem Login wd ab (+ Timer) - in der Richtung wie Dexter nur etwas erweiterter (da bei ihm falls man reloggen würde nix mehr passieren würde):
Code:
quest test begin
	state start begin
		when login begin
			pc.setqf("time_running", os.time())
			set_state("run")
		end
	end
	
	state run begin
		when enter begin
			timer("activation", 500 * 60)
		end
		when logout begin
			local running = os.time() - pc.getqf("time_running") + pc.getqf("playtime")
			pc.setqf("playtime", running)
		end
		when login begin
			pc.setqf("time_running", os.time())
			local time_left = pc.getqf("playtime")
			if time_left <= 0 then
				time_left = 1
			end
			timer("activation", time_left)
		end
		when activation.timer begin
			pc.delqf("first_login")
			pc.give_item2(19)
			say("Du hast ein Schwert erhalten")
			complete_quest()
		end
	end
	
	state __COMPLETE__ begin
	end
end
-> bei activation.timer das einsetzen, was der Spieler kriegen soll.

Kind Regards
02/02/2015 15:33 rollback#9
weiss net ob ich grad nen denkfehler hab, aber das hier müsste es sein:

PHP Code:
quest example begin
    state start begin
        when login with pc
.get_level() == 1 begin
            pc
.setqf("playtime"pc.get_time())
            
set_state("get_playtime")
        
end
    end
    state get_playtime begin
        when logout begin
            pc
.setqf("playtime"pc.get_time() - pc.getqf("playtime"))
        
end
        when login begin
            
if pc.getqf("playtime") >= 500 begin
                pc
.remove_item(vnumanzahl)
                
pc.give_item2(vnumanzahl)
                
set_state("_COMPLETE_")
            else
                
pc.setqf("playtime"pc.get_time() + pc.getqf("playtime"))
            
end
        end
    end
    state _COMPLETE_ begin
    end
end 
beim 1. login speicherts die aktuelle uhrzeit, beim logout die aktuelle zeit - die gespeicherte zeit
02/02/2015 16:08 Rextrus#10
Die Funktion pc.get_time gibt es nicht.^^


pc.setqf("playtime", pc.get_time() + pc.getqf("playtime")
Fehlt am Ende ne Klammer. ._.

und
if pc.getqf("playtime") >= 500 begin
:D
02/02/2015 16:10 rollback#11
Ne das ist gewollt so

Quote:
Originally Posted by Dexteɾ View Post
Die Funktion pc.get_time gibt es nicht.^^


pc.setqf("playtime", pc.get_time() + pc.getqf("playtime")
Fehlt am Ende ne Klammer. ._.

und
if pc.getqf("playtime") >= 500 begin
:D
Ich habe die Funktion pc.get_time() ... war auch bei mir schon drin (Invoice) ^^