CO
action

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

Por CoLoRaDo, 30 de set. de 2015 em Scripts

resolvido
script
otserv
otservlist
lista
list
otservelist
ot
ots
9
2.5k
CoLoRaDoC
30 de setembro de 2015 às 13:26

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" />

Editado Setembro 30 por CoLoRaDo

SkyLighS
30 de setembro de 2015 às 21:34

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

CoLoRaDoC
01 de outubro de 2015 às 01:30

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 WolfN
07 de outubro de 2015 às 05:39
Melhor resposta

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

 

 

 

CoLoRaDoC
07 de outubro de 2015 às 14:03

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?

Editado Outubro 7 por CoLoRaDo

Night WolfN
07 de outubro de 2015 às 17:37

@@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.

CoLoRaDoC
07 de outubro de 2015 às 17:49

@@Night Wolf

 

Entendo.

 

Esse script realmente funciona para não levar ban na otservlist? quanto tempo faz que tu adicionou ele? até agora não levou ban?

Night WolfN
07 de outubro de 2015 às 18:08

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

zipter98Z
10 de outubro de 2015 às 13:27

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