Quest Quest "libro missione"

LegendDragon

Utente Emerald
1 Ottobre 2011
1,189
121
207
644
Ultima modifica:
Salve a tutti posto qui una quest che sono riuscito a risolvere grazie ad alcuni di voi che mi hanno aiutato in un post.

Come ho scritto nel titolo questa "quest" permette di avviare una missione tramite il "libro missione" vi spiego come funziona.

Codice:
                ['qta'] = {200,300,500,1000},
                ['reward_qta'] = {10,15,20,25},
                ['reward_value'] = 27992

qta sarebbe la quantità di mob da uccidere
reward_qta sarebbe il count dell'item
reward_value è il value dell'item che verrà rilasciato se completate la missione con successo.

La missione funziona così: quando cliccate sul libro missione a random vi uscirà la quantità di mob da uccidere è la quantita dell'item stesso dropperete in questo caso 27992 (perla bianca)

Quando cliccate sul libro vi si apre una pergamena ovvero la missione.

Codice:
quest easy_quest begin
    state start begin
    end
    
    state run begin
        function EasyMissionData(field)
            local miss_data = {
                ['qta'] = {200,300,500,1000},
                ['reward_qta'] = {10,15,20,25},
                ['reward_value'] = 27992
            }
            return miss_data[field]
        end
        
        when enter begin
            local num = number(1,table.getn(easy_quest.EasyMissionData('qta')))
            pc.setqf("kills",easy_quest.EasyMissionData('qta')[num])
            pc.setqf("rq",easy_quest.EasyMissionData('reward_qta')[num])
            pc.setqf("rv",easy_quest.EasyMissionData('reward_value'))
        end
        when letter begin
            send_letter_ex("Missione facile", "cele,blink,ex", "scroll_close_facile.tga")
        end
        when button or info begin
            say_title("Missione Facile")
            addimage(-6, -58, "lastbg.tga")
            set_text_color("giallo")
            say("Obiettivo:")
            say_reward("Uccidere " .. pc.getqf("kills") .. " mostri.")
            say("")
            say("Ricompensa:")
            say_reward(pc.getqf("rq") .. " Perle Bianche.")
            say_item_vnum(27992)
        end
        when kill with not npc.is_pc() begin
            pc.setqf("kills",pc.getqf("kills")-1)
            if pc.getqf("kills") <= 0 then
                set_state("reward")
            end
        end
    end
    
    state reward begin
        when letter begin
            send_letter_ex("Ricompensa missione facile", "cele,blink,ex", "scroll_close_facile.tga")
        end
        when button or info begin
            say_title("Ricompensa Missione Facile")
            if pc.enough_inventory(27992) == true then
                say_reward("Hai ricevuto:")
                addimage(-6, -58, "lastbg.tga")
                say_reward(pc.getqf("rq") .. " Perle Bianche.")
                say_item_vnum(pc.getqf("rv"))
                pc.give_item2(pc.getqf("rv"),pc.getqf("rq"))
                clear_letter()
                pc.delqf("rq")
                pc.delqf("rv")
                pc.delqf("kills")
                set_state("__COMPLETE__")
            else
                say("Devi avere almeno 1 spazio nell' inventario")
                addimage(-6, -58, "lastbg.tga")
                say("per ritirare la ricompensa.")
            end
        end
    end
    
    state __COMPLETE__ begin
    end
end


P.S. se non avete implementato le pergamene colorate o i say colorati cancellate i le seguenti "funzioni" :

send_letter_ex("Ricompensa missione facile", "cele,blink,ex", "scroll_close_facile.tga") sostituite con "send_letter ( "Missione facile" )"

,

set_text_color("giallo") basta cancellarlo

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Poi compilate anche questa quest:

Codice:
quest libri begin
    state start begin
        when 50307.use begin
            set_quest_state("easy_quest","run")
            pc.remove_item(50307,1)
        end
    end
end

Se cambiate nome alla quest ricordate di rinominare anche qui il nome della quest di sopra: set_quest_state("easy_quest","run")
Nel Database invece sul libro 50307 dovete inserire in TYPE 18


P.S. ho fatto una guida dettagliata per chi è alle prime armi.

