Ir para conteúdo
  • Cadastre-se

(Resolvido)[Pedido] Arena onde TP é liberado após monstro morrer!


Ir para solução Resolvido por zipter98,

Posts Recomendados

Então, primeiramente venho agradecer todos aqui, que até hoje eu nunca precisei pedir nada no TK, pois encontrei tudo o que precisava!

Mas.. estou com um problema, não consigo criar uma sala "arena" onde existem monstros que o player só poderá passar para outra sala após matar todos os monstros da mesma, ou seja, existem 7 salas e ele poderá usar o teleport após todos monstros da sala serem mortos, tipo em svargrond, se alguém puder me ajudar.. estarei grato!

obs: "já tenho as 7 salas, ficam todas uma perto da outra"

TFS 0.4 - 8.60

Link para o post
Compartilhar em outros sites

Muito bem explicado, este ai eu já utilizo, mas o que eu preciso mesmo é um sistema que voce só poderá entrar no TP após todos monstro serem mortos, digamos que se tiver um único rat vivo ainda, impossibilita de utilizar o tp, aqui eu tenho 7 arenas, 7 salas prontinhas, mas pra quest não ficar muito fácil eu resolvi querer fazer isso, se não fica muito fácil o player pular de sala em sala sendo que cada sala é 10 sqm², mas valeu, pela ajuda :D

Link para o post
Compartilhar em outros sites

Entendo. Mas vou da uma ideia pra voce ,caso não tenha nenhum amigo que possa fazer esse script que vc deseja.

 

Você poem 1 em 1 sala um boss e altera ele deixando ele dificil (Aumentando HP... ATK), conforme a sala for prosseguindo. E no final da ultima sala vc poem um premio :). Eu fiz o meu funcionar assim ^.^

 

Obs: Apenas uma ideia. Sua ideia está legal tb :)

Eu te Ajudei? Então solta aquele REP+ !!

Meus Tutoriais [Tutorial] Bug "Temple position is wrong" (MySql)

Outros:    [Meu Show OFF | Mapa próprio 8.6] 

Link para o post
Compartilhar em outros sites

criei 2 sem querer e não consegui deletar.. :x

então, alguém conhece a quest do Helmet of the Ancients do global? são várias salas.. eu peguei as mesmas salas com mesmo monstros, entre eles são: Dipthrah, Omruc, hand of cursed fate, necromancer.. enfim, eu só queria que o TP fosse liberado para partir para próxima quando todos os montros da sala forem mortos

Link para o post
Compartilhar em outros sites
  • Solução
Antes de tudo: caso você já tenha um script que dê início a esta missão (como, por exemplo, uma alavanca), coloque isso em tal script para verificar se o jogador já completou a quest:
if getPlayerStorageValue(cid, 90182) > -1 then
    return doPlayerSendCancel(cid, "You already completed this quest.")
