Postado Fevereiro 6, 2014 11 anos Bom, fiz esse script esses dias, e pensei que poderia ser útil há alguem, ou não. '-' De qualquer forma, a intenção que vale. Como funciona: Ao dizer 'melhorar' ao Npc, ele verificará que item o player tem em mãos (no slot hand), então se o item estiver pré configurado no script, o Npc dirá o que é preciso pra melhorar o item em questão. Caso o player não tenha o material necessário, o npc dirá quantos items o player possui, e novamente, quantos são necessários. Caso tenha os items, sua arma será transformada em uma nova, também pré configurada. Pode-se usar o script pra dar upgrade em armas, armors, helms, etc. basta configurar os ids no script. Vá em Data/Npc, crie um novo arquivo .xml chamado Keny, e cole isso dentro: <?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> Salve, e feche. Agora vá em Data/Npc/Scripts, crie um novo arquivo .lua chamado upgradeitems, e cole isso dentro: 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()) Salve ambos. Entre em seu servidor, e digite /n Keny, e o teste. Pronto. Explicando o Script: 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()) Espero que seja útil a alguém, abraços. Vídeo: Editado Fevereiro 7, 2014 11 anos por Legnus (veja o histórico de edições)
Postado Fevereiro 6, 2014 11 anos Gostei =) obrigado pela contribuição Ot Design: https://discord.gg/VgtVRNmCD7
Postado Fevereiro 6, 2014 11 anos O script é bem útil para servidores que presam pelo RPG. Foi você que fez?
Postado Fevereiro 6, 2014 11 anos Autor O script é bem útil para servidores que presam pelo RPG. Foi você que fez? Que bom que seja útil Sim, foi eu quem fiz.
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.