LE

Sistema de Queda Possivel?

Por LeoTK, 13 de abr. de 2015 em Scripts

resolvido
otserv
tibia
15
1.8k
LeoTKL
13 de abril de 2015 às 21:15

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?

valakasV
13 de abril de 2015 às 22:23

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 ^^

LeoTKL
13 de abril de 2015 às 22:28

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

KronoK
13 de abril de 2015 às 22:39

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 Abril 13 por Krono

AdministradorA
13 de abril de 2015 às 22:43

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
LeoTKL
13 de abril de 2015 às 22:46

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?

KronoK
14 de abril de 2015 às 11:44

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 Abril 14 por Krono

LeoTKL
14 de abril de 2015 às 12:24

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

AdministradorA
14 de abril de 2015 às 12:30

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.

LeoTKL
14 de abril de 2015 às 12:35

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?

david0703D
15 de abril de 2015 às 02:32

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 Abril 16 por david0703

3 semanas depois...
30 de abril de 2015 às 14:50

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.

SkymagnumS
01 de maio de 2015 às 11:39

Lol, é só colocar um nothing special com um actionid, e executar o script '-'.

KilluaK
01 de maio de 2015 às 19:18
Melhor resposta

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 Maio 1 por Killua

FurabioF
03 de maio de 2015 às 11:19

Tópico movido para a seção de dúvidas e pedidos resolvidos.