end
Se você não souber aonde colocar exatamente, ou não tiver o script que mencionei, avise que eu faço para você.
Agora, vamos ao código do teleporte:
Tag:
<movevent type="StepIn" actionid="xxx" event="script" value="arenatp.lua"/>
Troque xxx por um actionid que não esteja em uso no seu servidor.
data/movements/scripts, arenatp.lua:
local arenas = {
    [1] = {                                          --Cada número representa uma room.
        fromPos = {x = x, y = y, z = z},      --Coordenadas da posição superior esquerda da arena.
        toPos = {x = x, y = y, z = z},        --Coordenadas da posição inferior direita da arena.
        pos = {x = x, y = y, z = z},          --Pra onde o player será teleportado.
    },
    [2] = {
        fromPos = {x = x, y = y, z = z},      --Coordenadas da posição superior esquerda da arena.
        toPos = {x = x, y = y, z = z},        --Coordenadas da posição inferior direita da arena.
        pos = {x = x, y = y, z = z},          --Pra onde o player será teleportado.
    },
    [3] = {
        fromPos = {x = x, y = y, z = z},      --Coordenadas da posição superior esquerda da arena.
        toPos = {x = x, y = y, z = z},        --Coordenadas da posição inferior direita da arena.
        pos = {x = x, y = y, z = z},          --Pra onde o player será teleportado.
    },
    [4] = {
        fromPos = {x = x, y = y, z = z},      --Coordenadas da posição superior esquerda da arena.
        toPos = {x = x, y = y, z = z},        --Coordenadas da posição inferior direita da arena.
        pos = {x = x, y = y, z = z},          --Pra onde o player será teleportado.
    },
    [5] = {
        fromPos = {x = x, y = y, z = z},      --Coordenadas da posição superior esquerda da arena.
        toPos = {x = x, y = y, z = z},        --Coordenadas da posição inferior direita da arena.
        pos = {x = x, y = y, z = z},          --Pra onde o player será teleportado.
    },
    [6] = {
        fromPos = {x = x, y = y, z = z},      --Coordenadas da posição superior esquerda da arena.
        toPos = {x = x, y = y, z = z},        --Coordenadas da posição inferior direita da arena.
        pos = {x = x, y = y, z = z},          --Pra onde o player será teleportado.
    },
    [7] = {
        fromPos = {x = x, y = y, z = z},      --Coordenadas da posição superior esquerda da arena.
        toPos = {x = x, y = y, z = z},        --Coordenadas da posição inferior direita da arena.
        pos = {x = x, y = y, z = z},          --Pra onde o player será teleportado. 
    },
}
local storage = 90181
local monsters = {"monster_name", "monster_name"}        --Configure aqui os monstros que serão ignorados pelo script.
function isThereSomeMonster(frompos, topos)
    for x = frompos.x, topos.x do
        for y = frompos.y, topos.y do
            local area = {x = x, y = y, z = frompos.z}
            local creature = getTopCreature(area).uid
            if creature > 0 and isMonster(creature) then
                if not isInArray(monsters, getCreatureName(creature)) then
                    return true
                end
            end
        end
    end
    return false
end
function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return true
    end
    local arena = getPlayerStorageValue(cid, storage) < 1 and 1 or getPlayerStorageValue(cid, storage)
    if arenas[arena] then
        local _arena = arenas[arena]
        if getPlayerStorageValue(cid, 90182) > -1 then
            return doPlayerSendCancel(cid, "You already completed this quest.") and doTeleportThing(cid, fromPosition)
        elseif isThereSomeMonster(_arena.fromPos, _arena.toPos) then
            return doPlayerSendCancel(cid, "Kill all the monsters first.") and doTeleportThing(cid, fromPosition)
        else
            local msg = "You were teleported to the room "..(arena + 1)..". Good luck!"
            local new_value = arena + 1
            if not arenas[arena + 1] then
                msg = "You completed all the rooms. Congratulations!"
                new_value = -1
                setPlayerStorageValue(cid, 90182, 1)
            end
            doTeleportThing(cid, _arena.pos)
            doPlayerSendTextMessage(cid, 27, msg)
            setPlayerStorageValue(cid, storage, new_value)
        end
    end
    return true
end
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Não tenho nada que dê início, só um TP onde o player entra e cai direto na primeira sala.

 

<movevent type="StepIn" actionid="xxx" event="script" value="arenatp.lua"/>

Action ID="xxx" ? qual ID do teleport eu uso aqui?

Link para o post
Compartilhar em outros sites

Você não vai usar nenhum ID de teleporte na tag, e sim um actionid qualquer. Por exemplo, 9018. Aí, no RME, você configura esse actionid nos teleportes (da primeira à sétima room).

E me manda esse código de TP que você mencinou, no qual o jogador entra e cai na primeira sala.

PS: Não coloquei nada relacionado a prêmios. Quando o jogador completar a última room, ele entrará no teleporte e será teleportado para a posição configurada. Você pode colocar, por exemplo, que ele seja teleportado para uma área de recompensas. Aí, se quiser, eu posso fazer o código para você (mas especifique como quer que o jogador obtenha os prêmios).

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

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Nesse caso, é melhor fazer um movement para substituir esse teleporte (assim, poderá ser checado se o jogador já completou ou não a quest).

data/movements/scripts, crie um arquivo com extensão .lua e coloque o seguinte conteúdo:

local pos = {x = 355, y = 278, z = 11}
function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return true
    elseif getPlayerStorageValue(cid, 90182) > -1 then
        return doPlayerSendCancel(cid, "You already completed this quest.") and doTeleportThing(cid, fromPosition)
    end
    doPlayerSendTextMessage(cid, 27, "You started the quest.")
    doTeleportThing(cid, pos)
    return true
end

Aí, em movements.xml, a tag seguirá o mesmo modelo daquela que enviei anteriormente (para o teleporte entre as salas). Porém, ao invés de colocar arenatp.lua como value, você colocará o nome do arquivo que foi criado para colocar o código acima + o sufixo .lua. Como actionid, você pode colocar qualquer um que não esteja em uso no seu servidor. Aí, no Remeres Map Editor, você configura o TP que teleporta o jogador para a primeira sala com o AID (actionid) colocado na tag.

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

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Então vamos la.

Fiz tudo o que você disse, ao entrar no primeiro TP deu a seguinte mensagem> 20:40 You started the quest.

ok.. não ataquei e nem matei nenhum monstro da 1ª ROOM, ao tentar entrar no TP para ir para 2ª ROOM, eu consegui ir para 2ª mesmo não matando nenhum monstro da 1ª, fui no Distro do meu otserv e deu a seguinte mensagem de erro:

[Error - MoveEvents Interface]

data/movements/scripts/arenatp.lua:onStepIn

 

Description:

data/movements/scripts/arenatp.lua:63: attempt to index local '_arena' (a nil value)

 

stack traceback:

data/movements/scripts/arenatp.lua:63: in function <data/movements/scripts/arenatp.lua:56>
 

Link para o post
Compartilhar em outros sites

Então, o char entra normal nos TP, uma pergunta, no RME eu coloquei o destino de cada TP conforme está no script, x tal.. y tal.. para cada tp, eu coloquei todos os tp com o actionID 9090, só o primeiro que para a primeira sala eu coloquei 9091, mas mesmo assim eles não funcionam, simplesmente eu entro normal sala por sala sem precisar matar nenhum monstro

Link para o post
Compartilhar em outros sites

Ei, muito bom em! deu certo, mas tem um pequeno probleminha agora.. nas salas existem "towers" aquelas que ficam atirando pox.. fire.. e elas são conseideradas como monstro, eu tive que dar /r em todas pra poder usar o TP, você tem alguma sugestão no que eu devo fazer? ou fazer o enquadramento diferente da sala com canto superior e inferior..

Link para o post
Compartilhar em outros sites

Pra finalizar então, fiz o seguinte: criei o respaw dos monstros na sala bem pequeno, um do lado do outro, e coloquei a area superior esquerda e inferior direita bem perto do respaw deles, quase acasalados.. e pus as towers fora da área Sup e Inf. acho que funcionou, mas tem um problema, quando o player termina a quest e vai tentar fazer denovo, ao invez de dizer: "voce ja fez.." sla, diz assim "kill all monster first.." essa mensagem pro player significa que ele tem que matar todos monstro, ai ele mata tudo que tem na sala e n consegue entrar no TP, o certo teria que ter um sistema que ele NEM poderia entrar dentro das salas a partir  do momento que ele cruzasse pela ultima sala de recompensa..

Mas muito obrigado pela ajuda, de qualquer forma agradeço, era isso que eu precisava :D

Link para o post
Compartilhar em outros sites

Não precisa fazer isso mais. Editei o script para que você possa configurar os monstros que serão ignorados pelo script. 

Eu testei aqui o código, e funcionou perfeitamente. Quando o jogador completa a última room, ele não pode mais passar pelo teleporte de entrada da quest (aquele que leva à primeira sala). Como precaução, também coloquei esta proteção no código do teleporte entre as salas.

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

