[ Npc ]Guild Guardian

Chose
Por Chose
em NPCs, monsters e raids

Chose

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/09/08Posts: 5

Tava sem nada para fazer e inspirado no WoW resolvi fazer um NPC que ataca membros da facção (guilda) rival. Ou seja, irá atacar sempre membros que não são da guilda que você escolher.

 

Funciona para as versões mais novas da SVN, tanto 8.1 quanto 8.2.

 

--------------------------------------------------------------------------------------------------------------------------------------------- Guild Guardian 0.1 (por Chose) 
-------------------------------------------------------------------------------------------------------------------------------------------

-- Configuração
-- Digite o nome da guilda que o guarda irá proteger
local guildName = "Exodar Masters"

-------------------------------------------------------------------------------------------------------------------------------------------

local target = 0
local prevTarget = 0
local maxChaseDistance = 20
local origPos = {}
local lastAttack = 0
local followTimeout = 10

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

function updateTarget()
if (isPlayer(target) == FALSE) then
	goToOrigPos()
elseif (getPlayerGuildName(target) == guildName) then
	selfSay("Welcome sir.")
end

if (target == 0) then
	local list = getSpectators(getNpcPos(), 8, 8, false)
	for i = 1, #list do
		local _target = list[i]
		if (_target ~= 0) then
			if ((isPlayer(_target) == TRUE) and (getPlayerGuildName(_target) ~= guildName)) then
				if (selfFollow(_target)) then
					target = _target
					if (target ~= prevTarget) then
						selfSay("We do not like people like you! Get out!")
					end

					prevTarget = target
					break
				end					
			end
		end
	end
end
end

function onCreatureAppear(cid)
if (cid == getNpcCid()) then
	origPos = getCreaturePosition(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
	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, -300, -400, CONST_ME_BLOCKHIT)
	lastAttack = os.clock()
end

end

 

Se quiser absolver guildas aliadas (inspiração do Ragnarok), podemos fazer assim:

 

Coloque a seguinte função:

 

function isInArrayEx(arr, arg)
local x, y
for x, y in pairs(arr) do
	if (y == arg) then
		return true, x
	end
end
return false
end

 

Uma matriz no começo do código (remova a variável guildName)

 

local guildsAndAllys = {"Exodar", "Stormwind", "Ogrinmar"}

 

E troque:

 

elseif (getPlayerGuildName(target) == guildName) then

 

por:

 

elseif (isInArrayEx(guildsAndAllys, getPlayerGuildName(target))) then

 

troque também:

 

 

if ((isPlayer(_target) == TRUE) and (getPlayerGuildName(_target) ~= guildName)) then

 

por:

 

if ((isPlayer(_target) == TRUE) and (isInArrayEx(guildsAndAllys, getPlayerGuildName(target)) == false)) then

 

Com esse pequeno path você poderá selecionar as guildas que não serão atacadas pelo guarda.

 

Bom, por hoje é só pessoal.

Meus objetivos:

GM Commander
Painél onde o GM poderá dispor de diversas "regalias" que facilitaria o seu trabalho.

Garoto da Losango
NPC que poderá emprestar dinheiro.

Willian Boner
Npc que lista as notícias do servidor.

E muito mais...

Aguardem!

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

Esta action só funciona em TFS, se não me engano.

 

Sempre indique isto ou se é para XML/SQL, pelo menos. Muito boa a action :)

inforce

Status: OFF motivo? Treinando skill ;]
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 14/09/08Posts: 362Char no Tibia: Furios Roxyn

o_O que comand estranho askpaskaskpaskpaskp nada ave mesmo sem nada pra faze mesmo em quando n tenhu nada pra faze fiko postando qlqr coisa no forum

Last Sign



----------Prefiro Morrer Do que perder a Vida---------




PRO69 2008/2009 XTibia member


Outfit - Faz fakes? fique a vontade em me usar nelas ;)

Chose

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/09/08Posts: 5

@noobinhu

Negativo, funciona em qualquer servidor que se baseia na SVN.

E hoje teoricamente não existe servidores em XML, logo, é compatível com SQL, SQLite e os demais bancos de dados que a SVN suporta atualmente.

Meus objetivos:

GM Commander
Painél onde o GM poderá dispor de diversas "regalias" que facilitaria o seu trabalho.

Garoto da Losango
NPC que poderá emprestar dinheiro.

Willian Boner
Npc que lista as notícias do servidor.

E muito mais...

Aguardem!

wellison

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/03/10Posts: 14Char no Tibia: Skull Dark

@noobinhu

Negativo, funciona em qualquer servidor que se baseia na SVN.

E hoje teoricamente não existe servidores em XML, logo, é compatível com SQL, SQLite e os demais bancos de dados que a SVN suporta atualmente.

Isso mesmo nao tem disso mais apoiado cara você

esta atualizado no mundo tibia ^>^

DXtibiaXD

Att: Amem
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/12/09Posts: 57Char no Tibia: Pao Melado

caboulouso

 

npc killer uhAUHUSHuhah

Msn: Hudson_hen31@hotmail.com

Orkut:

 

Att: Amem

 

 

jasonmraz.png

 

 

 

 

av261799.gif

XJhoow

XJhoow
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 15/02/10Posts: 92Char no Tibia: Jhoow Stonyz

Muito loco! ;)

Colaborando com o XTibia!

xjpedido.png

 

Amigos inXTibia - Kaonic, Alissow, Moskitinho,Styre

e-mail: jhonatancw.inf@hotmail.com

TheGODMaX

WoDO | 2013 ~ Okami Games
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 20/07/09Posts: 161Char no Tibia: Max of Catanduva

Achei bem legal a idéia desse npcs

nunca tinha visto algo igual por aki... :p

 

Fazendo umas modificações nele da pra faze umas coisas rox

 

flws

wodosign2013t.png

 

WoDO

World of Digimon Online!

Okami Games™

--------------------------------------------------------------------------

Staff • [WODO] MaX

 

wodofacebook.png

O jogo ainda NÃO foi lançado, evitem floodar perguntando 'onde baixar', obrigado.

 

Msn public group:

group1029829@groupsim.com

Piabeta Kun

Ex-Coordenador de Websites
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 23/12/08Posts: 2403Gênero: MasculinoChar no Tibia: Gordo Warlike

qro muito esse npc, eu tenhu algo em mente a seculos, sendo q nao sei como por em pratica o seu sistema poderia dar um help?:????

Daijobu!

 

Malerow

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/01/11Posts: 5

Aee, será que voc poderia editar tipo assim, o lider da guild chega para os npce fala hi e talz e atravez da fala ele diz quem é guilda alida. oque acha ??? seria mais legal do que voce ter que editar pelo lua.

 

Muito Bom esse npc, parabens

VitorCtaylor

<Gilius Thunderhead here>
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/01/11Posts: 31Char no Tibia: Phobia Saintz

o.O

Que crueldade com os players sem guild ;/

Mas ficou muito bom.

 

Belo script + belas falas em inglês.

Recomendo para por no seu Ot (y)

Costumo andar de vagar, mas nunca retrocedo.













Vinc

The white fox
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/10/11Posts: 625Gênero: Masculino

cara ta muito confuso onde coloca isso

data/npc/script

data/creaturescripts/script

data/actions/script

explica melhor n fala nem qual pasta é pra por nem como modifca o dano, os attacks ¬¬

 

---edit---

olhei o perfil do cara(o chose), ele n entra mais deis de novenbro de 2008

a n ser que troco de conta

^w^

markindoot

Schznister Equilibriun
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 27/10/12Posts: 323Char no Tibia: Schznister Equilibriun

Revivendo

 

e se eu quisesse um npc que atacasse certas vocations? por exemplo quero um npc que só ataque a vocation 1 e outro npc que só ataque as vocations 2 e 3

Você pode ficar desapontado se falhar, mas você está certamente condenado se não tentar.