É mutio bom e diferente esse npc, gostei muito mas se num me engano acho que eu já joguei num server com um npc que faz isso....
- Fórum
- OTServ
- Recursos
- Scripting
- NPCs, monsters e raids
- Npc Que Manda Sua Mensagem Pra Todos Players On-line
Npc Que Manda Sua Mensagem Pra Todos Players On-line
Por Conde Sapo, 07 de set. de 2007 em NPCs, monsters e raids
info
Grupo: Cavaleiro
Registrado: 03/06/07
Posts: 150
Reputação: +2

@conde sapo =D
assim como eu nimguém eh perfeito, vc esqueceu de que em nem todos os ots
NPC faz comando(n sei pq)
existe algo como "doSendBroadcastMessage", mas n me lembro bem qual é
a string.
E outra o comando de broadcast nem sempre eh "/B", pode ser /BC
como especificou o 6u6a
Editado Setembro 7 por KingCPI
Bom Script.
Adeus Trade Channel ?
Muito Bom ele so que as pessoas podem Abusar dele.
local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)-- OTServ event handling functions start-- BLOCOS de funçoes pre-definidas em data\npc\scripts\lib\npcsystemfunction onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() end-- OTServ event handling functions endfunction creatureSayCallback(cid, type, msg) if(npcHandler.focus ~= cid) then return false end if msg == 'help' or msg == 'job' then selfSay('Ohh... My job is easy, I\'ll send your message to all players on-line!') talk_state = 0 elseif msg == 'message' or msg == 'msg' or msg == 'mensagem' then selfSay('Do you want to send a message to all players for 1000 gps?') talk_state = 1 elseif msgcontains(msg, 'yes') and talk_state == 1 then selfSay('What the message you want I send ?') talk_state = 2 elseif msgcontains(msg, 'no') and talk_state > 0 then selfSay('Ok than.') talk_state = 0 elseif msg ~= "" and talk_state == 2 then if pay(cid,1000) then selfSay('/B ' .. creatureGetName(cid) .. ' say: ' .. msg) else selfSay('Sorry, you don\'t have money.') end talk_state = 0 endendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())
aff olha como sai o script...
jah canse de pedi pra postarem script com quote e n code box...
arruma isso aew adorei a ideia
vo por no meu ot, posta a versao ae =/
vlww muito bm msm
info
Grupo: Visconde
Registrado: 14/08/07
Posts: 322
Reputação: +4
Char no Tibia: Conde Sapo (Secura)

Eu uso Evolutions 7.92aff olha como sai o script...jah canse de pedi pra postarem script com quote e n code box...
arruma isso aew adorei a ideia
vo por no meu ot, posta a versao ae =/
tem como resolver seu problema.
algumas configurações de RUINDOWS deixam o Ctrl+C assim.
Primeiro abre um documento WORD temporario.
cola o texto nele. (Ctrl-V)
vai colar tudo bonitinho.
seleciona toda a area e Ctrl-C de novo.
Agora abre seu Bloco-De-Notas
Ctrl-V
Pronto... vai colar direitinho.
[ ]s
Ps1.: QUOTE não põe IDENTAÇÃO
Ps2.: doSendBroadcastMessage não é comando de NPC
Editado Setembro 11 por Conde Sapo
info
Grupo: Visconde
Registrado: 10/06/06
Posts: 338
Reputação: +6
Char no Tibia: Setyte Berseker

Para versões mais atuais, usem broadcastMessage ou mesmo broadcastMessageEx, lembrando que isso depende da versão utilizada.
info
Grupo: Visconde
Registrado: 14/08/07
Posts: 322
Reputação: +4
Char no Tibia: Conde Sapo (Secura)

Vlw pela dica NostraPara versões mais atuais, usem broadcastMessage ou mesmo broadcastMessageEx, lembrando que isso depende da versão utilizada.
Mas eu não tenho esse comando aqui então não tenho como testa-lo.
mostra aqui como ficaria essa parte , pros novatos saberem como usa o comando PLX
(e eu também quero conhecer)
[ ]s
info
Grupo: Lenda
Registrado: 10/10/05
Posts: 2.2k
Reputação: +63
Char no Tibia: Master Chequer

Olá Xtibiano,
NPC Movido para sua área correta.
Atenciosamente,
JV Chequer *Diretor de Fórum Xtibia.com*
Editado Setembro 12 por JV Chequer
info
Grupo: Cavaleiro
Registrado: 02/09/06
Posts: 186
Reputação: +16

Um NPC que uma idéia que eu gostei, players não podem pedir ao GM para mandar uma mensagem para todos então teve esse ótima idéia de um NPC, eu estava com uma idéia parecida mas tem mais funções!!!
Abração!!!
Editado Setembro 12 por Nottinghster
info
Grupo: Visconde
Registrado: 14/08/07
Posts: 322
Reputação: +4
Char no Tibia: Conde Sapo (Secura)

OPa....
faz o NPC e põe o tutorial
queremos conhecer sua IDEIA
[ ]s
info
Grupo: Visconde
Registrado: 10/06/06
Posts: 338
Reputação: +6
Char no Tibia: Setyte Berseker

Em novas versões ficaria assim:
broadcastMessage(getCreatureName(cid) .. ' say: ' .. msg, MESSAGE_STATUS_CONSOLE_RED)
Editado Setembro 15 por Nostradamus
Gostei muito criativo a ideia
Ae!
tinha que ser o conde... fala ae
mtoo bom!
agora n vem mais as enxeçoes de saco:
GM! fala ai para os player que quero ir anihi
GM! fala ai para os player que quero ir poi!
ahhhh
contate o npc messager
xD
incrivel!!
parabens







info
Grupo: Visconde
Registrado: 14/08/07
Posts: 322
Reputação: +4
Char no Tibia: Conde Sapo (Secura)
a duvida de um usuário me insentivou a criar este NPC
achei ÓTIMA a ideia dele
(excusivo pata XTibia, denunciar aqui se achar este NPC em outro forum)
1° - criando o NPC no MapEditor
editar o arquivo MapEditor\creatures.xml
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) -- OTServ event handling functions start -- BLOCOS de funçoes pre-definidas em data\npc\scripts\lib\npcsystem function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -- OTServ event handling functions end function creatureSayCallback(cid, type, msg) if(npcHandler.focus ~= cid) then return false end msg = string.lower(msg) if msg == 'help' or msg == 'job' then selfSay('Ohh... My job is easy, I\'ll send your message to all players on-line!') talk_state = 0 elseif msg == 'message' or msg == 'msg' or msg == 'mensagem' then selfSay('Do you want to send a message to all players for 1000 gps?') talk_state = 1 elseif msgcontains(msg, 'yes') and talk_state == 1 then selfSay('What the message you want I send ?') talk_state = 2 elseif msgcontains(msg, 'no') and talk_state > 0 then selfSay('Ok than.') talk_state = 0 elseif msg ~= "" and talk_state == 2 then if pay(cid,1000) then selfSay('/B ' .. creatureGetName(cid) .. ' say: ' .. msg) else selfSay('Sorry, you don\'t have money.') end talk_state = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())Agora as instruções basica.
Em algumas versões de OT , o broadcast não é "/B"
substitua por "/BC"
ficando assim :
selfSay('/BC ' .. creatureGetName(cid) .. ' say: ' .. msg)(By KingCPI)
- Se trocar o nome do npc , acertar em AMBOS arquivos (xml e lua)
- Se trocar o valor (1000 gps) acertar na mensagem do npc e na parte que remove a grana do player
- Se o comando if pay(cid,1000) then não funcionar , substituir por if doPlayerRemoveMoney(cid,1000) then
Testei todas as ações
HI
BYE
YES
NO
HELP
JOB
MSG
MENSAGEM
MESSAGE
tentei mandar a mensagem sem a grana e fui recusado por falta dela.
acho que não faltou nenhum teste.
Resultados :
divirtam-se
Ps.: qualquer sugestão inteligente eu altero este topico e incluo.
(e coloco crédito... claro...)
Ps.: BUG DE TEMPO acertado.
o NPC parava de falar com você após 30 segundos
mesmo que você estivesse conversando com ele
faltava a linha return TRUE nas ultimas linhas
isso "zera" o tempo cada vez que você fala com o NPC.
Ps.: BUG DE MAIUSCULA/MINUSCULA
msg = string.lower(msg)
Faltava esta linha
isso transforma a mensagem em MINUSCULAS
se o player falasse "Hi" o npc não ia responder
agora vai transformar "Hi" em "hi" e o NPC reconhece.
Editado Outubro 22 por Conde Sapo