Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Boa tarde/noite..

Alguém poderia me ajudar?

Bom, eu tenho esse script pra sumonar X boss, em X posição no mapa, todos os bosses tem uma posição especifica..

Coloco no global events pra sumonar de 30 em 30 minutos..

Os bosses são sorteados, aleatoriamente, porém está acontecendo de um boss que já foi sumonado, ser sorteado novamente, assim, fazendo com que fiquem 2 bosses iguais no mesmo local..

Alguém poderia me ajudar, alterar o script, e vê se existe alguma verificação que impeça-o de sumonar 2 bosses no mesmo local? 

Por exemplo, o script anuncia na distro que X boss foi sumonado..

Por exemplo, 30 minutos se passaram: Sumoning BOSS: Smaug.

Depois de 30 minutos o smaug foi sorteado novamente, ai, o sorteio acontecesse dnv, pra sortear outro? 

Pls, alguem me ajudaa

 

CODIGO: 

local bosses = {
    {boss = "Smaug", pos = {x = 1893, y = 875, z = 2}},
	{boss = "laracna", pos = {x = 1482, y = 1366, z = 12}},
	{boss = "son of ancalagon", pos = {x = 1452, y = 871, z = 8}},
	{boss = "son of ancalagon", pos = {x = 2154, y = 1111, z = 12}},
	{boss = "Wormageddon", pos = {x = 835, y = 897, z = 8}},
	{boss = "olog-hai", pos = {x = 1011, y = 1335, z = 10}},
	{boss = "olog-hai", pos = {x = 2171, y = 1650, z = 8}},
	{boss = "scatha", pos = {x = 1602, y = 1683, z = 0}},
	{boss = "valaraukar", pos = {x = 832, y = 1008, z = 4}},
	{boss = "valaraukar", pos = {x = 1055, y = 800, z = 1}},
    {boss = "ferumbras", pos = {x = 2365, y = 1313, z = 0}},
	{boss = "jormungand", pos = {x = 1115, y = 1027, z = 9}},
	{boss = "adramelech", pos = {x = 2160, y = 1017, z = 11}},
	{boss = "ancalagon", pos = {x = 2124, y = 1352, z = 14}},
	{boss = "smaug", pos = {x = 1893, y = 875, z = 2}},
    {boss = "eddie", pos = {x = 2135, y = 957, z = 11}},
	{boss = "The Necromancer", pos = {x = 837, y = 1208, z = 1}},
	{boss = "baalrog", pos = {x = 1052, y = 1266, z = 9}},
	{boss = "emelianenko", pos = {x = 1712, y = 1266, z = 11}},
	{boss = "khel thuzad", pos = {x = 2288, y = 953, z = 15}},
	{boss = "ungoliant", pos = {x = 2292, y = 869, z = 6}},
	{boss = "saruman", pos = {x = 1459, y = 1483, z = 1}},
    {boss = "cerberus", pos = {x = 2285, y = 855, z = 12}},
	{boss = "scatha", pos = {x = 1898, y = 709, z = 9}},
	{boss = "azaka", pos = {x = 1037, y = 696, z = 6}},
	{boss = "gaz'haragoth", pos = {x = 98, y = 1120, z = 12}},
	{boss = "necropharus", pos = {x = 1493, y = 623, z = 9}},
	{boss = "Melkors Summon", pos = {x = 812, y = 1346, z = 9}},
	{boss = "Avari Leader", pos = {x = 1478, y = 1847, z = 8}},
	{boss = "Azazel", pos = {x = 873, y = 687, z = 9}},
	{boss = "Aragog", pos = {x = 2213, y = 1832, z = 8}},
	{boss = "Nosferatu", pos = {x = 751, y = 1492, z = 7}},
	{boss = "The Necromancer", pos = {x = 1059, y = 819, z = 0}},
	{boss = "Hellgorak", pos = {x = 802, y = 545, z = 5}},
	{boss = "Wormageddon", pos = {x=274, y=832, z=9}},
	{boss = "Melkors Summon", pos = {x = 2040, y = 598, z = 13}},
	{boss = "Lord of The Elements", pos = {x = 627, y = 1321, z = 13}}
}

function onThink(cid, interval)
local random = math.random(1, #bosses)

doSummonCreature(bosses[random].boss, bosses[random].pos)  

print("Summoning Boss: " .. bosses[random].boss)

return true
end
Link para o post
Compartilhar em outros sites

Olá @Jonathan005 , tudo bom?
Esse script foi alterado de um já existente e funcional, postado em outra plataforma...

Ele apresenta algum erro no distro ao executar a função?
 

Link de referência, postado aqui no tibiaking:

 

 

Tente alterar por:
 

Spoiler

 


function onThink(cid, interval)
    local random = math.random(1, #bosses)
    if not getCreatureName(bosses[random].boss) then
        doSummonCreature(bosses[random].boss, bosses[random].pos)
    end

print("Summoning Boss: " .. bosses[random].boss)
    return true
end

 

 

Já vi também algumas dessas funções serem utilizadas de forma diferente, como:

local random = math.random(1, 1000)

 

e

doCreateMonster(boss[math.random(#boss)], pos)

 

 

Realize testes em outras opções e notifique aqui o resultado.

VI6MDIG.png

 

"O fracasso é a oportunidade de se começar de novo inteligentemente"

Minhas Redes Sociais: Youtube | Página & Grupo | Steam  | Discord TibiaKing

 

Link para o post
Compartilhar em outros sites

Fala irmão, tudo sim, obrigado pela moral, eu testei esse, porém a função "getCreatureByName" não tem no meu tFS 1.2

Aparece um erro na distro

[Error - GlobalEvents::think] Failed to execute event: BossesS

Lua Script Error: [GlobalEvent Interface]
data/globalevents/scripts/spawn/testeboss.lua:onThink
data/globalevents/scripts/spawn/testeboss.lua:48: attempt to call global 'getCreatureByName' (a nil value)
stack traceback:
        [C]: in function 'getCreatureByName'
        data/globalevents/scripts/spawn/testeboss.lua:48: in function <data/globalevents/scripts/spawn/testeboss.lua:45>
[Error - GlobalEvents::think] Failed to execute event: BossesS

Lua Script Error: [GlobalEvent Interface]
data/globalevents/scripts/spawn/testeboss.lua:onThink
data/globalevents/scripts/spawn/testeboss.lua:48: attempt to call global 'getCreatureByName' (a nil value)
stack traceback:

Link para o post
Compartilhar em outros sites

Entendi, esse é para 0.X ...
Um amigo recomendou este criado pelo Nekiro, para TFS 1.X :

Spoiler

local raids = {
    -- Bosses
    [1]  = {type = 'BOSS', position = Position(32960, 32075, 6), monster = 'demodras', message = 'Demodras has spawned', chance = 30},
    [2]  = {type = 'BOSS', position = Position(998, 1006, 7), monster = 'orshabaal', chance = 40},
    [3]  = {type = 'BOSS', position = Position(998, 1006, 7), monster = 'ferumbras', chance = 30},
  
    -- Raids fromPos, toPos
    [4] = {type = 'NORMAL', fromPos = Position(997, 1005, 7), toPos = Position(1009, 1014, 7), monsters = {'orc', 'orc Spearman', 'orc warrior'}, count = 10, message = 'orcs raid', chance = 20},
    [5] = {type = 'NORMAL', fromPos = Position(997, 1005, 7), toPos = Position(1009, 1014, 7), monsters = 'demon', count = 10, message = 'demons raid', chance = 50},
}

local spawnedBosses = {}

local function isSpawned(name)
    for i = 1, #spawnedBosses do
        local monster = Monster(spawnedBosses[i])
        if monster and monster:getName():lower() == name then
            return true
        else
            spawnedBosses[i] = nil
        end
    end
    return false
end

function onThink(interval, lastExecution, thinkInterval)
    local table = raids[math.random(#raids)]
  
    if math.random(100) > table.chance then
        return true
    end
  
    if table.type == 'BOSS' then
        if not isSpawned(table.monster:lower()) then
            local boss = Game.createMonster(table.monster, table.position, true, false)
            if boss then
                spawnedBosses[#spawnedBosses + 1] = boss:getId()
            end
            if table.message ~= nil then
                broadcastMessage(table.message, MESSAGE_EVENT_ADVANCE)
            end
        end
    elseif table.type == 'NORMAL' then
        for i = 1, table.count do
            local randomPosition = Position(math.random(table.fromPos.x, table.toPos.x), math.random(table.fromPos.y, table.toPos.y), table.fromPos.z)
            if type(table.monsters) == 'string' then
                Game.createMonster(table.monsters, randomPosition, true, false)
            else
                Game.createMonster(table.monsters[math.random(#table.monsters)], randomPosition, true, false)
            end
        end
        if table.message ~= nil then
            broadcastMessage(table.message, MESSAGE_EVENT_ADVANCE)
        end
    end
    return true
end

 

 

 

Tente utiliza-lo pois dentre a sua solicitação ele melhor atende a sua necessidade.

VI6MDIG.png

 

"O fracasso é a oportunidade de se começar de novo inteligentemente"

Minhas Redes Sociais: Youtube | Página & Grupo | Steam  | Discord TibiaKing

 

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 Anderson Sacani
      Surgimento de portal com horário pré definido
      Revscript para surgimento de portal em determinado horário, com configurações ajustáveis
       
      O que o script faz?
      Cria um portal as 10:00 no local que recebeu a variável portalPosition, e o mesmo teletransporta jogadores para o destino que recebeu a variável goToPosition.
      Na variável time você pode alterar o horário em que o portal será criado.
      local config = { time = "10:00:00", portalPosition = { x = 100, y = 100, z = 7 }, goToPosition = { x = 200, y = 200, z = 7 }, broadcast = true, text = "A portal appeared inside the dark mage's house.", } local portal = GlobalEvent("Portal") function portal.onTime(interval) local item = Game.createItem(1387, 1, config.portalPosition) if item:isTeleport() then item:setDestination(config.goToPosition) if config.broadcast then Game.broadcastMessage(config.text, MESSAGE_EVENT_ADVANCE) end end end portal:time(config.time) portal:register()  
    • Por Darcio Antonio
      Fiz em video para melhor explicar
      Video
       
    • Por RafaelMCA
      Salve Família do TK... Estava tentando fazer 2 scripts aqui porem me deparo com um impasse... que é ele o seguinte:
       
      Antigamente a uns 6 anos eu tinha um OT e eu vivia criando Scripts, porem desta vez quando fui criar minha script de mensagem automática de publicidade do servidor, eu me deparei que meu distro não tem o arquivo globalevents.xml como no outro OT existia.. então agora fiquei perdido... pois não sei como fazer para o servidor reconhecer as scripts que eu adicionei, sendo que antes eu dava este comando pelo arquivo "principal" da pasta... Se alguém poder me dar uma luz, ficarei muito grato, alias desde já obrigado!
    • Por Mor3nao
      Isso aqui eu to postando como uma extensão de um sistema de daily task que postei ontem, você pode ver ele aqui --> LINK
      É um script simples, q tem como função contar quantos de cada monstro tem no servidor, bem util pra quem vai fazer algum sistema de tasks, afinal, é bem complicado vc escolher quantos monstros alguém vai ter q matar, se vc nao sabe quantos tem, fica dificil mensurar a dificuldade de determinada task, então fiz esse script que cria um arquivo contando exatamente quantos de cada monstro tem xD
      Vou ensinar colocar ele, focando no meu sistema de daily tasks, mas caso queira usar pra outra finalidade, a vontade :}
       
      Como "instalar" o script:
      1 - Vá em /data/globalevents/globalevents.xml e adicione a tag:
      <globalevent name="MonsterCount" type="startup" script="MonsterCount.lua" /> 2 - Em /data/globalevents/scripts crie o arquivo MonsterCount.lua e dentro dele escreva:
       
           E pronto! Com isso sempre que vc abrir o server ele vai contar quantos monstros tem, e atualiza-los se for o caso. Não precisa criar o arquivo .lua mas é preciso que o caminho(com as pastas) esteja feito, se quiser, pode mudar o diretorio tb, sem problemas.
      OBS: Mude o caminho pro seu spawn.xml!!
       
       
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+  DAQUI PRA BAIXO É SÓ PRA APLICAR NO MEU SISTEMA DE DAILY TASKS  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       
           Agora vou ensinar como aplicar isso no sistema de tasks que eu disse no inicio(Leia-o primeiro), é bem simples, vamos alterar o esquema, ao invés de escolhermos o numero maximo e minimo de cada task, vamos escolher a % max e minima, ex, as tasks easy que vao de 50 a 300 monstros, vai ficar como 50% e 300% da quantidade do monstro tal, Para entender:
       
      Se vc só tem 10 orcs no server, a task pode vir de 5 a 30 orcs, assim como se vc tiver 200, a task vem de 100 a 600
       
      1. Pra colocar: Depois de vc ter colocado os scripts que mandei aí em cima, vc vai em /data/lib/lib.lua, e acrescente a linha:
      dofile('data/lib/task/monster_count.lua') *** Lembre-se de colocar essa linha ANTES dessa »»» dofile('data/lib/task/dailytask.lua')  
       
      2. Depois vá em  data/lib/task/dailytask.lua  e troque o arquivo por esse:
       
       
      Imagens de amostra:
      Na distrô:

       
      O arquivo criado, (note q ja vem em tabela,  prontinho pra usar):

       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo