Postado Maio 25, 2017 8 anos Olá pessoal, deparei-me com um problema: coloquei um npc de troca, só que ele só pode trocar dois itens por vez, tem como fazê-lo trocar mais itens? Aqui vai o código: 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 = { item1 = {2159, 2145}, -- item1 item que será pedido e que será dado na primeira troca item2 = {2159, 2146} -- item2 item que será pedido e que será dado na segunda troca } local counts = { count1 = {10, 1}, count2 = {10, 1} } 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, 'removedor de frags') then if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then doPlayerRemoveItem(cid, items.item1[1], counts.count1[1]) doPlayerAddItem(cid, items.item1[2], counts.count1[2]) selfSay('Você trocou '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' por '.. counts.count1[2] ..'x '.. getItemNameById(items.item1[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..'.', cid) end elseif msgcontains(msg, 'power exp ring') then if getPlayerItemCount(cid, items.item2[1]) >= counts.count2[1] then doPlayerRemoveItem(cid, items.item2[1], counts.count2[1]) doPlayerAddItem(cid, items.item2[2], counts.count2[2]) selfSay('Você trocou '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..' por '.. counts.count2[2] ..' '.. getItemNameById(items.item2[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..'.', cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Maio 26, 2017 8 anos por Sleet (veja o histórico de edições)
Postado Maio 29, 2017 8 anos 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 = { item1 = {2159, 2145}, -- item1 item que será pedido e que será dado na primeira troca item2 = {2159, 2146} -- item2 item que será pedido e que será dado na segunda troca item3 = {2159, 2146} -- É SÓ ADICIONAR UMA LINHA AQUI item4 = {2159, 2146} -- SE QUISER MAIS ITENS COLOQUE EM BAIXO DISSO POR EX: item5 = {2159, 2146} } } } local counts = { count1 = {10, 1}, count2 = {10, 1} count3 = {10, 1} -- a mesma coisa aqui count4 = {10, 1} -- se arrumou item5, adiciona aqui count5 } 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, 'removedor de frags') then if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then doPlayerRemoveItem(cid, items.item1[1], counts.count1[1]) doPlayerAddItem(cid, items.item1[2], counts.count1[2]) selfSay('Você trocou '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' por '.. counts.count1[2] ..'x '.. getItemNameById(items.item1[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..'.', cid) end elseif msgcontains(msg, 'power exp ring') then if getPlayerItemCount(cid, items.item2[1]) >= counts.count2[1] then doPlayerRemoveItem(cid, items.item2[1], counts.count2[1]) doPlayerAddItem(cid, items.item2[2], counts.count2[2]) selfSay('Você trocou '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..' por '.. counts.count2[2] ..' '.. getItemNameById(items.item2[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..'.', cid) end elseif msgcontains(msg, 'Nome do item aqui') then if getPlayerItemCount(cid, items.item3[1]) >= counts.count3[1] then doPlayerRemoveItem(cid, items.item3[1], counts.count3[1]) doPlayerAddItem(cid, items.item3[2], counts.count3[2]) selfSay('Você trocou '.. counts.count3[1] ..' '.. getItemNameById(items.item3[1]) ..' por '.. counts.count3[2] ..' '.. getItemNameById(items.item3[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count3[1] ..' '.. getItemNameById(items.item3[1]) ..'.', cid) end elseif msgcontains(msg, 'Nome do item aqui') then if getPlayerItemCount(cid, items.item4[1]) >= counts.count4[1] then doPlayerRemoveItem(cid, items.item4[1], counts.count4[1]) doPlayerAddItem(cid, items.item4[2], counts.count4[2]) selfSay('Você trocou '.. counts.count4[1] ..' '.. getItemNameById(items.item4[1]) ..' por '.. counts.count4[2] ..' '.. getItemNameById(items.item4[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count4[1] ..' '.. getItemNameById(items.item4[1]) ..'.', cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em 2017-5-25 ás 19:58, Sleet disse: if msgcontains(msg, 'removedor de frags') then if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then doPlayerRemoveItem(cid, items.item1[1], counts.count1[1]) doPlayerAddItem(cid, items.item1[2], counts.count1[2]) selfSay('Você trocou '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' por '.. counts.count1[2] ..'x '.. getItemNameById(items.item1[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..'.', cid) end elseif msgcontains(msg, 'power exp ring') then if getPlayerItemCount(cid, items.item2[1]) >= counts.count2[1] then doPlayerRemoveItem(cid, items.item2[1], counts.count2[1]) doPlayerAddItem(cid, items.item2[2], counts.count2[2]) selfSay('Você trocou '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..' por '.. counts.count2[2] ..' '.. getItemNameById(items.item2[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..'.', cid) end e não se esqueça de adicionar o elseif para cada item adicionado a mais, por exemplo e uma coisa IMPORTANTE repare que tem que trocar os numeros aonde mostra items.item e counts.count para os numeros dos itens. que foi arrumado la em cima em local items = { e local counts = { elseif msgcontains(msg, 'Nome do item aqui') then if getPlayerItemCount(cid, items.item3[1]) >= counts.count3[1] then doPlayerRemoveItem(cid, items.item3[1], counts.count3[1]) doPlayerAddItem(cid, items.item3[2], counts.count3[2]) selfSay('Você trocou '.. counts.count3[1] ..' '.. getItemNameById(items.item3[1]) ..' por '.. counts.count3[2] ..' '.. getItemNameById(items.item3[2]) ..'.', cid) else selfSay('Você precisa de '.. counts.count3[1] ..' '.. getItemNameById(items.item3[1]) ..'.', cid) end Editado Maio 29, 2017 8 anos por Boush (veja o histórico de edições)
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.