Postado Novembro 7, 2011 13 anos [NPC] Troca de Itens Olá a Todos! Introdução Estou criando esse tópico, porque vejo que muitos tem dúvida e nada melhor para entender que um próprio exemplo, não achas? Utilidade Será um NPC, que trocará itens com o player, ou seja, pedirá Item1 e dará o Item2, que poderá ser configurado no script. Código Toddy.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 -- Config -- local configs = { FirstItemId = 2455, FirstItemCount = 5, SecondItemId = 2321, SecondItemCount = 1, isQuest = "false", questStorage = 17890, msgMeet = 'Você deseja trocar '..FirstItemCount .. ' '.. getItemName(FirstItemId) ..' por '.. SecondItemCount ..' '.. getItemName(SecondItemId) ..'?', msgQuestCompleted = "Você já fez essa quest.", msgQuestNotItem = "Voce não tem o item necessario.", } function npcTroca(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if (configs.isQuest == "true") then if (getPlayerStorageValue(configs.questStorage) <= 0) then if (getItemCount(cid, configs.FirstItemId) == configs.FirstItemCount) then doRemoveItem(configs.FirstItemId, config.FirstItemCount) doPlayerAddItem(cid, configs.SecondItemId, configs.SecondItemCount) else return doPlayerSendTextMessage(cid, 27, configs.msgQuestNotItem) end else return doPlayerSendTextMessage(cid, 27, configs.msgQuestCompleted) end else if (getItemCount(cid, configs.FirstItemId) == configs.FirstItemCount) then doRemoveItem(configs.FirstItemId, config.FirstItemCount) doPlayerAddItem(cid, configs.SecondItemId, configs.SecondItemCount) else return doPlayerSendTextMessage(cid, 27, configs.msgQuestNotItem) end end end itemTrade = keywordHandler:addKeyword({'offer'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = configs.msgMeet}) itemTrade:addChildKeyword({'yes'}, npcTroca, {}) itemTrade:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then.', reset = true}) npcHandler:addModule(FocusModule:new()) O código acima possui a acessibilidade de troca de IDs e Quantidades, para isso vá no CONFIGS e altere. Quest? Para colocar como uma quest so é necessário mudar de ["false"] para ["true"]. Espero que tenham entendido, qualquer dúvida posta no tópico! Atenciosamente, Aluccard. Editado Novembro 7, 2011 13 anos por Aluccard (veja o histórico de edições) The life is hard: No projects for a while.
Postado Novembro 7, 2011 13 anos Administrador Cara, bacana a função do NPC, bem útil... Reputado! TibiaKing Team- KingTópicos www.tibiaking.com
Postado Novembro 7, 2011 13 anos Pô, gostei bastante. A ideia é bem legal. Seria legal uma segunda versão onde o NPC pede múltiplos itens e dá um só, por exemplo
Postado Novembro 7, 2011 13 anos Bem diferente o NPC, com uma otima função, parabéns. A ideia do Lpz também e muito boa, tipo ele poderia pedir uma "receita" de items para trocar por um diferente com tal elemento. E-mail para contato: [email protected] Quer ter um fórum mais organizado? Cumpra as regras! Regras do forum. EU VOLTEI GAROTAS! 31/12/2011 Atenciosamente, Guilherme Salviati.
Postado Novembro 19, 2011 13 anos ae no meu ot mapa heroserv 8.60 na hora de coloca on ocorre o seguinte erro: [Error - Npc interface] data/npc/scripts/vip coins trade.lua Description: (luaGetThing) Thing not found [Error - Npc interface] data/npc/scripts/vip coins trade.lua Description: data/lib/050-function.lua:234: attempt to index a boolean value [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/vip coins trade.lua Ajuda gente! Só mais uma coisa, o script do meu Info Vip tá assim: 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 npcHandler:addModule(FocusModule:new()) Obs.: lá no bloco de notas tudo isso tá em uma linha só, e não separado. Editado Novembro 19, 2011 13 anos por Ot Creator (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.