Ir para conteúdo
  • 0

Sistema de Queda Possivel?


LeoTK

Pergunta

Eae galera do xtibia tava aqui e pensei em algo ao meu ver simples porém pode ser mais trabalhoso etc...

 

Tava aqui pensando no seguinte seria possivel criar um sistema de queda no tibia ao player chegar na beirada de algum lugar por exemplo em cima de uma ponte com 1 floor de altura e andar para o lado e cair tirando hp e deixando parado por um tempo como se ficasse atordoado ... seria bem legal alguem pode me dizer se é possivel e se daria muito trabalho para fazer?

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Cara eu não gosto desse tipo de gambiarra, acho melhor e mais simples fazer assim:

 

cria cair.lua no data/movements/scripts e bota

local function stun(cid,time)
	mayNotMove(cid,true)
	addEvent(function()
		if isPlayer(cid) then mayNotMove(cid,false) end
	end,time * 1000)
end

function onStepIn(cid, item, position, fromPosition)
	local pos = position
	pos.z = pos.z + 1
	doTeleportThing(cid,pos)
	doSendMagicEffect(pos,31)
	doCreatureAddHealth(cid, - math.random(100,200))
	stun(cid,2)
    return true
end

No movements.xml bota

<movevent type="StepIn" actionid="1211" event="script" value="cair.lua"/>

Daí é só vc colocar actionID 1211 nos pisos que vc quer que funcionem como "buraco".

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

  • 0

sim, é possivel fazer isso, mais ficaria estranho demais, um geito mais facil de fazer é pelo movements tipo um teleport do andar de cima para o andar de baixo, e ao teleportar a vida do player sera removida, tem que ter um pouco de trabalho para fazer esse tipo de coisa, e é meio desnecessário, então eu mesmo não faria ^^

Link para o comentário
Compartilhar em outros sites

  • 0

bom realmente achei que isso se encaixaria mais em otclient pelo fato de ter mais flexibilidade e também isso se encaixaria em um servidor totalmente custom

Link para o comentário
Compartilhar em outros sites

  • 0

Achei uma forma bem simples, porém bem gambiarra. Veja

jb9EYhW.png

 

Ai voce adiciona uma moment (onstep) no nothing special, e pronto.

 

 

 

id: 459 (stairs)

Basta criar um moveevent onde ao pisar é removida a HP do player

function onStepIn(cid, item, position)
doPlayerAddHealth(cid, -1)
return TRUE
end

 

 

é isso ai.

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

  • 0
  • Administrador

id: 459 (stairs)

Basta criar um moveevent onde ao pisar é removida a HP do player

function onStepIn(cid, item, position)
doPlayerAddHealth(cid, -1)
return TRUE
end
Link para o comentário
Compartilhar em outros sites

  • 0

tendi, é então mais seria algo bem legal xD


 

id: 459 (stairs)

Basta criar um moveevent onde ao pisar é removida a HP do player

function onStepIn(cid, item, position)
doPlayerAddHealth(cid, -1)
return TRUE
end

 

mais ele não teria que descer também para o floor debaixo?

Link para o comentário
Compartilhar em outros sites

  • 0

Tem razão
Tentei fazer, se der certo me fala, pois não testei.

local position = player:getPosition()
	position.z = position.z - 1
local outfit = {male = 2317, female = 6560}
local tempo = 5000

function onStepIn(cid, item, position)
doPlayerAddHealth(cid, -1)
player:teleportTo(position)
addEvent(doCreatureSetNoMove, tempo, cid, false)
if getPlayerSex(cid) == 0 then
doSetCreatureOutfit(cid, outfit.female, tempo*1000)
else doSetCreatureOutfit(cid, outfit.male, tempo*1000)
end
return TRUE
end

Flz Abraço

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

  • 0

desculpe, porém não estou com meu servidor neste computador eu apenas publiquei a minha idéia caso se alguem puder testar e falar aqui para gente se funcionou ficarei grato xD

Link para o comentário
Compartilhar em outros sites

  • 0
  • Administrador

Na verdade esse tile vermelho que o Krono postou é um tile invisível apenas andável, você pode colocar direto aquele amarelo, que seria o tile adicionado em algumas escadas.

Link para o comentário
Compartilhar em outros sites

  • 0

tendi, porém uma dúvida o tile amarelo tem algum lugar que pode ser adicionado direto ou tem que por uma escada e copiar e ir colando?

Link para o comentário
Compartilhar em outros sites

  • 0

Pode ser usado também o StepOut... Coloca a action no sqm de chão e uma verificação no toPos pra ver se o chão é o tal 459...

[EDIT]

Tag no movements.xml

<movevent type="StepOut" actionid="4170" event="script" value="caindo.lua"/>

caindo.lua

function onStepOut(cid, item, toPosition, fromPosition)
	if getThingFromPos(toPosition).itemid == 459 then	doPlayerAddHealth(cid, -1)	end
end

[EDIT²]

Creio que o script pode ser feito também sem o uso de um sqm com esse item 459, ficaria assim

function onStepOut(cid, item, toPosition, fromPosition)
	if not getThingFromPos(toPosition).itemid == 0 then	doPlayerAddHealth(cid, -1)	end
end

[EDIT³]

O comando 'getThingFromPos' não pega o id do chão... worriedsmiley.gif

Se alguem descolar o comando que pega... Não sei se será necessário editar algo nas sources pra adicionar um "getTitleByPos"neutral.gif (pelo menos em base dash não pegou o id do chão)

 

[EDIT4]

Encontrei uma função interessante em um servidor antigo de poketibia...

function getSqmId(pos,t)-- Script by mock
	if hasSqm(pos) or t then
		pos.stackpos = 0
		local i = getTileThingByPos(pos)
		return i
	end
	return nil
end

Então, ficaria assim [necessitando dos sqm em volta com o id 459]

 

Tag no movements.xml

<movevent type="StepOut" actionid="4170" event="script" value="caindo.lua"/>

caindo.lua

function getSqmId(pos,t)-- Script by mock
	if hasSqm(pos) or t then
		pos.stackpos = 0
		local i = getTileThingByPos(pos)
		return i
	end
	return {itemid = 0} --Editado pra não dar erro ali em baixo
end

function onStepOut(cid, item, toPosition, fromPosition)
    if getThingFromPos(toPosition).itemid == 459 then    doPlayerAddHealth(cid, -1)    end
end
Editado por david0703
Link para o comentário
Compartilhar em outros sites

  • 0

A maneira mais fácil e simples seria colocar aquele Tile amarelo que faz o player descer de floor, e criar um StepIn que remova uma quantidade de health do player, e o deixe bebado ou paralisado. Dai coloca a uniqueid no Tile de baixo.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...