Ir para conteúdo
  • 0

Npc que dá itens diferentes para as vocações


luciano0223

Pergunta

É mais ou menos assim, quando um player tiver uma storage ele vai falar com o npc.

 

O npc dá a escolha de 3 itens diferentes para cada vocação e cada vocação os itens são diferentes.

 

Por exemplo, um knight fala e ele pergunta "axe, club, sword, ou shield ?" ai o knight fala e ele ganha o item, um sorcerer fala e ele "wand ou spellbook ?" etc...

 

 

Porfavor me ajudem !!

 

Obrigado desde já <3

Rep +

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

5 respostass a esta questão

Posts Recomendados

  • 0

Crie um arquivo, em npcs/scripts/, de nome premiovoc.lua e adicione:

 

 

 

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, 'premio') and getPlayerVocation(cid) == 1) then
selfSay('Voce deseja um ITEM1, ITEM2 ou ITEM3?', cid)
talkState[talkUser] = 1


elseif(msgcontains(msg, 'ITEM1') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 1) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM1, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


elseif(msgcontains(msg, 'ITEM2') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 1) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM2, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


elseif(msgcontains(msg, 'ITEM3') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 1) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM3, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


end




if(msgcontains(msg, 'premio') and getPlayerVocation(cid) == 2) then
selfSay('Voce deseja um ITEM1, ITEM2 ou ITEM3?', cid)
talkState[talkUser] = 1


elseif(msgcontains(msg, 'ITEM1') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 2) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM1, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


elseif(msgcontains(msg, 'ITEM2') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 2) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM2, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


elseif(msgcontains(msg, 'ITEM3') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 2) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM3, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


end




if(msgcontains(msg, 'premio') and getPlayerVocation(cid) == 3) then
selfSay('Voce deseja um ITEM1, ITEM2 ou ITEM3?', cid)
talkState[talkUser] = 1


elseif(msgcontains(msg, 'ITEM1') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 3) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM1, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


elseif(msgcontains(msg, 'ITEM2') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 3) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM2, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


elseif(msgcontains(msg, 'ITEM3') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 3) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM3, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


end




if(msgcontains(msg, 'premio') and getPlayerVocation(cid) == 4) then
selfSay('Voce deseja um ITEM1, ITEM2 ou ITEM3?', cid)
talkState[talkUser] = 1


elseif(msgcontains(msg, 'ITEM1') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 4) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM1, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


elseif(msgcontains(msg, 'ITEM2') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 4) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM2, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


elseif(msgcontains(msg, 'ITEM3') and talkState[talkUser] == 1 and getPlayerVocation(cid) == 4) then
if(getPlayerStorageValue(cid, STORAGE) >= 1 and getPlayerStorageValue(cid, 13500) <= 0) then
doPlayerAddItem(cid, IDITEM3, 1)
                                setPlayerStorageValue(cid,13500, 1)
selfSay('Voce recebeu seu premio!', cid)
else
selfSay('Voce nao tem os requisitos necessarios ou ja recebeu seu premio.', cid)
end
talkState[talkUser] = 0


end




return true
end


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

 

 

Agora crie, em npcs/, um arquivo chamado Reward Guardian.xml e adicione:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Reward Guardian" script="data/npc/scripts/premiovoc.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="251" head="0" body="0" legs="0" feet="0" addons="3"/>
<parameters>
<parameter key="message_greet" value="O que voce quer de mim, |PLAYERNAME|? Busca pelo seu {premio}?" />
</parameters>
</npc>
Editado por miguel223
Link para o comentário
Compartilhar em outros sites

  • 0

@@miguel223, amigo, peço para que qnd for postar um código, utilize este botão: DOhLjVq.png para facilitar na visualização.
Vejo que vc tem ajudado bastante ultimamente. A comunidade agradece. ^^

 

 

EDIT:
E quando vc for postar algum codigo grande, utilize o spoiler: Assim:

[spoiler]
CODIGO GRANDE
[/spoiler]

*só que coloque os spoilers fora da caixa de codigo.

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

  • 0

@@miguel223, amigo, peço para que qnd for postar um código, utilize este botão: DOhLjVq.png para facilitar na visualização.

Vejo que vc tem ajudado bastante ultimamente. A comunidade agradece. ^^

 

 

EDIT:

E quando vc for postar algum codigo grande, utilize o spoiler: Assim:

[spoiler]
CODIGO GRANDE
[/spoiler]

*só que coloque os spoilers fora da caixa de codigo.

Pronto, vlw pela dica.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...