Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Primeiramente gostaria de deixar claro aqui a minha indignação com aqueles muitos que ficam reclamando que não tem eventos de scripting, e agora, quando tentamos fazer, não participam.

Obrigado aos DOIS desafiantes que participaram ... bora para o duelo!

São 3 scripts, lembrando que ao votar é preciso citar uma justificativa.

Script 1:

ACTION:

    -- area de configuração
local config = {
    [1] = {pos_player = {x=156,y=51,z=5, stackpos=253},topos_player = {x=146,y=27,z=7},effect_player = 10},
    [2] = {pos_player = {x=157,y=51,z=5, stackpos=253},topos_player = {x=147,y=27,z=7},effect_player = 10},
    [3] = {pos_player = {x=158,y=51,z=5, stackpos=253},topos_player = {x=148,y=27,z=7},effect_player = 10},
    [4] = {pos_player = {x=159,y=51,z=5, stackpos=253},topos_player = {x=149,y=27,z=7},effect_player = 10},
    [5] = {pos_player = {x=160,y=51,z=5, stackpos=253},topos_player = {x=150,y=27,z=7},effect_player = 10},
    --[6] = {pos_player = {x=161,y=51,z=5, stackpos=253},topos_player = {x=151,y=27,z=7},effect_player = 10},
    --[7] = {pos_player = {x=162,y=51,z=5, stackpos=253},topos_player = {x=152,y=27,z=7},effect_player = 10},
    --[8] = {pos_player = {x=163,y=51,z=5, stackpos=253},topos_player = {x=153,y=27,z=7},effect_player = 10},
    --[9] = {pos_player = {x=164,y=51,z=5, stackpos=253},topos_player = {x=154,y=27,z=7},effect_player = 10},
    --[10] = {pos_player = {x=165,y=51,z=5, stackpos=253},topos_player = {x=155,y=27,z=7},effect_player = 10},
    --[11] = {pos_player = {x=166,y=51,z=5, stackpos=253},topos_player = {x=156,y=27,z=7},effect_player = 10},
    --[12] = {pos_player = {x=167,y=51,z=5, stackpos=253},topos_player = {x=157,y=27,z=7},effect_player = 10},
    --[13] = {pos_player = {x=168,y=51,z=5, stackpos=253},topos_player = {x=158,y=27,z=7},effect_player = 10},
    --[14] = {pos_player = {x=169,y=51,z=5, stackpos=253},topos_player = {x=159,y=27,z=7},effect_player = 10},
    --[15] = {pos_player = {x=170,y=51,z=5, stackpos=253},topos_player = {x=160,y=27,z=7},effect_player = 10},
    }
    local monster = {name_monster = "Demon", pos_monster = {x=145,y=29,z=7},time_monster = 20, effect_monster = 10} -- tempo em segundos
    local retorno_players = {pos = {x=160,y=54,z=7},time_players = 5} -- tempo em segundos
    local evaluation_of_id_players = {}
    local reward = {2160,500} -- achei sem graça resovir colocar uma recopensa
    local check = 1
    -- area de configuração
 
