Ir para conteúdo
  • 0

Npc de troca


Gabrielkss

Pergunta

Alguém poderia me ajudar. Gostaria de um npc de troca, que pede 7 items e em troca da 1 item, que pode ter a opção de escolher 4 items pelo qual pode trocar os 7 items.


Por favor, ficaria grato com ajuda. Rep + para quem ajudar.



Obrigado desde de já !


Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Assim como você postou no outro fórum:

 

Npc.xml

<?xml version="1.0"?>
<npc name="Troque aqui" script="trocador de item.lua" walkinterval="2000">
  <mana now="800" max="800" />
  <health now="200" max="200" />
  <look type="132" head="0" body="0" legs="0" feet="0" addons="3" />
  <parameters>
    <parameter key="message_greet" value="Ola, |PLAYERNAME|, gostaria de fazer uma {troca}?" />
    <parameter key="message_farewell" value="Ate mais, |PLAYERNAME|!" />
    <parameter key="message_walkaway" value="Valeu!" />
  </parameters>

Npc.lua




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 creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    
	local itemsp = {2666, 2671, 2681, 2695, 2667, 2676, 2675} -- os 7 items que precisam.
	local axe = 7454 
	local sword = 2376
	local spear = 2389
	
	s = ""
	for k, v in pairs(itemsp) do 
		s = s.."{".. getItemNameById(v)  .."}".. (#itemsp ~= k and ", " or "")
		
	end
	
	function pegaritems()
		for k, v in pairs(itemsp) do
			doPlayerRemoveItem(cid, v, 1)
		end
	end
	
	function temitem()
		for k, v in pairs(itemsp) do 
			if not (getPlayerItemCount(cid, v) >= 1) then
				return false
			end
		end
		return true
	end

    if (msgcontains(msg, "troca") or msgcontains(msg, "trocar") or msgcontains(msg, "yes")) and talkState[talkUser] == nil then
        npcHandler:say("Ok, preciso de {7 items} em troca de: (um {axe} - ID:7454), (uma {spear} - ID:2389) ou (uma {sword} - ID:2376)", cid)
        talkState[talkUser] = 1
    elseif (msgcontains(msg, "axe")) and talkState[talkUser] == 1 then
        npcHandler:say("Voce quer trocar: ".. s .." por um {axe}?", cid)
        talkState[talkUser] = 2
	elseif (msgcontains(msg, "sword")) and talkState[talkUser] == 1 then
		npcHandler:say("Voce quer trocar: ".. s .." por uma {sword}?", cid)
        talkState[talkUser] = 3
	elseif (msgcontains(msg, "spear")) and talkState[talkUser] == 1 then
		npcHandler:say("Voce quer trocar: ".. s .." por uma {spear}?", cid)
        talkState[talkUser] = 4
	elseif (msgcontains(msg, "yes")) and talkState[talkUser] == 2 then 
		for k, v in pairs(itemsp) do 
			if not temitem() then
				doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
				npcHandler:say("Voce nao tem todos os items, desculpe, nada feito.", cid)
				npcHandler:onCreatureDisappear(cid)
				talkState[talkUser] = nil
				return true
			elseif temitem() then 
				pegaritems()
				doPlayerAddItem(cid, axe)
				npcHandler:say("Uhuul, troca feita, obrigado.", cid)
				npcHandler:onCreatureDisappear(cid)
				talkState[talkUser] = nil
				return true
			end
		end
	elseif (msgcontains(msg, "yes")) and talkState[talkUser] == 3 then
		for k, v in pairs(itemsp) do 
			if not temitem() then
				doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
				npcHandler:say("Voce nao tem todos os items, desculpe, nada feito.", cid)
				npcHandler:onCreatureDisappear(cid)
				talkState[talkUser] = nil
				return true
			elseif temitem() then 
				pegaritems()
				doPlayerAddItem(cid, sword)
				npcHandler:say("Uhuul, troca feita, obrigado.", cid)
				npcHandler:onCreatureDisappear(cid)
				talkState[talkUser] = nil
				return true
			end
		end
	elseif (msgcontains(msg, "yes")) and talkState[talkUser] == 4 then
		for k, v in pairs(itemsp) do 
			if not temitem() then
				doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
				npcHandler:say("Voce nao tem todos os items, desculpe, nada feito.", cid)
				npcHandler:onCreatureDisappear(cid)
				talkState[talkUser] = nil
				return true
			elseif temitem() then 
				pegaritems()
				doPlayerAddItem(cid, spear)
				npcHandler:say("Uhuul, troca feita, obrigado.", cid)
				npcHandler:onCreatureDisappear(cid)
				talkState[talkUser] = nil
				return true
			end
		end
    end
end 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...