marcelinhok 1 Postado Março 19, 2020 Share Postado Março 19, 2020 Se alguem puder disponibiliza rum evento boss que funcione da seguinte maneira. O boss nasce em 1 em 1 hora. e ele tem tempo pra ficar la, no caso 20 min. Queria que funcionasse assim, com tempo. para nao ficar nascendo 1 em 1 e ficar varios boses. se alguem puder ajudar, agradeço desde de ja Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 1, 2020 Share Postado Abril 1, 2020 (editado) Em 19/03/2020 em 08:16, marcelinhok disse: Se alguem puder disponibiliza rum evento boss que funcione da seguinte maneira. O boss nasce em 1 em 1 hora. e ele tem tempo pra ficar la, no caso 20 min. Queria que funcionasse assim, com tempo. para nao ficar nascendo 1 em 1 e ficar varios boses. se alguem puder ajudar, agradeço desde de ja Olá, vá na pasta Data/Globalevents/Scripts e crie um arquivo lua chamado boss e adicione o código dentro: ----------------------------------- EVENTO SUMMON BOSS FEITO POR YAN18 ----------------------------------------- local minutos = 20 ---- COLOCA OS MINUTOS AQUI PARA OS BOSS SUMIREM CASO NINGUÉM OS MATE ---- NOME DOS MONTROS ---- local monsters = { [1] = "Magmar" , [2] = "Electabuzz", [3] = "Scizor", } ---- POSIÇÃO DA ARENA ONDE APARECERÁ OS MONSTROS ---- local position_arena = { from_pos = {x= 964, y = 993, z= 7}, -- VARIÁVEL QUE TEM A COORDENADA INICIAL DO LUGAR ONDE VAI APARECER OS MONSTROS to_pos = {x= 978, y = 1009, z= 7}, -- VARIÁVEL QUE TEM A COORDENADA FINAL DO LUGAR ONDE VAI APARECER OS MONSTROS } ---------------------------------- CÓDIGO ---------------------------------------------- function onThink(cid, words, interval, lastExecution) ----- CRIA OS BOSS ----- for i, j in ipairs(monsters) do ----- VARIÁVEL RANDOM_POSITION GERA O SPAWN ALEATÓRIO DOS BOSS ----- local random_position = {x= math.random(position_arena.from_pos.x, position_arena.to_pos.x), y= math.random(position_arena.from_pos.y, position_arena.to_pos.y), z= math.random(position_arena.from_pos.z, position_arena.to_pos.z)} doSummonCreature(j, random_position) end doBroadcastMessage(#monsters == 1 and "A monster have been arrived in this world. Don't arrive near!" or "Some monsters have been arrived in this world. Don't arrive near by them!", 22) ---- VERIFICAÇÃO SE TEM MONSTROS NA ARENA PARA REMOVER ---- addEvent(function() local position = {} for i = position_arena.from_pos.x, position_arena.to_pos.x do for j = position_arena.from_pos.y, position_arena.to_pos.y do position[#position+1] = {x= i, y = j, z= position_arena.from_pos.z, stackpos = 0} end end for i= 1, #position do for j = 0, 255 do position[i].stackpos = j local monster = getTileThingByPos(position[i]) if isMonster(monster.uid) then for d, n in ipairs(monsters) do if getCreatureName(monster.uid) == n then doRemoveCreature(monster.uid) if d == #monsters then doBroadcastMessage(#monsters == 1 and "The monster left this world. But it will return soon...." or "The monsters left this world. But they will return soon....", 22) end end end end end end end, minutos * 60 * 1000) return true end Agora em Data/Globalevents abra o globalevents.xml e adicione a tag: <globalevent name="boss" interval="3600" event="script" value="boss.lua"/> <!-- TEMPO EM SEGUNDOS, JÁ DEIXEI 1 HORA --> Explicação: No código, eu criei 3 monstros genéricos para testar, só adicionar o nome deles igual está na tabela, e se quiser só 1 monstro, apague os outros dois e insira o desejado (lembrando de colocar a vírgula no final igual como está). Na variável minutos já deixei 20 como pediu, mas caso queira trocar, só alterar o valor dela (lembrando que o valor dela tem que ser menor que o intervalo do evento no xml). E na tabela position_arena, precisa colocar as coordenadas iniciais e finais da arena, já deixei pronto ali também e é só substituir. Deixei para eles nascerem em posições aleatórias dentro das coordenadas da arena, caso queira spawns fixos, só ir na variável random_position e colocar x, y e z desejados. Agora na parte do Xml como deixei o comentário na tag, já deixei 1 hora como pediu (3600 segundos), caso queira outro valor só alterar lá, lembrando que ali é em segundos. Deixei tudo comentado e explicadinho, mas qualquer dúvida só falar. Eu testei muito aqui e deu certo, mas qualquer problema só me dizer. Editado Abril 1, 2020 por Yan18 880123, M i s s, FlamesAdmin e 1 outro reagiu a isso 3 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 poncex 0 Postado Dezembro 19, 2020 Share Postado Dezembro 19, 2020 Olá amigo, funciona por acaso em um otx 3.10? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Dezembro 24, 2020 Share Postado Dezembro 24, 2020 Em 19/12/2020 em 20:03, poncex disse: Olá amigo, funciona por acaso em um otx 3.10? Nunca mexi com OTS. Tenta usar esse script no OTS e se der erro manda print da distro. Link para o comentário Compartilhar em outros sites More sharing options...
0 poncex 0 Postado Dezembro 24, 2020 Share Postado Dezembro 24, 2020 16 horas atrás, Yan18 disse: Nunca mexi com OTS. Tenta usar esse script no OTS e se der erro manda print da distro. isso é estranho, mas não lança erros no console, mas funciona no servidor também então eu os tenho no meu ot Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 11, 2021 Share Postado Janeiro 11, 2021 Em 24/12/2020 em 02:26, poncex disse: isso é estranho, mas não lança erros no console, mas funciona no servidor também então eu os tenho no meu ot Não consegui entender o que você quis dizer. Link para o comentário Compartilhar em outros sites More sharing options...
0 poncex 0 Postado Janeiro 12, 2021 Share Postado Janeiro 12, 2021 Eu só preciso de um boss system semelhante a esse, mas para otx global (semelhante a aura ot): c Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 15, 2021 Share Postado Janeiro 15, 2021 (editado) Em 12/01/2021 em 00:21, poncex disse: Eu só preciso de um boss system semelhante a esse, mas para otx global (semelhante a aura ot): c Pelo que vi essa OTX é equivalente a TFS 1.X, então o código que fiz deve funcionar. Substitua o código por esse: -- BOSS SYSTEM TFS 1.X FEITO POR YAN18 -- -- TABELA COM OS MONSTROS QUE VAI SURGIR DE ACORDO COM O TEMPO QUE VOCÊ COLOCOU NO INTERVAL NA TAG XML DO GLOBALEVENTS -- local monsters = { {name = "Mew", pos = Position(1000, 1000, 7)}, {name = "Mewtwo", pos = Position(1000, 1000, 7)}, {name = "Articuno", pos = Position(1000, 1000, 7)}, {name = "Zapdos", pos = Position(1000, 1000, 7)}, {name = "Moltres", pos = Position(1000, 1000, 7)}, } -- CONFIGURAÇÃO DA ARENA COMO POSIÇÃO CENTRAL QUE COMEÇA A VERIFICAR E X E Y (X, -X, Y, -Y) QUE VAI VERIFICAR NA ARENA SE TEM MONSTROS -- local config_arena = { position_center = Position(1200, 1200, 7), -- POSIÇÃO CENTRAL DA ARENA x_left = 20, -- QUANTIDADE DE TILES A ESQUERDA QUE VAI VERIFICAR SE TEM MONSTRO A PARTIR DA POSIÇÃO CENTRAL x_right = 20, -- QUANTIDADE DE TILES A DIREITA QUE VAI VERIFICAR SE TEM MONSTRO A PARTIR DA POSIÇÃO CENTRAL y_up = 20, -- QUANTIDADE DE TILES A CIMA QUE VAI VERIFICAR SE TEM MONSTRO A PARTIR DA POSIÇÃO CENTRAL y_down = 20, -- QUANTIDADE DE TILES A BAIXO QUE VAI VERIFICAR SE TEM MONSTRO A PARTIR DA POSIÇÃO CENTRAL } local verifica_todos_andares = false -- SE SUA ARENA TIVER MAIS DE UM ANDAR, MUDE O VALOR PARA true local minutos_fim_evento = 25 -- TEMPO EM MINUTOS PARA ACABAR O EVENTO E REMOVER OS MONTROS RESTANTES DA ARENA local tempo_total_fim_evento = minutos_fim_evento * 60 * 1000 -- NÃO MEXER NESSA VARIÁVEL !!! -------------------- CÓDIGO -------------------- function onThink(interval) local evento_iniciado = false -- VERIFICA SE O EVENTO FOI INICIADO DA FORMA CORRETA if tempo_total_fim_evento >= interval then return print("Você configurou errado o tempo do início do evento com o final do evento.") end for index, monster in pairs(monsters) do if evento_iniciado then return print("Você configurou errado o tempo de iniciar o evento com o tempo em que ele acabou.") else if #monsters < 1 then return print("A tabela com os monstros para o evento está vazia!") end Game.createMonster(monster.name, monster.pos) if index == #monsters then broadcastMessage(#monsters == 1 and "A monster arrived in this world" or "Some monsters arrived in this world") end end end evento_iniciado = true if not evento_iniciado then return print("Você configurou o tempo errado no evento") else addEvent(function() local monsters_arena = {} local spectator = Game.getSpectators(config_arena.position_center, verifica_todos_andares, false, config_arena.x_left, config_arena.x_right, y_down, y_up) -- NÃO MUDAR O TERCEIRO PARÂMETRO, DEIXE FALSE for index, creature in pairs(spectator) do if creature:isMonster() then monsters_arena[#monsters_arena + 1] = creature:getName() end end if #monsters_arena < 1 then --return print("Houve alguma coisa errada ao remover os monstros do evento.") return true else for index, monster in pairs(spectator) do for i = 1, #monsters_arena do if monster:isMonster() and monster:getName() == monsters_arena[i] then monster:remove() end end if index == #monsters_arena then evento_iniciado = false return broadcastMessage(#monsters_arena == 1 and "A monster left this world" or "Some monsters left this world") end end end end, tempo_total_fim_evento) end end Eu comentei tudo, então deve ter ficado tudo claro. Fora que, no código que fiz para TFS 0.X acima, está tudo explicado, nesse código está mais otimizado para TFS 1.X. Só lembrando que a posição central da arena é muito importante, então se a arena sua vai ser por exemplo 50x50, faça 51x51 para que a posição central se ímpar e a range X,Y fica iguais (pares), pois nesse exemplo de 51x51, a posição central seria X= 26, Y=26. E também é importante colocar a quantidade de tiles que vai verificar a partir da posição central nas variáveis X,Y na tabela da configuração da arena, assim como a posição central. Caso não entenda algo ou fique com alguma dúvida, só falar. E ser der algum problema só falar também. * OBS: É muito importante que configure o tempo do início do evento de forma coerente com a variável com o tempo do fim do evento, se não vai dar ruim, mas tratei isso no código e vai te avisar na distro. Editado Janeiro 16, 2021 por Yan18 Link para o comentário Compartilhar em outros sites More sharing options...
0 juliolokao 0 Postado Abril 29, 2021 Share Postado Abril 29, 2021 Em 31/03/2020 em 21:19, Yan18 disse: Olá, vá na pasta Data/Globalevents/Scripts e crie um arquivo lua chamado boss e adicione o código dentro: ----------------------------------- EVENTO SUMMON BOSS FEITO POR YAN18 ----------------------------------------- local minutos = 20 ---- COLOCA OS MINUTOS AQUI PARA OS BOSS SUMIREM CASO NINGUÉM OS MATE ---- NOME DOS MONTROS ---- local monsters = { [1] = "Magmar" , [2] = "Electabuzz", [3] = "Scizor", } ---- POSIÇÃO DA ARENA ONDE APARECERÁ OS MONSTROS ---- local position_arena = { from_pos = {x= 964, y = 993, z= 7}, -- VARIÁVEL QUE TEM A COORDENADA INICIAL DO LUGAR ONDE VAI APARECER OS MONSTROS to_pos = {x= 978, y = 1009, z= 7}, -- VARIÁVEL QUE TEM A COORDENADA FINAL DO LUGAR ONDE VAI APARECER OS MONSTROS } ---------------------------------- CÓDIGO ---------------------------------------------- function onThink(cid, words, interval, lastExecution) ----- CRIA OS BOSS ----- for i, j in ipairs(monsters) do ----- VARIÁVEL RANDOM_POSITION GERA O SPAWN ALEATÓRIO DOS BOSS ----- local random_position = {x= math.random(position_arena.from_pos.x, position_arena.to_pos.x), y= math.random(position_arena.from_pos.y, position_arena.to_pos.y), z= math.random(position_arena.from_pos.z, position_arena.to_pos.z)} doSummonCreature(j, random_position) end doBroadcastMessage(#monsters == 1 and "A monster have been arrived in this world. Don't arrive near!" or "Some monsters have been arrived in this world. Don't arrive near by them!", 22) ---- VERIFICAÇÃO SE TEM MONSTROS NA ARENA PARA REMOVER ---- addEvent(function() local position = {} for i = position_arena.from_pos.x, position_arena.to_pos.x do for j = position_arena.from_pos.y, position_arena.to_pos.y do position[#position+1] = {x= i, y = j, z= position_arena.from_pos.z, stackpos = 0} end end for i= 1, #position do for j = 0, 255 do position[i].stackpos = j local monster = getTileThingByPos(position[i]) if isMonster(monster.uid) then for d, n in ipairs(monsters) do if getCreatureName(monster.uid) == n then doRemoveCreature(monster.uid) if d == #monsters then doBroadcastMessage(#monsters == 1 and "The monster left this world. But it will return soon...." or "The monsters left this world. But they will return soon....", 22) end end end end end end end, minutos * 60 * 1000) return true end Agora em Data/Globalevents abra o globalevents.xml e adicione a tag: <globalevent name="boss" interval="3600" event="script" value="boss.lua"/> <!-- TEMPO EM SEGUNDOS, JÁ DEIXEI 1 HORA --> Explicação: No código, eu criei 3 monstros genéricos para testar, só adicionar o nome deles igual está na tabela, e se quiser só 1 monstro, apague os outros dois e insira o desejado (lembrando de colocar a vírgula no final igual como está). Na variável minutos já deixei 20 como pediu, mas caso queira trocar, só alterar o valor dela (lembrando que o valor dela tem que ser menor que o intervalo do evento no xml). E na tabela position_arena, precisa colocar as coordenadas iniciais e finais da arena, já deixei pronto ali também e é só substituir. Deixei para eles nascerem em posições aleatórias dentro das coordenadas da arena, caso queira spawns fixos, só ir na variável random_position e colocar x, y e z desejados. Agora na parte do Xml como deixei o comentário na tag, já deixei 1 hora como pediu (3600 segundos), caso queira outro valor só alterar lá, lembrando que ali é em segundos. Deixei tudo comentado e explicadinho, mas qualquer dúvida só falar. Eu testei muito aqui e deu certo, mas qualquer problema só me dizer. Funcional, testado tfs 0.3.5 Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
marcelinhok 1
Se alguem puder disponibiliza rum evento boss que funcione da seguinte maneira.
O boss nasce em 1 em 1 hora.
e ele tem tempo pra ficar la, no caso 20 min. Queria que funcionasse assim, com tempo. para nao ficar nascendo 1 em 1 e ficar varios boses.
se alguem puder ajudar, agradeço desde de ja
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados