Ir para conteúdo
Entre para seguir isso  
vione

Broadcast para jogadores

Recommended Posts

vione    0
vione

Sistema de Broadcast para jogadores

 

Nome: Player Broadcast (Avançado)

Versão: 8.4x

Tipo do script: TalkAction

Servidor Testado: The Forgotten Server 0.3.4 Patch Level 2

Autor: Colandus (pela idéia original) e JDB (atualização e novas características)

 

 

Bom, como todos nós sabemos, jogadores não podem mandar broadcast.

E foi pensando nisto que esta TalkAction foi criada! (Y)

 

Bom, a função dela, é mandar broadcast para todos, é uma ferramenta muito útil, como quando você quiser fazer um time pra Anihilator Quest, Pitz Of Inferno, Demon Oak, etc...

Ou então para vender itens também!

 

Agora que já expliquei a função fundamental deste script, vamos ao trabalho.

 

Primeiramente, abra a pasta do seu OTServ e vá para a pasta data\lib.

Abra o arquivo data.lua, e adicione o seguinte código:

[left]  [color=#b1b100]dofile[/color][color=#66cc66]([/color]getDataDir[color=#66cc66]([/color][color=#66cc66])[/color] .. [color=#ff0000]"lib/exhaustion.lua"[/color][color=#66cc66])[/color]  [/left]

Salve o seu arquivo, e agora vamos para a pasta data\talkactions\scripts, crie um arquivo com o nome player_brodcast.lua e adicione o código à seguir:

[left]  [color=#808080][i]--- Config ---[/i][/color]
[color=#b1b100]local[/color] levelReq [color=#66cc66]=[/color] [color=#cc66cc]100[/color] [color=#808080][i]-- Nivel requerido para usar o comando.[/i][/color]
[color=#b1b100]local[/color] minChars [color=#66cc66]=[/color] [color=#cc66cc]3[/color] [color=#808080][i]-- Quanto sera o minimo de caracteres para a msg?[/i][/color]
[color=#b1b100]local[/color] basePrice [color=#66cc66]=[/color] [color=#cc66cc]50[/color] [color=#808080][i]-- Base price, will be multiplied by the players level.[/i][/color]
[color=#b1b100]local[/color] group_id [color=#66cc66]=[/color] [color=#cc66cc]2[/color] [color=#808080][i]-- Group to not use the script.[/i][/color]

[color=#808080][i]--- Exhaust Settings ---[/i][/color]
[color=#b1b100]local[/color] useExhaust [color=#66cc66]=[/color] TRUE [color=#808080][i]-- FALSE = Broadcast as fast as they want.[/i][/color]
[color=#b1b100]local[/color] storageValue [color=#66cc66]=[/color] [color=#cc66cc]8954[/color] [color=#808080][i]-- Storage for Exhaust to work.[/i][/color]
[color=#b1b100]local[/color] exhaustTime [color=#66cc66]=[/color] [color=#cc66cc]5[/color] [color=#808080][i]-- Minutos.[/i][/color]
[color=#808080][i]--- End config ---[/i][/color]

[color=#b1b100]function[/color] onSay[color=#66cc66]([/color]cid, words, param[color=#66cc66])[/color]
[color=#b1b100]local[/color] letterPrice [color=#66cc66]=[/color] basePrice + getPlayerLevel[color=#66cc66]([/color]cid[color=#66cc66])[/color] [color=#66cc66]*[/color] 2
[color=#b1b100]local[/color] broadcastPrice [color=#66cc66]=[/color] letterPrice [color=#66cc66]*[/color] [color=#b1b100]string.len[/color][color=#66cc66]([/color]param[color=#66cc66])[/color]
   [color=#b1b100]if[/color] getPlayerLevel[color=#66cc66]([/color]cid[color=#66cc66])[/color] [color=#66cc66]<[/color] levelReq [color=#b1b100]then[/color]
       doPlayerSendTextMessage[color=#66cc66]([/color]cid, MESSAGE_STATUS_CONSOLE_RED, [color=#ff0000]"Sorry, you need to be atleast level "[/color] .. levelReq .. [color=#ff0000]" to use this command."[/color][color=#66cc66])[/color]
   [color=#b1b100]return[/color] TRUE
   [color=#b1b100]end[/color]
   [color=#b1b100]if[/color] [color=#66cc66]([/color]useExhaust [color=#66cc66]==[/color] TRUE[color=#66cc66])[/color] [color=#b1b100]and[/color] getPlayerStorageValue[color=#66cc66]([/color]cid, storageValue[color=#66cc66])[/color] [color=#66cc66]==[/color] 1 [color=#b1b100]then[/color]
       doPlayerSendTextMessage[color=#66cc66]([/color]cid, MESSAGE_STATUS_CONSOLE_BLUE, [color=#ff0000]"Sorry, you need to wait before broadcasting another message."[/color][color=#66cc66])[/color]
   [color=#b1b100]return[/color] TRUE
   [color=#b1b100]end[/color]
   [color=#b1b100]if[/color] [color=#b1b100]string.len[/color][color=#66cc66]([/color]param[color=#66cc66])[/color] [color=#66cc66]<[/color] minChars [color=#b1b100]then[/color]
       doPlayerSendTextMessage[color=#66cc66]([/color]cid, MESSAGE_STATUS_CONSOLE_BLUE, [color=#ff0000]"Sorry, you need to enter atleast "[/color] .. minChars .. [color=#ff0000]" characters. Each character will cost you "[/color] .. letterPrice .. [color=#ff0000]" gold coins."[/color][color=#66cc66])[/color]
   [color=#b1b100]return[/color] TRUE
   [color=#b1b100]end[/color]
   [color=#b1b100]if[/color] getPlayerGroupId[color=#66cc66]([/color]cid[color=#66cc66])[/color] [color=#66cc66]>[/color] group_id [color=#b1b100]then[/color]
       doPlayerSendTextMessage[color=#66cc66]([/color]cid, MESSAGE_STATUS_CONSOLE_BLUE, [color=#ff0000]"Sorry, staff members do not need to broadcast messages with this command."[/color][color=#66cc66])[/color]
   [color=#b1b100]return[/color] TRUE
   [color=#b1b100]end[/color]
   [color=#b1b100]if[/color] doPlayerRemoveMoney[color=#66cc66]([/color]cid, broadcastPrice[color=#66cc66])[/color] [color=#66cc66]==[/color] FALSE [color=#b1b100]then[/color]
       doPlayerSendTextMessage[color=#66cc66]([/color]cid, MESSAGE_STATUS_CONSOLE_BLUE, [color=#ff0000]"Sorry, you have not enough money. This message would have costed you "[/color] .. broadcastPrice .. [color=#ff0000]" gold coins."[/color][color=#66cc66])[/color]
   [color=#b1b100]else[/color]
       doPlayerSendTextMessage[color=#66cc66]([/color]cid, MESSAGE_STATUS_CONSOLE_ORANGE, [color=#ff0000]"Broadcast successfully sent. Your message contained "[/color] .. [color=#b1b100]string.len[/color][color=#66cc66]([/color]param[color=#66cc66])[/color] .. [color=#ff0000]" characters and cost you "[/color] .. broadcastPrice .. [color=#ff0000]" gold coins."[/color][color=#66cc66])[/color]
       broadcastMessage[color=#66cc66]([/color]getPlayerName[color=#66cc66]([/color]cid[color=#66cc66])[/color] .. [color=#ff0000]" ["[/color] .. getPlayerLevel[color=#66cc66]([/color]cid[color=#66cc66])[/color] .. [color=#ff0000]"]: "[/color] .. param, MESSAGE_STATUS_WARNING[color=#66cc66])[/color]
       doSendMagicEffect[color=#66cc66]([/color]getCreaturePosition[color=#66cc66]([/color]cid[color=#66cc66])[/color], CONST_ME_GIFT_WRAPS[color=#66cc66])[/color]
       setPlayerStorageValue[color=#66cc66]([/color]cid, storageValue, 1[color=#66cc66])[/color]
       addEvent[color=#66cc66]([/color]endExhaust, exhaustTime [color=#66cc66]*[/color] 60000, cid[color=#66cc66])[/color]
   [color=#b1b100]end[/color]
[color=#b1b100]end[/color]

[color=#b1b100]function[/color] endExhaust[color=#66cc66]([/color]cid[color=#66cc66])[/color]
   [color=#b1b100]if[/color] [color=#66cc66]([/color]useExhaust [color=#66cc66]==[/color] TRUE[color=#66cc66])[/color] [color=#b1b100]then[/color]
       setPlayerStorageValue[color=#66cc66]([/color]cid, storageValue, -[color=#cc66cc]1[/color][color=#66cc66])[/color]
       doPlayerSendTextMessage[color=#66cc66]([/color]cid, MESSAGE_STATUS_CONSOLE_RED, [color=#ff0000]"You may now broadcast another message."[/color][color=#66cc66])[/color]
   [color=#b1b100]end[/color]
[color=#b1b100]end[/color]  [/left]

Agora, adicione o seguinte código para o arquivo talkactions.xml:

[color=#000000][color=#007700]<[/color][color=#0000bb]talkaction words[/color][color=#007700]=[/color][color=#dd0000]"!broadcast" [/color][color=#0000bb]event[/color][color=#007700]=[/color][color=#dd0000]"script" [/color][color=#0000bb]value[/color][color=#007700]=[/color][color=#dd0000]"player_broadcast.lua"[/color][color=#007700]/>  [/color][/color]

Pronto! Basta salvar e iniciar o seu servidor. ;)

 

Espero que gostem do script, no começo já sugeri algumas funções básicas e muito úteis!

Por favor, comentem! :)

Editado por vione
Errei na parte do servidor testado

Compartilhar este post


Link para o post
Gpwjhlkdcf    21
Gpwjhlkdcf

  • Aprovado e Movido para Download de Ações.

Compartilhar este post


Link para o post
Mock    32
Mock

algumas coisas poderiam ser tiradas do code como:

if getPlayerGroupId(cid) > group_id then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, staff members do not need to broadcast messages with this command.")

return TRUE

end

se eles não presisam n quer dizer que nao podem.

 

achei legal vc usar o exaust, primeira vez q vejo alguem usando a lib de exaust.

Compartilhar este post


Link para o post
vione    0
vione

Sim, poderia ser retirado.

O exhaust é bom para não obter muitos spams no canal 'Default', pois isso poderia prejudicar os jogadores.

Obrigado por comentar, abraços!!

Compartilhar este post


Link para o post
Mock    32
Mock

não aconelho em um ot cheio, pois da pra fazer uma algazara com isso.

Compartilhar este post


Link para o post
vione    0
vione

Basta aumentar o preço e o nível :)

Compartilhar este post


Link para o post
Jorgiinho    0
Jorgiinho

Funciona em 8.5?

Compartilhar este post


Link para o post
vione    0
vione
Funciona em 8.5?

 

No 8.42 sim, mas pode ser testado.

Compartilhar este post


Link para o post
Alkaliine    0
Alkaliine

Bem Interessante

Aprovado!

Compartilhar este post


Link para o post
MeLaHeLL    0
MeLaHeLL
No 8.42 sim, mas pode ser testado.

 

 

Sim, funciona.. em 8.50 Testei.

:yes:

Mesmo que o servidor seja 'lotado' o system controla automaticamente.. o level e price são caros.. uma msg com 10 caracters custa 6k..

E se o cara for mandar 1 frase.. que é o normal na venda de itens.. vamo supor..

Um lvl 270 vai mandar 1 msg vendendo varios itens..

a msg ficaria assim..

 

19:18 Broadcast successfully sent. Your message contained 143 characters and cost you 84370 gold coins.

Não haverá spams e nem guerra de 'Mensagens'

Tenho até que diminuir esse price, por que está muito alto ..

Boom .. ao tópico novamente..

Muito bom o system, vou até por no meu servidor. :D

E vale MUITO apena, por causa do exaused e quantia de money que gasta pra usar..

 

Bye. :bye:

Compartilhar este post


Link para o post
Krum    0
Krum

Mtu Bom

Compartilhar este post


Link para o post
Mickfern    32
Mickfern

Muito interessante... funcionou perfeitamente aqui !

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.

×