Ir para conteúdo
  • Cadastre-se

Posts Recomendados

.Qual servidor ou website você utiliza como base? 

 

Qual o motivo deste tópico? 

 

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

ESTOU COM PROBLEMAS PARA ADICIONAR EVENTO ZOMBIE..... ESTA DANDO ERRO ABAIXO

[1:31:47.854] [Error - LuaInterface::loadFile] cannot open data/globalevents/scr
ipts/my_script.lua: No such file or directory
[1:31:47.861] [Warning - Event::loadScript] Cannot load script (data/globalevent
s/scripts/my_script.lua)
[1:31:47.867] cannot open data/globalevents/scripts/my_script.lua: No such file
or directory

 

[1:31:47.854] [Error - LuaInterface::loadFile] cannot open data/globalevents/scr
ipts/my_script.lua: No such file or directory
[1:31:47.861] [Warning - Event::loadScript] Cannot load script (data/globalevent
s/scripts/my_script.lua)
[1:31:47.867] cannot open data/globalevents/scripts/my_script.lua: No such file
or directory

 

SE PUDEREM AJUDAR.... SCRIPT ABAIXO \/

Citar

 

 

ZB_GLOBAL_STORAGE_STATUS = 99900
ZB_GLOBAL_STORAGE_LIMITE_PARTICIPANTES = 99901
ZB_GLOBAL_STORAGE_TOTAL_ZOMBIES_SUMMONAR = 99902
ZB_GLOBAL_STORAGE_TOTAL_ZOMBIES_ARENA = 99903

ZB_STORAGE_STATUS_PLAYER = 99900

ZB_TOTAL_PARTICIPANTES = 20
ZB_TEMPO_FORCAR_EVENTO = 1*60*1000

ZB_ID_TELEPORTE = 1387
ZB_LOCAL_TELEPORTE = {x=499, y=528, z=7}
ZB_LOCAL_SALA_ESPERA = {x=500, y=498, z=7}

ZB_LOCAL_ARENA_TE = {x = 467, y = 412, z = 7}
ZB_LOCAL_ARENA_BD = {x = 538, y = 476, z = 7}

ZB_IGNORAR_ACESSO = 3

-- PREMIOS
local ZB_PREMIOS = {
    trofeu = 5805,
    itens = {8889,8821,8865},
    dinheiro = {2160, 10, true}
}

function getStatusZombieEvent()
 return getGlobalStorageValue(ZB_GLOBAL_STORAGE_STATUS)
end

function setStatusZombieEvent(estagio)
 setGlobalStorageValue(ZB_GLOBAL_STORAGE_STATUS, estagio)
end

function getLimiteParticipantesZombieEvent()
 return getGlobalStorageValue(ZB_GLOBAL_STORAGE_LIMITE_PARTICIPANTES)
end

function setLimiteParticipantesZombieEvent(total)
 setGlobalStorageValue(ZB_GLOBAL_STORAGE_LIMITE_PARTICIPANTES, total)
end

function abreTeleporteZombieEvent()
 if(getTileItemById(ZB_LOCAL_TELEPORTE, ZB_ID_TELEPORTE).uid == 0) then
  local teleporte = doCreateTeleport(ZB_ID_TELEPORTE, ZB_LOCAL_SALA_ESPERA, ZB_LOCAL_TELEPORTE)
  doItemSetAttribute(teleporte, "aid", "9990")
 end
end

function fechaTeleporteZombieEvent()
 local item = getTileItemById(ZB_LOCAL_TELEPORTE, ZB_ID_TELEPORTE)
 if(item.uid ~= 0) then
  doRemoveItem(item.uid)
 end
end

function getStatusJogadorZombieEvent(cid)
 return getCreatureStorage(cid, ZB_STORAGE_STATUS_PLAYER)
end

function setStatusJogadorZombieEvent(cid, status)
 doCreatureSetStorage(cid, ZB_STORAGE_STATUS_PLAYER, status)
end

