Achei isso perdido em um servidor antigo e decidi compartilhar. No vídeo fica fácil entender como funciona, espero que seja útil.
data/npc:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Keny" script="data/npc/scripts/upgradeitems.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="325" head="114" body="94" legs="114" feet="0" addons="2"/>
<parameters>
<parameter key="message_greet" value="Hei |PLAYERNAME|, sou Keny o Ferreiro. Tem alguma arma que deseja {melhorar}? Posso dar uma olhada pra voce. "/>
</parameters></npc>
data/npc/scripts/novoarquivo.lua:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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 swords = getPlayerWeapon(cid)
local pos = getPlayerLookPos(cid)
local valuecrystalcoin = getPlayerItemCount(cid, 2160)
local valuedragonham = getPlayerItemCount(cid, 2672)
if(msgcontains(msg, 'melhorar')) then
if (swords.itemid == 0) then
selfSay ('Voce nao esta empunhando nenhuma arma no momento', cid)
else
if (swords.itemid == 2397) then
selfSay('Oh, entao voce carrega uma Long Sword com voce, boa arma.. Posso melhorar sua lamina, por 10 Crystal coins, {ok}?', cid)
elseif (swords.itemid == 2406) then
selfSay('Hm... Vejamos, entao voce empunha uma Short Sword, com o material certo, posso transforma-la em uma arma melhor. Tenha 2 Dragon Ham em mãos, e a quantia de 2 Crystal Coins, {ok}?', cid)
end
end
end
--------
---------------------------------------------------------
if (msgcontains(msg, 'ok')) then
if (swords.itemid == 0) then
selfSay('Voce nao esta portando nenhuma arma no momento', cid)
end
if (swords.itemid == 2397) then
if getPlayerItemCount(cid, 2160) <= 9 then
selfSay('Você não tem o material necessário. Você tem '.. valuecrystalcoin .. ' Crystal Coins, eu preciso de 10.', cid)
else
doPlayerRemoveItem(cid, 2397, 1)
doPlayerRemoveItem(cid, 2160, 10)
doSendMagicEffect(pos, 36)
doCreateItem(2396, 1, pos)
selfSay ('Sua arma foi melhorada, a transformei em uma Ice Rapier!', cid)
end
end
if (swords.itemid == 2406) then
if getPlayerItemCount(cid, 2160) <= 1 or getPlayerItemCount(cid, 2672) <= 1 then
selfSay('Voce nao tem o material necessario. Você tem '.. valuedragonham ..' Dragon Hams, e '.. valuecrystalcoin .. ' Crystal Coins, Eu preciso de 2 de cada.', cid)
else
doPlayerRemoveItem(cid, 2406, 1)
doPlayerRemoveItem(cid, 2672, 2)
doPlayerRemoveItem(cid, 2160, 2)
doSendMagicEffect(pos, 36)
doCreateItem(2393, 1, pos)
selfSay ('Sua arma foi melhorada! A transformei em uma Giant Sword!.', cid)
end
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Como configurar:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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 swords = getPlayerWeapon(cid)
local pos = getPlayerLookPos(cid)
local valuecrystalcoin = getPlayerItemCount(cid, 2160)
local valuedragonham = getPlayerItemCount(cid, 2672)
if(msgcontains(msg, 'melhorar')) then
if (swords.itemid == 0) then
selfSay ('Voce nao esta empunhando nenhuma arma no momento', cid) --- Mensagem que aparecerá caso o player não tenha nenhum item em sua mão (Hand).
else
if (swords.itemid == 2397) then --- 'Item 1'
selfSay('Oh, entao voce carrega uma Long Sword com voce, boa arma.. Posso melhorar sua lamina, por 10 Crystal coins, {ok}?', cid) --- Mensagem que aparecerá caso o player tenha o 'Item 1' em mãos.
elseif (swords.itemid == 2406) then --- 'Item 2'
selfSay('Hm... Vejamos, entao voce empunha uma Short Sword, com o material certo, posso transforma-la em uma arma melhor. Tenha 2 Dragon Ham em mãos, e a quantia de 2 Crystal Coins, {ok}?', cid) --- Mensagem que aparecerá caso o player tenha o 'Item 2' em mãos.
end
end
end
--------
---------------------------------------------------------
if (msgcontains(msg, 'ok')) then
if (swords.itemid == 0) then
selfSay('Voce nao esta portando nenhuma arma no momento', cid) --- Mensagem que aparecerá caso o player não tenha nenhum item em sua mão (Hand).
end
if (swords.itemid == 2397) then --- 'Item 1'
if getPlayerItemCount(cid, 2160) <= 9 then --- '2160'(Crystal Coin) Corresponde ao ItemID do item que será necessário pro upgrade do 'Item 1', '9' corresponde a quantia necessária.
selfSay('Você não tem o material necessário. Você tem '.. valuecrystalcoin .. ' Crystal Coins, eu preciso de 10.', cid) --- Mensagem que aparecerá caso o player não tenha a quantia suficiente.
else
doPlayerRemoveItem(cid, 2397, 1) --- 'Item 1'
doPlayerRemoveItem(cid, 2160, 10) --- Aqui é feita a remoção dos items necessários. (2 Crystal Coin)
doSendMagicEffect(pos, 36) --- Efeito que aparecerá
doCreateItem(2396, 1, pos) --- Item Upgrade do 'Item 1'
selfSay ('Sua arma foi melhorada, a transformei em uma Ice Rapier!', cid) --- O que o Npc dirá após transformar o 'Item 1'
end
end
if (swords.itemid == 2406) then --- 'Item 2'
if getPlayerItemCount(cid, 2160) <= 1 or getPlayerItemCount(cid, 2672) <= 1 then --- '2160'(Crystal Coin) e '2672'(Dragon Ham) Corresponde ao ItemID do item que será necessário pro upgrade do 'Item 1', '1' corresponde a quantia necessária.
selfSay('Voce nao tem o material necessario. Você tem '.. valuedragonham ..' Dragon Hams, e '.. valuecrystalcoin .. ' Crystal Coins, Eu preciso de 2 de cada.', cid) --- Mensagem que aparecerá caso o player não tenha a quantia suficiente.
else
doPlayerRemoveItem(cid, 2406, 1) --- 'Item 2'
doPlayerRemoveItem(cid, 2672, 2) --- Aqui é feita a remoção dos items necessários. (2 Dragon Ham)
doPlayerRemoveItem(cid, 2160, 2) --- Aqui é feita a remoção dos items necessários. (2 Crystal Coin)
doSendMagicEffect(pos, 36) --- --- Efeito que aparecerá
doCreateItem(2393, 1, pos) --- Item Upgrade do 'Item 2'
selfSay ('Sua arma foi melhorada! A transformei em uma Giant Sword!.', cid) --- O que o Npc dirá após transformar o 'Item 2'
end
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
info
Grupo: Artesão
Registrado: 08/08/12
Posts: 126
Reputação: +34
Gênero: Masculino
Achei isso perdido em um servidor antigo e decidi compartilhar. No vídeo fica fácil entender como funciona, espero que seja útil.
data/npc:
<?xml version="1.0" encoding="UTF-8"?> <npc name="Keny" script="data/npc/scripts/upgradeitems.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="325" head="114" body="94" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Hei |PLAYERNAME|, sou Keny o Ferreiro. Tem alguma arma que deseja {melhorar}? Posso dar uma olhada pra voce. "/> </parameters></npc>data/npc/scripts/novoarquivo.lua:
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 swords = getPlayerWeapon(cid) local pos = getPlayerLookPos(cid) local valuecrystalcoin = getPlayerItemCount(cid, 2160) local valuedragonham = getPlayerItemCount(cid, 2672) if(msgcontains(msg, 'melhorar')) then if (swords.itemid == 0) then selfSay ('Voce nao esta empunhando nenhuma arma no momento', cid) else if (swords.itemid == 2397) then selfSay('Oh, entao voce carrega uma Long Sword com voce, boa arma.. Posso melhorar sua lamina, por 10 Crystal coins, {ok}?', cid) elseif (swords.itemid == 2406) then selfSay('Hm... Vejamos, entao voce empunha uma Short Sword, com o material certo, posso transforma-la em uma arma melhor. Tenha 2 Dragon Ham em mãos, e a quantia de 2 Crystal Coins, {ok}?', cid) end end end -------- --------------------------------------------------------- if (msgcontains(msg, 'ok')) then if (swords.itemid == 0) then selfSay('Voce nao esta portando nenhuma arma no momento', cid) end if (swords.itemid == 2397) then if getPlayerItemCount(cid, 2160) <= 9 then selfSay('Você não tem o material necessário. Você tem '.. valuecrystalcoin .. ' Crystal Coins, eu preciso de 10.', cid) else doPlayerRemoveItem(cid, 2397, 1) doPlayerRemoveItem(cid, 2160, 10) doSendMagicEffect(pos, 36) doCreateItem(2396, 1, pos) selfSay ('Sua arma foi melhorada, a transformei em uma Ice Rapier!', cid) end end if (swords.itemid == 2406) then if getPlayerItemCount(cid, 2160) <= 1 or getPlayerItemCount(cid, 2672) <= 1 then selfSay('Voce nao tem o material necessario. Você tem '.. valuedragonham ..' Dragon Hams, e '.. valuecrystalcoin .. ' Crystal Coins, Eu preciso de 2 de cada.', cid) else doPlayerRemoveItem(cid, 2406, 1) doPlayerRemoveItem(cid, 2672, 2) doPlayerRemoveItem(cid, 2160, 2) doSendMagicEffect(pos, 36) doCreateItem(2393, 1, pos) selfSay ('Sua arma foi melhorada! A transformei em uma Giant Sword!.', cid) end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())Como configurar:
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 swords = getPlayerWeapon(cid) local pos = getPlayerLookPos(cid) local valuecrystalcoin = getPlayerItemCount(cid, 2160) local valuedragonham = getPlayerItemCount(cid, 2672) if(msgcontains(msg, 'melhorar')) then if (swords.itemid == 0) then selfSay ('Voce nao esta empunhando nenhuma arma no momento', cid) --- Mensagem que aparecerá caso o player não tenha nenhum item em sua mão (Hand). else if (swords.itemid == 2397) then --- 'Item 1' selfSay('Oh, entao voce carrega uma Long Sword com voce, boa arma.. Posso melhorar sua lamina, por 10 Crystal coins, {ok}?', cid) --- Mensagem que aparecerá caso o player tenha o 'Item 1' em mãos. elseif (swords.itemid == 2406) then --- 'Item 2' selfSay('Hm... Vejamos, entao voce empunha uma Short Sword, com o material certo, posso transforma-la em uma arma melhor. Tenha 2 Dragon Ham em mãos, e a quantia de 2 Crystal Coins, {ok}?', cid) --- Mensagem que aparecerá caso o player tenha o 'Item 2' em mãos. end end end -------- --------------------------------------------------------- if (msgcontains(msg, 'ok')) then if (swords.itemid == 0) then selfSay('Voce nao esta portando nenhuma arma no momento', cid) --- Mensagem que aparecerá caso o player não tenha nenhum item em sua mão (Hand). end if (swords.itemid == 2397) then --- 'Item 1' if getPlayerItemCount(cid, 2160) <= 9 then --- '2160'(Crystal Coin) Corresponde ao ItemID do item que será necessário pro upgrade do 'Item 1', '9' corresponde a quantia necessária. selfSay('Você não tem o material necessário. Você tem '.. valuecrystalcoin .. ' Crystal Coins, eu preciso de 10.', cid) --- Mensagem que aparecerá caso o player não tenha a quantia suficiente. else doPlayerRemoveItem(cid, 2397, 1) --- 'Item 1' doPlayerRemoveItem(cid, 2160, 10) --- Aqui é feita a remoção dos items necessários. (2 Crystal Coin) doSendMagicEffect(pos, 36) --- Efeito que aparecerá doCreateItem(2396, 1, pos) --- Item Upgrade do 'Item 1' selfSay ('Sua arma foi melhorada, a transformei em uma Ice Rapier!', cid) --- O que o Npc dirá após transformar o 'Item 1' end end if (swords.itemid == 2406) then --- 'Item 2' if getPlayerItemCount(cid, 2160) <= 1 or getPlayerItemCount(cid, 2672) <= 1 then --- '2160'(Crystal Coin) e '2672'(Dragon Ham) Corresponde ao ItemID do item que será necessário pro upgrade do 'Item 1', '1' corresponde a quantia necessária. selfSay('Voce nao tem o material necessario. Você tem '.. valuedragonham ..' Dragon Hams, e '.. valuecrystalcoin .. ' Crystal Coins, Eu preciso de 2 de cada.', cid) --- Mensagem que aparecerá caso o player não tenha a quantia suficiente. else doPlayerRemoveItem(cid, 2406, 1) --- 'Item 2' doPlayerRemoveItem(cid, 2672, 2) --- Aqui é feita a remoção dos items necessários. (2 Dragon Ham) doPlayerRemoveItem(cid, 2160, 2) --- Aqui é feita a remoção dos items necessários. (2 Crystal Coin) doSendMagicEffect(pos, 36) --- --- Efeito que aparecerá doCreateItem(2393, 1, pos) --- Item Upgrade do 'Item 2' selfSay ('Sua arma foi melhorada! A transformei em uma Giant Sword!.', cid) --- O que o Npc dirá após transformar o 'Item 2' end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())Editado Abril 26 por Legnus