Ir para conteúdo
  • Cadastre-se

Monster%2FNPC [NPC] Papai Noel por Vocação


Posts Recomendados

Santa_Claus.gif

Olá abigos e abigas, fiz um script aqui meio atrasado para o natal rs, bom eu até que gostei espero que vocês achem algo útil para ele.

 

 

 

Abra a pasta NPC crie um arquivo com nome papainoel.xml e adicione isso dentro:

<?xml version="1.0"?>
<npc name="Papai Noel" script="data/npc/scripts/papainoel.lua" walkinterval="1000" floorchange="0">
<health now="100" max="100"/>
<look type="160" head="0" body="112" legs="93" feet="95"/>
<parameters>
<parameter key="message_greet" value="Ho-Ho! {|PLAYERNAME|}, para pegar seu presente basta voce falar {present druid}, {present sorcerer}, {present knight} ou {present paladin}!" />
</parameters>
</npc>

Depois abra a pasta NPC/scripts crie um arquivo com o nome papainoel.lua e adicione isso dentro:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

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

function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    

local itemdruid = {{2160, 100}, {9778, 1}, {6512, 1}} -- itens que Elder Druid ira ganhar
local itemsorcerer = {{2160, 100}, {8867, 1}, {6512, 1}} -- itens que Master Sorcerer ira ganhar
local itemknight = {{2160, 100}, {2472, 1}, {6512, 1}} -- itens que Elite Knight ira ganhar
local itempaladin = {{2160, 100}, {2500, 1}, {6512, 1}} -- itens que Royal Paladin ira ganhar

local a = {
level = 150, -- Level para falar com o Papai Noel
storage = 72621, -- Não trocar
}

    if msgcontains(msg, 'present druid') then
        if getPlayerStorageValue(cid,a.storage) == -1 then
        if getPlayerVocation(cid) == 6 then
            if getPlayerLevel(cid) >= a.level then
                selfSay('Ho-ho Feliz Natal '..getPlayerName(cid)..', você recebeu seus itens de {Druid}!', cid)
                for _, b in pairs(itemdruid) do
                    doPlayerAddItem(cid, b[1], b[2])
                    doSendMagicEffect(getPlayerPosition(cid), 28)
                    setPlayerStorageValue(cid,a.storage,1)
                end
            else
                doSendMagicEffect(getPlayerPosition(cid), 2)
                selfSay('{'..getPlayerName(cid)..'} você precisa ser level {'..a.level..'} para receber sua recompensa, faltam apenas {'..a.level - getPlayerLevel(cid)..'}. Ho-ho!', cid)
            end
        else
            selfSay('Voce não é {Elder Druid} '..getPlayerName(cid)..'!', cid)
        end
        else
            selfSay('{'..getPlayerName(cid)..'} voce ja pegou seu presente!', cid)
        end
    end
    
    if msgcontains(msg, 'present sorcerer') then
        if getPlayerStorageValue(cid,a.storage) == -1 then
        if getPlayerVocation(cid) == 5 then
            if getPlayerLevel(cid) >= a.level then
                selfSay('Ho-ho Feliz Natal '..getPlayerName(cid)..', você recebeu seus itens de {Sorcerer}!', cid)
                for _, b in pairs(itemsorcerer) do
                    doPlayerAddItem(cid, b[1], b[2])
                    doSendMagicEffect(getPlayerPosition(cid), 28)
                    setPlayerStorageValue(cid,a.storage,1)
                end
            else
                doSendMagicEffect(getPlayerPosition(cid), 2)
                selfSay('{'..getPlayerName(cid)..'} você precisa ser level {'..a.level..'} para receber sua recompensa, faltam apenas {'..a.level - getPlayerLevel(cid)..'}. Ho-ho!', cid)
            end
        else
            selfSay('Voce não é {Master Sorcerer} '..getPlayerName(cid)..'!', cid)
        end
        else
            selfSay('{'..getPlayerName(cid)..'} voce ja pegou seu presente!', cid)
        end
    end
    
    if msgcontains(msg, 'present knight') then
        if getPlayerStorageValue(cid,a.storage) == -1 then
        if getPlayerVocation(cid) == 8 then
            if getPlayerLevel(cid) >= a.level then
                selfSay('Ho-ho Feliz Natal '..getPlayerName(cid)..', você recebeu seus itens de {Knight}!', cid)
                for _, b in pairs(itemknight) do
                    doPlayerAddItem(cid, b[1], b[2])
                    doSendMagicEffect(getPlayerPosition(cid), 28)
                    setPlayerStorageValue(cid,a.storage,1)
                end
            else
                doSendMagicEffect(getPlayerPosition(cid), 2)
                selfSay('{'..getPlayerName(cid)..'} você precisa ser level {'..a.level..'} para receber sua recompensa, faltam apenas {'..a.level - getPlayerLevel(cid)..'}. Ho-ho!', cid)
            end
        else
            selfSay('Voce não é {Elite Knight} '..getPlayerName(cid)..'!', cid)
        end
        else
            selfSay('{'..getPlayerName(cid)..'} voce ja pegou seu presente!', cid)
        end
    end
    
    if msgcontains(msg, 'present paladin') then
        if getPlayerStorageValue(cid,a.storage) == -1 then
        if getPlayerVocation(cid) == 7 then
            if getPlayerLevel(cid) >= a.level then
                selfSay('Ho-ho Feliz Natal '..getPlayerName(cid)..', você recebeu seus itens de {Paladin}!', cid)
                for _, b in pairs(itempaladin) do
                    doPlayerAddItem(cid, b[1], b[2])
                    doSendMagicEffect(getPlayerPosition(cid), 28)
                    setPlayerStorageValue(cid,a.storage,1)
                end
            else
                doSendMagicEffect(getPlayerPosition(cid), 2)
                selfSay('{'..getPlayerName(cid)..'} você precisa ser level {'..a.level..'} para receber sua recompensa, faltam apenas {'..a.level - getPlayerLevel(cid)..'}. Ho-ho!', cid)
            end
        else
            selfSay('Voce não é {Royal Paladin} '..getPlayerName(cid)..'!', cid)
        end
        else
            selfSay('{'..getPlayerName(cid)..'} voce ja pegou seu presente!', cid)
        end
    end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

