AM
pedido

Anúncio de Player

Por Amantezinho, 11 de out. de 2015 em Scripts

otserv
8
2.1k
AmantezinhoA
11 de outubro de 2015 às 19:44

E aí XTIBIA, queria fazer um pedido (de novo, e como todos, HAHAHHA) ... Esté é um um script de anúncio de Player p/ Player.

  • Como Funciona?

O Player usará um comando "/announce" + o que quer falar para ir uma mensagem para todos do server, pelo custo de 1 diamond. Logo do lado da mensagem aparecerá por quem foi feito o anúncio.

(ex: /announce Troco 5 diamonds por 10K! )


Para o público ficará:

( Troco 5 diamonds por 10K! - Announcement made by Surfistinha.)

Se possível que essas mensagens sejam salvas num log, para que no caso de alguém abusar do sistema, mandando palavrões, etc, seja possível analisar.

Agradeço desde já a ajuda.

11 de outubro de 2015 às 20:22
Melhor resposta

Não testei.

 

Script:

 

 

 

 

local config = {
storage = 19400, -- storage em que será salvo o tempo
cor = "green", -- de acordo com o constant.lua da lib
tempo = 60, -- em segundos
itemid = 2159, --item que sera removido
price = 1, -- quantidade de item que sera removido
level = 1000 -- level necessario para poder utilizar o comando.
}


function onSay(cid, words, param, channel)
if(param == '') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return true
end


if getPlayerLevel(cid) >= config.level then
if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then
if doPlayerRemoveItem(cid, config.itemid, config.price) then
setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo*1))
doBroadcastMessage(""..getCreatureName(cid).." [ANUNCIO]: "..param.."", config.cor)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Vc Falo Com Sucesso " ..config.tempo.. " second(s) espere.")
else
doPlayerSendCancel(cid, "Você precisa " ..config.price.. " Scarab Coins para falar novamente no Anuncio.")
return true
end
else
doPlayerSendCancel(cid, "Você Falo no Anuncio " ..(getPlayerStorageValue(cid, config.storage) - os.time()).. " seconds Espere.")
return true
end
else
doPlayerSendCancel(cid, "You have to be level " ..config.level.. " or more in order to use broadcast.")
end
end

 

 

 

 

Tag:

 

 

 

 

<talkaction words="/announce" event="script" value="anuncio.lua"/>

 

 

 

 

Sobre o log,estou vendo se consigo fazer.

Editado Outubro 11 por kaleudd

Lucas CPL
11 de outubro de 2015 às 20:33

Sobre os logs, você pode fazer de dois jeitos:

1. registrar no banco de dados, mas para isso você tem que criar uma tabela em seu BD -- Fica mais fácil para depois puxar e criar comandos para ver quem usou, quando e a mensagem. (Gosto mais desta parte)

2. Colocar para registrar em .txt mesmo, acho um pouco arcaico, mas pode também fazer comandos para ver, e editar se quiser.

 

Se tiver dúvidas posso fazer as duas maneiras para você. Só escolher.

AmantezinhoA
11 de outubro de 2015 às 20:42

Sobre os logs, você pode fazer de dois jeitos:

1. registrar no banco de dados, mas para isso você tem que criar uma tabela em seu BD -- Fica mais fácil para depois puxar e criar comandos para ver quem usou, quando e a mensagem. (Gosto mais desta parte)

2. Colocar para registrar em .txt mesmo, acho um pouco arcaico, mas pode também fazer comandos para ver, e editar se quiser.

 

Se tiver dúvidas posso fazer as duas maneiras para você. Só escolher.

Acho que em .txt é melhor para mim HAHAHA, Puxo pelo Ctrl+ F nome do player. Mas nesse ficará separado por linha ou bugará tudo tipo

 

mensagem1mensagem2mensagem3?

11 de outubro de 2015 às 21:20

Editado o script,estava com erros.

 

Testei e funciono.

Lucas CPL
12 de outubro de 2015 às 12:23

Ok,

Fiz um txt para cada jogador:

Crie uma pasta 'log anuncio'

e na script coloca isso:

function registrarLog(cid, param)
	f = io.open('data/log anuncio/'.. getCreatureName(cid) ..'.txt','a+')
	f:write("Jogador : "..getCreatureName(cid).." - fez o anúncio no dia " .. os.date("%d %B %Y às %X.", os.time()) .."\nMensagem: ".. param .."\n----------------------------------------------------------\n")
	f:close()
end

e no final da script do comando, depois desta linha:

doBroadcastMessage(""..getCreatureName(cid).." [ANUNCIO]: "..param.."", config.cor)

coloca isso:

registrarLog(cid, param)

Não testei, quaisquer erro reporte aqui.

AmantezinhoA
15 de outubro de 2015 às 14:27

Testado e aprovado!
Ambos os scripts! :)
É possível fazer uma action para usar esse sistema?
Ex: Uso um item, que abrirá uma caixa para digitar o texto. quando o player clicar enviar irá fazê-lo dizer /comando [mensagem]


-
E se possível, onde e o que eu coloco para deixar o texto (após dito) não aparecer. Pq o player fala /announce tal coisa e mostra , como se ele falasse normal. (PS: Ele fala normal e fala pro servidor tbm. )

SkyLighS
16 de outubro de 2015 às 10:56

Tópico Movido
Este tópico foi movido de "OTServSuporte OTServSuporte Scripting"
para "OTServSuporte OTServSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".