Cordiali Saluti
 
Salve a tutti posto qui una quest che sono riuscito a risolvere grazie ad alcuni di voi che mi hanno aiutato in un post.

Come ho scritto nel titolo questa "quest" permette di avviare una missione tramite il "libro missione" vi spiego come funziona.

Codice:
                ['qta'] = {200,300,500,1000},
                ['reward_qta'] = {10,15,20,25},
                ['reward_value'] = 27992

qta sarebbe la quantità di mob da uccidere
reward_qta sarebbe il count dell'item
reward_value è il value dell'item che verrà rilasciato se completate la missione con successo.

La missione funziona così: quando cliccate sul libro missione a random vi uscirà la quantità di mob da uccidere è la quantita dell'item stesso dropperete in questo caso 27992 (perla bianca)

Quando cliccate sul libro vi si apre una pergamena ovvero la missione.

Codice:
quest easy_quest begin
    state start begin
    end
    
    state run begin
        function EasyMissionData(field)
            local miss_data = {
                ['qta'] = {200,300,500,1000},
                ['reward_qta'] = {10,15,20,25},
                ['reward_value'] = 27992
            }
            return miss_data[field]
        end
        
        when enter begin
            local num = number(1,table.getn(easy_quest.EasyMissionData('qta')))
            pc.setqf("kills",easy_quest.EasyMissionData('qta')[num])
            pc.setqf("rq",easy_quest.EasyMissionData('reward_qta')[num])
            pc.setqf("rv",easy_quest.EasyMissionData('reward_value'))
        end
        when letter begin
            send_letter_ex("Missione facile", "cele,blink,ex", "scroll_close_facile.tga")
        end
        when button or info begin
            say_title("Missione Facile")
            addimage(-6, -58, "lastbg.tga")
            set_text_color("giallo")
            say("Obiettivo:")
            say_reward("Uccidere " .. pc.getqf("kills") .. " mostri.")
            say("")
            say("Ricompensa:")
            say_reward(pc.getqf("rq") .. " Perle Bianche.")
            say_item_vnum(27992)
        end
        when kill with not npc.is_pc() begin
            pc.setqf("kills",pc.getqf("kills")-1)
            if pc.getqf("kills") <= 0 then
                set_state("reward")
            end
        end
    end
    
    state reward begin
        when letter begin
            send_letter_ex("Ricompensa missione facile", "cele,blink,ex", "scroll_close_facile.tga")
        end
        when button or info begin
            say_title("Ricompensa Missione Facile")
            if pc.enough_inventory(27992) == true then
                say_reward("Hai ricevuto:")
                addimage(-6, -58, "lastbg.tga")
                say_reward(pc.getqf("rq") .. " Perle Bianche.")
                say_item_vnum(pc.getqf("rv"))
                pc.give_item2(pc.getqf("rv"),pc.getqf("rq"))
                clear_letter()
                pc.delqf("rq")
                pc.delqf("rv")
                pc.delqf("kills")
                set_state("__COMPLETE__")
            else
                say("Devi avere almeno 1 spazio nell' inventario")
                addimage(-6, -58, "lastbg.tga")
                say("per ritirare la ricompensa.")
            end
        end
    end
    
    state __COMPLETE__ begin
    end
end


P.S. se non avete implementato le pergamene colorate o i say colorati cancellate i le seguenti "funzioni" :

send_letter_ex("Ricompensa missione facile", "cele,blink,ex", "scroll_close_facile.tga") sostituite con "send_letter ( "Missione facile" )"

,

set_text_color("giallo") basta cancellarlo

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Poi compilate anche questa quest:

Codice:
quest libri begin
    state start begin
        when 50307.use begin
            set_quest_state("easy_quest","run")
            pc.remove_item(50307,1)
        end
    end
end

Se cambiate nome alla quest ricordate di rinominare anche qui il nome della quest di sopra: set_quest_state("easy_quest","run")
Nel Database invece sul libro 50307 dovete inserire in TYPE 18


P.S. ho fatto una guida dettagliata per chi è alle prime armi.

Cordiali Saluti
Grazie, può tornare utile ;)
 
  • Mi piace
Reazioni: LegendDragon