Unmantained Guida [GUIDA]Come creare una quest n°2.

Una guida contrassegnata come Unmantained contiene informazioni su un argomento obsoleto, non più utile o files non aggiornati da parte del creatore.
Stato
Discussione chiusa ad ulteriori risposte.

Kayle

Utente Jade
9 Ottobre 2009
1,919
98
287
694
Ultima modifica:
Ecco la seconda parte di come creare una quest:
Lua code - 156 lines - codepad -> Trovate tutto qui
Se qualche nabbo dovesse editare:
Codice:
--              Lezione QUEST 2 by S4LV0DM
--Bene, nella prima lezione abbiamo imparato a come strutturare una quest.
--
--Gli argomenti stavolta saranno:
--1. Il setqf ed il getqf
--2. Il q.set_clock()
--3. Gli input e i select
--4. Alcuni comandi di base
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
--                           LE VARIABILI
--Le variabili sono dichiarate con una parola di nome local all'inizio. Esempio:
--"local a"
--In questo caso abbiamo solamente creato la variabile a con valore nil(nullo).
--Per dare un valore alla variabile, ci basta solo fare così:
--
--"local a = "PATATEEEEEE""
--
--Quindi ora se facciamo say(a), dirà PATATEEEEEEEE xD.
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
--                           COME USARE GLI INPUT
--Gli input servono a fare scrivere un pg, ESEMPIO:
----------------------
--"local ciao = input()"
-----------------------
--In questo caso, se avessimo fatto say(ciao), avrebbe scritto quello che avevano scritto prima.
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
--                           COME USARE I SELECT
--I select sono dei pulsanti, che ti possono dare delle scelte. ESEMPIO:
--local siono = select("Si","No")
--In questo caso, per dare una differenza se si clicca si o no basta fare così:
--
--if siono == 1 then --Se clicca sulla prima scelta(Si)
--say("Meno male hai scelto si!")
--return--Esce
--elseif siono == 2 then --Se clicca invece su no
--return --Esce"
--
--In pratica con questo vi ho spiegato l'if <.<
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
--                           COME USARE IL PC.SETQF ED IL PC.GETQF
--Il setqf immagazzina delle informazioni, dentro il pg.
--Il setqf può essere utile per fare un' opzione che puoi usare una sola volta, oppure anche per fare un counter di animali da killare.
--La struttura del setqf è questa:
---------------------------------
--"say("Quanti anni hai?")
--local anni = input()
--say("Anni immagazzinati!")
--pc.setqf("anni",anni) -- Salva gli anni nel qf"
---------------------------------------------------
--Il getqf, invece, scrive le informazioni immagazzinate, per esempio:
----------------------------------------------------------------------------------------------------
--local ciao = pc . getqf ( "anni") --Qui salviamo la variabile ciao, adesso ciao significa anni. --
--say("Tu hai " .. ciao .. " anni!" ) --Qui scriviamo quanti anni ha"                             --
----------------------------------------------------------------------------------------------------
--Quindi la banca(senza assegni) è fatta principalmente di qf!
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
--                          COME USARE IL Q.SET_CLOCK()
--Il q.set_clock, serve a dare una scadenza a qualcosa
--Struttura:
--
--"pc.setqf("nomeqflimite", get_time()+20*60) --In questo caso 20*60 sarebbe 20 minuti, se fai 20*60*60, sono 20 ore. Spero di essermi spiegato
--q.set_clock("Tempo rimanente ", pc.getqf("nomeqflimite")-get_time()) --Qui salva il q.set_clock."
--
--E adesso? Come si fa a mettere un blocco?
--
--"when 20094.chat."Troppo tardi..." with pc . getqf("nomeqflimite") < get_time() begin
--say("Mi dispiace, sei stato troppo lento")
--set_state("__COMPLETE__")
--end
--
--Invece per quando è in tempo, basta mettere >= get_time al posto di <
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
--                         COMANDI DI BASE
--Ecco una lista dei comandi di base che potreste usare per creare quest/npc.
--say("parola") --Scrive in un npc.
--say_reward("scrive") -- Scrive rosso in un npc.
--pc.give_item2("valueitem",quantita) --Da un item.
--pc.remove_item("valueitem",quantita) --Rimuove un item.
--pc.count_item("valueitem") --E' una variabile; restituisce quanti item si hanno.
--chat("Messaggio") --Scrive nella chat visibile solo da un pg.
--notice_all("Scrive nella chat gm") --Scrive nella chat gm.
--pc.get_empire() --E' una variabile; restituisce il regno del pg.
--pc.get_job() --E' una variabile; restituisce la propria razza.
--pc.is_gm() --Questa è boolean, quindi restituisce true o false;Se un pg è gm.
--npc.is_pc() --Boolean;Se un npc è un pg.
--npc.get_empire() --Variabile;Restituisce il regno di un npc.
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
quest lezione2 begin --Nominazione	
	state start begin --Primo state
		when letter begin --Arriva la lettera
			send_letter("Dirigiti dal fabbro!") --Invia la lettera
		end--Chiusura when
		when button or info begin --Quando apre la lettera
			say("Il fabbro ha un compito per te!")
		end --Chiusura when
		when 20016.click begin --Quando clicchi sul fabbro
			say_title("Fabbro:")
			say(pc.get_name() .. "ti prego, va dal mercante d'armi in 30 minuti!")
			say("Devo preparare una cena, e mi serve un coltello!")
			pc.setqf("illimite", get_time()+30*60) --Qui salva il tempo
			q.set_clock("Tempo rimanente ", pc.getqf("illimite")-get_time()) --Qui dà il tempo rimanente
			set_state("vadalui") --Ti porta al nuovo state
		end --Chisuura when
	end --Chiusura state
	state vadalui begin --Nuovo state
		when letter begin --Arriva la lettera
			send_letter("Va dal mercante d'armi") --Invia la lettera
		end --Chiusura when
		when button or info begin --Quando apre la lettera
			say("Va dal mercante d'armi!")
		end --Chiusura when
		when login or levelup or kill or chat with pc.getqf("illimite") < get_time() begin --Quando logghi ed il tempo è scaduto
			chat("Missione fallita, tempo scaduto")
			set_state("__COMPLETE__") --Fine
		end --Chisuura when
		when 9001.click with pc.getqf("illimite") >= get_time() begin --Quando clicchi sul mercante d'armi e sei in tempo
			say("Sì, ecco a te il coltello")
			pc .give_item2("valuecoltello",1)
			set_state("ritorna") --Ti porta al nuovo state
		end --Chisura when
	end --Chisuura state
	state ritorna begin
		when login or levelup or kill or chat with pc.getqf("illimite") < get_time() begin --Quando logghi ed il tempo è scaduto
			chat("Missione fallita, tempo scaduto")
			set_state("__COMPLETE__") --Fine
		end --Chiusura when
		when 20016.click with pc.getqf("illimite") >= get_time() and pc.count_item("valuecoltello") >= 1 begin --Quando sei ancora in tempo ed hai il coltello e clicchi sul fabbro
			say("Grazie!")
			pc.give_item2("199",1)
			set_state("__COMPLETE__") --Fine
		end --Chisura when
	end --Chisura state
	state __COMPLETE__ begin --Lo state vuoto
	end --Chisura state
