Postado Junho 10, 2015 9 anos Galera Eu fiz script para adicionar em meu otserver, mais esta ocorrendo o seguinte problema. gostaria que comunicaçao na hora da troca fosse assim eu: hi Npc:Ola, diga trocar para trocar blueberrys por mana potion. Eu: Trocar Npc: Deseja trocar 100 BluBerryes por 20 Potions? Eu: Yes Apos eu dizer Yes o npc fazer as trocas.... estou com seguinte script: 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) <= 15 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 15) end return nil end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "trocar") then selfSay('Deseja trocar {100 BluBerryes} por 20 Potions?', cid) elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if playerHaveItems(cid, {2677}, 100) then doPlayerRemoveItems(cid, {2677}, 100) doPlayerAddItem(cid, 7620, 10) 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()) Mais quando eu falo "Yes" o Npc nao conclue a troca...
Postado Junho 11, 2015 9 anos Solução 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 local items = { item = {2677, 7620} -- item que será pedido e item que será dado na troca } local counts = { count = {100, 20} -- quantidade que será pedido e quantidade que será dado na troca } 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, 'trocar') then if getPlayerItemCount(cid, items.item[1]) >= counts.count[1] then doPlayerRemoveItem(cid, items.item[1], counts.count[1]) doPlayerAddItem(cid, items.item[2], counts.count[2]) selfSay('Você trocou '.. counts.count[1] ..' '.. getItemNameById(items.item[1]) ..' for '.. counts.count[2] ..' '.. getItemNameById(items.item[2]) ..'.', cid) else selfSay('Você não possui '.. counts.count[1] ..' '.. getItemNameById(items.item[1]) ..'.', cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Testei e funcionando 100%, abraço. The medieval RpG Server [RpG] OLDWORLD OPEN TIBIA
Postado Junho 11, 2015 9 anos Galera Eu fiz script para adicionar em meu otserver, mais esta ocorrendo o seguinte problema. gostaria que comunicaçao na hora da troca fosse assim eu: hi Npc:Ola, diga trocar para trocar blueberrys por mana potion. Eu: Trocar Npc: Deseja trocar 100 BluBerryes por 20 Potions? Eu: Yes Apos eu dizer Yes o npc fazer as trocas.... estou com seguinte script: 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) <= 15 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 15) end return nil end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "trocar") then selfSay('Deseja trocar {100 BluBerryes} por 20 Potions?', cid) elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if playerHaveItems(cid, {2677}, 100) then doPlayerRemoveItems(cid, {2677}, 100) doPlayerAddItem(cid, 7620, 10) 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()) Mais quando eu falo "Yes" o Npc nao conclue a troca... if playerHaveItems(cid, {2677}, 100) then ?? doPlayerRemoveItems(cid, {2677}, 100) ??oq seria isso pode me explicar? '' Uma ideia é apenas uma ideia, até ser desenvolvida, mastigada, retratada, analisada e por fim se tornar uma boa ideia. ''
Postado Junho 11, 2015 9 anos Autor nookia Muito Obrigado, Reputado Agradecimentos equipe Overest... Desde já em nome de toda equipe, queriamos dizer que estamos de portas abertas esperando voce em nossa equipe
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.