Ir para conteúdo

Featured Replies

Postado
  • Autor

Continuou do mesmo jeito, ainda entra na pz estando pk, tanto na versão para kina, quanto na versão para mages :x

Eu fiz mas nem testei, estou meio sem tempo, porém a lógica está certa, tente então desta forma :

local exhauststorage = 20209 -- storage para o exhaust
local exhaust = 10 -- tempo do exhaust em segundos
local quantpos = 30 -- posições x ou y que o personagem irá avançar, por exemplo, aqui irá se mover 30 posições pra direção em que estiver
local voc = { --dependendo da vocação, a movimentação será diferente
	{3,4,7,8,11,12}, -- vocações melee, que no caso são knight e paladin
	{1,2,5,6,9,10}, -- vocações mágicas, que são sorc e druid
}

--Função da movimentação para paladin e knight
function moveMelee(cid, t)
	if(isCreature(cid)) then
		local tmp = getPlayerLookPos(cid)
		if(not isCreature(getThingFromPos(tmp).uid) and doTileQueryAdd(cid, tmp)~=1 and t>0) then
			if(getCreatureSkullType(cid) != SKULL_NONE and getTilePzInfo(tmp)==1) then
				doCreatureSetNoMove(cid, false)
				return TRUE
			end
			doCreatureSetNoMove(cid, true)
			t = t-1
			doSendMagicEffect(getCreaturePos(cid), 15)
			doMoveCreature(cid, getPlayerLookDir(cid))
			return addEvent(moveMelee, 10, cid, t)
		else
			doCreatureSetNoMove(cid, false)
			return TRUE
		end
	else
		return TRUE
	end
end

--Função da movimentação para sorcerer e druid
function moveMagic(cid)
	if(isCreature(cid)) then
		tmp = getCreaturePos(cid)
		dir = getPlayerLookDir(cid)
			for i=1, quantpos do
				if(dir==0) then
					tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z}
				elseif(dir==1) then
					tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z}
				elseif(dir==2) then
					tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z}
				elseif(dir==3) then
					tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z}
				end
				if (doTileQueryAdd(cid, tmp)==1 or (getCreatureSkullType(cid)!=SKULL_NONE and getTilePzInfo(tmp)==1)) then
					if(dir==0) then
						tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z}
					elseif(dir==1) then
						tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z}
					elseif(dir==2) then
						tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z}
					elseif(dir==3) then
						tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z}
					end
					break
				end
			end
		doTeleportThing(cid, tmp)
		doSendMagicEffect(getCreaturePos(cid), 49)
		doCreatureSetNoMove(cid, false)
		return TRUE
	else
		return TRUE
	end
end

--Efeitos para a movimentação de sorc e druid
function magicEffect(cid, i)
	if(isCreature(cid)) then
		local atual = getCreaturePosition(cid)
			local posefeitos = {
				{x=(atual.x)-1, y=(atual.y)-1, z=atual.z},
				{x=atual.x, y=(atual.y)-1, z=atual.z},
				{x=(atual.x)+1, y=(atual.y)-1, z=atual.z},
				{x=(atual.x)+1, y=atual.y, z=atual.z},
				{x=(atual.x)+1, y=(atual.y)+1, z=atual.z},
				{x=atual.x, y=(atual.y)+1, z=atual.z},
				{x=(atual.x)-1, y=(atual.y)+1, z=atual.z},
				{x=(atual.x)-1, y=atual.y, z=atual.z},
			}
			if(i<=8) then
				doSendMagicEffect({x=posefeitos[i].x, y=posefeitos[i].y, z=posefeitos[i].z}, 39)
			end
		if(i>8) then
			doSendMagicEffect(atual, 49)
			return moveMagic(cid) 
		end
		return addEvent(magicEffect, 50, cid, i+1)
	else
		return TRUE
	end
end

--Função principal
function onSay(cid, words, param)
	if(getPlayerStorageValue(cid, exhauststorage)>os.time()) then
		doPlayerSendCancel(cid, "Voce deve esperar "..(getPlayerStorageValue(cid, exhauststorage)-os.time()).." segundos para usar a movimentação novamente.")
		return TRUE
	else
		setPlayerStorageValue(cid, exhauststorage, os.time()+exhaust)
		local v = getPlayerVocation(cid)
		for i=1, #voc[1] do
			if(v==voc[1][i]) then
				return moveMelee(cid, quantpos),doCreatureSay(cid, "Movimentação ultra rápida!", 1)
			end
		end
		return magicEffect(cid, 1),doCreatureSay(cid, "Teleport!", 1),doCreatureSetNoMove(cid, true)
	end
end

Bom, se não der, quarta-feira tenho o dia livre e tento rever melhor, tá difícil arranjar um tempinho livre.

  • Respostas 12
  • Visualizações 1.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • bielzinhocrazy
    bielzinhocrazy

    Realmente, baixei um OT da versão 9,83, e não funcionou. Bom, eu não sei as causas porque sempre fiz scripts na versão 8.6, e faz muito, MUUUITO tempo que não faço códigos pra tibia (uns 3 a 4 anos, e

  • bielzinhocrazy
    bielzinhocrazy

    Pra limitar é só fazer a verificação se está pk e se é pz zone, se for, não teleportar pra dentro da pz, implementei já no script, tente com este código : local exhauststorage = 20209 -- storage par

  • bielzinhocrazy
    bielzinhocrazy

    Eu fiz mas nem testei, estou meio sem tempo, porém a lógica está certa, tente então desta forma : local exhauststorage = 20209 -- storage para o exhaust local exhaust = 10 -- tempo do exhaust em seg

Postado

Continuou na mesma :/

 

Obs: Estou te dando rep, por tentar, e principalmente por se dar ao trabalho de responder, não são todos nesse fórum que fazem o mesmo.

Valeu ai  ;D

  • 2 weeks later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo