Ir para conteúdo

Featured Replies

Postado

Gostaria de um NPC que ataca-se somente monstros.
Tenho um aqui, que por algum motivo não está atacando monstros (está tentando atacar GM)
Deem uma olhada:

local target = 0
local prevTarget = 0
local maxChaseDistance = 20
local origPos = 0
local origDir = NORTH
local lastAttack = 0
local followTimeout = 10

local function isSkulled(cid)
	local idType = isPlayer(cid)
	if (idType ~= 1) then
		return true
	end

	return false
end

local function goToOrigPos()
	target = 0
	lastAttack  = 0
	selfFollow(0)
	doTeleportThing(getNpcCid(), origPos)
end

local function updateTarget()
	if(isPlayer(target) == FALSE) then
		goToOrigPos()
	elseif(not isSkulled(target)) then
		target = 0
		selfSay("Now, behave in the future.")
	end

	if(target == 0) then
		local list = getSpectators(getNpcPos(), 8, 8, false)
		for i=1, table.getn(list) do
			local _target = list[i]
			if(_target ~= 0) then
				if(isPlayer(_target) == TRUE and isSkulled(_target)) then
					if(selfFollow(_target)) then
						target = _target
						if(target ~= prevTarget) then
							selfSay("We do not tolerate people like you here!")
						end

						prevTarget = target
						break
					end
				end
			end
		end
	end
end

function onCreatureAppear(cid)
	if(cid == getNpcCid()) then
		--Wake up call
		origPos = getNpcPos()
		--origLook = getCreatureDir(cid)
	end
end

function onCreatureDisappear(cid)
	if(target == cid) then
		goToOrigPos()
	end
end

function onCreatureMove(creature, oldPos, newPos)
	--
end

function onThink()
	updateTarget()

	if(target == 0) then

		return
	end

	local playerPos = getCreaturePosition(target)
	local myPos = getNpcPos()

	if(myPos.z ~= playerPos.z) then
		goToOrigPos()
		return
	end

	if(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) then
		selfSay("I'll catch you next time.")
		goToOrigPos()
		return
	end

	if(lastAttack == 0) then
		lastAttack = os.clock()
	end

	if(os.clock() - lastAttack > followTimeout) then
		--To prevent bugging the npc by going to a place where he can't reach
		selfSay("You got me this time, but just wait.")
		goToOrigPos()
		return
	end

	if( (math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then
		doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -200, -300, CONST_ME_BLOCKHIT)
		lastAttack = os.clock()
	end

end

Obrigado.

No final da década de 20, quando Eurico Miranda ainda nem era nascido, fomos proibidos de disputar o Estadual por aceitarmos atletas negros e operários. Depois a desculpa era por não termos estádio. E demos a resposta construindo um.

Na década de 40, quando Eurico era apenas uma criança, o jornalista mulambo Ary Barroso (na época, o principal jornalista esportivo do Rio) já era proibido de entrar em São Januário por só falar mal do Vasco. 

No final desta mesma década, quando São Januário seria reformado com verba pública para receber a Copa do Mundo (nada mais lógico, pois em troca iriamos ceder o nosso estádio), a mídia marrom arrotou sua pseudo-ética pública contra nós. E veio o Maracanã, cuja construção todos já conhecem o resultado, para depois ser dado de bandeja pro urubu e pro clube da série C.

Em 1950, após a perda da Copa pro Uruguai, quando Eurico Miranda continuava sendo apenas uma criança, o jornalista Armando Nogueira AFIRMOU que o Brasil só perdeu a Copa pois tinha muitos atletas do Vasco, e que estes eram os grandes culpados pelo "Maracanazzo". Segundo ele, os jogadores vascaínos não eram brasileiros:

"As equipes entram em campo.. Reconheço, um a um, os jogadores brasileiros: Barbosa; Augusto e Juvenal; Bauer, Danilo e Bigode; Friaça, Zizinho, Ademir, Jair e Chico. Aflora, outra vez em mim, a mágoa clubística. Lanço sobre a equipe um olhar de botafoguense ressentido. Vejo, em campo, apenas quatro autênticos brasileiros: Bauer, do São Paulo, Juvenal, da Portuguesa, Bigode, do Fluminense, e Zizinho, do Flamengo. Os outros sete são vascaínos. Velhos e mortais inimigos da pequena porém brava nação botafoguense… Quer saber de uma coisa? É melhor mesmo que ganhe o Uruguai. Eles são gringos, vão todos embora daqui amanhã. Ninguém vai encarnar em mim. (…)"

O Vasco não criou inimigos através das ações de Eurico Miranda. O Vasco criou inimigos quando afrontou a elite da zona sul e se impôs como clube popular. O ranço contra a instituição de origem lusitana, mas alma brasileira, vem desde 1898.

Saudações Vascaínas !

Postado
local target = 0
local prevTarget = 0
local maxChaseDistance = 20
local origPos = 0
local origDir = NORTH
local lastAttack = 0
local followTimeout = 10

local function isSkulled(cid)
	local idType = isPlayer(cid)
	if (idType ~= 1) then
		return true
	end

	return false
end

local function goToOrigPos()
	target = 0
	lastAttack  = 0
	selfFollow(0)
	doTeleportThing(getNpcCid(), origPos)
end

local function updateTarget()
	if(isPlayer(target) == FALSE) then
		goToOrigPos()
	elseif(not isSkulled(target)) then
		target = 0
		selfSay("Now, behave in the future.")
	end
	
	if isMonster(target) then
		if(target == 0) then
			local list = getSpectators(getNpcPos(), 8, 8, false)
			for i=1, table.getn(list) do
				local _target = list[i]
				if(_target ~= 0) then
					if(isPlayer(_target) == TRUE and isSkulled(_target)) then
						if(selfFollow(_target)) then
							target = _target
							if(target ~= prevTarget) then
								selfSay("We do not tolerate people like you here!")
							end

							prevTarget = target
							break
						end
					end
				end
			end
		end
	end
end

function onCreatureAppear(cid)
	if(cid == getNpcCid()) then
		--Wake up call
		origPos = getNpcPos()
		--origLook = getCreatureDir(cid)
	end
end

function onCreatureDisappear(cid)
	if(target == cid) then
		goToOrigPos()
	end
end

function onCreatureMove(creature, oldPos, newPos)
	--
end

function onThink()
	updateTarget()

	if(target == 0) then

		return
	end

	local playerPos = getCreaturePosition(target)
	local myPos = getNpcPos()

	if(myPos.z ~= playerPos.z) then
		goToOrigPos()
		return
	end

	if(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) then
		selfSay("I'll catch you next time.")
		goToOrigPos()
		return
	end

	if(lastAttack == 0) then
		lastAttack = os.clock()
	end

	if(os.clock() - lastAttack > followTimeout) then
		--To prevent bugging the npc by going to a place where he can't reach
		selfSay("You got me this time, but just wait.")
		goToOrigPos()
		return
	end

	if( (math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then
		doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -200, -300, CONST_ME_BLOCKHIT)
		lastAttack = os.clock()
	end

end
Tenta ve como que vai ficar..

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Postado
  • Autor

Não funcionou, amigo.
 

No final da década de 20, quando Eurico Miranda ainda nem era nascido, fomos proibidos de disputar o Estadual por aceitarmos atletas negros e operários. Depois a desculpa era por não termos estádio. E demos a resposta construindo um.

Na década de 40, quando Eurico era apenas uma criança, o jornalista mulambo Ary Barroso (na época, o principal jornalista esportivo do Rio) já era proibido de entrar em São Januário por só falar mal do Vasco. 

No final desta mesma década, quando São Januário seria reformado com verba pública para receber a Copa do Mundo (nada mais lógico, pois em troca iriamos ceder o nosso estádio), a mídia marrom arrotou sua pseudo-ética pública contra nós. E veio o Maracanã, cuja construção todos já conhecem o resultado, para depois ser dado de bandeja pro urubu e pro clube da série C.

Em 1950, após a perda da Copa pro Uruguai, quando Eurico Miranda continuava sendo apenas uma criança, o jornalista Armando Nogueira AFIRMOU que o Brasil só perdeu a Copa pois tinha muitos atletas do Vasco, e que estes eram os grandes culpados pelo "Maracanazzo". Segundo ele, os jogadores vascaínos não eram brasileiros:

"As equipes entram em campo.. Reconheço, um a um, os jogadores brasileiros: Barbosa; Augusto e Juvenal; Bauer, Danilo e Bigode; Friaça, Zizinho, Ademir, Jair e Chico. Aflora, outra vez em mim, a mágoa clubística. Lanço sobre a equipe um olhar de botafoguense ressentido. Vejo, em campo, apenas quatro autênticos brasileiros: Bauer, do São Paulo, Juvenal, da Portuguesa, Bigode, do Fluminense, e Zizinho, do Flamengo. Os outros sete são vascaínos. Velhos e mortais inimigos da pequena porém brava nação botafoguense… Quer saber de uma coisa? É melhor mesmo que ganhe o Uruguai. Eles são gringos, vão todos embora daqui amanhã. Ninguém vai encarnar em mim. (…)"

O Vasco não criou inimigos através das ações de Eurico Miranda. O Vasco criou inimigos quando afrontou a elite da zona sul e se impôs como clube popular. O ranço contra a instituição de origem lusitana, mas alma brasileira, vem desde 1898.

Saudações Vascaínas !

Postado

Achei esse script no google, então não tenho ideia de como está:
Lembresse de editar os monster, na linha 21.

local target = 0
local prevTarget = 0
local maxChaseDistance = 7
local origPos = 0
local lastAttack = 0
local followTimeout = 10

local function goToOrigPos()
target = 0
lastAttack = 0
selfFollow(0)
doSteerCreature(getNpcCid(), origPos)
end

local function updateTarget()
if(target == 0) then
local list = getSpectators(origPos, 7, 7, false)
for i = 1, table.getn(list) do
local _target = list
if(_target ~= 0) then
local monster = {"Wolf", "Snake", "Troll", "Bug"}
if(isInArray(monster, getCreatureName(_target))) then
if(not getTilePzInfo(getCreaturePosition(_target))) then
if(selfFollow(_target)) then
target = _target
if(target ~= prevTarget) then
selfSay("Everyone get to safety! I'll take care of this "..getCreatureName(_target).."!")
end

prevTarget = target
break
end
end
end
end
end
end
end

function onCreatureAppear(cid)
if(cid == getNpcCid()) then
origPos = getNpcPos()
end
end

function onCreatureDisappear(cid)
if(cid == target) then
goToOrigPos()
end
end

function onCreatureMove(creature, oldPos, newPos)
--
end

function onThink()
updateTarget()

if(target == 0) then
return
end

local playerPos = getCreaturePosition(target)
local myPos = getNpcPos()

if(myPos.z ~= playerPos.z) then
goToOrigPos()
return
end

if(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) then
selfSay("I'll get it next time...")
goToOrigPos()
return
end

if(lastAttack == 0) then
lastAttack = os.clock()
end

if(os.clock() - lastAttack > followTimeout) then
selfSay("I'll get you next time.")
goToOrigPos()
return
end

if((math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then
doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -5, -25, CONST_ME_BLOCKHIT)
lastAttack = os.clock()
end
end

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Postado
  • Autor

Deu erro no console:
npcs/guardmonster.lua:onThink
Description:
<LuaGetCreatureName> Creature not found

No final da década de 20, quando Eurico Miranda ainda nem era nascido, fomos proibidos de disputar o Estadual por aceitarmos atletas negros e operários. Depois a desculpa era por não termos estádio. E demos a resposta construindo um.

Na década de 40, quando Eurico era apenas uma criança, o jornalista mulambo Ary Barroso (na época, o principal jornalista esportivo do Rio) já era proibido de entrar em São Januário por só falar mal do Vasco. 

No final desta mesma década, quando São Januário seria reformado com verba pública para receber a Copa do Mundo (nada mais lógico, pois em troca iriamos ceder o nosso estádio), a mídia marrom arrotou sua pseudo-ética pública contra nós. E veio o Maracanã, cuja construção todos já conhecem o resultado, para depois ser dado de bandeja pro urubu e pro clube da série C.

Em 1950, após a perda da Copa pro Uruguai, quando Eurico Miranda continuava sendo apenas uma criança, o jornalista Armando Nogueira AFIRMOU que o Brasil só perdeu a Copa pois tinha muitos atletas do Vasco, e que estes eram os grandes culpados pelo "Maracanazzo". Segundo ele, os jogadores vascaínos não eram brasileiros:

"As equipes entram em campo.. Reconheço, um a um, os jogadores brasileiros: Barbosa; Augusto e Juvenal; Bauer, Danilo e Bigode; Friaça, Zizinho, Ademir, Jair e Chico. Aflora, outra vez em mim, a mágoa clubística. Lanço sobre a equipe um olhar de botafoguense ressentido. Vejo, em campo, apenas quatro autênticos brasileiros: Bauer, do São Paulo, Juvenal, da Portuguesa, Bigode, do Fluminense, e Zizinho, do Flamengo. Os outros sete são vascaínos. Velhos e mortais inimigos da pequena porém brava nação botafoguense… Quer saber de uma coisa? É melhor mesmo que ganhe o Uruguai. Eles são gringos, vão todos embora daqui amanhã. Ninguém vai encarnar em mim. (…)"

O Vasco não criou inimigos através das ações de Eurico Miranda. O Vasco criou inimigos quando afrontou a elite da zona sul e se impôs como clube popular. O ranço contra a instituição de origem lusitana, mas alma brasileira, vem desde 1898.

Saudações Vascaínas !

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo