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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 0
3 horas atrás, Poccnn disse:

A sala onde são summonados os monstros e onde osplayers são teleportados é igual a da annihi convencional? 

Não ... é assim olha ... ao usar a alavanca os players caem nesse corredor com 5 sqms logo a cima de mim e esses monstros são sumonados instantaneamente... o teleport pra cair na salinha do tesouro fica nesses quatro cantos, ambos levam a sala do tesouro.. e em qualquer lugar q eles tiverem... se eles não derrotarem os bixos qe trapam esses cantos (qualquer canto) e não entrarem em um dos teleports qe fica ali no tempo proposto na contagem... eles são teleportados para fora e os bixos somem... assim outros players poderão entrar, e o processo se reinicia... entendeu?

 

Esqueci de um detalhe... alem do tempo falante ser contado em cima da alavanca.. eu queria que fosse contado em cima dos 4 teleports tbm... assim os players de dentro ficariam informados de quanto tempo os resta...

 

até hj só vi uma pessoa com um script igual esse..  se vc conseguir fazer isso pra mim.. vc sera a pessoa mais foda do mundo kkk

aaa, e desde ja, muito obrigado por estar me ajudando..

 

 

anihi.png

anihi.thumb.png.3293ccc74665dc3b62efa180f0aac27a.png

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

×
×
  • Criar Novo...