Ir para conteúdo

Outland Main quest.


SamueLGuedes

Posts Recomendados

pokemonlogobyimezzod4m4.png[/img]

Iae Galera tudo bom ?? acho que sim. então, hoje meu amigo Zipter98 me ajudou com um Script super foda. que seria a da Outland Main quest, e só para avisar. ela não e igual a da PxG. e só um esquema de quest, vocês iram entender mais para frente. então vamos ao script:

 

Crie um arquivo.lua na pasta actions/script, e cole isso lá:

function checkMonsters(area1, area2, pos, aid)



local monstros = getMonstersInArea(area1, area2)



local continue = true



    if #monstros < 1 then



        continue = false



        local a = doCreateItem(1945, 1, pos)



        doItemSetAttribute(a, "aid", aid)



        doSendMagicEffect(pos, 14)



    end



    if continue == true then



        addEvent(checkMonsters, 1000, area1, area2, pos, aid)



    end



end   



function getMonstersInArea(area1, area2)



local monsters = {} 



    for x = area1.x, area2.x do



        for y = area1.y, area2.y do



            for z = area1.z, area2.z do



                monsterpos = {x=x,y=y,z=z,stackpos=253}



                monster = getThingFromPos(monsterpos)



                if ehMonstro(monster.uid) then



                    table.insert(monsters, monster.uid)



                end



            end



        end



    end



    return monsters



end



local function getRecorderPlayer(pos, cid)



local ret = 0



if cid and isPosEqual(getThingPos(cid), pos) then



return cid



end



local s = {}



s.x = pos.x



s.y = pos.y



s.z = pos.z



for a = 0, 255 do



s.stackpos = a



local b = getTileThingByPos(s).uid



if b > 1 and isPlayer(b) and getCreatureOutfit(b).lookType ~= 814 then



ret = b



end



end



return ret



end



 



------------[[ Configurações. ]]------------



local cfg = {



{1, {x = 1056, y = 1056, z = 7}, {x = 1056, y = 1057, z = 7}}, --{valor da storage do clan, posição que o jogador deve ficar, posição para qual o mesmo será teleportado},



{2, {x = 1057, y = 1056, z = 7}, {x = 1056, y = 1058, z = 7}},



{3, {x = 1058, y = 1056, z = 7}, {x = 1056, y = 1059, z = 7}},



{4, {x = 1059, y = 1056, z = 7}, {x = 1056, y = 1060, z = 7}},



{5, {x = 1060, y = 1056, z = 7}, {x = 1056, y = 1061, z = 7}},



{6, {x = 1061, y = 1056, z = 7}, {x = 1056, y = 1062, z = 7}},



{7, {x = 1062, y = 1056, z = 7}, {x = 1056, y = 1063, z = 7}},



{8, {x = 1063, y = 1056, z = 7}, {x = 1056, y = 1064, z = 7}},



{9, {x = 1064, y = 1056, z = 7}, {x = 1056, y = 1065, z = 7}},



}



 



local rank = {



need = true, --Precisará estar em x rank? [true/sim] [false/não]



what_rank = 5, --Se colocar true acima, configure aqui o rank necessário.



}



-----------[[ Fim das configurações. ]]---------



 



function onUse(cid, item, frompos, item2, topos)



      



    for a, b in pairs(cfg) do



        local pos = getRecorderPlayer(b[2])



        if not isPlayer(pos) then



            return doPlayerSendCancel(cid, "One or more players aren't in the correct clan's place.")



        elseif rank.need == true then



            if getPlayerStorageValue(pos, 862281) <= (rank.what_rank - 1) then



                return doPlayerSendCancel(cid, "One or more players aren't at rank "..rank.what_rank..".")



            end



        end



    end



 



    for c, d in pairs(cfg) do



        local pos = getRecorderPlayer(d[2])



        doTeleportThing(pos, d[3])



        doPlayerSendTextMessage(pos, 27, "Good luck!")



        doSendMagicEffect(getThingPos(pos), 14)



        addEvent(function()



            local monsters = {{"Pikachu", {x = 1050, y = 1058, z = 7}}, {"Magikarp", {x = 1051, y = 1058, z = 7}}}



            local posi = {x = 1049, y = 1054, z = 7}       --Coordenadas da posição superior esquerda da área.



            local posis = {x = 1057, y = 1061, z = 7}      --Coordenadas da posição inferior direita da área.



            local pos = {x = 1053, y = 1058, z = 7}        --Onde a alavanca será criada.



            for i = 1, #monsters do



                doCreateMonster(monsters[i][1], monsters[i][2])



            end



        end, 5*1000)



        addEvent(function()



            local posi = {x = 1049, y = 1054, z = 7}       --Coordenadas da posição superior esquerda da área.



            local posis = {x = 1057, y = 1061, z = 7}      --Coordenadas da posição inferior direita da área.



            local pos = {x = 1053, y = 1058, z = 7}        --Onde a alavanca será criada.



            checkMonsters(posi, posis, pos, 19381)



        end, 5500)



    end



    return true



end

 


e em actions.xml coloque essa tag:


<action actionid="xxxx" script="arquivo.lua"/>


esse action irá para a alavanca que o player irá puxar para todos teleportarem para a area de fight, combate, como vocês preferirem chamar.

agora crie outro arquivo.lua, e cole isso:

 


function checkMonsters(area1, area2, pos, aid)



local monstros = getMonstersInArea(area1, area2)



local continue = true



    if #monstros < 1 then



        continue = false



        local a = doCreateItem(1945, 1, pos)



        doItemSetAttribute(a, "aid", aid)



        doSendMagicEffect(pos, 14)



    end



    if continue == true then



        addEvent(checkMonsters, 1000, area1, area2, pos, aid)



    end



end   



function getMonstersInArea(area1, area2)



local monsters = {} 



    for x = area1.x, area2.x do



        for y = area1.y, area2.y do



            for z = area1.z, area2.z do



                monsterpos = {x=x,y=y,z=z,stackpos=253}



                monster = getThingFromPos(monsterpos)



                if ehMonstro(monster.uid) then



                    table.insert(monsters, monster.uid)



                end



            end



        end



    end



    return monsters



end



 



function onUse(cid, item, frompos, item2, topos)



 



local aids = {19381, 19382, 19383, 19384}   --Action IDs.



local posi = {x = 1049, y = 1054, z = 7}       --Coordenadas da posição superior esquerda da área.



local posis = {x = 1057, y = 1061, z = 7}      --Coordenadas da posição inferior direita da área.



local pos = {x = 1053, y = 1058, z = 7}         --Onde a alavanca será criada.



 



    if not isInArray(aids, item.actionid) then return true end



local new_aid = item.actionid + 1



 



    if item.actionid == aids[1] then



        local monsters = {{"Pikachu", {x = 1050, y = 1058, z = 7}}, {"Magikarp", {x = 1051, y = 1058, z = 7}}, {"Caterpie", {x = 1052, y = 1058, z = 7}}}



        doRemoveItem(item.uid, 1)



        addEvent(function()



            for i = 1, #monsters do



                doCreateMonster(monsters[i][1], monsters[i][2])



            end



        end, 5*1000)



        addEvent(function()



            checkMonsters(posi, posis, pos, new_aid)



        end, 5500)



    elseif item.actionid == aids[2] then



        local monsters = {{"Pikachu", {x = 1050, y = 1058, z = 7}}, {"Magikarp", {x = 1051, y = 1058, z = 7}}, {"Caterpie", {x = 1052, y = 1058, z = 7}}, {"Metapod", {x = 1053, y = 1058, z = 7}}}



        doRemoveItem(item.uid, 1)



        addEvent(function()



            for i = 1, #monsters do



                doCreateMonster(monsters[i][1], monsters[i][2])



            end



        end, 5*1000)



        addEvent(function()



            checkMonsters(posi, posis, pos, new_aid)



        end, 5500)



    elseif item.actionid == aids[3] then



        local monsters = {{"Pikachu", {x = 1050, y = 1058, z = 7}}, {"Magikarp", {x = 1051, y = 1058, z = 7}}, {"Caterpie", {x = 1052, y = 1058, z = 7}}, {"Metapod", {x = 1053, y = 1058, z = 7}}, {"Butterfree", {x = 1054, y = 1058, z = 7}}}



        doRemoveItem(item.uid, 1)



        addEvent(function()



            for i = 1, #monsters do



                doCreateMonster(monsters[i][1], monsters[i][2])



            end



        end, 5*1000)



        addEvent(function()



            checkMonsters(posi, posis, pos, new_aid)



        end, 5500)



    elseif item.actionid == aids[4] then



        local monsters = {{"Pikachu", {x = 1050, y = 1058, z = 7}}, {"Magikarp", {x = 1051, y = 1058, z = 7}}, {"Caterpie", {x = 1052, y = 1058, z = 7}}, {"Metapod", {x = 1053, y = 1058, z = 7}}, {"Butterfree", {x = 1054, y = 1058, z = 7}}, {"Mewtwo", {x = 1055, y = 1058, z = 7}}}



        doRemoveItem(item.uid, 1)



        addEvent(function()



            for i = 1, #monsters do



                doCreateMonster(monsters[i][1], monsters[i][2])



            end



        end, 5*1000)



        addEvent(function()



            checkMonsters(posi, posis, pos, new_aid)



        end, 5500)



    end



    return true



end

 


e em actions.xml, coloque essa tag:


<action actionid="19381;19382;19383;19384;19385" script="arquivo.lua"/>


esses actions vocês não precisam colocar em nenhuma alavanca.

EXPLICAÇÃO:

Primeiramente irei explicar como o script funciona, vamos lá.

1º os players terão que ficar na posição indicada para cara clãn. nesta parte do primeiro script que coloquei, você poderá mudar as posiçoes, Lembrando que eles só serão teleportados, se todos estiverem nas posições certas:


{1, {x = 1056, y = 1056, z = 7}, {x = 1056, y = 1057, z = 7}}, --{valor da storage do clan, posição que o jogador deve ficar, posição para qual o mesmo será teleportado},



{2, {x = 1057, y = 1056, z = 7}, {x = 1056, y = 1058, z = 7}},



{3, {x = 1058, y = 1056, z = 7}, {x = 1056, y = 1059, z = 7}},



{4, {x = 1059, y = 1056, z = 7}, {x = 1056, y = 1060, z = 7}},



{5, {x = 1060, y = 1056, z = 7}, {x = 1056, y = 1061, z = 7}},



{6, {x = 1061, y = 1056, z = 7}, {x = 1056, y = 1062, z = 7}},



{7, {x = 1062, y = 1056, z = 7}, {x = 1056, y = 1063, z = 7}},



{8, {x = 1063, y = 1056, z = 7}, {x = 1056, y = 1064, z = 7}},



{9, {x = 1064, y = 1056, z = 7}, {x = 1056, y = 1065, z = 7}},


aqui está uma tabela que irá ajudar muito:


[1] = Volcanic



[2] = Seavell



[3] = Orebound



[4] = Wingeon



[5] = Malefic



[6] = Gardestrike



[7] = Psycraft



[8] = Naturia



[9] = Raibolt


esses são os ids de cada clãn.

2º quando todos forem teleportados, aparecera os primeiros pokemons, após derrotar esses pokemons, irá aparecer a proxima alavanca, essa alavanca nao precisa todos estarem em uma certa posição e só alguém chegar nela e clicar, que irá aparecer outros pokemons:


local monsters = {{"Pikachu", {x = 1050, y = 1058, z = 7}}, {"Magikarp", {x = 1051, y = 1058, z = 7}}}



            local posi = {x = 1049, y = 1054, z = 7}       --Coordenadas da posição superior esquerda da área.



            local posis = {x = 1057, y = 1061, z = 7}      --Coordenadas da posição inferior direita da área.



            local pos = {x = 1053, y = 1058, z = 7}        --Onde a alavanca será criada.


Local monsters = {{"Nome do pokemon", {Posição aonde ele irá aparecer}},
Local posi = {Coordenadas da Parte Superior esquerda da área, que seria <</\}
Locas posis = {Coordenadas da Parte Inferior direita da área, que seria >>>\/}
Local pos = {Posição aonde a próxima alavanca irá aparecer após os pokemons serem derrotados}


3° quando a primeira alavanca aparecer você irá clicar nela e aparecera outros pokemons, que você poderá configurar no segundo script nessa parte:


 

        local monsters = {{"Pikachu", {x = 1050, y = 1058, z = 7}}, {"Magikarp", {x = 1051, y = 1058, z = 7}}, {"Caterpie", {x = 1052, y = 1058, z = 7}}}


lembrando que no segundo script essa parte aqui:








local posi = {x = 2428, y = 2488, z = 15}       --Coordenadas da posição superior esquerda da área.



local posis = {x = 2449, y = 2498, z = 15}      --Coordenadas da posição inferior direita da área.



local pos = {x = 2438, y = 2492, z = 15}         --Onde a alavanca será criada.








tem que estar igual ao do primeiro script.



continuando essa parte:


 

        local monsters = {{"Pikachu", {x = 1050, y = 1058, z = 7}}, {"Magikarp", {x = 1051, y = 1058, z = 7}}, {"Caterpie", {x = 1052, y = 1058, z = 7}}}


eo mesmo esquema que eu falei ali, nome do pokemon, ea posição.

essa parte aqui:


local aids = {19381, 19382, 19383, 19384, 19385}   --Action IDs.


essas sao as actions de cada alavanca que irá aparecer.

vou resumir para vocês, clicou na alavanca, apareceu os pokemons, matou eles e apareceu outra alavanca, e assim por diante. no caso desse script, tem 4 waves.

Criando novas waves:
Primeiramente, tenha em mente que cada actionid representa uma nova wave. Se são 4 actionids, então serão 5 waves (4 actionids + a wave programada pela alavanca da Outland Main).
Quando você adicionar um novo actionid, não se esqueça de colocá-lo na tag e na tabela aids.
Cada elseif item.actionid == aids[número] then representa uma wave, sendo número = wave. LEMBRE-SE: esse número também representa a index na tabela aids. Portanto, se você colocar, por exemplo, esse número = 20, e não tiver 20 actionids na tabela, não funcionará.
Modelo:

elseif item.actionid == aids[wave/número/index do actionid na tabela aids] then



        local monsters = {{"Nome do monstro", posição}, {"Nome do monstro", posição}, {"Nome do monstro", posição}, {"Nome do monstro", posição}}



        doRemoveItem(item.uid, 1)



        addEvent(function()



            for i = 1, #monsters do



                doCreateMonster(monsters[i][1], monsters[i][2])



            end



            checkMonsters(posi, posis, pos, new_aid) --Lembre-se: esse new_aid sempre será o actionid da alavanca+1.



        end, 5*1000)

Todas as waves estão configuradas para ocorrer em 5 segundos. Para alterar isso, basta mudar os 5*1000 para segundos*1000. Exemplo: 10 segundos-10*1000.
Configurei 5 waves, sendo os actionids: 19381, 19382, 19383, 19384.
OBS: A primeira wave não possui actionid, pois foi iniciada pelo código de entrada da Outland Main!
Segue como deixei as waves: -[wave/actionid] - Pokémons: pokémons que vêm na wave.


[1ª wave/sem actionid] - Pokémons: Pikachu e Magikarp.



[2ª wave/19381] - Pokémons: Pikachu, Magikarp e Caterpie.



[3ª wave/19382] - Pokémons: Pikachu, Magikarp, Caterpie e Metapod.



[4ª wave/19383] - Pokémons: Pikachu, Magikarp, Caterpie, Metapod e Butterfree.



[5ª wave/19384] - Pokémons: Pikachu, Magikarp, Caterpie, Metapod, Butterfree e Mewtwo.
Acrescentando: quando for configurar a última wave, configure normalmente como as outras. Quando todos os pokémons forem derrotados, será criada uma alavanca com actionid x. Então, em outro arquivo, você configura o quê quiser: se a alavanca criada levará para uma posição e dará os prêmios, ou se apenas teleportará, ou se, sei lá, matará os jogadores.
Então, na tag, você coloca o actionid que foi setado nesta última alavanca (em outras palavras, o actionid da alavanca da última wave + 1).
Espero que tenham entendido, eu sei que e muita coisa, e só ler devagar.
Depois eu coloco imagens para vocês verem como funciona. abraçs
Creditos:
Zipter98 (Pelo script todo)
Eu (pela ideia e por postar)

 

 

Editado por Bolz
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...