QIV0m.png

pEFdd.png

 

Informações:

- O npc verificar a vocação do player e adiciona itens conforme sua vocação.

- O level minimo para se usar o NPC é 150

- Só pode pegar o presente uma vez

- Itens e level minimo configurável.

 

 

QIV0m.png

pEFdd.png

 

Imagens do NPC:

 

Ao falar com o npc:

mocr.jpg

 

NPC verificando que o player pediu o presente que não é da sua vocação:

a8qs.jpg

 

NPC verificando que o player não tem o level minimo para pegar o presente e informando quantos leveis faltam para o player poder pegar o presente:

upnn.jpg

 

Mensagem ao receber o presente:

i6wl.jpg

 

NPC informando que o player já pegou o presente:

9d13.jpg

 

 

QIV0m.png

pEFdd.png

 

Créditos: Markin

Editado por Markin (veja o histórico de edições)

16/11/2014

23/11/2014

 

RIP AnneMotta 21/01/2012 - 15/01/2014

Liga das lendas: DIAMOND É A META

6qpqBbJ.png

Link para o post
Compartilhar em outros sites

Se você utiliza vip system eu não faço a minima ideia de como fazer, nunca usei o vip system, sempre uso premium...

16/11/2014

23/11/2014

 

RIP AnneMotta 21/01/2012 - 15/01/2014

Liga das lendas: DIAMOND É A META

6qpqBbJ.png

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Reputado desde já, mas me explica uma coisa por obséquio...

Exemplo :

for _, b in pairs(itempaladin) do
    doPlayerAddItem(cid, b[1], b[2])

O que significa esse b e esse _ ?

"A alma permanece em suas criações" V89E5aN.png


142c9d3439.jpg
(Não dou suporte por mensagem privada.)

Link para o post
Compartilhar em outros sites

Reputado desde já, mas me explica uma coisa por obséquio...

Exemplo :

for _, b in pairs(itempaladin) do
    doPlayerAddItem(cid, b[1], b[2])

O que significa esse b e esse _ ?

 

Para falar a verdade essa é uma brande duvida também porque tipo eu sempre tive a duvida de como pegar mais valores e jogar em uma função e eu nunca aprendi até que eu perguntei em outro fórum e me responderam com isso, mais acho que tem um pouco haver com loopings, basta procurar um tópico por ai que você acha.

Ai com base no que eu tirei minhas duvidas eu fui montando o script...

Caso alguém que tem conhecimentos avançando em lua e quiser responder o porque eu também gostaria de saber (:

Editado por AnneMotta (veja o histórico de edições)

16/11/2014

23/11/2014

 

RIP AnneMotta 21/01/2012 - 15/01/2014

Liga das lendas: DIAMOND É A META

6qpqBbJ.png

Link para o post
Compartilhar em outros sites
  • 7 months later...

Markin, Teria como me dar um help? eu fiz tudo direitinho, mas quando vou abrir o npc no RME da erro  :facepalm: 
Eu tinha feito o seu NPC Dicer e foi tudo certinho  (y)  sem erros, mas esse papai noel ta me quebrando a cabeça.

Se ajudar vlw  :D

Link para o post
Compartilhar em outros sites
  • 4 months later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo