Ir para conteúdo
  • 0

{PEDIDO} QUEST ANIHI COM TEMPO


Magraozinho

Pergunta

Eae galera blz?, estou fazendo um projeto de uma quest anihi só que com tempo para ficar la e tempo para entrar. após o tempo esgotar, outras pessoas podem entrar e as que estão dentro são teleportadas para fora..  só q n sei se minha script esta com erro, ou eu não soube arrumar a action para entrar la.. de todo modo essa é minha script \/ , por favor, me orientem!!   versão 8.6  TFS 0.4

 

 

anihi.lua

anihi.lua

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

Posts Recomendados

  • 1

O que é desnecessário em seu script:

Citar

function isOnSameFloor(fromPos, toPos)

function isEven(arg)

function getMiddlePos(fromPos, toPos)

function getDistanceRadius(fromPos, toPos)

local configure = { fromPos = {x=1121, y=1150, z=8}, -- posição superior esquerda do mapa, da area em que esta mapeado a area. toPos = {x=1129, y=1156, z=8}, -- posição inferior direita do mapa, da area em que esta mapeado a area. boss = "Demon" -- Aqui você bota o nome do monstro que você quer remover }

local config = { position = {x=1126, y=1152, z=7}, -- Contagem position1 = {x=1129, y=1156, z=8}, -- Contagem position2 = {x=1129, y=1150, z=8}, -- Contagem position3 = {x=1121, y=1150, z=8}, -- Contagem position4 = {x=1121, y=1156, z=8}, -- Contagem fromPosition = {x=1121, y=1150, z=8}, toPosition = {x=1129, y=1156, z=8}, id = 1498, time = 1 -- tempo que o teleport ira sumir em minutos }

 

O que tem que ser modificado:

Citar

function clearArea(middlePos, rangex, rangey)

 

Reorganize o script para apenas para atender o que for necessário. 

Segue o algoritmo:

Caso não haja um evento,

Cheque se os players estão em seus respectivos lugares

Cheque demais condições para iniciar o evento

Limpe a area do evento

Teleporte os players para o evento

Inicie a contagem de tempo para terminar o evento

Caso termine o tempo do evento:

Remova os players e as criaturas do evento

Caso não tenha terminado o tempo, mas os players terminaram o evento, finalize o evento.

Link para o comentário
Compartilhar em outros sites

  • 1
Em 18/04/2016 at 18:45, Magraozinho disse:

Eae galera blz?, estou fazendo um projeto de uma quest anihi só que com tempo para ficar la e tempo para entrar. após o tempo esgotar, outras pessoas podem entrar e as que estão dentro são teleportadas para fora..  só q n sei se minha script esta com erro, ou eu não soube arrumar a action para entrar la.. de todo modo essa é minha script \/ , por favor, me orientem!!   versão 8.6  TFS 0.4

 

 

anihi.lua

 

Está conseguindo fazer?

O que seria esse "tempo para entrar"? Seria um horário específico? 

Você deva ter o script da annihi comum, usa ele como base. 

Link para o comentário
Compartilhar em outros sites

  • 1

Eu não consigo baixar o script pelo celular; tem como por ele em spoiler?

 

Deixa eu te dar mais algumas orientações:

Se você declarar uma variável global e usa-la para saber se existe um evento em andamento,  você teria como blpquear a alavanca enquando o tempo não acabar.

O evento seria o seguinte:

Chama a função que retire os players de dentro da sala dos monstros no tempo devido; para isso, use a função addEvent (func, tempo, parâmetros...)

Quando essa função for executada, ela irá declarar na variável global que o evento terminou, liberamdo assim a alavanca. 

Mas caso os players tenham completado a sala antes do termino do tempo devido, além de usar como condição a variável declara para o evento, faça uma checagem para verificar se ainda existem players na sala:

Citar

EventNewAnnihi = false

if (EventNewAnnihi and chequeSalaDaNewAnnihi ()) then

Não tem ninguém na sala

elseif not (EventNewAnnihi) then

Inicie o evento

end

 

Link para o comentário
Compartilhar em outros sites

  • 1

Eu não consigo baixar o script pelo celular; tem como por ele em spoiler?

 

Deixa eu te dar mais algumas orientações:

Se você declarar uma variável global e usa-la para saber se existe um evento em andamento,  você teria como blpquear a alavanca enquando o tempo não acabar.

O evento seria o seguinte:

