Ir para conteúdo
Entre para seguir isso  
jrbx

Mensagem em PopUp

Recommended Posts

jrbx    21
jrbx

Irei postar um script de minha total autoria, que apesar de não ser grandes coisas, pode ser útil para bastante gente.

 

  • Nome do Sistema ou Script: Mensagem em PopUp
  • Nome do Autor: Jrbx (eu)
  • Servidor Testado e/ou Versão do Tibia: 8.54 a 8.60
  • O que ele faz: Envia uma mensagem em PopUp para um determinado jogador como no exemplo abaixo:

 

popupmessage.jpg

 

~~

 

Vamos la:

 

1º) Vá até a pasta data/talkactions/scripts e crie um arquivo chamado popup.lua.

 

2º) Abra o novo arquivo e coloque o seguinte código:

 

function onSay(cid, words, param)
   if(param == "") then
       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Name and message required.")
       return TRUE
   end

   local t = string.explode(param, ";")
   local player = getPlayerByNameWildcard(t[1])
   if(not t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Add a ; and then add your message.")
   elseif(doPlayerPopupFYI(player, "Sender: " .. getCreatureName(cid) .. "nRank: " .. getPlayerGroupName(cid) .. "n".. t[2] .."")== LUA_ERROR) then
       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Bad message color type.")
       return TRUE
   end
   return TRUE
end

 

2º) Vá até data/talkactions/talkactions.lua e adicione a seguinte linha:

 

<talkaction log="yes" access="3" words="/popup" event="script" value="popup.lua"/>

 

3º) Prontinho... Agora sempre que quiser utilizálo em seu OTServer, basta seguir o modelo:

 

/popup nome;mensagem

Ex: /popup mystic;Script Funcionando corretamente

 

Qualquer dúvida é só postar ai que eu respondo...

Editado por Kaotar

Compartilhar este post


Link para o post
Kaotar    5
Kaotar

Achei interessante sua ideia, porém quando o player recebe uma mensagem assim e estiver no meio de uma hunt ira atrapalhar bastante. Porém gostei do aspecto do script é claro que a segunda mensagem de erro está errada e também não há nenhum verificação para ver se o "player" existe, podendo causar vários erros, também aconselho a usar "return true" ao invés de "return TRUE", mesmo assim eu irei aprovar, espero que arrume o script. Próximo script que postar, use [.code][./code] para seu script ao invés de QUOTE.

 

Aprovado e Movido.

Tópico sem remuneração, usuário com menos de 50 posts.

Compartilhar este post


Link para o post
sequeled    0
sequeled

não gostei, os players vão começar a matar mandando spam ? kkk

Compartilhar este post


Link para o post
AlfereS    0
AlfereS
não gostei, os players vão começar a matar mandando spam ? kkk

 

É só modificar o access do talkaction em talkactions.lua, naquela tag que você tem que adicionar, mas o access veio como padrão do autor "3", e se me lembro bem, 3 significa que somente cargos de game-master para cima poderão utiliza-lo.

 

@Topic

 

Muito interessante, um dos problemas de otserv, é que fazer um sisteminha de envio de cartas, as vezes os players não olham, assim não tem como ignorar, uma idéia legal, é mandar o pop-up e uma segunda via pro dp, para caso de servers grandes o player poder provar o que o GM falou para ele, e para o player ter certeza que realmente foi um membro administrador do server que lhe mandou aquele recado. Grato.

Compartilhar este post


Link para o post
jedian    0
jedian

Cara, Essa idéia realmente é muito boa!

Mas como o sequeled disse, as pessoas podiam contratar outros para mandar spam e então, matá-los.

uma boa alternativa de solução pra isso seria colocar um exhausted! por exemplo. a pessoa não pode enviar mensagem novamente a cada 40 segundos, não é tão rápido, nem tão lento! :)

Parabéns, ideia realmente boa!

Compartilhar este post


Link para o post
Criticoo    4
Criticoo

muito bom cara,eu já tinha feito um quase igual antes o.o

só que claro no caso eu só uso para o pessoal da equipe,vou postar o meu para ver que é quase igual uishSIUHuihsuihUSIHsuihuis

 

function onSay(cid, words, param)  
       if(param == "") then  
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")  
               return true  
       end  

       local m = string.explode(param, ",", 1)  


       if(db.getResult("SELECT `id` FROM `players` WHERE `name` = ".. db.escapeString(m[1]) ..";"):getID() == -1) then  
               doPlayerSendCancel(cid, "Desculpe, o jogador [".. m[1] .."] não existe!")  
       else  
               if(isPlayerBanished(m[1], PLAYERBAN_LOCK)) then  
                       doPlayerSendCancel(cid, "Desculpe, o jogador [".. m[1] .."] está banido!")  
               else  
                       local pid = getPlayerByNameWildcard(m[1])  

                       if(not pid or isPlayerGhost(pid)) then  
                               doPlayerSendCancel(cid, "Desculpe, o jogador [".. m[1] .."] está offline!")  
                       end  

                       if(not m[2]) then  
                               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Escreva uma mensagem! Para enviar digite ".. words .." jogador mensagem.")  
                       else  
                               doPlayerPopupFYI(pid, "\nNick: ".. getCreatureName(cid) .."\nGroup: ".. getPlayerGroupName(cid) .."\nMensagem: ".. m[2] .."")  
                       end  
               end  
       end       
       return TRUE  
end

 

abraços

Editado por Criticoo

Compartilhar este post


Link para o post
tigerx2    1
tigerx2

Esse problema da hunt, é só fazer uma verificação

se ele está com battle/pz :D

 

A idéia está boa, já o script nem tanto, faltando verificações e etc.

Att, tiger

Compartilhar este post


Link para o post
Tavinlol    0
Tavinlol

Aew galera tinha um errinho não estava pulando linha ...

function onSay(cid, words, param)

if(param == "") then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Name and message required.")

return TRUE

end

 

local t = string.explode(param, ";")

local player = getPlayerByNameWildcard(t[1])

if(not t[2]) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Add a ; and then add your message.")

elseif(doPlayerPopupFYI(player, "Sender: " .. getCreatureName(cid) .. "\nRank: " .. getPlayerGroupName(cid) .. "\n".. t[2] .."")== LUA_ERROR) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Bad message color type.")

return TRUE

end

return TRUE

end

Compartilhar este post


Link para o post
gniu123    0
gniu123

teria como alterar para, por exemplo, só abrir qndo o player der um comando, por exemplo...

ele recebe a mensagem, e tem q digitar "!ler" ai ele abre?

exemplo em pratica:

 

Eu: /popup Nomedoplayer;isso eh somente um teste

Nomedoplayer: !ler

Nomedoplayer:

[isso eh somente um teste]

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×