Guida [RELEASE]COME REALIZZARE UN DUNGEON PER PRINCIPIANTI

Stato
Discussione chiusa ad ulteriori risposte.

FreddyRyk

Utente Electrum
11 Settembre 2014
415
23
123
191
Ultima modifica da un moderatore:
Salve community, oggi voglio scrivere una breve guida per i principianti, non mi reputo un esperto ma voglio condividere le mie conoscenze con la community.
So che per molti può essere una guida inutile o banale, ma credo che nessuno nasce "imparato" e a qualcuno alle prime armi nè può trarre tesoro.


1) La fase iniziale che ogni Quest deve avere:

Codice:
quest dungeon_principiante begin
  state start begin


2)In questa fase si inizia a realizzare le basi del nostro dungeon, daremo il value di un npc che modificherete secondo le vostre esigente e le coordinate della vostra mappa per iniziare il dungeon

Codice:
when 20090.chat."Dungeon Principiante" begin
                    say_title("Dungeon:")
                    say("Ciao viaggiatore, oggi andremo")
                    say("in un luogo magico dove è possibile esplorare")
                    say("nuove terre")
                    say("")
                    say("Vuoi andare?")
                local dungeon = select("Si" , "No")
                    if dungeon == 1 then
                        pc.warp(6521200, 1231200)
                    elseif dungeon == 2 then
                    return
                end
            end

Beh, si vede si tratta di un semplice NPC che vi porterà a quella mappa X per avviare il dungeon.

3)Ora andremo nella mappa , per dare inizio al dungeon bisogna uccidere un mob

Codice:
when 101.kill begin


Una volta che il pg ha ucciso il mob inizierà il dungeon

4) potete personalizzarlo inserendo un timer di 5 secondi

timer("inizio_dungeon", 5)
end

5) in questa fase iniziamo il dungeon dopo il tempo stabilito dal timer

when inizio_dungeon.timer begin


6)Qui in questa fase useremo la prima funzione "d" del dungeon e sarà fondamentale per salire di piano


d.new_jump_all(23, 2312, 2122)


Mi spiego: la funzione visualizzata teletrasporta tutti coloro che sono in quella mappa a quelle coordinate (X e Y), il numero 23, che è di prima indica l'indice di quella mappa.


7)Per il settimo passo utilizzeremo una nuova funzione

d.setf("freddyryk", 1)


Come mai abbiamo messo il "d.setf"?, esso indica un nome iniziale denominato nel nostro caso"freddyryk", è possibile inserire qualsiasi nome, ma sempre in tutta la d.setf dovrebbe avere lo stesso nome della funzione; il numero "1" indica che questa è la prima d.setf, in altre parole, il primo piano del dungeon.


Attenzione, qui comincia a giocare la nostra immaginazione e iniziamo a personalizzare il dungeon. Richiamare i mob con la funzione "d.spawn_mob".
Sarebbe simile:


d.setf("freddyryk", 1)
d.spawn_mob(101, 12312, 123123)
d.notice("Sei salito al piano successivo!!!!")


8)Nel punto 8 inseriremo il mob da uccidere per salire al piano successivo

when 101.kill d.getf("freddyryk") == 1 begin
d.notice("Hai ucciso il terribile cane XD")
d.notice("Avanza al piano successivo.")


Ora vediamo una nuova caratteristica, per voi ed è il "d.getf" il quale è simile a "d.setf",è possibile inserire il nome che abbiamo dato a tutti i piani," freddyryk", nel mio caso, ma puoi mettere un altro nome; "1" non si riferisce anche come "d.setf", in altre parole significa che siamo al primo piano.

9) inseriamo di nuovo un timer è possibile anche non inserirlo , si basa sulla vostra fantasia

timer("secondo_dungeon", 5)
end

10)in questo passaggio abbiamo richiamato la funzione del timer come citato in precedenza, e abbiamo inserito dei mob o metin da uccidere è tutto personalizzabile secondo le vostre fantasie

Codice:
when secondo_dungeon.timer begin
                d.jump_all(312312, 12131)
                d.setf("freddyryk", 2)
                d.spawn_mob(8025, 431232, 412421)
                d.notice("Siete al secondo piano")
                d.notice("Uccidi metin o mob usate la vostra fantasia.") 
end

11) richiamiamo la funzione di distruggere il metin per salire al piano successivo , è simile ai passaggi precedenti.


Codice:
when secondo_dungeon.timer begin
                d.jump_all(312312, 12131)
                d.setf("freddyryk", 2)
                d.spawn_mob(8025, 431232, 412421)
                d.notice("Siete al secondo piano")
                d.notice("testo")
                end
                
            when 8025.kill with d.getf("freddyryk") == 2 begin
                d.notice("Distruggi il metin")
                d.notice("avanza di piano....")
                timer("terzo_dungeon", 5) 
end

12)In questa fase abbiamo inserito il timer come già citato in precendenza e in più abbiamo inserito un modo simile alla torre per salire al piano successivo, cioè quello di droppare una chiave dai mob cliccare su di essa e passare al piano successivo.

Codice:
when terzo_dungeon.timer begin
                d.jump_all(3123, 123123)
                d.setf("freddyryk", 3)
                d.setf("drop_dungeon", 0)
                d.spawn_mob(103, 312312, 123123)
                d.spawn_mob(104, 123123, 123123)
                d.spawn_mob(105, 123123, 123123)
                d.spawn_mob(103, 312312, 123123)
                d.spawn_mob(104, 123123, 123123)
                d.spawn_mob(105, 123123, 123123)
                d.notice("Trova la chiave!!!!!!!!!!")
                end
                
            when 103.kill or 104.kill or 105.kill with d.getf("freddyryk") == 3 begin
                d.setf("drop_dungeon", d.getf("drop_dungeon")+1)
                if d.getf("drop_dungeon") == 2
                game.drop_item(43003, 1)
                d.setf("drop_dungeon", 0)
                end
            end
            
            when 43003.use begin
                item.remove()
                timer("quarto_dungeon", 5) 