Chama a função que retire os players de dentro da sala dos monstros no tempo devido; para isso, use a função addEvent (func, tempo, parâmetros...)

Quando essa função for executada, ela irá declarar na variável global que o evento terminou, liberamdo assim a alavanca. 

Mas caso os players tenham completado a sala antes do termino do tempo devido, além de usar como condição a variável declara para o evento, faça uma checagem para verificar se ainda existem players na sala:

Citar

EventNewAnnihi = false

if (EventNewAnnihi and chequeSalaDaNewAnnihi ()) then

Não tem ninguém na sala

elseif not (EventNewAnnihi) then

Inicie o evento

end

 

Link para o comentário
Compartilhar em outros sites

  • 1

Não é questão do mapa e sim do proprio distro ou script que esteja interferindo nele.

 

Na alavanca, você botou uniqueid ou actionid nela?

Se tenha colocado ambos, verifica no arquivo actions.xml se a uid ou aid está sendo usada SOMENTE por esse script ou seja, não pode ter outra tag usando outro script.

Link para o comentário
Compartilhar em outros sites

  • 0
Em 20/04/2016 at 12:48, Poccnn disse:

O que é desnecessário em seu script:

 

O que tem que ser modificado:

 

Reorganize o script para apenas para atender o que for necessário. 

Segue o algoritmo:

Caso não haja um evento,

Cheque se os players estão em seus respectivos lugares

Cheque demais condições para iniciar o evento

Limpe a area do evento

Teleporte os players para o evento

Inicie a contagem de tempo para terminar o evento

Caso termine o tempo do evento:

Remova os players e as criaturas do evento

Caso não tenha terminado o tempo, mas os players terminaram o evento, finalize o evento.

não é um evento... é uma quest anihi ... após 5 players entrarem será sumonado os bixos .. havera uma contagem de 1  minuto para derrotar os bixos que trapam o teleport , e assim entrar no teleport ... se não conseguirem derrotar no tempo proposto, serão teleportados para fora, e outros player poderam entrar na quest, nesse intervalo de sair player e entrar player, os monstros sao renovados, ..     o ponto chave é que nesse tempo de contagem do 1 segundo ao 60 não podera entrar mais players... só apos o termino da contagem.. 

 

e eu quero que minha script faça isso, mais n sei aonde errei..

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

  • 0
7 horas atrás, Poccnn disse:

 

Está conseguindo fazer?

O que seria esse "tempo para entrar"? Seria um horário específico? 

Você deva ter o script da annihi comum, usa ele como base. 

ja usei cara, e deu nisso ai... esse tempo pra entrar é assim > Se 5 players entrarem.. emcima da alavanca do lado de fora fica subindo o tempo de 60 até 1, até acabar o tempo a alavanca fica bloqueada empedindo outros players de entrarem.... e qnd chega no 0 o tempo, se os player qe estao la dentro não tiverem completado eles sao teleportados para fora, e outros players podem entrar.. Esse é o proposito da script.. mais nao ta funcionando

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

  • 0
Em 08/05/2016 at 20:42, Poccnn disse:

Eu não consigo baixar o script pelo celular; tem como por ele em spoiler?

 

Deixa eu te dar mais algumas orientações:

Se você declarar uma variável global e usa-la para saber se existe um evento em andamento,  você teria como blpquear a alavanca enquando o tempo não acabar.

O evento seria o seguinte:

Chama a função que retire os players de dentro da sala dos monstros no tempo devido; para isso, use a função addEvent (func, tempo, parâmetros...)

Quando essa função for executada, ela irá declarar na variável global que o evento terminou, liberamdo assim a alavanca. 

Mas caso os players tenham completado a sala antes do termino do tempo devido, além de usar como condição a variável declara para o evento, faça uma checagem para verificar se ainda existem players na sala:

 

Então cara.. eu nao sou scripter... eu n tou entendendo oq vc qer dizer... vc não poderia ver o script e ver porq ele n funciona?

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz uma modificação no meu script da annihi; vê se funciona pois não testei.

Citar