function getJogadoresSalaEsperaZombieEvent()
 local jogadoresSalaEspera = {}
 for i, cid in pairs(getPlayersOnline()) do
  if(getStatusJogadorZombieEvent(cid) == 1) then
   table.insert(jogadoresSalaEspera, cid)
  end
 end
 return jogadoresSalaEspera
end

function getJogadoresZombieEvent()
 local jogadores = {}
 for i, cid in pairs(getPlayersOnline()) do
  if(getStatusJogadorZombieEvent(cid) > 1) then
   table.insert(jogadores, cid)
  end
 end
 return jogadores
end

function resetaStorageZombieEvent()
 db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZB_STORAGE_STATUS_PLAYER .. ";")

 setStatusZombieEvent(0)
 setTotalZombiesSummonar(0)
 setTotalZombiesArena(0)

 setLimiteParticipantesZombieEvent(ZB_TOTAL_PARTICIPANTES)
end

function forcarInicioZombieEvent()
 local statusZombieEvent = getStatusZombieEvent()
 if(statusZombieEvent == 1) then
  local estagio = statusZombieEvent+1
  local jogadoresSalaEspera = getJogadoresSalaEsperaZombieEvent()
  if(#jogadoresSalaEspera > 0) then
   iniciarZombieEvent(estagio, #jogadoresSalaEspera)
  else
   resetaStorageZombieEvent()
  end
 fechaTeleporteZombieEvent()
 end
end

function teleportaJogadorSalaEspera(cid)
 local acessoJogador = getPlayerAccess(cid)
 if(acessoJogador < ZB_IGNORAR_ACESSO) then
  setStatusJogadorZombieEvent(cid, 1)
        
  local totalJogadoresSalaEspera = #getJogadoresSalaEsperaZombieEvent()
  local limiteJogadoresZombieEvent = getLimiteParticipantesZombieEvent()
        
  local vagasDisponivel = limiteJogadoresZombieEvent - totalJogadoresSalaEspera
  if(vagasDisponivel > 0) then
   doBroadcastMessage(getCreatureName(cid) .. " esta participando do evento Zombie. Ainda resta " .. vagasDisponivel .. " vaga(s) para o evento.")
  end
 end
 doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
 doTeleportThing(cid, ZB_LOCAL_SALA_ESPERA, true)
 doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
end

function isWalkable(pos)
 if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then
  return false
 elseif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 4620 then
  return false
 elseif getTopCreature(pos).uid > 0 then
  return false
 elseif isCreature(getTopCreature(pos).uid) then
  return false
 elseif getTileInfo(pos).protection then
  return false
 elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then
  return false
 end
 return true
end

function getLocalArenaZombieEvent()
 local pos
 local ehPosicaoValida = false
 while(ehPosicaoValida == false)do
  local posx = {}
  local posy = {}
  local posz = {}
  local pir = {}
  for i=1, 5 do
   local posx_tmp = math.random(ZB_LOCAL_ARENA_TE.x ,ZB_LOCAL_ARENA_BD.x)
   local posy_tmp = math.random(ZB_LOCAL_ARENA_TE.y ,ZB_LOCAL_ARENA_BD.y)
   local posz_tmp = math.random(ZB_LOCAL_ARENA_TE.z ,ZB_LOCAL_ARENA_BD.z)
   local pir_tmp = 0
   local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false)
   if(spec and #spec > 0) then
    for z, pid in pairs(spec) do
     if(isPlayer(pid)) then
      pir_tmp = pir_tmp + 1
     end
    end
   end
   posx = posx_tmp
   posy = posy_tmp
   posz = posz_tmp
   pir = pir_tmp
  end
  local lowest_i = 1
  for i=2, 5 do
   if(pir < pir[lowest_i]) then
    lowest_i = i
   end
  end
  pos = {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}
  if(isWalkable(pos))then
   ehPosicaoValida = true
  end
 end
 return pos
end

function teleportaJogadoresArenaZombie()
 for i, cid in pairs(getJogadoresSalaEsperaZombieEvent()) do
  setStatusJogadorZombieEvent(cid, os.time())

  local localArenaZombie = getLocalArenaZombieEvent()
  doTeleportThing(cid, localArenaZombie, true)
  doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)
 end
end

function getTotalZombiesSummonar()
 return getGlobalStorageValue(ZB_GLOBAL_STORAGE_TOTAL_ZOMBIES_SUMMONAR)
end

function setTotalZombiesSummonar(total)
 setGlobalStorageValue(ZB_GLOBAL_STORAGE_TOTAL_ZOMBIES_SUMMONAR, total)
end

function getTotalZombiesArena()
 return getGlobalStorageValue(ZB_GLOBAL_STORAGE_TOTAL_ZOMBIES_ARENA)
end

function setTotalZombiesArena(total)
 setGlobalStorageValue(ZB_GLOBAL_STORAGE_TOTAL_ZOMBIES_ARENA, total)
end

function summonaZombie()
 local localArenaZombie = getLocalArenaZombieEvent()
    
 doCreateMonster("Zumbie", localArenaZombie)
 doSendMagicEffect(localArenaZombie, 34)
    
 setTotalZombiesArena(getTotalZombiesArena()+1)
end

function iniciarZombieEvent(estagio, totalParticipantes)
 setStatusZombieEvent(estagio)
 setLimiteParticipantesZombieEvent(totalParticipantes)
 if(estagio == 1)then
  abreTeleporteZombieEvent()
  addEvent(forcarInicioZombieEvent,ZB_TEMPO_FORCAR_EVENTO)

  doBroadcastMessage("Evento Zombie foi iniciado. O evento esta limitado a " .. getLimiteParticipantesZombieEvent() .. " jogadores, o teleporte vai fechar em ".. (ZB_TEMPO_FORCAR_EVENTO/60/1000) .." minutos ou quando atingir o limite de jogadores.")
 elseif(estagio == 2)then
  fechaTeleporteZombieEvent()
  teleportaJogadoresArenaZombie()
        
  doBroadcastMessage("Evento Zombie Comecou.")
 end
end

function criaCorpoMorto(jogador)
 local nomeJogador = getCreatureName(jogador)
 local sexoJogador = getPlayerSex(jogador)
    
 local corpoID = (sexoJogador == 0 and 6560 or 3058)
 local localCorpo = getThingPosition(jogador)
    
 doSendMagicEffect(localCorpo, 68)
 local corpoChao = doCreateItem(corpoID, 1, localCorpo)
 doItemSetAttribute(corpoChao, "description", "You recognize "..nomeJogador..". "..(sexoJogador == 0 and 'She' or 'He').." was killed by a zumbie or player in " .. os.date("%d/%m/%Y %X", os.time())..".")
    
 doPlayerSendTextMessage(jogador, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! Voce foi infectado por um zombie.")
end

function teleportaJogadorCidadeNatal(jogador)
 local idCidadeNatal = getPlayerTown(jogador)
 local posicaoTemploCidadeNatal = getTownTemplePosition(idCidadeNatal)
 doTeleportThing(jogador, posicaoTemploCidadeNatal, true)
 doSendMagicEffect(getThingPosition(jogador), CONST_ME_TELEPORT)
end

function anunciaMorteJogador(jogador, participantes)
 local nomeJogador = getCreatureName(jogador)
    
 local totalParticipantes = #participantes-1
 if(totalParticipantes > 1) then
  doBroadcastMessage("O jogador "..nomeJogador.." foi pego por um zombie, ainda restam "..totalParticipantes.." no evento.")
 elseif(totalParticipantes == 1) then
  doBroadcastMessage("Ja temos um vencedor do evento zombie arena, vamos ver quanto tempo que ele vai durar dentro da arena zombie.")
 end
end

function salvaGanhadorZombieEvent(ganhador, dataInicio, dataFim, segundos, totalZombies)
 db.executeQuery("INSERT INTO `zombie_event`(`player_id`, `data_inicio`, `data_fim`, `segundos`, `total_zombies`) VALUES (".. getPlayerGUID(ganhador)..", ".. dataInicio ..", ".. dataFim ..", ".. segundos ..", ".. totalZombies ..");");
end

function presentarGanhador(ganhador)
 if(ganhador) then
  local nomeJogador = getPlayerName(ganhador)
  local trofeu = doPlayerAddItem(ganhador, ZB_PREMIOS.trofeu, 1)
  doItemSetAttribute(trofeu, "name", "trofeu evento zombie "..os.date("%d/%m/%Y", os.time()))
  doItemSetAttribute(trofeu, "description", "Awarded to " .. nomeJogador .. " for winning the zombie event.")
        
  --for _,item in ipairs(ZB_PREMIOS.itens) do
   --doPlayerAddItem(ganhador, item, 1)
  --end
        
  local itemSortiado = math.random(#ZB_PREMIOS.itens)
  doPlayerAddItem(ganhador, ZB_PREMIOS.itens[itemSortiado], 1)
        
  if ZB_PREMIOS.dinheiro[3] then
   doPlayerAddItem(ganhador, ZB_PREMIOS.dinheiro[1], ZB_PREMIOS.dinheiro[2])
  end
  doPlayerSave(ganhador, true)
  doPlayerSendTextMessage(ganhador, MESSAGE_STATUS_CONSOLE_BLUE, "Voce ganhou o evento Arena Zombie.")

  local dataInicio = getStatusJogadorZombieEvent(ganhador)
  local dataFim = os.time()
  local segundos = dataFim-dataInicio
  local totalZombies = getTotalZombiesArena()
        
  salvaGanhadorZombieEvent(ganhador, dataInicio, dataFim, segundos, totalZombies)
        
  doBroadcastMessage("Apos " .. segundos .. " segundos dentro da arena zombie o " .. nomeJogador .. " ganhou o evento, lutando contra " .. totalZombies .. " zombies!")
 else
  doBroadcastMessage("Evento Zombie Acabou! Nao teve ganhador?!?!?! WTF!")
 end
end

function removerZombiesArena()
 local largura = (math.max(ZB_LOCAL_ARENA_TE.x, ZB_LOCAL_ARENA_BD.x) - math.min(ZB_LOCAL_ARENA_TE.x, ZB_LOCAL_ARENA_BD.x)) / 2 + 1
 local altura = (math.max(ZB_LOCAL_ARENA_TE.y, ZB_LOCAL_ARENA_BD.y) - math.min(ZB_LOCAL_ARENA_TE.y, ZB_LOCAL_ARENA_BD.y)) / 2 + 1
 local centro = {x=math.min(ZB_LOCAL_ARENA_TE.x, ZB_LOCAL_ARENA_BD.x)+largura,y=math.min(ZB_LOCAL_ARENA_TE.y, ZB_LOCAL_ARENA_BD.y)+altura,z=ZB_LOCAL_ARENA_TE.z}
 for z = math.min(ZB_LOCAL_ARENA_TE.z, ZB_LOCAL_ARENA_BD.z), math.max(ZB_LOCAL_ARENA_TE.z, ZB_LOCAL_ARENA_BD.z) do
  centro.z = z
  for i, uid in pairs(getSpectators(centro, largura, altura, false)) do
   if(isMonster(uid)) then
    doRemoveCreature(uid)
   end
  end
 end
end

function levouDanoZombie(jogador)
 if(getStatusJogadorZombieEvent(jogador) > 1) then
  criaCorpoMorto(jogador)
  teleportaJogadorCidadeNatal(jogador)

  local participantes = getJogadoresZombieEvent()
  anunciaMorteJogador(jogador, participantes)
        
  local totalParticipantes = #participantes-1
  if totalParticipantes == 0 then
   presentarGanhador(participantes[1])
   resetaStorageZombieEvent()
   removerZombiesArena()
  end
  setStatusJogadorZombieEvent(jogador, 0)
 end
end

 

Você tem o código disponível? Se tiver publique-o aqui: 

 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

erro zombie.png

        NO GLOBAL EVENTS USO ISSO

 

        <globalevent name="ZombieGlobalStartup" type="startup" event="script" value="zombie/onstartup.lua"/>
        <globalevent name="ZombieGlobalThink" interval="10000" event="script" value="zombie/onthink.lua"/>
        <globalevent name="ZombieOnTime" time="23:00:00" event="script" value="zombie/ontime.lua"/>

 

       E NOS SCRIPT DO GLOBAL EVENTS 

 

ONSTARTUP \/ 

 

function onStartup()
 resetaStorageZombieEvent()
 return true
end

 

ONTHINK \/

 

function onThink(interval, lastExecution, thinkInterval)
 local statusZombieEvent = getStatusZombieEvent()
 if(statusZombieEvent == 2) then
  local totalZombiesSummonar = getTotalZombiesSummonar()+1
  setTotalZombiesSummonar(totalZombiesSummonar)

  for i=1,totalZombiesSummonar do
   summonaZombie()
  end
 end
 return true
end

 

 

ONTIME \/

 

function onTime()
 local statusZombieEvent = getStatusZombieEvent()
 if(statusZombieEvent < 1) then
  local estagio = 1
  local totalParticipantes = ZB_TOTAL_PARTICIPANTES
  iniciarZombieEvent(estagio, totalParticipantes)
  print("["..os.date("%H:%M:%S:000", os.time()).."] > Zombie Event foi iniciado com sucesso.")
 else
  print("["..os.date("%H:%M:%S:000", os.time()).."] > Zombie Event nao foi iniciado pois ja esta ativo.")
 end
 return true
end

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 cloudrun2023
      CloudRun - Sua Melhor Escolha para Hospedagem de OTServer!
      Você está procurando a solução definitiva para hospedar seu OTServer com desempenho imbatível e segurança inigualável? Não procure mais! Apresentamos a CloudRun, sua parceira confiável em serviços de hospedagem na nuvem.
       
      Recursos Exclusivos - Proteção DDoS Avançada:
      Mantenha seu OTServer online e seguro com nossa robusta proteção DDoS, garantindo uma experiência de jogo ininterrupta para seus jogadores.
       
      Servidores Ryzen 7 Poderosos: Desfrute do poder de processamento superior dos servidores Ryzen 7 para garantir um desempenho excepcional do seu OTServer. Velocidade e estabilidade garantidas!
       
      Armazenamento NVMe de Alta Velocidade:
      Reduza o tempo de carregamento do jogo com nosso armazenamento NVMe ultrarrápido. Seus jogadores vão adorar a rapidez com que podem explorar o mundo do seu OTServer.
       
      Uplink de até 1GB:
      Oferecemos uma conexão de alta velocidade com até 1GB de largura de banda, garantindo uma experiência de jogo suave e livre de lag para todos os seus jogadores, mesmo nos momentos de pico.
       
      Suporte 24 Horas:
      Estamos sempre aqui para você! Nossa equipe de suporte está disponível 24 horas por dia, 7 dias por semana, para resolver qualquer problema ou responder a qualquer pergunta que você possa ter. Sua satisfação é a nossa prioridade.
       
      Fácil e Rápido de Começar:
      Configurar seu OTServer na CloudRun é simples e rápido. Concentre-se no desenvolvimento do seu jogo enquanto cuidamos da hospedagem.
       
      Entre em Contato Agora!
      Website: https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
      Email: [email protected]
      Telefone: (47) 99902-5147

      Não comprometa a qualidade da hospedagem do seu OTServer. Escolha a CloudRun e ofereça aos seus jogadores a melhor experiência de jogo possível. Visite nosso site hoje mesmo para conhecer nossos planos e começar!
       
      https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
       
      CloudRun - Onde a Velocidade Encontra a Confiabilidade!
       

    • Por FeeTads
      SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.

      **script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts

      vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.

      SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.

      vá em creatureevent.cpp

      procure por:
      else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
      Adiciona abaixo:
      else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";  
      Adicione abaixo: 
      case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
      Adicione abaixo:
      case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";

      agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
      uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }

      agora vá em creatureevent.h

      procure por:
      CREATURE_EVENT_PREPAREDEATH
      adicione abaixo:
      CREATURE_EVENT_NOCOUNTFRAG

      procure por:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
      Adicione abaixo:
      uint32_t executeNoCountFragArea(Creature* creature, Creature* target);

      agora vá em player.cpp

      procure por:
      bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
      abaixo de:
      War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
      Adicione o seguinte código:
      if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }

      //

      Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor

      vá até creaturescripts/scripts
      crie um arquivo chamado, "noCountFragInArea.lua"
      e dentro dele cole o código:
       
      --[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
      agora em creaturescripts.xml
      <event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
      agora em creaturescripts/scripts/login.lua
       procure por OU semelhante a esse:
      registerCreatureEvent(cid, "AdvanceSave")
      e abaixo adicione:
      registerCreatureEvent(cid, "fragarea")

      //


      Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script

      Exemplo:
      local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
      assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
      Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
      Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.

      Façam bom proveito dos scripts, e deixem os créditos no script rsrs

      **Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
    • Por Muvuka
      Abri canal a força creaturescript acho que funcione no creaturescript cria script creaturescript
       
      <channel id="9" name="HELP" logged="yes"/>
      <channel id="12" name="Report Bugs" logged="yes"/>
      <channel id="13" name="Loot" logged="yes"/>
      <channel id="14" name="Report Character Rules Tibia Rules" logged="yes"/>
      <channel id="15" name="Death Channel"/>
      <channel id="6548" name="DexSoft" level="1"/>
      <channel id="7" name="Reports" logged="yes"/>
       
      antes de 
              if(lastLogin > 0) then adicione isso:
                      doPlayerOpenChannel(cid, CHANNEL_HELP) doPlayerOpenChannel(cid, 1,  2, 3) = 1,2 ,3 Channels, entendeu? NÃO FUNCIONA EU QUERO UM MEIO DE ABRI SEM USA A SOURCE
       
      EU NÃO CONSEGUI ABRI EU NÃO TENHO SOURCE
       
       
    • Por bolachapancao
      Rapaziada seguinte preciso de um script que ao utilizar uma alavanca para até 4 jogadores.
      Os jogadores serão teleportados para hunt durante uma hora e depois de uma hora os jogadores serão teleportados de volta para o templo.
       
      Observação: caso o jogador morra ou saia da hunt o evento hunt é cancelado.

      Estou a base canary
      GitHub - opentibiabr/canary: Canary Server 13.x for OpenTibia community.
       
    • Por RAJADAO
      .Qual servidor ou website você utiliza como base? 
      Sabrehaven 8.0
      Qual o motivo deste tópico? 
      Ajuda com novos efeitos
       
      Olá amigos, gostaria de ajuda para introduzir os seguintes efeitos no meu servidor (usando o Sabrehaven 8.0 como base), adicionei algumas runas novas (avalanche, icicle, míssil sagrado, stoneshower & Thunderstorm) e alguns novos feitiços (exevo mas san, exori san, exori tera, exori frigo, exevo gran mas frigo, exevo gran mas tera, exevo tera hur, exevo frigo hur) mas nenhum dos efeitos dessas magias parece existir no servidor, alguém tem um link para um tutorial ou algo assim para que eu possa fazer isso funcionar?
      Desculpe pelo mau inglês, sou brasileiro.

      Obrigado!


      AVALANCHE RUNE id:3161 \/
      (COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)

      STONESHOWER RUNE id:3175 \/
      (COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_STONES)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)

      THUNDERSTORM RUNE id:3202 \/
      (COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_E NERGYHIT)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)

      ICICLE RUNE id:3158 \/
      COMBAT_ICEDAMAGE
      CONST_ME_ICEAREA
      CONST_ANI_ICE

      SANTO MÍSSIL RUNA id:3182 \/
      (COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)

      CONST_ME_PLANTATTACK (exevo gran mas tera)
      CONST_ME_ICETORNADO (exevo gran mas frigo)
      CONST_ME_SMALLPLANTS (exevo tera hur)
      CONST_ME_ICEAREA (exevo frigo hur)
      CONST_ME_ICEATTACK (exori frigo)
      CONST_ME_CARNIPHILA (exori tera)

      EXORI SAN \/
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
      CONST_ME_HOLYDAM IDADE

      EXEVO MAS SAN \/
      CONST_ME_HOLYAREA
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo