Ir para conteúdo
  • Cadastre-se

GlobalEvents TFS 1.X Ajuda com Scripts... Plx


Ir para solução Resolvido por Underewar,

Posts Recomendados

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!

 


 

Link para o post
Compartilhar em outros sites
  • Moderador

Olá Rafa estranho, se você se baseia na ultima versão da TFS o arquivo existe sim ?
https://github.com/otland/forgottenserver/blob/master/data/globalevents/globalevents.xml

Qual seria sua base?

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites
12 horas atrás, Underewar disse:

Olá Rafa estranho, se você se baseia na ultima versão da TFS o arquivo existe sim ?
https://github.com/otland/forgottenserver/blob/master/data/globalevents/globalevents.xml

Qual seria sua base?

??

01.jpg

 


 

Link para o post
Compartilhar em outros sites
  • Moderador
  • Solução
6 horas atrás, RafaelMCA disse:

??

01.jpg

A claro você esta usando a base da OTX ?
Então vamos la vou te falar aqui oque é isso
O revScript é um sistema que agora não tem mais necessidade do XML, podemos registrar o evento no proprio arquivo LUA (Graças adeus), pelomenos eu acho inutil o XML e é esse o intuito do revScript, algumas principais caracteristicas de criar scripts com revscritp é a facilidade de manipular events em um unico script, ou até compartilhar resultados de funções com outros arquivos revScript, fica aqui um exmeplo de como criar um BoradCast MSG no revScript sem a necessidad de um XML!
Apenas crie um arquivo.lua e adicione!

 

local autoBroadcast = GlobalEvent("AutoBroadcast") -- Criando o Evento para Registro como se fosse no XML
function autoBroadcast.onThink(interval, lastExecution)
    local messages = {
    "[DONATES]: write your message here",
    "[COMMANDS]: write your message here "
}

    Game.broadcastMessage(messages[math.random(#messages)], MESSAGE_EVENT_ADVANCE)
    return true
end

autoBroadcast:interval(300000) --5 minutes aqui seria o intervalo que adicionariamos no XML
autoBroadcast:register() -- Aqui seria o registro que fariamos no XML

Espero que tenha conseguido te dar uma luz!

Bônus : Existem maneiras de modificar o método desta MSG
no player.lua em /data/lib
você consegue desenvolver novas funcionalidades para o evento de broadCast

function Game.broadcast(message, sender)
    local players = Game.getPlayers() ? função braodcast capturando jogadores online
   for _, cid in ipairs(players) do ? array de jogadores
      local msg = NetworkMessage() ? Verificando jogadores online
      msg:addByte(0xAA) ? -- interação Hexadecimal com Client 12
      msg:addU32(1) -- ??????? Same HERE
      msg:addString(sender) ? Este evento ja existia
      msg:addU16(0x00) ? Nova interação com Client12
      msg:addByte(TALKTYPE_BROADCAST) ? Ja existia
      msg:addString(message) ? Ja existia
      msg:sendToPlayer(Player(cid)) ? Ja existia
   end
end
Editado por Underewar (veja o histórico de edições)

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites
8 horas atrás, Underewar disse:

A claro você esta usando a base da OTX ?
Então vamos la vou te falar aqui oque é isso
O revScript é um sistema que agora não tem mais necessidade do XML, podemos registrar o evento no proprio arquivo LUA (Graças adeus), pelomenos eu acho inutil o XML e é esse o intuito do revScript, algumas principais caracteristicas de criar scripts com revscritp é a facilidade de manipular events em um unico script, ou até compartilhar resultados de funções com outros arquivos revScript, fica aqui um exmeplo de como criar um BoradCast MSG no revScript sem a necessidad de um XML!
Apenas crie um arquivo.lua e adicione!

 




local autoBroadcast = GlobalEvent("AutoBroadcast") -- Criando o Evento para Registro como se fosse no XML
function autoBroadcast.onThink(interval, lastExecution)
    local messages = {
    "[DONATES]: write your message here",
    "[COMMANDS]: write your message here "
}

    Game.broadcastMessage(messages[math.random(#messages)], MESSAGE_EVENT_ADVANCE)
    return true
end

autoBroadcast:interval(300000) --5 minutes aqui seria o intervalo que adicionariamos no XML
autoBroadcast:register() -- Aqui seria o registro que fariamos no XML

Espero que tenha conseguido te dar uma luz!

Bônus : Existem maneiras de modificar o método desta MSG
no player.lua em /data/lib
você consegue desenvolver novas funcionalidades para o evento de broadCast




function Game.broadcast(message, sender)
    local players = Game.getPlayers() ? função braodcast capturando jogadores online
   for _, cid in ipairs(players) do ? array de jogadores
      local msg = NetworkMessage() ? Verificando jogadores online
      msg:addByte(0xAA) ? -- interação Hexadecimal com Client 12
      msg:addU32(1) -- ??????? Same HERE
      msg:addString(sender) ? Este evento ja existia
      msg:addU16(0x00) ? Nova interação com Client12
      msg:addByte(TALKTYPE_BROADCAST) ? Ja existia
      msg:addString(message) ? Ja existia
      msg:sendToPlayer(Player(cid)) ? Ja existia
   end
end

Mano com toda certeza, vc deu uma grande luz... vou testar aqui seu modelo de Script e estou rezando q de certo... assim que testa volto pra dizer, porem eu queria saber qual linguagem eu deva estudar para saber montar as scripts sozinho... pois desta forma eu realmente concordo que esta bem mais fácil, sem precisar ficar adicionando vários .lua ou .xml para 1 única função, porem na parte de script agora pra mim ficou mais complicado, já que agora todos os encaminhamentos estão em códigos...

 

 

 

EDIT: tenho recebido este erro aqui amigo! não sei se estou errando em alguma coisa, porem copiei exatamente a msg como vc deixou, porem eu adicionei algumas linhas de MSGs, mas acredito q isso não seja o problema... e se for eu teria que criar 1 arquivo deste para kda msg então? Vlw

 

ERRO: > msg.lua [error]
^ ...\CBS\Desktop\OTX 12.64\data\scripts\globalevents\msg.lua:6: '}' expected (to close '{' at line 3) near '"Promote e AOL com Eremo em cima do templo."'

 

Editado por RafaelMCA (veja o histórico de edições)

 


 

Link para o post
Compartilhar em outros sites
  • Moderador

Aparentemente você digitou uma linha com aspas a mais pode compartilhar seu códigos?

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites
4 horas atrás, Underewar disse:

Aparentemente você digitou uma linha com aspas a mais pode compartilhar seu códigos?

Achei aqui o B.O Imrão, vc deixou uma virgula no codigo, bem depois da 1° msg.... entao tive q add as virgulas para todos os campos de texto... até para separar eles... nao tinha visto antes MyBAD!

 

mas meu código agora ficou assim...


 

local autoBroadcast = GlobalEvent("AutoBroadcast") -- Criando o Evento para Registro como se fosse no XML
function autoBroadcast.onThink(interval, lastExecution)
    local messages = {
    "Curta nossa pagina www.facebook.com/CloudBrasilServers",
    "Faça Sua Doação e participe do nosso grupo VIP do WhatsApp.",
    "Promote e AOL com Eremo em cima do templo.",
    "!bless e !aol sao comandos para todos os players."
    }

    Game.broadcastMessage(messages[math.random(#messages)], MESSAGE_EVENT_ADVANCE)
    return true
end

autoBroadcast:interval(300000) --5 minutes aqui seria o intervalo que adicionariamos no XML
autoBroadcast:register() -- Aqui seria o registro que fariamos no XML

 

A e mais uma coisa eu fiquei perdido no final... um determina o tempo da msg... mas pra q exatamente server a ultima linha do codigo?

Editado por RafaelMCA (veja o histórico de edições)

 


 

Link para o post
Compartilhar em outros sites
4 horas atrás, Underewar disse:

opa boa!

Testado e aprovado, e muito agradecido! 

A proposito se quiser me passar umas dicas... hehe estou aceitando!!! OBRIGADO! REP+

 

alguma chance da msg aparecer no local chat? 

Editado por RafaelMCA (veja o histórico de edições)

 


 

Link para o post
Compartilhar em outros sites
  • Moderador

Para a mensagem aparecer no local chat.
Rafhael-Oliveira#7549 me add discord te passo umas dicas!
procure por data/lib/player.lua
e adicione.

function Game.broadcast(message, sender)
    local players = Game.getPlayers() ? função braodcast capturando jogadores online
   for _, cid in ipairs(players) do ? array de jogadores
      local msg = NetworkMessage() ? Verificando jogadores online
      msg:addByte(0xAA) ? -- interação Hexadecimal com Client 12
      msg:addU32(1) -- ??????? Same HERE
      msg:addString(sender) ? Este evento ja existia
      msg:addU16(0x00) ? Nova interação com Client12
      msg:addByte(TALKTYPE_BROADCAST) ? Ja existia
      msg:addString(message) ? Ja existia
      msg:sendToPlayer(Player(cid)) ? Ja existia
   end
end

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites
Em 27/12/2021 em 11:38, Underewar disse:

Para a mensagem aparecer no local chat.
Rafhael-Oliveira#7549 me add discord te passo umas dicas!
procure por data/lib/player.lua
e adicione.



function Game.broadcast(message, sender)
    local players = Game.getPlayers() ? função braodcast capturando jogadores online
   for _, cid in ipairs(players) do ? array de jogadores
      local msg = NetworkMessage() ? Verificando jogadores online
      msg:addByte(0xAA) ? -- interação Hexadecimal com Client 12
      msg:addU32(1) -- ??????? Same HERE
      msg:addString(sender) ? Este evento ja existia
      msg:addU16(0x00) ? Nova interação com Client12
      msg:addByte(TALKTYPE_BROADCAST) ? Ja existia
      msg:addString(message) ? Ja existia
      msg:sendToPlayer(Player(cid)) ? Ja existia
   end
end

Agora estou saindo para trabalhar, mas quando chegar eu vou testar e reviso aqui ctg,,,amanhã estou de folga então com ctza vou te chamar no Discord... e amigão Obrigado mais uma vez.

 

 

EDIT: Salve Meu Brother... Então fiz exatamente aqui oq meu amigo ai disse... soq oq aconteceu... nas obs estava sem os hifens "--" dai começou a dar pau em tudo... porem eu acertei toda a script e agora esta rodando com 90% rsrsrs.... pq 90% a msg ainda esta sendo gerada de 5 em 5 ... mas ainda nada dela no local chat hehe... mas ai vou te deixar ai como ficou minha script player.lua

 

function Game.broadcast(message, sender)
    local players = Game.getPlayers() -- ? função braodcast capturando jogadores online
   for _, cid in ipairs(players) do --? array de jogadores
      local msg = NetworkMessage() --? Verificando jogadores online
      msg:addByte(0xAA) --?  interação Hexadecimal com Client 12
      msg:addU32(1) -- ??????? Same HERE
      msg:addString(sender) --? Este evento ja existia
      msg:addU16(0x00) --? Nova interação com Client12
      msg:addByte(TALKTYPE_BROADCAST) --? Ja existia
      msg:addString(message) --? Ja existia
      msg:sendToPlayer(Player(cid)) --? Ja existia
   end

 

Ahhh outra coisa... te adicionei lá agorinha no Discord....

Editado por RafaelMCA (veja o histórico de edições)

 


 

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 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):

       
    • Por vitinhoo96
      Seguem os erros que estou tendo
       

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo