Preciso De 1 Script Que Mande Magic Effect A Cada X Segundos

SirGuigo
em Lixeira Pública

SirGuigo

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 28/05/08Posts: 101Char no Tibia: Sephyrus Kirelohn-não jogo

oi gente preciso de um script que assim: se um char ficar parado por 30 segundos ele manda o magic effect do zzZZzZz.. a cada 10 segundos e se o player se movimentar para de mandar o magic effect.

 

entemderam?

 

exemplo: no templo, tem 1 player afk, se ele fica +d 30 segundos sem se mecher é mandada um magic effect do zzZZzZz.. se depois d 10 segundos ele nao se movimentar fica mandando esse magic effect a cada 10 seg. e se o player se movimentar para de mandar.

 

alguem pode me fazer esse script??????

 

agradeço desde jah!

 

para 8.22





Membro N°: 138.991 com orgulho!

Godely

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/11/05Posts: 26

eu pelo menos não sei como fazer pra verificar se o player está parado a cada segundo ou não, e acho que não existe isso. A não ser que você coloque um actionid em cada santo tile do seu mapa

The shining light that shines upon every little shining piece of rock. Yammy.

Dokmos

Visite www.avataronline.com.br ...
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/11/07Posts: 81Char no Tibia: Dokmos

Bom, existe uma maneira de fazer em lua porém não é aconselhável por ser um addEvent() que poderá lagar o servidor, além de bugs, mas mesmo assim é simples e uma boa idéia.

 

Vai na pasta data\creaturescripts\scripts e substitua o login.lua por este:

local function isPlayerMoving(cid, fromPos)
if (isPlayer(cid) == TRUE) then
toPos = getThingPos(cid)
	if (fromPos.x == toPos.x) and (fromPos.y == toPos.y) and (fromPos.z == toPos.z) then
	doSendMagicEffect(toPos, CONST_ME_SLEEP)
	addEvent(isPlayerMoving, 10*1000, cid, toPos)
	else
	addEvent(isPlayerMoving, 30*1000, cid, toPos)
	end
end
end

function onLogin(cid)
registerCreatureEvent(cid, "PlayerDeath")
addEvent(isPlayerMoving, 30*1000, cid, getThingPos(cid))
return TRUE
end

 

Espero ter ajudado! :positive:

Dokmos - Coordenador Avatar Online - Progamador Lua

 

MSN: dokmosbr@hotmail.com

Comunidade: www.orkut.com/Main#Community?cmm=63982377

Avatar Online: www.xtibia.com/forum/topic/132936-avatar-the-last-airbender/

 

 

banner.png

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino
Bom, existe uma maneira de fazer em lua porém não é aconselhável por ser um addEvent() que poderá lagar o servidor, além de bugs, mas mesmo assim é simples e uma boa idéia.

 

Vai na pasta data\creaturescripts\scripts e substitua o login.lua por este:

local function isPlayerMoving(cid, fromPos)
if (isPlayer(cid) == TRUE) then
toPos = getThingPos(cid)
	if (fromPos.x == toPos.x) and (fromPos.y == toPos.y) and (fromPos.z == toPos.z) then
	doSendMagicEffect(toPos, CONST_ME_SLEEP)
	addEvent(isPlayerMoving, 10*1000, cid, toPos)
	else
	addEvent(isPlayerMoving, 30*1000, cid, toPos)
	end
end
end

function onLogin(cid)
registerCreatureEvent(cid, "PlayerDeath")
addEvent(isPlayerMoving, 30*1000, cid, getThingPos(cid))
return TRUE
end

 

Espero ter ajudado! :positive:

 

Dokmos, o script esta certinho.

A questao do addevent gerar lag e bugs é bem simples de ser contornada.

Como o addevent eh uma funcao que realmente gera alguns lags ao invez de você executar todo o script dentro do evento voce pode usar o evento como um simples "timer". Ou seja... você tem a variavel timer=0, quando aciona o evento timer = 1, e no onLogin você tem if timer == 1 then.

 

Ficaria mais ou menos assim:

local timer = 0
local function isPlayerMoving(cid, fromPos)
timer = 1
end

function onLogin(cid)
registerCreatureEvent(cid, "PlayerDeath")
a = 1
addEvent(isPlayerMoving, 30*1000, cid, getThingPos(cid))
while a == 1 do
	if timer = 1 then
		if (isPlayer(cid) == TRUE) then
			toPos = getThingPos(cid)
			if (fromPos.x == toPos.x) and (fromPos.y == toPos.y) and (fromPos.z == toPos.z) then
				doSendMagicEffect(toPos, CONST_ME_SLEEP)
				timer = 0
				addEvent(isPlayerMoving, 10*1000, cid, toPos)
			else
				timer = 0
				addEvent(isPlayerMoving, 30*1000, cid, toPos)
			end
		end	
	end
end	
return TRUE
end

não sei se esta totalmente certo, afinal estou meio enferrujado :).

Mas creio que funciona.

 

abraços

//skulls

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

Usando onThink daria pra fazer sem modificações nas sources sim.

[twitter]ThomazYuji[/twitter]

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

Nostradamos, seu comentario foi relativamente inutil levando em consideração que ja postamos a resposta da duvida, o cara so nao veio aqui ver ainda e ja foi falado que dava pra fazer sem mecher na source ;D.

nao precisa postar so pra mostrar que voce sabe alguma mer##.

 

ok?

 

abraçs

//skulls