Quest [QUEST] Setaou Vol.1 (Easy 2 Learn)

Stato
Discussione chiusa ad ulteriori risposte.

retro.ReckLess

Bannato
18 Dicembre 2011
647
43
238
374
Ultima modifica da un moderatore:
Salve, oggi vi rilascio la mia seconda quest intitolata "Setaou". La missione chiede di uccidere 10 Guerriero Setaou in 1 ora dal livello 75+.

PHP:
-------------------------------------
------   Setaou Vol.1 (Easy 2 Learn)
----   Scripted by /TfF\ReckLess
--   The Favorites Few - Clan Game
-------------------------------------
quest setaou begin
    state start begin
        function a()
            say_title("~ReckLess~")
        end
        
        when letter with pc.get_level() >= 75 begin
            send_letter("I setaou attaccano!")
        end
        
        when info or button begin
            setaou.a()
            say(pc.get_name() .. ", così si chiama vero?")
            say("Eheh..")
            say("Io mi chiamo ReckLess e provengo da")
            say("una terra che nessuno conosce!")
            wait()
            setaou.a()
            say("Mi han informato che dei setaou")
            say("han in piano di compiere un attacco")
            say("al nostro villaggio..")
            say("Chiedo a lei grande guerriero di aiutarci!")
            say("")
            local chose = select ("Aiuta","Non ho tempo")
            if chose == 2 then
                setaou.a()
                say("C-cosa?..")
            return
            else
                setaou.a()
                say("Grazie mille della sua disponibilita'!")
                say("Ti ricordo che però lei ha un tempo limite")
                say("perchè poi se no verremo attaccati e sterminati..")
                wait()
                setaou.a()
                pc.setqf("time", get_time()+60*60)
                say("Noi tutti preghiamo per lei!")
                say("")
                say_reward("Uccidi 10 Guerriero Setaou in 1 ora.")
                q.set_clock("Tempo stimato per l'attacco: ", pc.getqf("time")-get_time())
                say_reward(string.format("Guerrieri Setaou rimanenti: %d", pc.getqf("state")))
                set_state("run")
            end
        end
    end
    
    state run begin
        when login or levelup or kill with pc.getqf("time") < get_time() begin
            setaou.a()
            say("Il villaggio è stato attaccato e distrutto.")
            say_reward("Missione fallita.")
            set_state("__COMPLETE__")
        end
        
        when 2401.kill with pc.getqf("time") >= get_time() begin
            local count = pc.getqf("state") + 1
            if count <= 10 then
                pc.setqf("state", count)
                q.set_counter("rest", 10 - count)
                if count == 10 then
                    setaou.a()
                    say("Grazie mille, hai ucciso tutti i setaou!")
                    say("")
                    say_reward("EXP ricevuta: 200.000.000")
                    say_reward("Yang ricevuti: 20.000.000")
                    pc.give_exp2(200000000)
                    pc.change_money(20000000)
                    set_state("__COMPLETE__")
                end
            end
        end
    end
    
    state __COMPLETE__ begin
    end
end

Provate se funziona. Spero sia di vostro gradimento.
 
get_time()+60*60 non ti sembra manchino 2 parentesi?
questo dovrebbe fare così com'è ora:

get_time() + 3600, se è questo ciò che vuoi nn bastava mettere direttamente +3600
e risparmiare così un calcolo che è sempre uno spreco di memoria?

Se hai una spiegazione sono felice di apprendere nuove cose :)
ps.bell'idea comunque... bravo..
 
Ultima modifica:
60*60 = 3600 = 1 ora perchè 60 equivale ai secondi in un minuto cioè 60.

Se lei deve mettere il tempo di 24 ore cosa fa ci scrive +86400? Meglio 24*60*60.

Comunque ho fatto un errore nello script. Il counter non finisce mai perché ho scritto if count <= 10 e dovrebbe essere if count < 10.
 
60*60 = 3600 = 1 ora perchè 60 equivale ai secondi in un minuto cioè 60.

Se lei deve mettere il tempo di 24 ore cosa fa ci scrive +86400? Meglio 24*60*60.

Comunque ho fatto un errore nello script. Il counter non finisce mai perché ho scritto if count <= 10 e dovrebbe essere if count < 10.

si ma così facendo si fanno 4 operazioni con l'ALU(Arithmetic Logic Unit) invece di 1 intendi?
Metodo mio = solo somma
Metodo tuo = somma di 3 moltiplicazioni
xD è giusto per risparmiare in termini di efficienza e memoria :)
 
Stato
Discussione chiusa ad ulteriori risposte.