[Frage]EventQuest!

11/06/2012 21:03 SATunE#1
Hi,

Kann mir einer villeicht in der quest n Timer einschreiben?
Da steht zwar das es ne Ankündigung für Eventende ist, aber es gibt kein Timer!

PHP Code:
quest item_drop begin
    state start begin
        
function kill_in_my_level(vnum, level)
    ----
Variablen
        
--Mobs
        local mobs 
= {
            {
                {
101, 657};
                {
701, 777};
                {
5101, 5116};
            };
            {
                {
901, 937};
                {
1001, 1071};
                {
1101, 1107};
                {
1171, 1177};
                {
1301, 1303};
                {
1331, 1335};
                {
2001, 2076};
                {
2101, 2158};
                {
5121, 5157};
            };
            {
                {
1401, 1603};
                {
2201, 2205};
                {
2231, 2235};
                {
2301, 2305};
                {
2311, 2414};
            };
        }        
        
local metin = {
            {
8001, 8007};
            {
8008, 8017};
            {
8018, 8030};
        }
        
        -- 
Levelbegrenzungen
        local lvl 
= {35, 65, 99}
    ----
    
local k=0
    
for i=1, 3 do
        if 
level<=lvl[i] and k==0 then
            k 
= i
        end
    end
    
for i=1, table.getn(mobs[k]) do
        for 
p=mobs[k][i][1], mobs[k][i][2] do
            if 
vnum==p then
                
return true
            end
        end
    end    
    
for p=metin[k][1], metin[k][2] do
        if 
vnum==p then
            
return true
        end        
    end    
    
return false
end
        when 20020.chat
."Item_Drop" with pc.is_gm() begin
            
if game.get_event_flag("item_open") == 0 then
                say
("Hallo "..pc.get_name().." hier kannst")
                
say("ein Item Drop Event starten")
                
say("Willst du das tun?")
                if 
select("Ja","Nein") == 2 then return end
                say
("Bitte gib an welches Item gedroppt werden soll.")
                
kill_item = tonumber(input()) or 0
                
if kill_item == 0 then
                    say
("Du musst schon was eingeben.")
                    return
                
end    
                say
("Gibt bitte ein wie die Chance zu 100 sein soll das es gedroppt wird ?")
                
kill_prozent = tonumber(input()) or 0
                
if kill_prozent == 0 then
                    say
("Du musst schon was eingeben")
                    return
                
end    
                say
("Bitte gib an wie lange Das Event laufen soll ( in Minuten ) ")
                
zeit = tonumber(input()) or 0
                
if zeit == 0 then
                    say
("Falsche eingabe")
                    return
                
end
                game
.set_event_flag("item_time", get_time()+zeit*60)
                
game.set_event_flag("item_open", 1)
                
notice_all("Das Item Drop Event wurde gestartet")
                
notice_all("Mann kann das item "..item_name(kill_item).." von allen Monster droppen.")
                
notice_all("Fuer "..zeit.." Minute(n)")
            else 
                
say("Item Drop Event ist derzeit schon aktiv")
                
say("Beenden?")
                if 
select("Ja", "Nein")==2 then return end
                game
.set_event_flag("item_open", 0)
                
kill_prozent, kill_item = nil, nil
            end
        end
        when kill with kill_in_my_level
(npc.race, pc.get_level())==true and game.get_event_flag("item_open") == 1 and not npc.is_pc() begin
            
if kill_prozent == nil then game.set_event_flag("item_open", 0) return end
            
if game.get_event_flag("item_time") < get_time() then
                notice_all
("Das Item Drop Event ist vorbei")
                
notice_all("Wir hoffen ihr hattet euren Spass beim Farmen.")
                
game.set_event_flag("item_open", 0)
                
kill_prozent, kill_item = nil, nil
                
return
            
end
            local s
=number(1, 101-kill_prozent) 
            if 
s==1 then
                game
.drop_item_with_ownership(kill_item, 1) 
            
end
        end
        when login with game
.get_event_flag("item_open") == 1 begin
            notice
("Das Item Drop Event laeuft du kannst das") 
            
notice("Item "..item_name(kill_item).." von allen Monstern droppen")
        
end
    end
end 
Danke

MFG TunE
11/07/2012 19:50 Chip'#2
Quest ist doch fertig, hab sie nur überflogen aber glaube sollte so richtig erklärt sein, achso der große Quester bin ich auch nicht :D

PHP Code:
Hier wird gestartet mit dem Timer
Für 
''..zeit..'' zeigt kommt ingame dann wielange..
                
game.set_event_flag("item_time", get_time()+zeit*60)
                
game.set_event_flag("item_open", 1)
                
notice_all("Das Item Drop Event wurde gestartet")
                
notice_all("Mann kann das item "..item_name(kill_item).." 
                von allen Monster droppen."
)
                
notice_all("Fuer "..zeit.." Minute(n)")

Wenn die zeit abgelaufen ist kommt auch eine Nachricht.
und ''item_open'' wird auf 0 gesetzt (wichtig für Login... Siehe unten)

            if 
game.get_event_flag("item_time") < get_time() then
                notice_all
("Das Item Drop Event ist vorbei")
                
notice_all("Wir hoffen ihr hattet euren Spass beim Farmen.")
                
game.set_event_flag("item_open", 0)
                
kill_prozent, kill_item = nil, nil
                
return

Wenn man sich einloggt wird geschaut ob ''item_open'' noch aktiv ist wenn ja (also 1) dann bekommt man die nachricht das es halt noch an ist und was man droppen kann. ->"..item_name(kill_item).."
        
when login with game.get_event_flag("item_open") == 1 begin
            notice
("Das Item Drop Event laeuft du kannst das") 
            
notice("Item "..item_name(kill_item).." von allen Monstern droppen") 
Also meiner Meinung nach sollte alles richtig laufen mit timer und Nachrichten.
Hab sie nun selber nicht getestet!