Ir para conteúdo
  • 0

Npc Anunciante!


piratadoidao

Pergunta

Olá Galera!

Gostaria de fazer um pedido, de um NPC Anunciante, para o Servidor que estou fazendo...

Dei uma olhada, no Fórum, e não encontrei nenhum, .... Se ja existir, peço desculpas, e que me orientem com o Link! :)

 

Eu gostaria de um NPC Anunciante, que o Player Digita uma frase, e essa frase é enviada para todos...

Pode ser bastante útil para o Comercio...

E claro com algumas restrições né? se não vira "Putaria"

 

Ex: Um player pode enviar uma mensagem global, somente a cada 10 min..

 

Bem, Obrigado!

Estarei esperando! a Colaboração de todos!

:)

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Coloquei em vez de NPC, uma talkaction (veja se vc vai gosta + desse, se ainda prefirir o npc me fale):

Vá na pasta talkactions/scripts e crie um arquivo chamado mensagem.lua e coloque isso:

 

function onSay(cid, words, param)
   local storage = 4444
   local exhaustTime = 10 * 60 -- 10 minutos
   local message = getCreatureName(cid) .. " [" .. getPlayerLevel(cid) .. "]: " .. param

   if exhaust.check(cid, storage) == TRUE then
    doPlayerSendCancel(cid, "Você só pode enviar uma mensagem a cada ".. math.ceil(exhaustTime / 60) .." minutos.")
    return TRUE
   end
   exhaustion.set(cid, storage, exhaustTime)				  
   doBroadcastMessage(cid, message, MESSAGE_EVENT_ADVANCE)
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Broadcast sent.")
return TRUE
end 

 

Depois va na pasta talkactions e abra o arquivo talkactions.xml e coloque a seguinte tag:

 

<talkaction log="yes" words="/msg" event="script" value="mensagem.lua"/>

 

Pronto, o comando é /msg (mensagem)

 

 

Te ajudei? REP+

Link para o comentário
Compartilhar em outros sites

  • 0

Pow gostei cara... dei até REP++..

Mas eu gostaria mesmo do NPC que fizesse essa função..

porque estou com alguns planos em mente!

Mas mesmo assim Obrigado... e se tiver como fazer o NPC mesmo? ;)

Vlws

Link para o comentário
Compartilhar em outros sites

  • 0

Vou tentar fazer, dps mando resposta.

 

Desculpe mas n consegui, eu n sabia por onde começar mas ai eu achei um npc que fazia isso que você pediu mas ele requer um level minimo e cobra em dinheiro pra enviar a mensagem. Tentei editar mas da erros q n sei concertar. Em todos caso deixo esse npc aqui para caso alguem consiga colocar um intervalo:

 

Crie na pasta npc/script um arquivo chamado anunciante.lua e coloque isto:

focus = 0
next_focus = 0
talk_start = 0
msgHi = 'Heylo! Would you like to broadcast anything?'
msgBye = 'See you another time!'
price = 2500 -- preço para poder mandar a mensagem
inConvo = 0
broadcast = ''
cast = ''
target = 0
following = false
attacking = false
function onThingMove(creature, thing, oldpos, oldstackpos)
end
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos)
    if (focus == cid) then
       selfSay(msgBye)
       distFocus = getDistanceToCreature(next_focus)
       if (distFocus ~= nil and distFocus < 4) then
           selfSay(msgHi)
           talk_start = os.clock()
           focus = next_focus
           next_focus = 0
           inConvo = 1
       else
           focus = 0
           talk_start = 0
           inConvo = 0
       end
    end
end
function onCreatureTurn(creature)
end
function msgcontains(txt, str)
    return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end
