Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá, gostaria que algum scripter pudesse me ajudar. Tenho um script funcional de uma Super-Annihilator própria do meu Server, e gostaria de adicionar a Trash-Function, e a função para que não possam entrar 2 times juntos.

Lembrando que a trash function é a que envia os monstros já presentes pra outro lugar...

As coordenadas poderiam ser deixadas em aberto, que eu mesmo insiro aqui.

Já tentei mesclar esse código com o de outro script de annihilator com as mesmas funções, mas não deu muito certo...

Aguardo respostas, obrigado!

mateuslp

Aqui está o Script atual.

local t = {

lvl = 300,

entrada =

{

{x = 1086, y = 1059, z = 15}, -- pos players

{x = 1085, y = 1059, z = 15},

{x = 1084, y = 1059, z = 15},

{x = 1083, y = 1059, z = 15}

},

saida =

{

{x = 1095, y = 1059, z = 15}, -- pos para onde eles irão

{x = 1094, y = 1059, z = 15},

{x = 1093, y = 1059, z = 15},

{x = 1092, y = 1059, z = 15}

},

monstros =

{

{{x = 1092, y = 1057, z = 15}, "Rambo"}, -- defina pos dos montros e nomes

{{x = 1092, y = 1061, z = 15}, "Rambo"},

{{x = 1094, y = 1057, z = 15}, "Rambo"},

{{x = 1094, y = 1061, z = 15}, "Rambo"},

{{x = 1096, y = 1059, z = 15}, "Jaul"},

{{x = 1097, y = 1059, z = 15}, "Jaul"}

}

}

function onUse(cid, item, fromPosition, itemEx, toPosition)

local check = {}

for _, k in ipairs(t.entrada) do

local x = getTopCreature(k).uid

if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < t.lvl) then

doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..t.lvl..' ou mais.')

return true

end

table.insert(check, x)

end

for _, summon in pairs(t.monstros) do

local creature = getTopCreature(summon[1]).uid

if(creature > 0 and not isPlayer(creature)) then

doRemoveCreature(creature)

end

doCleanTile(summon[1])

doCreateMonster(summon[2], summon[1])

end

for i, tid in ipairs(check) do

doSendMagicEffect(t.entrada, CONST_ME_POFF)

doTeleportThing(tid, t.saida, false)

doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)

end

doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)

return true

end

Link para o post
Compartilhar em outros sites

Então... esse script funciona assim:

Quando vc puxa, ele sumona os monstros em determinadas posições e teleporta os players, ao estilo annihilator.

PORÉM, se os monstros da sala estiverem vivos ( caso um time tenha morrido tentando ), os players ainda são teleportados, ficando com ainda mais monstros...

e de outra forma, caso um time tenha completado a quest e ainda esteja na sala, queria que outro time não pudesse puxar a alavanca.

Precisa de mais detalhes?

Obrigado!

EDIT - UP

Editado por mateuslp (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Deve ter algum jeito de fazer o que você quer... mas no caso do global, a cipsoft só deixa fazer uma anihilator por cada server save, por mundo, justamente por causa desse probleminha aí... vou tentar fazer algo aqui, mas não lhe garanto nada.

Link para o post
Compartilhar em outros sites

Eu fiz algo aqui, se tiver monstros ele vai remover e adicionar novos, quando eles entrarem na quest vai ser setado uma global storage evitando que mais gente possa entrar, e quando sair vai setar um novo valor para outros times passarem.

\mods\Annihilator.xml

<?xml version="1.0" encoding="UTF-8"?>

<mod name="Annihilator" version="1.0" author="Kimoszin" contact="tibiaking.com" enabled="yes">

    <config name="annihilator_config"><![CDATA[

        config = {

            level = 0,


            storage = 36478,


            exit = {x = 1019, y = 1035, z = 7},


            posI = {

                {x = 1023, y = 1035, z = 7},

                {x = 1022, y = 1035, z = 7},

                {x = 1021, y = 1035, z = 7},

                {x = 1020, y = 1035, z = 7},

            },


            posF = {

                {x = 1024, y = 1039, z = 7},

                {x = 1023, y = 1039, z = 7},

                {x = 1022, y = 1039, z = 7},

                {x = 1021, y = 1039, z = 7},

            },


            monster = {

                {name = "Rat", pos = {x = 1024, y = 1037, z = 7}},

                {name = "Rat", pos = {x = 1023, y = 1037, z = 7}},

                {name = "Rat", pos = {x = 1022, y = 1037, z = 7}},

                {name = "Rat", pos = {x = 1021, y = 1037, z = 7}},

                {name = "Rat", pos = {x = 1024, y = 1041, z = 7}},

                {name = "Rat", pos = {x = 1023, y = 1041, z = 7}},

                {name = "Rat", pos = {x = 1022, y = 1041, z = 7}},

                {name = "Rat", pos = {x = 1021, y = 1041, z = 7}},

            },


        }

    ]]></config>

    <action actionid="9874" event="script"><![CDATA[

        function onUse(cid, item, fromPosition, itemEx, toPosition)

            domodlib('annihilator_config')


            local table = {}

            if (getStorage(config.storage) == -1) then

                doSetStorage(config.storage, 0)

                for i = 1, #config.posI do

                    table[i] = getTopCreature(config.posI[i]).uid

                    if table[i] == 0 or not isPlayer(table[i]) then

                        return doPlayerSendCancel(cid, "You need "..#config.posI.." players for this quest.")

                    elseif getPlayerLevel(table[i]) < config.level then

                        return doPlayerSendCancel(cid, "All players need to have level "..config.level.." or higher.")

                    end

                end


                for y = 1, #config.posF do

                    doTeleportThing(table[y], config.posF[y])

                    doSendMagicEffect(config.posI[y], CONST_ME_POFF)

                    doSendMagicEffect(config.posF[y], CONST_ME_TELEPORT)

                end



                for m = 1, #config.monster do

                    local t = getTopCreature(config.monster[m].pos).uid

                    if (t > 0) then

                        doRemoveCreature(t)

                    end

                    doCreateMonster(config.monster[m].name, config.monster[m].pos)

                end

            else

                doPlayerSendCancel(cid, "There is already a team in the quest room.")

            end

        end

    ]]></action>


    <movevent type="StepIn" actionid="9875" event="script"><![CDATA[

        function onStepIn(cid, item, position, fromPosition)

            domodlib('annihilator_config')


            doSetStorage(config.storage, -1)

            doTeleportThing(cid, config.exit)

        end

    ]]></movevent>

</mod>

Link para o post
Compartilhar em outros sites

Kimoszin, agradeço o esforço, porém não funcionou aqui não... ao puxar a alavanca, aparece que já tem um time dentro da sala, mesmo não tendo ninguém.

A alavanca troda de lado ( de id ).

Ah, não sei se altera nada, mas troquei o "actionid" por "uniqueid", que no caso seria 5000.

Dei rep+ pela ajuda, e se encontrar o erro, favor me avisar... :) Obrigado!

Link para o post
Compartilhar em outros sites

Kimmoszin, usei a Actionid e deu o mesmo erro do que com a Uniqueid... A alavanca troca de ID e aparece uma mensagem dizendo que já existe um time dentro da sala... apesar de não ter absolutamente nada, nem monstros...

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo