Ir para conteúdo
  • 0

Script Snow Bugado


coriel

Pergunta

Fala galera, acho que o meu script de snow está bugado. Quando estou em uma cidade de gelo, piso no chão de neve e o chão de neve se transforma em duas pegadas.. Só que tipo, se eu andar alguns sqms pelo chão de neve, alguns voltam ao normal e outros não, ou seja, alguns continuam com as duas pegadas.. O que quero é que quando o player pisasse em qualquer sqm de neve, esse sqm voltaria a ser neve normalmente depois. O que faço para arrumar isso? Sei que o tempo é arrumado nos items.xml.. Mas e o snow.lua? Vou postar aqui o script do snow.lua. Grato! Servidor 9.70.Valendo REP+.

 

data\movements\scripts\snow.lua

TILE_SNOW = 670
TILE_FOOTPRINT_I = 6594
TILE_FOOTPRINT_II = 6598

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
if(isPlayerGhost(cid)) then
return true
end

if(item.itemid == TILE_SNOW) then
doTransformItem(item.uid, TILE_FOOTPRINT_I)
doDecayItem(item.uid)
elseif(item.itemid == TILE_FOOTPRINT_I) then
doTransformItem(item.uid, TILE_FOOTPRINT_II)
doDecayItem(item.uid)
else
doTransformItem(item.uid, TILE_FOOTPRINT_I)
end

return true
end

Editado por coriel
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
 
TILE_SNOW = 670
TILE_FOOTPRINT_I = 6594
TILE_FOOTPRINT_II = 6598

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
if(isPlayerGhost(cid)) then
return true
end

if(item.itemid == TILE_SNOW) then
doTransformItem(item.uid, TILE_FOOTPRINT_I)
doDecayItem(item.uid)
addEvent(doTransformItem, 36000, item.uid, TILE_SNOW)
elseif(item.itemid == TILE_FOOTPRINT_I) then
doTransformItem(item.uid, TILE_FOOTPRINT_II)
doDecayItem(item.uid)
addEvent(doTransformItem, 36000, item.uid, TILE_SNOW)
else
doTransformItem(item.uid, TILE_FOOTPRINT_I)
addEvent(doTransformItem, 36000, item.uid, TILE_SNOW)
end

return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Tenho esse script aqui que é mais simples e funciona.

 

 

function onStepOut(cid, item, position, fromPosition)
addEvent(transformBack, 10000, {oldItemID = item.itemid, _position = position})
if item.itemid == 670 then
doTransformItem(item.uid, 6594)
else
doTransformItem(item.uid, item.itemid + 15)
end
return true
end

function transformBack(parameters)
parameters._position.stackpos = 
doTransformItem(getThingfromPos(parameters._position).uid, parameters.oldItemID)
return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Galera, os dois deram erros..

 

O do Luck tá dando esse erro:

http://imageshack.us/f/811/erro1l.jpg/

 

O do do caotic:

http://imageshack.us/f/835/erro2n.jpg/

 

EDIT 1:

O meu movements.xml tá assim:

<movevent type="StepIn" itemid="670" event="script" value="snow.lua"/>
<movevent type="StepIn" itemid="6580-6595" event="script" value="snow.lua"/>

 

EDIT 2:

Alguém pode me ajudar?

Editado por coriel
Link para o comentário
Compartilhar em outros sites

  • 0

o do caotic dá erro, porque ele usa o uid de um item num addevent, unique ids de itens não são estáticos.

 

o luck faz com que o item se transforma em outro completamente diferente usando essa linha:

 

doTransformItem(item.uid, item.itemid + 15)

 

o certo seria + 4

 

Editei o script original, vê se funciona:

 

TILE_SNOW = 670
TILE_FOOTPRINT_I = 6594
TILE_FOOTPRINT_II = 6598

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

if(isPlayerGhost(cid)) then
return true
end

if(item.itemid == TILE_SNOW) then
	doTransformItem(item.uid, TILE_FOOTPRINT_I)
elseif(item.itemid == TILE_FOOTPRINT_I) then
	doTransformItem(item.uid, TILE_FOOTPRINT_II)
else
	doTransformItem(item.uid, TILE_FOOTPRINT_I)
end

doDecayItem(item.uid)

return true
end

Editado por brun123
Link para o comentário
Compartilhar em outros sites

  • 0

Fala cara, o script que você postou alí no tópico ficou perfeito, não apresentou nenhum erro no servidor e nem no distro. Só que tipo, tem um único probleminha.. Vamos lá, se eu pisar em um chão de snow cujo id é 670, esse chão vai se transformar em duas pegadas logicamente, um tempinho depois, essas pegadas vão sair e voltar ao id normal, no caso, 670. Até aqui, nenhum problema.. Mas, se eu pisar em um chão de snow cujo id é 6588 por exemplo, também vai se transformar em duas pegadas, porem, um tempinho depois, ele se transforma em 670 e não 6588, no caso. Pode resolver isso? Vou postar a parte de snow do meu movements.xml e o script que você me passou. Grato!

 

movements.xml

<movevent type="StepIn" itemid="670" event="script" value="snow.lua"/>
<movevent type="StepIn" itemid="6580-6595" event="script" value="snow.lua"/>

 

snow.xml

TILE_SNOW = 670
TILE_FOOTPRINT_I = 6594
TILE_FOOTPRINT_II = 6598

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

	if(isPlayerGhost(cid)) then
	return true
	end

	if(item.itemid == TILE_SNOW) then
			doTransformItem(item.uid, TILE_FOOTPRINT_I)
	elseif(item.itemid == TILE_FOOTPRINT_I) then
			doTransformItem(item.uid, TILE_FOOTPRINT_II)
	else
			doTransformItem(item.uid, TILE_FOOTPRINT_I)
	end

	doDecayItem(item.uid)

return true
end

 

 

EDIT: Se alguém puder me ajudar..

Editado por coriel
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...