function onCreatureSay(cid, type, msg)
   msg2 = msg
   msg = string.lower(msg)
   if (cast ~= '') then
       selfSay('does nothing')
   -- do nothing, wait until message has been broadcasted and npc has replied
   elseif (getDistanceToCreature(cid) >= 4 and focus == cid) then
       selfSay('Please come closer, '..getCreatureName(cid)..'. I can\'t hear what you are saying from over there.')

   elseif (type == 1) then
        if ((string.find(msg, '(%a*)hi(%a*)') or string.find(msg, '(%a*)hello(%a*)') or string.find(msg, '(%a*)heylo(%a*)') or string.find(msg, '(%a*)greetings(%a*)')) and (focus == 0) and getDistanceToCreature(cid) < 4) then
           selfSay(msgHi)
           focus = cid
           talk_start = os.clock()
           inConvo = 1
       elseif ((string.find(msg, '(%a*)hi(%a*)') or string.find(msg, '(%a*)hello(%a*)') or string.find(msg, '(%a*)heylo(%a*)') or string.find(msg, '(%a*)greetings(%a*)')) and (focus ~= cid) and getDistanceToCreature(cid) < 4)  then
            if (next_focus > 0 and getDistanceToCreature(next_focus) < 4) then
                selfSay('Take a nap while I help the ones before you, ' .. getCreatureName(cid) .. '.')
            else
                selfSay('I\'ll soon come to you, ' .. getCreatureName(cid) .. '.')
                next_focus = cid
            end
        elseif (focus == cid) then
           talk_start = os.clock()
           if ((msgcontains(msg, 'broadcast') or msgcontains(msg, 'say')) and inConvo == 0) then
               if (getPlayerLevel(cid) >= 30) then -- level mínimo para poder mandar a mensagem
                   selfSay('Do you want me to broadcast anything for you?')
                   inConvo = 1
               else
                   selfSay('Come back when you\'re older!')
               end
           elseif (msgcontains(msg, 'yes') and inConvo == 1) then
               selfSay('Tell me what you want me to broadcast.')
               inConvo = 2
           elseif (msgcontains(msg, 'no') and inConvo == 1) then
               selfSay('Perhaps tomorrow then..')
               if (next_focus > 0 and getDistanceToCreature(next_focus) < 4) then
                   selfSay(msgHi)
                   talk_start = os.clock()
                   focus = next_focus
                   next_focus = 0
                   inConvo = 1
               else
                   focus = 0
                   talk_start = 0
                   inConvo = 0
               end
               broadcast = ''
           elseif (inConvo == 2 and (msg ~= 'stop')) then
               if (string.len(msg) > 90) then
                   selfSay('I am sorry, but your message can not be longer than 90 letters, including spaces and other characters. Say a new message or say STOP to end.')
               else
                   broadcast = msg2
                   selfSay('Do you want to pay '..price..' gold for me to broadcast this message? "'..broadcast..'"')
                   inConvo = 3
               end
           elseif (msgcontains(msg, 'yes') and inConvo == 3) then
               if (doPlayerRemoveMoney(cid, price) == 1) then
                   selfSay('/b '..getCreatureName(cid)..' says: '..broadcast)
                   saycast = os.clock()
                   inConvo = 1

                   io.output(io.open("broadcast.log", "a"))
                   io.write("["..os.date("%y.%m.%d %X").."] <"..getCreatureName(cid).."> "..broadcast.."\n")
                   io.close()
                   cast = broadcast
               else
                   selfSay('You can not afford this service. Please come back another time when you have more money!')
                   if (next_focus > 0) then
                       distFocus = getDistanceToCreature(next_focus)
                       if (distFocus ~= nil and distFocus < 4) then
                           selfSay(msgHi)
                           talk_start = os.clock()
                           focus = next_focus
                           next_focus = 0
                           inConvo = 1
                       else
                           focus = 0
                           talk_start = 0
                           inConvo = 0
                       end
                       broadcast = ''
                   end
               end
           elseif (msgcontains(msg, 'no') and inConvo == 3) then
               selfSay('Ok then.')
               inConvo = 0
               broadcast = ''
           elseif (string.find(msg, '(%a*)job(%a*)')) then
               selfSay('I have the strongest voice in the world! People sometimes pay me to broadcast things for them.')
               inConvo = 0
            elseif (string.find(msg, '(%a*)bye(%a*)')) then
               selfSay(msgBye)
               if (next_focus > 0) then
                   distFocus = getDistanceToCreature(next_focus)
                   if (distFocus ~= nil and distFocus < 4) then
                       selfSay(msgHi)
                       talk_start = os.clock()
                       focus = next_focus
                       next_focus = 0
                       inConvo = 1
                   else
                       focus = 0
                       talk_start = 0
                       inConvo = 0
                   end
                   broadcast = ''
                end
            end
        end
    end
end

function onCreatureChangeOutfit(creature)
end
function onThink()
   if (cast ~= '' and (os.clock() - saycast) > 1) then
       selfSay('Do you want to broadcast anything else?')
       cast = ''
   elseif (os.clock() - talk_start) > 30 then
       if (focus > 0) then   
           selfSay(msgBye)
           if (next_focus > 0) then
               distFocus = getDistanceToCreature(next_focus)
               if (distFocus ~= nil and distFocus < 4) then
                   selfSay(msgHi)
                   talk_start = os.clock()
                   focus = next_focus
                   next_focus = 0
                   inConvo = 1
               else
                   focus = 0
                   talk_start = 0
                   inConvo = 0
               end
           else
               focus = 0
               talk_start = 0
               inConvo = 0
           end
           broadcast = ''
       end
    elseif (focus ~= 0) then
        distFocus = getDistanceToCreature(focus)
       if (distFocus ~= nil and distFocus > 5) then
           selfSay(msgBye)
           if (next_focus > 0) then
               distFocus = getDistanceToCreature(next_focus)
               if (distFocus ~= nil and distFocus < 4) then
                   selfSay(msgHi)
                   talk_start = os.clock()
                   focus = next_focus
                   next_focus = 0
                   inConvo = 1
               end
           else
               focus = 0
               talk_start = 0
               inConvo = 0
           end
           broadcast = ''
       end
   end
end

 

Depois na pasta NPC crie um arquivo chamado Anunciante.xml e coloque isto:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Anunciante" script="data/npc/scripts/anunciante.lua" walkinterval="2000" floorchange="0">
<health now="150" max="150"/>
<look type="75" head="114" body="0" legs="114" feet="0" addons="2"/>
</npc>

 

Ps. acho que esse npc reuqer que o serv tenha o comando /b de envia broadcast de Gms, ADM e tals

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...