Ir para conteúdo
  • 0

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


CoLoRaDo

Pergunta

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 por CoLoRaDo
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

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

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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 por CoLoRaDo
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...