end


13) In questa fase richiamiamo la funzione del timer come abbiamo visto in precedenza


Codice:
when quarto_dungeon.timer begin
            d.jump_all(12312, 13212)
            d.setf("freddyryk", 4)
            d.spawn_mob(108, 12312, 12312)
            d.notice("Batti il boss e vinci il dungeon ")
            end
            
            when 108.kill with d.getf("freddyryk") == 4 begin
                game.drop_item(289, 1)
                notice_all("il giocatore ".. pc.get_name() .." ha ucciso il bos...")
                d.notice("Testo..")
                d.notice("Tieni 10 secondi per ritirare il premio.")
                timer("fine_dungeon", 10) 
end


In questo caso abbiamo inserito un bos , che una volta ucciso dropperà un item e uscirà un annuncio globale di chi ha ucciso il bos e per concludere dopo 10 secondi vi farà uscire dal dungeon


14) In questo passo aggiungeremo la funzione per portarci fuori dal dungeon


Codice:
     when fine_dungeon.timer begin
                d.exit_all()
                end
            end 
end


15) Infine la quest finale

Codice:
quest dungeon_principiante begin
            state start begin
            
            
                when 20090.chat."Dungeon Principiante" begin
                    say_title("Dungeon")
                    say("Ciao viaggiatore, oggi andremo")
                    say("in un luogo magico dov'è possibile esplorare")
                    say("nuove terre")
                    say("")
                    say("vuoi andare?")
                local dungeon = select("Si" , "No")
                    if dungeon == 1 then
                        pc.warp(6521200, 1231200)
                    elseif dungeon == 2 then
                    return
                end
            end
            
            
            
        when 101.kill begin
            timer("inizio_dungeon", 5)
            end
            
            
            
            when inizio_dungeon.timer begin
            d.new_jump_all(23, 2312, 2122)
            d.setf("freddyryk", 1)
            d.spawn_mob(102, 12312, 123123)
            d.notice("Sei al primo piano!!!!")
            d.notice("Uccidi il cane.")
            end
            
                when 102.kill d.getf("freddyryk") == 1 begin
                    d.notice("Hai ucciso il terribile cane ...")
                    d.notice("Avanza al piano successivo.")
                    timer("secondo_dungeon", 5)
                    end
            
            when secondo_dungeon.timer begin
                d.jump_all(312312, 12131)
                d.setf("freddyryk", 2)
                d.spawn_mob(8025, 431232, 412421)
                d.notice("Siete al secondo piano")
                d.notice("Testo.")
                end
                
            when 8025.kill with d.getf("freddyryk") == 2 begin
                d.notice("Avete distrutto il metin")
                d.notice("Avanza al piano successivo....")
                timer("terzo_dungeon", 5)
                end
                
                
            when terzo_dungeon.timer begin
                d.jump_all(3123, 123123)
                d.setf("freddyryk", 3)
                d.setf("drop_dungeon", 0)
                d.spawn_mob(103, 312312, 123123)
                d.spawn_mob(104, 123123, 123123)
                d.spawn_mob(105, 123123, 123123)
                d.spawn_mob(103, 312312, 123123)
                d.spawn_mob(104, 123123, 123123)
                d.spawn_mob(105, 123123, 123123)
                d.notice("Trova la chiave!!!!!!!!!!")
                end
                
            when 103.kill or 104.kill or 105.kill with d.getf("freddyryk") == 3 begin
                d.setf("drop_dungeon", d.getf("drop_dungeon")+1)
                if d.getf("drop_dungeon") == 2
                game.drop_item(43003, 1)
                d.setf("drop_dungeon", 0)
                end
            end
            
            when 43003.use begin
                item.remove()
                timer("quarto_dungeon", 5)
                end
                
                
            when quarto_dungeon.timer begin
            d.jump_all(12312, 13212)
            d.setf("freddyryk", 4)
            d.spawn_mob(108, 12312, 12312)
            d.notice("Battere il boss finale e vincere il Dungeon")
            end
            
            when 108.kill with d.getf("freddyryk") == 4 begin
                game.drop_item(289, 1)
                notice_all("Il giocatore ".. pc.get_name() .." ha ucciso il bos...")
                d.notice("testo...")
                d.notice("testo..")
                timer("fine_dungeon", 10)
                end 
                
                
            
        when fine_dungeon.timer begin
                warp_to_all_village()
                end
            end
        end


Guarda anche : http://www.inforge.net/community/me...vati/413091-release-il-mio-primo-dungeon.html
 
Personalmente non mi serve , ma complimenti per la guida.
Può essere molto utile per i principianti.
Like e +1

L'ho ideata per i principianti, ovvero per coloro che non hanno mai creato un dungeon o che non conosco bene il linguaggio di programmazione, con questa release non diventeranno esperti ma avranno un minimo di chiarezza e trasparenza nel capire come ragiona la quest o dungeon e poi magari idearne uno simile ma personalizzato per iniziare. :)
 
Ho letto la guida e mi sembra che sia molto specifica, ovvero si possono fare solo dungeon simili a quello che hai presentato.
Dovresti espandere la guida spiegando bene come modificare il dungeon per renderlo più flessibile.

E' solo un consiglio, ma per iniziare mi sembra che vada bene.
 
Stato
Discussione chiusa ad ulteriori risposte.
Indietro
Top Bottom