end --Chiusura quest
Spero vi sia utile.
PS: Se non avete capito qualcosa, basta chiedere.​
 
Ultima modifica:
E' bello sapere che c'é ancora gente che posta qualcosa di utile.
S4LV0DM, come le altre tue release-guide anche questa mi é servita ed é molto utile.
Non sono la tipica persona che da punti reputazione perché infatti io li odio e odio chi nei topic scrive per es. "+1 non mordono" ecc.
Ma in questo caso il +1 te lo sei meritato. Complimenti :sisi:


33eufsl.gif
 
ottimo lavoro, veramente eccezionale, ma se ad esempio io vorrei fare un orologio? come dovrei fare il mio timer? penso che andrebbero dichiarate con local 3 variabili no?
pensavo:
dichiaro s (secondi) m (minuti) o (ore)
ma poi come faccio a farle incrementare tutte? di modo la mia"s" ogni volta che va a 60 mi aumenta di uno la mia"m" e la mia "o" venga poi aumentata quando la m sia a 60?
non sò se mi sono spiegato, ma intendevo una sorta di orologio digitale che poi mi faccia inserire secondi minuti e ore a me medesimo la prima volta... e dopo continui a contare dove io lo ho lasciato.

Dimenticavo cmq il +1 qua è scontato u.u
 
Codice:
    quest orologio begin
        state start begin
            when letter begin
            send_letter ( "Orologio" )
        end
            when button or info begin
            say ( ""..o..":"..m..":"..s.."" )
            say ( )
            a = select ( "Setta Orologio" , "Chiudi" )
                if a == 1 then
                say ( "Ore:" )
                o = input ( )
                say ( "Minuti:" )
                m = input ( )
                say ( "Secondi:" )
                s = input ( )
                server_timer ( "or" , 1 )
            end
        end
            when or.server_timer begin
            s =  s + 1
                if s == 60 then
                s = 0
                m = m + 1
                    if m == 60 then
                    m = 0
                    o = o + 1
                        if o == 24 then
                        o = 0
                    end
                end
            end
            server_timer ( "or1" , 1 )
        end
            when or1.server_timer begin
            s =  s + 1
                if s == 60 then
                s = 0
                m = m + 1
                    if m == 60 then
                    m = 0
                    o = o + 1
                        if o == 24 then
                        o = 0
                    end
                end
            end
            server_timer ( "or" , 1 )
        end
    end
end
questo dovrebbe essere un orologio ma non lo ho testato
 
veramente è meglio farlo sfruttando il get_time, non ha senso fare un server_timer che continua sempre...
 
Codice:
function t ( )
	say_title("Orologio:")
end
t()
say("Sono le " .. get_time() / 3600 .. ":" .. get_time() / 60)
Dovrebbe andare.
 
lo ho provato, ma non da un ora precisa.. da tutti numeri a caso =/, cmq grazie mille dell'aiuto salvo, ma un metodo più preciso si riesce a trovarlo ?
 
o_o numeri a caso? o_o, non so che dirti ._., segui quello di superisi, funziona, anche se un po' insensato per il fatto del server_timer.
 
ciao! bellissima guida =D +1 assicurato ;)
ma ho una domanda :S esiste il comando lua x livellare? sto lavorando alla quest give_basic_weapon xD
 
Stato
Discussione chiusa ad ulteriori risposte.
Indietro
Top Bottom