--[[> Annihilator script by Marcryzius D'evil <]]-- 
local pos_demons,players,teleport,annihivezes ={
 -- posicoes onde serao sumonados os monstros na annihilator 
 -- cada posição declarada é mais um monstro sumonado.
 --faça com que a quantidade de monstros seja maior ou igual a quantidade de players. 
   {x=1109, y=1235, z=12,stackpos=253}, 
   {x=1109, y=1237, z=12,stackpos=253}, 
   {x=1113, y=1236, z=12,stackpos=253}, 
   {x=1113, y=1238, z=12,stackpos=253}, 
   {x=1111, y=1239, z=12,stackpos=253}, 
   {x=1111, y=1240, z=12,stackpos=253} 
},{
  --tabela da posição inicial dos players
  --cada posição declarada é mais um player necessário para a quest.
   {x=0, y=0, z=0, stackpos=255},
   {x=0, y=0, z=0, stackpos=255},
},{
  -- posição onde serão transportados os players
  -- faça com que às posições declaradas aqui seja compatível com a quantidade de players necessário. 
  {x=0, y=0, z=0},
  {x=0, y=0, z=0},
},0 

 

function reloadAnnihi ()
local player = 0 
 for pos = 1,#pos_demons do 
  if(pos <= #players)then 
    player = getThingfromPos(teleport[pos]) 
  end 
  local monster = getThingfromPos(pos_demons[pos]) 
  if(isPlayer(player.uid) == true)or(isPlayer(monster.uid) == true)then 
  local cid = isPlayer(player.uid) and player.uid or monster.uid
   doTeleportThing (cid, players [1])
  else 
   if(isMonster(player.uid) == true)then doRemoveCreature(player.uid)end 
   if(isMonster(monster.uid) == true)then doRemoveCreature(monster.uid)end 
  end 
 end 
end

 

function onUse(cid, item, fPos, itemEx, toPosition) 
local refeita,level = true, 100

   if(item.itemid == 1946)then 
      for _, pos in pairs(players) do 
         local player = getThingFromPos(pos) 
         if(isPlayer(player.uid) == true)then 
            if(getPlayerLevel(player.uid) >= level)then 
               if not(refeita) and (getPlayerStorageValue(player.uid,20000) > 0)then 
                  return true,doPlayerSendCancel(cid,"Alguem ja fez a Annihilator quest.") 
               end 
            else 
               return true,doPlayerSendCancel(cid,"Todos necessitam ter level "..level.." ou mais.") 
            end 
         else 
            return true,doPlayerSendCancel(cid,"voce precisa de "..#players.." pessoas para poder entrar na sala.") 
         end 
      end 
      for pos = 1,#pos_demons do 
         if(pos <= #players)then 
         local player = getThingFromPos(players[pos]) 
            if(player.uid ~= nil)then 
               doTeleportThing(player.uid, teleport[pos], false) 
               if(getPlayerStorageValue(player.uid,18000) < 0)then setPlayerStorageValue(player.uid,18000,0) end 
            end 
         end 
         doSummonCreature("Demon", pos_demons[pos]) 
      end 
      addEvent (reloadAnnihi,60*1000)
      annihivezes = annihivezes+1 
   elseif(item.itemid == 1945)then 
   local player = 0 
      for pos = 1,#pos_demons do 
         if(pos <= #players)then 
            player = getThingfromPos(teleport[pos]) 
         end 
      local monster = getThingfromPos(pos_demons[pos]) 
         if(isPlayer(player.uid) == true)or(isPlayer(monster.uid) == true)then 
            return true,doPlayerSendCancel(cid,"Espere o time acabar de fazer a annihilator quest.") 
         else 
            if(isMonster(player.uid) == true)then doRemoveCreature(player.uid)end 
            if(isMonster(monster.uid) == true)then doRemoveCreature(monster.uid)end 
         end 
      end 
   end 
end 
 

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 14/05/2016 at 13:29, Poccnn disse:

Fiz uma modificação no meu script da annihi; vê se funciona pois não testei.

 

Eae cara, funcionou em partes.. por exemplo.. os players são teleportados para quest.. e os monstros são criados... porém.. quando um time entrar, não começa a contar o tempo em cima da alavanca (tinha que começar a contar o tempo na alvanca de 120 a 0 em cima da alavanca para todos verem em colorido, igual um teleport falante sabe?) , e após o tempo da contagem na alvanca chegar no 0, se os player que estão na quest não entrarem no teleport que tem dentro da sala, eles são teleportados para fora.. e os monstros que estão la dentro são retirados.. e após isso.. outros player poderam entrar na quest atravez do click na alavanca.. ou seja.. sua script não tira os player nem os montros da sala quando chega o tempo no 0, e tbm não faz a contagem na alavanca.. eu fiz algumas modificações nela.. adicionei o local dos players, o local dos monstros e puis o monstro que eu queria... a script esta logo abaixo \/ ... pfv  se vc conseguir deixar desse jeito qe pedi, serei grato o resto da vida.. obgd

 

SCRIPT MODIFICADO \/

 

anihi.lua

anihi.lua

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

  • 0

O sistema de reload annihi está funcionando? 

O que você quer é que ele fique mostrando o tempo faltante em cima da alavanca? 

 

Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, Poccnn disse:

O sistema de reload annihi está funcionando? 

O que você quer é que ele fique mostrando o tempo faltante em cima da alavanca? 

 

sim, oque eu quero é isso... e seu sistema de reload n ta funfando

Link para o comentário
Compartilhar em outros sites

  • 0
Citar
local pos_demons,players,teleport,annihivezes ={ -- posicoes onde serao sumonados os monstros na annihilator  -- cada posição declarada é mais um monstro sumonado. --faça com que a quantidade de monstros seja maior ou igual a quantidade de players.    {x=1129, y=1154, z=8,stackpos=253},    {x=1129, y=1152, z=8,stackpos=253},    {x=1128, y=1153, z=8,stackpos=253},    {x=1122, y=1153, z=8,stackpos=253},    {x=1121, y=1152, z=8,stackpos=253},    {x=1121, y=1154, z=8,stackpos=253} },{  --tabela da posição inicial dos players  --cada posição declarada é mais um player necessário para a quest.   {x=1125, y=1152, z=7, stackpos=255},   {x=1124, y=1152, z=7, stackpos=255},   {x=1123, y=1152, z=7, stackpos=255},   {x=1122, y=1152, z=7, stackpos=255},   {x=1121, y=1152, z=7, stackpos=255},},{  -- posição onde serão transportados os players  -- faça com que às posições declaradas aqui seja compatível com a quantidade de players necessário.   {x=1127, y=1153, z=8},  {x=1126, y=1153, z=8},  {x=1125, y=1153, z=8},  {x=1124, y=1153, z=8},  {x=1123, y=1153, z=8},},0  function reloadAnnihi ()local player = 0  for pos = 1,#pos_demons do   if(pos <= #players)then     player = getThingfromPos(teleport[pos])   end   local monster = getThingfromPos(pos_demons[pos])   if(isPlayer(player.uid) == true)or(isPlayer(monster.uid) == true)then   local cid = isPlayer(player.uid) and player.uid or monster.uid   doTeleportThing (cid, players [1])  else    if(isMonster(player.uid) == true)then doRemoveCreature(player.uid)end    if(isMonster(monster.uid) == true)then doRemoveCreature(monster.uid)end   end  end end function onUse(cid, item, fPos, itemEx, toPosition) local refeita,level = true, 100   if(item.itemid == 1946)then       for _, pos in pairs(players) do          local player = getThingFromPos(pos)          if(isPlayer(player.uid) == true)then             if(getPlayerLevel(player.uid) >= level)then                if not(refeita) and (getPlayerStorageValue(player.uid,20000) > 0)then                   return true,doPlayerSendCancel(cid,"Alguem ja fez a Annihilator quest.")                end             else                return true,doPlayerSendCancel(cid,"Todos necessitam ter level "..level.." ou mais.")             end          else             return true,doPlayerSendCancel(cid,"voce precisa de "..#players.." pessoas para poder entrar na quest.")          end       end       for pos = 1,#pos_demons do          if(pos <= #players)then          local player = getThingFromPos(players[pos])             if(player.uid ~= nil)then                doTeleportThing(player.uid, teleport[pos], false)                if(getPlayerStorageValue(player.uid,18000) < 0)then setPlayerStorageValue(player.uid,18000,0) end             end          end          doSummonCreature("Anihilation", pos_demons[pos])       end       addEvent (reloadAnnihi,60*1000)      annihivezes = annihivezes+1    elseif(item.itemid == 1945)then    local player = 0       for pos = 1,#pos_demons do          if(pos <= #players)then             player = getThingfromPos(teleport[pos])          end       local monster = getThingfromPos(pos_demons[pos])          if(isPlayer(player.uid) == true)or(isPlayer(monster.uid) == true)then             return true,doPlayerSendCancel(cid,"Espere o tempo acabar para entrar na quest.")          else             if(isMonster(player.uid) == true)then doRemoveCreature(player.uid)end             if(isMonster(monster.uid) == true)then doRemoveCreature(monster.uid)end          end       end    end end

 

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

×
×
  • Criar Novo...