function onUse(cid, item, frompos, item2, topos)
    if check ~= 1 then
        doPlayerSendCancel(cid,"já tem gente matando boss")
        return true
    end
    onCheckPlayers (cid)
    if counter == #config then
        for key,value in pairs(config) do
            doTransformItem(item.uid,item.itemid == 1945 and 1946 or 1945)
            all_players = getThingfromPos(value.pos_player)
            doTeleportThing(all_players.uid,value.topos_player)
            doSendMagicEffect(value.topos_player,value.effect_player)
            doPlayerSendTextMessage(getCreatureByName(getCreatureName(all_players.uid)),22,"você tem "..monster.time_monster.." segundos para matar boss")
        end
        bicho = doCreateMonster(monster.name_monster,monster.pos_monster)
        addEvent(removerMonster,monster.time_monster*1000,cid)
        check = 0
    else
        doPlayerSendCancel(cid,"You need "..#config.." players in your team.")
    end
    return true
end
 
function onCheckPlayers (cid)
    counter = 0
    for key,value in pairs(config) do
        all_players = getThingfromPos(value.pos_player)
        if all_players.itemid > 0 and isPlayer(all_players.uid) then
            counter = counter+all_players.itemid
            evaluation_of_id_players[counter] = getCreatureByName(getCreatureName(all_players.uid))
        end
    end
    return true
end
 
function removerMonster(cid)
    if isCreature(bicho) then
        doSendMagicEffect(getThingPos(bicho),monster.effect_monster)
        doRemoveCreature(bicho)
        addEvent(telePlayers,(retorno_players.time_players/2)*1000,cid)
        for i = 1,#evaluation_of_id_players do
            if isPlayer (evaluation_of_id_players[i]) then
                doPlayerSendTextMessage(evaluation_of_id_players[i],22,"o seu tempo acabou tenta de novo você sera teletransportado em "..(retorno_players.time_players/2).." segundos")
            end
        end
    else
        for i = 1,#evaluation_of_id_players do
            if isPlayer (evaluation_of_id_players[i]) then
                doPlayerAddItem(evaluation_of_id_players[i],reward[1],reward[2])
                doPlayerSendTextMessage(evaluation_of_id_players[i],22,"parabéns por ter matado boss você sera teletransportado em "..retorno_players.time_players.." segundos")
                addEvent(telePlayers,retorno_players.time_players*1000,cid)
                return true
            end
        end
    end
    return true
end
 
function telePlayers(cid)
    check = 1
    for i = 1,#evaluation_of_id_players do
        if isPlayer(evaluation_of_id_players[i]) then
            doTeleportThing(evaluation_of_id_players[i],retorno_players.pos)
            doSendMagicEffect(retorno_players.pos,10)
        end
    end
    return true
end

Script 2:

ACTION:

local quest = {
        team_pos = {
                {{x = 0, y = 0, z = 0, stackpos = 253},{x = 0, y = 0, z = 0}},
                {{x = 0, y = 0, z = 0, stackpos = 253},{x = 0, y = 0, z = 0}},
        },
        boss_config = {name = "Demon", pos = {x = 0, y = 0, z = 0}, minutes = 10,},
        saida_pos = {x = 0, y = 0, z = 0},
        gStorage = 99999,
}
 
local function exit(tabela)
        for i = 1, #tabela do
                if isPlayer(tabela[i]) then
                        doTeleportThing(tabela[i], quest.saida_pos)
                        doSendMagicEffect(quest.saida_pos, CONST_ME_ENERGYAREA)
                end
        end
       
        setGlobalStorageValue(quest.gStorage, 0)
end
 
local function verificarBoss(boss_uid, tabela, x)
        if x > 0 then
                if boss_uid > 0 then
                        if x == 1 then
                                doRemoveCreature(boss_uid) and exit(tabela)
                        else
                                addEvent(verificarBoss, 60000, boss_uid, tabela, x - 1)
                        end
                else
                        addEvent(exit, 60000, tabela)
                end
        end
end
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
 
        if item.itemid == 1945 then
               
                if getGlobalStorageValue(quest.gStorage) < 1 then
                        return doPlayerSendCancel(cid, "Ja tem um time dentro da quest, aguarde.")
                end
                       
                local tabela = {}
                for i = 1, #quest.team_pos do
                        local player = getThingfromPos(quest.team_pos[i][1]).uid
                        if player > 0 and isPlayer(player) then
                                table.insert(tabela, player)
                        end
                end
 
                if #tabela == #quest.team_pos then
                        for i = 1, #tabela do
                                doTeleportThing(tabela[i], quest.team_pos[i][2])
                                doSendMagicEffect(quest.team_pos[i][2], CONST_ME_ENERGYAREA)
                               
                                local boss_uid = doSummonCreature(quest.boss_config.name, quest.boss_config.pos)
                                addEvent(verificarBoss, 60000, boss_uid, tabela, quest.boss_config.minutes - 1)
 
                                setGlobalStorageValue(quest.gStorage, 1)
                        end
                else
                        return doPlayerSendCancel(cid, "Voce precisa de "..#quest.team_pos.." jogadores para a quest.")
                end
        end
       
        doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
       
        return true
end

Script 3:

LIB:

--[[

• time, é o tempo máximo que pode ficar na sala.
• timeOnWin, é o tempo que eles devem esperar ao matar os monstros configurados para serem teleportados.
• globalStorage, é a storage usada para saber se já estão usando a sala.
• resetGoPos, é o local para onde todos serão teleportados quando o tempo máximo acabar.
• playerGoPos, é o local da sala para onde os players serão teleportados.
• winGoPos, é o local para onde os ganhadores serão teleportados.
• roomPoints: leftUpPoint(Canto superior esquerdo da sala, a posição dele), rightDownPoint(Canto inferior direito da sala, a posição dele).
• monsters: monsterName(Nome do monstro que vai ser criado), createPos(Posição onde o monstro vai ser criado.)
• players: playerPos(Onde o player deve estar para a alavanca poder ser acionada), a quantidade configurada será a quantidade necessária de players para entrar na sala.

]]--

SKDeathRoom = {
    time = 180, -- Time in this room, in seconds
    timeOnWin = 60, -- Time on win, to teleport all players.
    globalStorage = 4565,
    playerToPos = {x = 100, y = 100, z = 7},
    resetGoPos = {x = 10, y = 10, z = 7},
    winGoPos = {x = 20, y = 20, z = 7},
    roomPoints = {leftUpPoint = {x = 1, y = 1, z = 7}, rightDownPoint = {x = 2, y = 2, z = 7}},
    monsters = {
                   {monsterName = "Demon", createPos = {x = 2, y = 2, z = 7}},
               },
    players = {
                  {playerPos = {x = 1, y = 1, z = 7}},
              }
}
 
function doResetSKRoom(toPos)
    local left, right = SKDeathRoom.roomPoints.leftUpPoint, SKDeathRoom.roomPoints.rightDownPoint
    for x = left.x, right.x do
        for y = left.y, right.y do
            for z = left.z, right.z do
                local creature = getTopCreature({x = x, y = y, z = z}).uid
                if isPlayer(creature) then
                     doTeleportThing(creature, toPos, true, true)
                else
                     doRemoveCreature(creature)
                end
            end
        end        
    end
    setGlobalStorageValue(SKDeathRoom.globalStorage, 0)
end

ACTION:

-- <action actionid="ALGUMID" event="script" value="ARQUIVO.lua"/>

function onUse(cid, item, frompos, itemEx, topos)
 
    if getGlobalStorageValue(SKDeathRoom.globalStorage) <= 0 then
         local count = 0
         for i, player in pairs(SKDeathRoom.players) do
             local creature = getTopCreature(player.playerPos).uid
             if isPlayer(creature) then
                 count = count+1
             end
         end
         if #count == #SKDeathRoom.players then
              for i, player in pairs(SKDeathRoom.players) do
                  local creature = getTopCreature(player.playerPos).uid
                  doTeleportThing(creature, SKDeathRoom.playerToPos, true, true)
              end
              for i, monster in pairs(SKDeathRoom.monsters) do
                  local monster = doCreateMonster(monster.monsterName, monster.createPos)
                  registerCreatureEvent(monster, "SKMonsterDeath")
              end
              addEvent(doResetSKRoom(SKDeathRoom.resetGoPos), SKDeathRoom.time*1000)
              setGlobalStorageValue(SKDeathRoom.globalStorage, 1)
         else
              return doPlayerSendCancel(cid, "You need "..#SKDeathRoom.players.." player"..(#SKDeathRoom.players > 1 and 's' or '').." to enter in this room.")
         end
    else
         return doPlayerSendCancel(cid, "Only one at a time, this room is occupied.")
    end
   
    return true
end

CREATURESCRIPT:

-- <event type="death" name="SKMonsterDeath" event="script" value="ARQUIVO.lua"/>

function onDeath(cid, corpse, deathList)
    setGlobalStorageValue(SKDeathRoom.globalStorage, 0)
    addEvent(doResetSKRoom(SKDeathRoom.winGoPos), SKDeathRoom.time*1000)
    return true
end

É isso pessoal, mudei o total de votos para 15, boa sorte aos desafiantes.

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

Meu voto vai para o 3, além de bem comentado, está fácil para uma breve edição. Parabéns!!

Precisa de ajuda? Poste a versão de seu TFS.

*************************************************************************************************************

 

Servidores? Eu indico:

logo2.png

Use o cupom TIBIAKING e receba 50% de desconto na primeira mensalidade!

Pague menos de R$ 19,00 no primeiro mês!

 

protecaoddos.jpg afiliados.jpg

Link para o post
Compartilhar em outros sites

pela lógica eu voto na 3º... acredito que todos tenham bug, mas o 3º é que mais me chamou atenção pelo código, não pelo tamanho mas na sua estrutura.

Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

Voto no 3º script como vodkart disse chamou a atenção pela estrutura esta bem estruturado e de fácil entendimento da pra fazer umas coisas legais com ele.

Link para o post
Compartilhar em outros sites

Eu voto no 3°, não entendo muito do assunto, porém ao meu ver, o código ficou mais fácil e "limpo"... No entanto, parabparabenizo todos os outros, pois todos estão ótimos.

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

Voto no script 03, por não ter usado coisas inúteis, como table.insert e etc...

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Voto no 3 script, a lógica usada foi mais simples e objetiva que a dos outros, mas a 2 não fica muito atrás também não pois usando ela, permiti fazer modificações e inserir mais coisas facilmente.

I must not fear. Fear is the mind killer.

Link para o post
Compartilhar em outros sites

se for analisar estruturalmente o terceiro está melhor (mesmo com esses nomes horriveis pras variaveis) mas o segundo teve uma preocupação maior com como o código roda.. isso pra mim é oque mais vale. Coisas básicas como transformar a alavanca ao clicar e soltar efeitos foram completamente ignoradas.
Não me importa se ele usou um método que é 30% menos eficiente e o resultado final ficou 800% melhor.


VOTEI NO SEGUNDO PRA QUEM NÃO TEVE AULA DE INTERPRETAÇÃO DE TEXTO NA ESCOLA...
ENTÃO QUER DIZER QUE VC SABE LER INVISIVEL MAS NAO SABE INTERPRETAR UM TEXTO????
MEU VOTO -> 2º
voto == '2º' and true or false

 

Editado por xWhiteWolf (veja o histórico de edições)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Esse pessoal não ouviu falar de for pelo que parece...

 

1° Diversos defeitos, como por exemplo variável sem declaração sendo usada... 

 

2° Diversos defeitos, como por exemplo verificação de storage errada e funções desnecessárias

 

Gostei mais do 3°, porque simplificou muito o script

 

Todos erraram em não guardar a pos inicial do player para transportar ele de volta na hora da saída, e se um player morre ? antes do evento acabar ?, coisas simples mas que fazem o script dar problema mais para a frente...

 

Concordo com o @Elwyn, nem um dos três script funcionam como deveriam, falta treino, e estudos ( material para isso existe )

 

Meu voto fica no 3° porque mesmo com erros bobos, foi o que se saiu melhor.

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

transformar a alavanca

xWhiteWolf, se alguém sem experiência pegar o script e por acaso usar outro tipo de alavanca, vai mudar o id pra outra alavanca de genêro diferente...

Por isso que eu opto por fazer módulo do id nos meus scripts, e acrescentar 1 ou subtrair o id, porque assim, você cria um script que precisa editar menos, consequentemente, evita erros bobos

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Script1 de [member=elton123] = 0 votos
Script2 de luanluciano93 = 3 votos
Script3 de Snowsz = 12 votos

Total 15 votos.

Obrigado aos desafiantes, aos que votaram e parabéns ao novo rei Snowsz.

Você tem o prazo de 48 horas para escolher o novo tema. :bleh:

Link para o post
Compartilhar em outros sites

Bom, fiz como o luan, peguei o tema de uma área de suporte:
 

NPC de Promotion que funciona assim: 
 
• O player vai no NPC de Promotion que promove por task, fala com ele, dai ele vai cobrar 25kk para dar a task ao player.

• Após ele ter pago os 25kk, ele receberá a seguinte missão, exemplo matar 500 demon, 500 hydra, a cada criatura morta vai mostrando por exemplo "Você matou 10/500 demons".

• Após a task ser completada, ele será promovido automaticamente ou indo ao NPC, a vocação X, com a seguinte mensagem "Parabéns, você agora é um |VOCATIONNAME|."

Bom, de acordo com as regras, então, todos tem 72horas para enviar o script para: [email protected] (scripts fora do tema serão desclassificados e cada membro só pode enviar um script).

 

TFS 0.4

                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

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.


  • Conteúdo Similar

    • Por Mathwsz
      Bom galera, estou trazendo um script de fusão que funciona assim:
      Explicação: É necessário de 7 itens, na qual você coloca em tal coordenada e aperte a alavanca, sendo assim formando um item na qual você deseja em tal lugar configurado.
      Exemplo: Você pode fazer 7 bosses na qual dropa tals itens "Parecidos" e formando um item raro de sua escolha, ou como preferir.. Vamos ao script!
       
      Em Data/Actions/Scripts crie um arquivo chamado fusaoitens.lua e adicione isto dentro:
       
       
      Agora, em Data/Actions.xml adicione o seguinte:
       
      <action uniqueid="9900" script="fusaoitens.lua" /> E no seu RemeresMapEditor , pegue sua alavanca, vai em Propriedades e adicione o UniqueID 9900 nele! 
      PRONTO! Agora configure e divirta-se! Obs: Caso lhe ajudei, da um REP+ Aí !
    • Por Wend
      Olá Pessoal  
       
      Sou novo no fórum e queria sabe Onde tem as Funções das scripts.lua? 
      se For possivel explicando Cada uma *--* 
       
      Vallew e Rep+ para quem mim passa
    • Por jhonfreitas
      Olá, estou com a seguinte problema.
      como sou um noob inutil em mexer com scripts sempre faço erros desse tipo.   

      E é assim que esta o script.


       
      Eu peguei esse Outfits com Attributes de um post do Kimoszin. Ja que o ultimo post la foi de 2012, evitei de reviver um topico   
      Se quiser checar lá.    http://www.tibiaking.com/forum/topic/9273-outfits-com-attributes/
       
      Por fim se alguém puder me ajudar é Rep+   
       
      Se quiser baixar pra conferir e encontrar o problema > outfits.xml
    • Por pabloxp
      gostaria que alguem me ajuda-se!! queria 1 sistema ou script que o trenó (Sled) se movimentase qnd o char fica-se em cima dele e ele controlase o trenó para as direçoes segurando CTRL + a direção desejada
      +rep pra qm ajudar
    • Por Jose Peterson
      Queria um script para o meu New Slayer Yurots 8.60.
      Um Script onde eu poderia adicionar vocação nas outfits, como no NaruTibia e outros server do tipo.
      Exemplo: Player Knight só pode usar a outfit Knight e mais nenhuma outra, e tambem nemhuma outra vocação pode usar a outfit knight além dó própio
      Eu procurei pelo TibiaKing e achei tópicos onde eles falavam de Storages, Quest="xxxx" ... Só que nemhum deles deu certo, se alguem tiver uma ajuda e poder explicar sobre essesStorages e Quests ... Ajuda ae galera
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo