Training Idle Tile não para de mudar de visão após sair do piso

CoLoRaDo
em Scripts

CoLoRaDo

Colorado Das Glórias, o Orgulho do Brasil
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 27/04/09Posts: 242Gênero: MasculinoChar no Tibia: Askators

Estou utilizando um script para poder deixar chars treinando e não ser pego pela otservlist,

ao entrar no piso ele começa a girar tudo certo, mas ao sair ele continua girando e nem se eu me mover ele não para,

Gostaria que alguém em ajudasse a identificar o erro no script.

Grato!

Depois de um tempo da o seguinte erro no executável:

RkFvi2f.png

O código na pasta movements/scripts/idletile.lua é:

function mudarVis(uid)
		look = getCreatureLookDirection(uid)
		look = look < 3 and look + 1 or 0
		doCreatureSetLookDirection(uid, look)
		addEvent(mudarVis, 2000, uid)
end

local events1 = {}
local trainerst = 456488

function onStepIn(cid)
	events1[getPlayerGUID(cid)] = addEvent(mudarVis, 1000, cid)
	doPlayerSendTextMessage(cid, 27, "Bem-vindo a sua sala de treinamento, você será movimentado automaticamente para que continue treinando!")
        setPlayerStorageValue(cid,trainerst,1)
	return true
end

function onStepOut(cid)
	stopEvent(events1[getPlayerGUID(cid)])
        setPlayerStorageValue(cid,trainerst,-1)
	return true
end

Tags no movements.xml

<!-- Training Tiles Idle  -->
	<movevent type="StepIn" actionid="15432" event="script" value="idletile.lua" />
	<movevent type="StepOut" actionid="15432" event="script" value="idletile.lua" />

SkyLigh

User X
avatar
Lorde
Lorde

INFOS

Grupo: LordeRegistrado: 23/07/12Posts: 2183Char no Tibia: Kissy

Não encontrei nenhum erro, se quiser posso editar para quando sair do trainer o player ser kikado.

Att,
Kissy

CoLoRaDo

Colorado Das Glórias, o Orgulho do Brasil
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 27/04/09Posts: 242Gênero: MasculinoChar no Tibia: Askators

Não encontrei nenhum erro, se quiser posso editar para quando sair do trainer o player ser kikado.

O problema é que eu não gostaria que o player fosse kickado, mas sim que ele simplesmente parasse de girar. Eu acho que tem algo a ver com o tempo do evento, mas não entendo muito bem.

Night Wolf

Coordenador de Desenvolvimento
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/02/14Posts: 341Gênero: MasculinoChar no Tibia: Night Wolf

Olha rapaz, esse código quem fez foi um rapazinho lá de outro fórum baseado num sistema que eu criei pro meu global.

Se você quiser só que eu arrume o erro que ele cometeu, troca o seu script por esse daqui:

 

local events1 = {}
local trainerst = 456488

local function mudarVis(uid)
		look = getCreatureLookDirection(uid)
		look = look < 3 and look + 1 or 0
		doCreatureSetLookDirection(uid, look)
		if getPlayerStorageValue(cid, trainerst) == 1 then
			addEvent(mudarVis, 2000, uid)
		end
end

function onStepIn(cid)
	events1[getPlayerGUID(cid)] = addEvent(mudarVis, 1000, cid)
	doPlayerSendTextMessage(cid, 27, "Bem-vindo a sua sala de treinamento, você será movimentado automaticamente para que continue treinando!")
    setPlayerStorageValue(cid,trainerst,1)
	return true
end

function onStepOut(cid)
	stopEvent(events1[getPlayerGUID(cid)])
    setPlayerStorageValue(cid,trainerst,-1)
	return true
end

 



Agora se você quiser um script mais completinho usa esse daqui que é o do meu servidor:

 

local trainerst = 456488

function helpTrainer(uid, pos)
	look = getCreatureLookDirection(uid)
	look = look < 3 and look + 1 or 0
	doCreatureSetLookDirection(uid, look)
	doSendMagicEffect(pos, 12)
	
	if getPlayerFood(uid) < 100 then
		doPlayerFeed(uid, 100)
		doCreatureSay(uid, "+ Food", TALKTYPE_MONSTER)
	end
	
	addEvent(function()
		if isPlayer(uid) and getCreaturePosition(uid).x == pos.x and getCreaturePosition(uid).y == pos.y and getCreaturePosition(uid).z == pos.z then
			helpTrainer(uid, pos)
		end
	end, 1000)
return true
end	


function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
	helpTrainer(cid, position)
	setPlayerStorageValue(cid,trainerst,1)
return true
end

function onStepOut(cid)
    setPlayerStorageValue(cid,trainerst,-1)
	return true
end

 

 

 

I9AtE9T.png
/NW

CoLoRaDo

Colorado Das Glórias, o Orgulho do Brasil
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 27/04/09Posts: 242Gênero: MasculinoChar no Tibia: Askators

Olha rapaz, esse código quem fez foi um rapazinho lá de outro fórum baseado num sistema que eu criei pro meu global.

 

Se você quiser só que eu arrume o erro que ele cometeu, troca o seu script por esse daqui:

 

 

local events1 = {}
local trainerst = 456488

local function mudarVis(uid)
		look = getCreatureLookDirection(uid)
		look = look < 3 and look + 1 or 0
		doCreatureSetLookDirection(uid, look)
		if getPlayerStorageValue(cid, trainerst) == 1 then
			addEvent(mudarVis, 2000, uid)
		end
end

function onStepIn(cid)
	events1[getPlayerGUID(cid)] = addEvent(mudarVis, 1000, cid)
	doPlayerSendTextMessage(cid, 27, "Bem-vindo a sua sala de treinamento, você será movimentado automaticamente para que continue treinando!")
    setPlayerStorageValue(cid,trainerst,1)
	return true
end

function onStepOut(cid)
	stopEvent(events1[getPlayerGUID(cid)])
    setPlayerStorageValue(cid,trainerst,-1)
	return true
end

 

 

 

Agora se você quiser um script mais completinho usa esse daqui que é o do meu servidor:

 

 

local trainerst = 456488

function helpTrainer(uid, pos)
	look = getCreatureLookDirection(uid)
	look = look < 3 and look + 1 or 0
	doCreatureSetLookDirection(uid, look)
	doSendMagicEffect(pos, 12)
	
	if getPlayerFood(uid) < 100 then
		doPlayerFeed(uid, 100)
		doCreatureSay(uid, "+ Food", TALKTYPE_MONSTER)
	end
	
	addEvent(function()
		if isPlayer(uid) and getCreaturePosition(uid).x == pos.x and getCreaturePosition(uid).y == pos.y and getCreaturePosition(uid).z == pos.z then
			helpTrainer(uid, pos)
		end
	end, 1000)
return true
end	


function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
	helpTrainer(cid, position)
	setPlayerStorageValue(cid,trainerst,1)
return true
end

function onStepOut(cid)
    setPlayerStorageValue(cid,trainerst,-1)
	return true
end

 

 

 

Muito obrigado. Os 2 funcionaram!

Mas queria uma opinião tua: Eu coloco apenas uns chars meus treinando pra lotar mais rápido o servidor, ou coloco pra todos treinarem sem serem kickados? não aconteceria de alguns players acaberem ficando com skill muito alta e muito acima dos outros players?

Night Wolf

Coordenador de Desenvolvimento
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/02/14Posts: 341Gênero: MasculinoChar no Tibia: Night Wolf

@@CoLoRaDo, no meu eu liberei pra todos poderem deixar treinando lá pra sempre.. o ruim é que seu sv fica lotado msmo quando não tem ninguém jogando e isso é ruim. As skills nem fizeram mt diferença pq a skill no meu sv subia bem devagar então a diferença era sempre de 10~15 de skill entre quem largava treinando todo dia e quem não largava.

I9AtE9T.png
/NW

Night Wolf

Coordenador de Desenvolvimento
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/02/14Posts: 341Gênero: MasculinoChar no Tibia: Night Wolf

eu não adicionei ele com o intuito de burlar otserver list. Eu apenas queria um anti idle no trainer e que ficasse alimentando os caras pra eles nao terem que usar bot nem pra treinar. Mas nunca fui ban da otserv list

I9AtE9T.png
/NW

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

Tópico movido para dúvidas / pedidos resolvidos.

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.