Ir para conteúdo

[NPC] Walk Hunt - Npc Caminha ate a hunt.


Posts Recomendados

                                                                                               O NPC caminha junto com o player ate a hunt.

                                                                       Esse sistema é bem SIMPLES, um amigo me pediu, desenvolvi para ele e vim compartilhar com vocês

 

Crie um arquivo lua em npcs e adicione :

 

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 possnpc = {  --- poss que o npc vai andar
{x=81 ,y=339, z=7}, {x=82 ,y=339, z=7}, {x=83 ,y=339, z=7}, {x=84 ,y=339, z=7}, {x=85 ,y=339, z=7}, {x=86 ,y=339, z=7}, {x=79, y=340, z=7} 
}

local possplayer = { -- poss que o player vai andar
{x=81 ,y=339, z=7}, {x=82 ,y=339, z=7}, {x=83 ,y=339, z=7}, {x=84 ,y=339, z=7}, {x=85 ,y=339, z=7}, {x=86 ,y=339, z=7}
}

local pid = getNpcId() -- não mexa

local config = { -- não mexa
str = 150729,
tempo = 30,
}

	function andarnpc()
		for i, pos in ipairs(possnpc) do
		addEvent(doTeleportThing, 1000+400*(i-1), pid, pos)
		end
	end

	function andarplayer(cid)
		for i, posdois in ipairs(possplayer) do
		if isCreature(cid) then
		addEvent(doTeleportThing, 1000+500*(i-1), cid, posdois)
		end
		end
	end

		for _, player in pairs(getPlayersOnline()) do
		if msgcontains(msg, "hunt") and getPlayerStorageValue(player, config.str) >= os.time() then
			selfSay("Não posso atender você agora!", cid)
		break
		end
		
		if msgcontains(msg, "hunt") and getPlayerStorageValue(player, config.str) < os.time() then
			setPlayerStorageValue(cid, config.str, os.time() + config.tempo)
			selfSay("Vou te levar ate a caverna misteriosa !", cid)
			andarnpc()
			andarplayer(cid)
		break
		end
	end
end

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

 

Configuração :

 

Aqui é aonde o npc vai andar, são as mesma poss que o player vai andar, porem você tem que por uma ultima poss para o npc, nessa ultima poss você coloca a posição aonde o npc estava antes do jogador falar com ele !

local possnpc = {  --- poss que o npc vai andar
{x=81 ,y=339, z=7}, {x=82 ,y=339, z=7}, {x=83 ,y=339, z=7}, {x=84 ,y=339, z=7}, {x=85 ,y=339, z=7}, {x=86 ,y=339, z=7}, {x=79, y=340, z=7} 
}

Essa é a poss do inicio, aonde o npc vai aparecer quando ele levar o jogador, não esqueca de colocar a posição correta, se não o npc vai ficar dentro da hunt com o player, e outros players não vão conseguir encontrar o npc.

{x=79, y=340, z=7} -- poss aonde o npc tava antes de levar o player para a hunt

OBS: Existe um tempo para poder falar com o NPC, caso o npc esteja levando algum player para a hunt, outro jogador não pode conversar com ele, ate que ele complete a caminhada, caso queira mudar o tempo edite aqui :

 

tempo = 30, -- 30 = 30 segundos

 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, gabriel28 disse:

O que acontece se tiver algo no caminho -outro player ou um monstro-?

Não acontece nada, o player vai de poss em poss com doTeleportThing

Editado por Kuro o Shiniga
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...