Ir para conteúdo
  • 0

[Resolvido] Dar items ao NPC


SkyDarkyes

Pergunta

Posts Recomendados

  • 0

11366 Id do item que o npc pede
15407 Id da recompensa

 

Em npc copie um arquivo e cole issu. Renomeie como: Questitem

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Questitem" script="data/npc/scripts/questitem.lua" walkinterval="5000" floorchange="0">
<health now="100" max="100"/>
<look type="128" head="20" body="100" legs="50" feet="99" corpse="2212"/>
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|. Bem vindo a minha casa. Em que posso ajudar?"/>
<parameter key="message_farewell" value="Volte quando quiser, |PLAYERNAME|!"/>
<parameter key="module_keywords" value="1" />
</parameters>
</npc>

----------------------------------------------------------------------------------------------------------------------------------------

 

Crie um arquivo .lua em npc/scripts com nome de questitem

 

 

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 

if(msgcontains(msg, 'kevnan')) and getPlayerStorageValue(cid, 3987) >= 1 then 
selfSay('Voc\ê j\á vingou a morte de meu filho.', cid)
talkState[talkUser] = 0
end


if(msgcontains(msg, 'kevnan')) and getPlayerStorageValue(cid, 3987) <= 0 then
selfSay('Ah você conhece meu filho Kevnan? Que ótimo conhecer você. A vários dias ele saiu em uma jornada perigosa e até então não tenho notícias dele, você sabe algo a respeito?', cid)
elseif(msgcontains(msg, 'botas')) then
selfSay('Voc\ê falou botas? Diga {yes} ou {no}', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'mais')) then
selfSay('Acredito que quem matou meu filho foi um poderoso monstro que anda aterrorizando a região, há boatos que é um dragão jamais visto antes, se você vingar a morte do meu filho vou te dar algo que pertencia a Kevnan, algo que ele gostava muito, volte aqui quando cumprir sua {missao}.', cid)
talkState[talkUser] = 2


elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then 
if (getPlayerItemCount(cid, 6530) >= 1) then 
selfSay('Ma.. Mas que triste notícia..... Meu filho querido, mamãe também te ama, que esteja bem onde quer que esteja..Quer saber {mais}?', cid)
talkState[talkUser] = 0
else 
selfSay('De quais botas você está falando?', cid)
talkState[talkUser] = 0 
end
elseif(msgcontains(msg, 'missao') and talkState[talkUser] == 2) then 
if(getPlayerStorageValue(cid, 3987) <= 0) then
if(getPlayerItemCount(cid, 11366) >= 1) then 
selfSay('Muito obrigado por ter vingado a morte de meu filho Kevnan. Como prometido aqui está a sua recompensa.', cid)
doPlayerRemoveItem(cid, 11366, 1)
doPlayerAddItem(cid, 15407, 1)
setPlayerStorageValue(cid, 3987, 1)
talkState[talkUser] = 0
else 
selfSay('Ainda n\ão vingou a morte do meu filho Kevnan? Lembre-se que eh um dragão jamais visto antes que esta pelas regioes geladas. Voc\ê precisa trazer algo que prove que foi este monstro que matou meu filho', cid)
talkState[talkUser] = 0
end
else 
selfSay('Voc\ê j\á vingou a morte do meu filho', cid)
talkState[talkUser] = 0
end 
return TRUE
end
end

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

 

 

Editado por omega blueheaven
Código formatado em code e spoiler para melhorar a organização
Link para o comentário
Compartilhar em outros sites

  • 0

Man,isso ai nem serve,tem muitas falas desnecessarias

 

Queria uma apenas

 

 

19:46 Silvera'th [19]: hi
 
NPC: Hey Silvera'th! Want to have the pride of serving your village?mission
 
19:46 Silvera'th [19]: mission
 
NPC: The Mission Securiry Seal Quest mission involves the safety of the village, I need you to retrieve the seals that 
akatsuki stole the village I'll reciprocate with a Madara Legs..
 
19:46 Silvera'th [19]: Securiry Seal Quest
 
Np: These stamps 500 security seal you'll find in Akatsuki Bandits, go get it, ok?
 
