Ir para conteúdo
  • 0

NPC de task


usoparagames

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

Eu melhorei seu código, organizei e também deixei toda fala do player em minúscula para ficar mais fácil a verificação.

 

Substitua o código por esse:

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
		
	msg = string.lower(msg)	
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid	
	local storage_done = 77777 -- STORAGE PARA NÃO REPETIR A TASK
	 
	local task = {
		["ADM do Tibia"] = {{"Fire Devil", 50}, {"Demon", 6}},
	}
       
        if msgcontains(msg, 'task') then
			if getPlayerStorageValue(storage_done) > 0 then
				selfSay("Você já concluiu minha task.", cid)				
				return true				
			end
			
			local sto = getMyTaskSto(cid, getNpcCid())
			
           if isMyTaskComplete(cid, getNpcCid()) then
              selfSay("Muito bem , vc nos ajudou msm ,pegue seu bonus por terminar a task !!", cid)
              doPlayerAddExperience(cid, 2000000)  --premio 
              doPlayerAddItem(cid, 11447, 10)
			  doPlayerAddItem(cid, 12244, 5)
			  doPlayerAddItem(cid, 2159, 20)              
              setPlayerStorageValue(cid, sto, -1)
			  setPlayerStorageValue(cid, storage_done, 1)
              talkState[talkUser] = 0			  
              return true
           
		   else
              selfSay("Prazer sou o ADM desse mundo ,jah que es forte e ta aki ,que tal pegar essa task de matar {50 Fire Devil and 5 Demon}, voce aceita?", cid)
              talkState[talkUser] = 2  
           end   
        
		elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
           if getMyTaskSto(cid, getNpcCid()) ~= -1 then
              selfSay("Voce jah pegou minha task , agr va temina-la", cid)
              talkState[talkUser] = 0
              return true
           end
           
		   local sto = getFreeTaskStorage(cid)
           
		   if sto == -1 then 
              selfSay("You can't catch more tasks! You are already with the maximum of "..(maxTasks).." tasks!", cid)
              talkState[talkUser] = 0
              return true
           end
                  
           selfSay("OK rapaiz... Va matar esses monstros ,e nao se preocupe cmg , eu pego sua task no final!!", cid)
           setStorageArray(cid, sto, task)
           talkState[talkUser] = 0
           return true
        end

return true
end

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

O código está muito confuso, e como tem funções que trabalham com storage, pode ser que esteja vinculada à outros códigos, então não mexi. No caso, adicionei uma storage a mais só para finalizar a task e verificar. Se quiser, posso refazer essa task para você, mas nesse caso vai ter que criar um outro tópico para isso em Pedidos de Script.

 

Teste esse script e veja se vai dar erro.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...