Postado Fevereiro 13, 2015 10 anos Alguém tem script de um NPC que troca Blueberries por Mana Potions? Estou precisando, vai me ajudar muito, se alguém tiver e puder me passar eu agradeço '-' obrigado Editado Fevereiro 13, 2015 10 anos por MIzakinha (veja o histórico de edições)
Postado Fevereiro 13, 2015 10 anos data/npc/ crie um arquivo com o nome trade.xml dentro coloque: <?xml version="1.0" encoding="UTF-8"?> <npc name="Trade" script="trocador.lua" walkinterval="2500" floorchange="0" speed="0"> <health now="100" max="100"/> <look type="300" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, diga {trocar} para trocar blueberrys por mana potion."/> </parameters> </npc> depois abra data/npc/scripts crie um arquivo com o nome trocador.lua dentro coloque: 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 playerHaveItems(cid, itemid) -- by MatheusMkalo local items = type(itemid) == "table" and itemid or {itemid} for i = 1, #items do if getPlayerItemCount(cid, items) <= 0 then return false end end return true end function doPlayerRemoveItems(cid, itemid, count) -- by MatheusMkalo local items = type(itemid) == "table" and itemid or {itemid} for i = 1, #items do doPlayerRemoveItem(cid, items, count ~= nil and count or 1) end return nil end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "trocar") then if playerHaveItems(cid, {IDDABLUEBERRY}, 1) then doPlayerRemoveItems(cid, {IDDABLUEBERRY}, 1) doPlayerAddItem(cid, IDDAPOTION, 1) else selfSay("Voce nao tem as blueberrys para trocar por Mana Potion.") end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Onde editar? IDDABLUEBERRY = Aqui coloque a id da blueberry IDDAPOTION = Aqui coloque a id da potion. e ao lado deles pode editar a quantia exemplo: doPlayerAddItem(cid, IDDAPOTION, QUANTIA) Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais... ________________________________________________________________________________ Minhas Sprites: Mega Metagross Mega Abomasnow Pack de Shinys [Posso atualizá-lo com novos shinys a qualquer momento] Tutoriais: [Completo] Criando e adicionando um novo Pokémon [Actions] Criando quest no RME Editores Lua/Xml/Sync Entre outros: Editores Win/Mac/Linux
Postado Fevereiro 13, 2015 10 anos Autor data/npc/ crie um arquivo com o nome trade.xml dentro coloque: <?xml version="1.0" encoding="UTF-8"?> <npc name="Trade" script="trocador.lua" walkinterval="2500" floorchange="0" speed="0"> <health now="100" max="100"/> <look type="300" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, diga {trocar} para trocar blueberrys por mana potion."/> </parameters> </npc> depois abra data/npc/scripts crie um arquivo com o nome trocador.lua dentro coloque: 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 playerHaveItems(cid, itemid) -- by MatheusMkalo local items = type(itemid) == "table" and itemid or {itemid} for i = 1, #items do if getPlayerItemCount(cid, items) <= 0 then return false end end return true end function doPlayerRemoveItems(cid, itemid, count) -- by MatheusMkalo local items = type(itemid) == "table" and itemid or {itemid} for i = 1, #items do doPlayerRemoveItem(cid, items, count ~= nil and count or 1) end return nil end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "trocar") then if playerHaveItems(cid, {IDDABLUEBERRY}, 1) then doPlayerRemoveItems(cid, {IDDABLUEBERRY}, 1) doPlayerAddItem(cid, IDDAPOTION, 1) else selfSay("Voce nao tem as blueberrys para trocar por Mana Potion.") end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Onde editar? IDDABLUEBERRY = Aqui coloque a id da blueberry IDDAPOTION = Aqui coloque a id da potion. e ao lado deles pode editar a quantia exemplo: doPlayerAddItem(cid, IDDAPOTION, QUANTIA) Tem um erro... eu coloquei assim: if msgcontains(msg, "trocar") then if playerHaveItems(cid, {2677}, 15) then doPlayerRemoveItems(cid, {2677}, 15) doPlayerAddItem(cid, 7620, 1) else No começo da certo, o NPC pega as 15 blueberries e me da 1 mana potion, mas quando sobra so 10, eu continuo falando "trocar", ela para de pegar e continua me dando potion, da pra pegar infinitas potion assim. Eu falei "bye" e depois voltei com só 1 blueberrie e falei "trocar", ela me deu a mana potion e nao pegou a blueberrie. '-'
Postado Fevereiro 13, 2015 10 anos Tem um erro... eu coloquei assim: if msgcontains(msg, "trocar") then if playerHaveItems(cid, {2677}, 15) then doPlayerRemoveItems(cid, {2677}, 15) doPlayerAddItem(cid, 7620, 1) else No começo da certo, o NPC pega as 15 blueberries e me da 1 mana potion, mas quando sobra so 10, eu continuo falando "trocar", ela para de pegar e continua me dando potion, da pra pegar infinitas potion assim. Eu falei "bye" e depois voltei com só 1 blueberrie e falei "trocar", ela me deu a mana potion e nao pegou a blueberrie. '-' Verifique sua bag =V ele pode estar removendo sim as blues de você e você não ter notado pois esta tudo certo no script: if playerHaveItems(cid, {2677}, 15) then [se o playertemoitem] ele só executara a função se tiver as blue pois se não -- else selfSay("Voce nao tem as blueberrys para trocar por Mana Potion.") [se não ele iria lhe enviar essa mensagem ai =V] Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais... ________________________________________________________________________________ Minhas Sprites: Mega Metagross Mega Abomasnow Pack de Shinys [Posso atualizá-lo com novos shinys a qualquer momento] Tutoriais: [Completo] Criando e adicionando um novo Pokémon [Actions] Criando quest no RME Editores Lua/Xml/Sync Entre outros: Editores Win/Mac/Linux
Postado Fevereiro 13, 2015 10 anos Autor Verifique sua bag =V ele pode estar removendo sim as blues de você e você não ter notado pois esta tudo certo no script: if playerHaveItems(cid, {2677}, 15) then [se o playertemoitem] ele só executara a função se tiver as blue pois se não -- else selfSay("Voce nao tem as blueberrys para trocar por Mana Potion.") [se não ele iria lhe enviar essa mensagem ai =V] Pois é cara, também não entendo, parece estar tude certo mesmo, mas realmente, até quando eu vou com só uma blueberrie o NPC me da o mana potion e não pega a blueberrie, da pra eu pegar quantas potions eu quiser só com uma blueberrie Mas tudo bem, se você não sabe arrumar deixa pra lá você pelo menos tentou ;( Obrigado msm assim, rep+ Se alguém ai souber resolver me ajuda ai galera por favor '-' Pois é cara, também não entendo, parece estar tude certo mesmo, mas realmente, até quando eu vou com só uma blueberrie o NPC me da o mana potion e não pega a blueberrie, da pra eu pegar quantas potions eu quiser só com uma blueberrie Mas tudo bem, se você não sabe arrumar deixa pra lá você pelo menos tentou ;( Obrigado msm assim, rep+ Se alguém ai souber resolver me ajuda ai galera por favor '-' já consegui aqui vlw achei outro script, esse nao funciona!
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.