19:46 Silvera'th [19]: yes
 
NPC: You dont have any items to this mission.
Editado por SkyDarkyes
Link para o comentário
Compartilhar em outros sites

  • 0

#SkyDarkyes, pelo amor de deus né, sem dar UP rsrs.

 

~~

 

Vamos tentar assim: Vá em data/npc, crie um arquivo chamado Roksas.xml e adicione dentro:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Roksas" script="mission_r.lua" walkinterval="0" floorchange="0">
    <health now="2000" max="2000"/>
    <look type="264" head="114" body="119" legs="0" feet="0" corpse="2212"/>
    <parameters>
        <parameter key="message_greet" value="Hello |PLAYERNAME|. I can make some change to it, say {change} or {mission}."/>
    </parameters>
</npc>

Em data/npc/scripts, crie outro arquivo, mas com o nome de mission_r.lua e adicione 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 item_gain = 2424 -- reward id
    local item_need = 1199 -- need item id
    local item_qnt = 5222 -- item_need amount

    if(msgcontains(msg, 'mission') or msgcontains(msg, 'change')) then
        selfSay('Mission {Securiry Seal Quest} mission involves the safety of the village, I need you to retrieve the seals that akatsuki stole the village I will reciprocate with a Madara Legs...', cid)
        talkState[talkUser] = 1
    elseif(msgcontains(msg, 'security seal quest') and talkState[talkUser] == 1) then
        
    if getPlayerStorageValue(cid, 20069) >= 1 then
        selfSay('Please do not insist, you have done this quest recently.', cid)
        talkState[talkUser] = 0
        return true
    end
    
    selfSay('These stamps 500 security seal you will find in Akatsuki Bandits, go get it, ok?', cid)
    talkState[talkUser] = 2
    return true
end
        
    if(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then
                
        if getPlayerItemCount(cid, item_need) < 500 then
            selfSay('You are trying to trick me young man? You do not have the '..getItemNameById(item_need)..'.', cid)
            talkState[talkUser] = 0
            return true
        end
        
        selfSay('Congratulations young warrior, you managed to finish this mission, go in peace.', cid)
        talkState[talkUser] = 0
        setPlayerStorageValue(cid, 20069, 1)
        doPlayerAddItem(cid, item_gain, item_qnt)
        return true
    end        
    return true
end

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

 

#GoodLuck.

Editado por Roksas
Link para o comentário
Compartilhar em outros sites

  • 0


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 item_gain = 2424 -- reward id

local item_need = 1199 -- need item id

local item_qnt = 5222 -- item_need amount

 

if(msgcontains(msg, 'mission') or msgcontains(msg, 'change')) then

selfSay('Mission {Securiry Seal Quest} mission involves the safety of the village, I need you to retrieve the seals that akatsuki stole the village I will reciprocate with a Madara Legs...', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'securiry seal quest') and talkState[talkUser] == 1) then

 

if getPlayerStorageValue(cid, 20069) >= 1 then

selfSay('Please do not insist, you have done this quest recently.', cid)

talkState[talkUser] = 0

return true

end

 

selfSay('These stamps 500 security seal you will find in Akatsuki Bandits, go get it, ok?', cid)

talkState[talkUser] = 2

return true

end

 

if(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then

 

if getPlayerItemCount(cid, item_need) < 500 then

selfSay('You are trying to trick me young man? You do not have the '..getItemNameById(item_need)..'.', cid)

talkState[talkUser] = 0

return true

end

 

selfSay('Congratulations young warrior, you managed to finish this mission, go in peace.', cid)

talkState[talkUser] = 0

setPlayerStorageValue(cid, 20069, 1)

doPlayerAddItem(cid, item_gain, item_qnt)

return true

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Editado por Zaruss
Link para o comentário
Compartilhar em outros sites

  • 0

vc modificou isso?

    local item_gain = 2424 -- id do item que ira ganhar
    local item_need = 1199 -- id do item que precisa
    local item_qnt = 5222 -- quantidade que ira ganha eu acho

e quando vc testou vc tinha 500 do item 1199???

Editado por Zaruss
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...