Conde Sapo 4 Postado Setembro 7, 2007 Share Postado Setembro 7, 2007 (editado) a duvida de um usuário me insentivou a criar este NPC achei ÓTIMA a ideia dele Idéia by 6u6aNPC by Conde Sapo (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 : 18:43 Conde Sapo [51]: hi18:43 Messager: Welcome, Conde Sapo! I have been expecting you. 18:43 Conde Sapo [51]: job 18:43 Messager: Ohh... My job is easy, I'll send your message to all players on-line! 18:43 Conde Sapo [51]: message 18:43 Messager: Do you want to send a message to all players for 1000 gps? 18:43 Conde Sapo [51]: yes 18:43 Messager: What the message you want I send ? 18:44 Conde Sapo [51]: help me with anihi quest PLX 18:44 Conde Sapo say: help me with anihi quest PLX 18:44 Conde Sapo [51]: bye 18:44 Messager: Good bye, Conde Sapo! 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, 2007 por Conde Sapo Link para o comentário Compartilhar em outros sites More sharing options...
Bloods 3 Postado Setembro 7, 2007 Share Postado Setembro 7, 2007 É 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.... Link para o comentário Compartilhar em outros sites More sharing options...
DeadKennedy 2 Postado Setembro 7, 2007 Share Postado Setembro 7, 2007 (editado) @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, 2007 por KingCPI Link para o comentário Compartilhar em outros sites More sharing options...
Mister's 0 Postado Setembro 7, 2007 Share Postado Setembro 7, 2007 Bom Script. Adeus Trade Channel ? Muito Bom ele so que as pessoas podem Abusar dele. Link para o comentário Compartilhar em outros sites More sharing options...
capeta7 0 Postado Setembro 7, 2007 Share Postado Setembro 7, 2007 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 =/ Link para o comentário Compartilhar em outros sites More sharing options...
Divizio 0 Postado Setembro 7, 2007 Share Postado Setembro 7, 2007 vlww muito bm msm Link para o comentário Compartilhar em outros sites More sharing options...
Conde Sapo 4 Postado Setembro 11, 2007 Autor Share Postado Setembro 11, 2007 (editado) 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 =/ Eu uso Evolutions 7.92 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, 2007 por Conde Sapo Link para o comentário Compartilhar em outros sites More sharing options...
Nostradamus 6 Postado Setembro 12, 2007 Share Postado Setembro 12, 2007 Para versões mais atuais, usem broadcastMessage ou mesmo broadcastMessageEx, lembrando que isso depende da versão utilizada. Link para o comentário Compartilhar em outros sites More sharing options...
Conde Sapo 4 Postado Setembro 12, 2007 Autor Share Postado Setembro 12, 2007 Para versões mais atuais, usem broadcastMessage ou mesmo broadcastMessageEx, lembrando que isso depende da versão utilizada.Vlw pela dica Nostra 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 Link para o comentário Compartilhar em outros sites More sharing options...
Jvchequer 63 Postado Setembro 12, 2007 Share Postado Setembro 12, 2007 Olá Xtibiano, NPC Movido para sua área correta. Atenciosamente, JV Chequer *Diretor de Fórum Xtibia.com* Link para o comentário Compartilhar em outros sites More sharing options...
Nottinghster 16 Postado Setembro 12, 2007 Share Postado Setembro 12, 2007 (editado) 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, 2007 por Nottinghster Link para o comentário Compartilhar em outros sites More sharing options...
Conde Sapo 4 Postado Setembro 13, 2007 Autor Share Postado Setembro 13, 2007 OPa.... faz o NPC e põe o tutorial queremos conhecer sua IDEIA [ ]s Link para o comentário Compartilhar em outros sites More sharing options...
Nostradamus 6 Postado Setembro 15, 2007 Share Postado Setembro 15, 2007 (editado) Em novas versões ficaria assim: broadcastMessage(getCreatureName(cid) .. ' say: ' .. msg, MESSAGE_STATUS_CONSOLE_RED) Editado Setembro 15, 2007 por Nostradamus Link para o comentário Compartilhar em outros sites More sharing options...
xXLukeXx 0 Postado Setembro 15, 2007 Share Postado Setembro 15, 2007 Gostei muito criativo a ideia Link para o comentário Compartilhar em outros sites More sharing options...
borghi 0 Postado Setembro 16, 2007 Share Postado Setembro 16, 2007 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 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados