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 ^^
info
Grupo: Visconde
Registrado: 28/02/14
Posts: 416
Reputação: +90
Gênero: Masculino

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
Achei uma forma bem simples, porém bem gambiarra. Veja

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
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

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
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?
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
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
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

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.
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?
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... ![]()
Se alguem descolar o comando que pega... Não sei se será necessário editar algo nas sources pra adicionar um "getTitleByPos"
(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
info
Grupo: Conde
Registrado: 18/01/12
Posts: 988
Reputação: +327
Gênero: Masculino
Char no Tibia: Xerife Woody

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.
info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char no Tibia: Maurolkit

Lol, é só colocar um nothing special com um actionid, e executar o script '-'.
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

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








info
Grupo: Marquês
Registrado: 05/12/11
Posts: 1.2k
Reputação: +173
Gênero: Masculino
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?