não respondo pms solicitando suporte em programação/scripting

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 looktsx
      Salve Rapaziada tudo bom .
      queria ajuda pra cria um teleport ou uma alavanca com tempo ..
      depois do player usa o teleport ou a lavanca ele so poderá usa depois de tal determinado tempo.
       
      SERVIDOR 12.91
      Se alguem poder me ajuda vou fica grato ,
      des de ja agradeço a todos.
      ..
    • Por lango rullez
      Bom como via muita gente "nem tanta" com dúvidas, problemas etc.. Resolvi criar esse tópico para acabar com os seus problemas !
       
      ---------------------------------------------------------------------------------------//-----------------------------------------------------------------------------------------------
       
       
      Bom então vamos lá !
      ------------------------------------//--------------------------------------
       
      Pasta do seu servidor --> Data --> movements --> scripts
       
      Agora crie um arquivo .lua Renomeie com o nome de sua preferencia ! Ps: Tem que ser obrigatoriamente .LUA
      Bom no meu caso coloquei "TileLevel"
        E então cole este script dentro:   
       
       
      ------------------------------------------------------------------------------//-------------------------------------------------------------------------------------------
       
      {´~.~´} Legenda
       
      Vermelho: Level do player que irá poder passar no Teleport/tiler                                          
       
      Dourado: Posição de onde desejar colocar Teleport/tiler
       
      -------------------------------------------------------------------------------------------//-----------------------------------------------------------------------------------------------
       
      Agora salve o arquivo!
       
      -----------------------------------------------------------------//-----------------------------------------------------------------------
       
      Agora vamos para Segunda Parte !
      Me acompanhe !
      ---------------------------------------------------------------------------------------------------//---------------------------------------------------------------------------------------------------
      Vamos em:
      Pasta do seu servidor --> Data --> Movements.xml 
      Agora adicione o seguinte código/tag:
       
       
      {´~.~´} Legenda
      Roxo: É o nome do arquivo.lua que você criou na pasta Scripts
      Azul: É o level do player, tem que estar igual no script acima. Obs: Caso queria colocar level 100 é só mudar parte 250 para 100 isso vale mesma coisa na "PS" que acabei de explica embaixo \/
      -----------------------------------//------------------------------------------
      Ps:No Remeres Editor coloque no tile o actionID: 1250 ou level da sua preferencia. Quer level 100? então no tile coloque "1100"
       
      Bom espero que ajudem a todos !
       
        Créditos @vankk pelo script, que ele postou individualmente em um tópico, sem muitos detalhes.
       A TAG E AS DEMAIS COISAS FEITO POR MIM !
    • Por Dwarfer
      MARAVILHOOOOOOSOS, como vocês estão? Espero que estejam bem. ?
      Esses dias fuçando as profundezas sombrias do meu computador encontrei essa quest, a Barbarian Test Quest, do tibia global e agora compartilho-a com vocês. Para quem não conhece, é aquela quest que dá alguns acessos na cidade de Svargrond do tibia global.
      Mais informações, visite o link: https://www.tibiawiki.com.br/wiki/Barbarian_Test_Quest
      As falas do NPC estão 99% iguais ao do tibia global, salvo algumas pequenas modificações/adaptações feitas por mim dando o meu toque, é claro ?. (todos gostam do meu toque) Obviamente, a quest se aplica melhor para servidores de tibia clássico, mas deixei os id's dos itens facilmente editáveis para você adaptar para o seu servidor, seja ele de qual tipo for, para TFS 0.4 ou OTX 2.x.
       
      Configuração:
       
      1) Em data/lib, crie um arquivo chamado Barbarian Test Quest.lua e cole isto dentro:
       
       
      2) Em data/npc/scripts, crie um arquivo chamado Sven.lua e cole isto dentro:
       
       
      O arquivo.xml do NPC Sven, em data/npc é o seguinte:
      <?xml version="1.0" encoding="UTF-8"?> <npc name="Sven" script="Sven.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="143" head="76" body="100" legs="132" feet="97" addons="3" mount="0"/> </npc> 3) Em data/actions/scripts, aconselho criar uma pasta chamada barbarian_test para colocar os arquivos referentes à quest. Dentro dessa pasta, um por um, coloque os arquivos com os nomes abaixo:
       
      bucketmead.lua
       
      meadhorn.lua
       
      mammothpushing.lua
       
      Em data/actions.xml adicione as tags abaixo: (caso altere os ids dos itens para adaptar ao seu servidor, lembre de alterá-los nas tags também)
      <action actionid="8952" script="barbarian_test/bucketmead.lua" /> <action itemid="7140;7141" script="barbarian_test/meadhorn.lua" /> <action itemid="7176" script="barbarian_test/mammothpushing.lua" /> Coloque o actionid 8952 (ou o valor que desejar, lembrando de modificar na tag no actions.xml) no balde de rum localizado próximo ao NPC.
       

       
      Lembre de colocar um NPC adicional ao lado do NPC Sven que venda "rum" para que o jogador possa ficar bêbado e realizar a última missão (missão do mammoth).
          
       
      OBS: Ao finalizar a quest, o jogador receberá a storage 87345 igual a 1. Essa informação pode ser útil para dar acesso a determinadas áreas somente após terminar a quest, por exemplo.
       
      É isso. Espero que seja útil ao servidores que desejam ter um pouquinho mais de RPG. GRANDE ABRAÇO! ?
       
      Esse script faz parte de um conjunto de quests do tibia global que pretendo ir fazendo aos poucos a depender do feedback do pessoal.
      Veja também:
       
    • Por King Laker
      Olá, passei um tempo procurando este script até que um amigo do TK disponibilizou (credito no fim do post)
      Edit1: O evento funciona assim, o evento começa as 14:00:00 para inscrições realizando as inscrições você é levado para sala de espera (coloque no-logout e protection) onde você tera de esperar 5 minutos passado os 5 minutos todos na sala de espera serão teleportados para uma arena que você pode fazer facilmente e configurar conforme explicado na script --> apenas lembre de colocar o no-logout e pvp tool na arena.
      (As 13:59:00 vai aparecer um broadcast dizendo que o Npc PvP irá aparecer em 1 minutos que você terá então 5 minutos para se inscrever com o custo de 10k (configurável na script do actions) a área onde o npc nasce é configurável, o npc sumirá após 6 minutos (1 minuto depois do inicio da matança)-) 
      O ultimo vivo na arena terá de clicar na alavanca e será teleportado para o templo (coordenadas configuráveis) ganhando o devido premio do evento (configuravel na script do actions).
      Vamos lá:

      data/lib adicione um arquivo .lua e renomeie para Torneio.lua e coloque dentro
       
      vai em Globalevents adicione Torneio.lua e dentro dele coloque
       
      (se sua versão é em millisegundos então mude para)
       
      Adicione a tag em globalevents.xml
       
      se seu servidor for em millisegundos:
       
      vai em Actions adicione Torneio.lua e dentro:
      Atenção: Voce faz uma area do Torneio no Map editor e Coloca PVP-Zone e no-logout no Mapa editor e coloca uma Alavanca com a uniqueid "18279" e actionid "18279" antes verifique se não tem a action e unique id no seu servidor com o mesmo numero (18279) [ a alavanca serve para quando o ultimo player vivo no evento volte para o templo e receba os premios]
       
      Em Actions.xml adcione a tag 
       
      Agora o NPC TORNEIO em  data/NPC adicione um xml, renomeie para o nome torneio.xml (pode mudar mais tarde, se não souber oque esta fazendo não mexa)
       
      em NPC/SCRIPTS/torneio.lua
       
      LEIA:
       
      ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      aqui um script que achei no TK que você pode usar no seu evento, ele faz o npc aparecer 1 minuto depois do horario marcado na posição que você quiser, com um broadcast dizendo que ele esta chegando. (é bom para dizer que o evento esta começando)
      vá em globalevents.xml e adicione a tag
      Dica: Coloque 1 minuto antes do inicio do evento (configuravel no lib/torneio.lua) no meu caso seria as 12:00:00 hrs (meio dia)
       
      se o seu servidor não for millisegundos use
       
      va em globalevents/scripts e crie um arquivo .lua com o nome de npcpvp
       
      se o seu servidor não for em millisegundos use assim:
       

      Creditos:
      @J.L por disponibilizar os script do Evento PvP.
      @Stigal por disponibilizar o script do Npc que aparece sozinho na hr marcada.
      @King Laker por editar e mesclar os scripts.
    • Por Barca Furada
      Boa noite meus caros colegas!
      Preciso de um Help!
       
       
      Quando eu coloco meu itens editados no meu xml e otb, acontece isso com os teleportes, perde todas as propriedades:
       
      No lado direito é sem meu Itemxml
      No lado Esquerdo é com meu Itemxml
       
      Como vcs pode vem ele perde a propriedade de destino!
       
      O arquivo Check File Signatures está desativados!
       
      Quando eu entro no REM com meu Itemxml, ele da essas mensagem de erro:
       
       
       
      Antes de fazer tudo isso eu No item editor, todos itens estava com essa borda vermelha, eu tinha dado reload em todos itens para o cliente OTCv8 conseguir visualizar, no primeiro momento achei que era isso que tinha acontecido para bugar meus teleportes, então eu dei reload em todos itens um por um e deixei o teleport sem dar reload, para ver se era esses o bug! e deu na mesma , quando edito o mapa para colocar novas hunt e cidade ele buga todos teleportes!
       
       
       
       
      No itemxml o teleport está com mesmo id!
       
      alguma alma bondosa para ajudar um colega?
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo