Ir para conteúdo
  • 0

Teria Como Fazer Isso?


MonsterOt

Pergunta

local time = 3.25 -- bota aki só os segundos

local newpos = {x=125,y=47,z=7} -- local para onde o player será teleportado

local events = {} -- não modifique

 

local function doKickPlayer(cid)

if not isCreature(cid) then

events[cid] = nil

return

end

doTeleportThing(cid, newpos, false)

doSendMagicEffect(newpos, 10)

end

 

function onStepIn(cid, item, position, fromPosition)

if events[cid] then stopEvent(events[cid]) end

events[cid] = addEvent(doKickPlayer, time * 60 * 1000, cid)

return true

end

 

Teria como usar isso nesse script?

 

local config = {

fromPos = {x=118, y=49, z=6}, -- posição superior esquerda do mapa

toPos = {x=126, y=53, z=6}, -- posição inferior direita do mapa

}

 

pra macar uma area onde o player pode ficar sómente um certo tempo..

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

Posts Recomendados

  • 0

Não entendo muito dessas paradas de script mas não custa tentar:

 

if isPlayer(getThingFromPos(fromPos)getThingToPos(toPos)) then

 

 

 

Ficando +/- assim:

 

function onStepIn(cid, item, position, fromPosition)

if events[cid] then stopEvent(events[cid]) end

if isPlayer(getThingFromPos(fromPos)getThingToPos(toPos)) then

events[cid] = addEvent(doKickPlayer, time * 60 * 1000, cid)

return true

end

 

 

 

Não tenhu ctz se vai dar certo...

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

  • 0

Use assim:

local time = 3.25 -- bota aki só os segundos

local newpos = {x=125,y=47,z=7}

local events = {} -- não modifique

 

local seilar = {x = 100, y = 100, z = 7}

local seilas = {x = 100, y = 100, z = 7}

 

function back(cid)

 

if isInArea(getCreaturePosition(cid), seilar, seilas) then

doTeleportThing(cid, newpos)

end

end

 

if isPlayer(cid) then

for _, pid in ipairs(getPlayersOnline()) do

addEvent(back, 1000, pid) ---- tempo (1000 = 1 segundo)

doSendMagicEffect(getCreaturePosition(pid), 10) --- Efeito

end

 

return true

end

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

  • 0

Não, ponha em movements, e adicione o actionid em um tile, quando o player pisar irá retornar ao lugar após tanto tempo.

 

Mais esqueci de adicionar isto no script:

 

Em data/movements/scripts crie um arquivo.lua nomeie para comeback e adicione:

function onStepIn(cid, item)

 

local time = 3.25 -- bota aki só os segundos

local newpos = {x=125,y=47,z=7}

local events = {} -- não modifique

 

local seilar = {x = 100, y = 100, z = 7} --- de onde para teleportar

local seilas = {x = 100, y = 100, z = 7} --- ate onde para teleportar

 

function back(cid)

 

if isInArea(getCreaturePosition(cid), seilar, seilas) then

doTeleportThing(cid, newpos)

end

end

 

if isPlayer(cid) then

for _, pid in ipairs(getPlayersOnline()) do

addEvent(back, 1000, pid) ---- tempo (1000 = 1 segundo)

doSendMagicEffect(getCreaturePosition(pid), 10) --- Efeito (/z)

end

 

return true

 

end

Editando:

 

-Verde: Variáveis, qualquer duvida pergunte.

 

Em movements.xml adicione:

<movevent type="StepIn" actionid="1755" event="script" value="comeback.lua"/>

Se não souber adicionar o tile no RME pergunte.

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

  • 0

@Duvida

 

local seilar = {x = 100, y = 100, z = 7} --- de onde para teleportar

local seilas = {x = 100, y = 100, z = 7} --- ate onde para teleportar

 

Nao entendi, na hora que pisa no tile ira começa um tempo nesse local que esta marcado ai em cima?

 

Nao tem como fazer isso só que com esse script?

ai só adicionar o tempo e tal que nao sei faze '-'

 

local config = {

fromPos = {x=118, y=49, z=6}, -- posição superior esquerda do mapa, da area em que esta mapeado o sistema.

toPos = {x=126, y=53, z=6}, -- posição inferior direita do mapa, da area em que esta mapeado o sistema.

areaGain = {x=122, y=47, z=6} -- area que ele sera teleportado, depois do tempo

}

 

function onThink(interval, lastExecution, thinkInterval)

local playersInArea = getPlayerInArea(config.fromPos, config.toPos)

if #playersInArea == 1 then

doTeleportThing(playersInArea[1], config.areaGain)

doSendMagicEffect(getCreaturePosition(playersInArea[1]), 10)

end

return true

end

 

function getPlayerInArea(fromPos, toPos)

local online = getPlayersOnline()

local players = {}

for i=1, #online do

if isInArea(getPlayerPosition(online), fromPos, toPos) then

players[#players+1] = online

end

end

return players

end

Link para o comentário
Compartilhar em outros sites

  • 0

É dessa posição: local seilar = {x = 100, y = 100, z = 7} --- de onde para teleportar

 

Até essa: local seilas = {x = 100, y = 100, z = 7} --- ate onde para teleportar

 

Ou seja, todos tiles que estiverem entre essas duas posições será teleportado, assim sendo:

 

local seilar = {x = 100, y = 100, z = 7} --- de onde para teleportar --- Seria o tile mais a esquerda de cima.

local seilas = {x = 100, y = 100, z = 7} --- ate onde para teleportar ---- Seria o tile mais direita de baixo.

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

  • 0

Esqueci um end, coloca assim:

 

function onStepIn(cid, item)

 

local time = 3.25 -- bota aki só os segundos

local newpos = {x=125,y=47,z=7}

local events = {} -- não modifique

local seilar = {x = 100, y = 100, z = 7} --- de onde para teleportar

local seilas = {x = 100, y = 100, z = 7} --- ate onde para teleportar

 

if not isCreature(cid) then return LUA_ERROR end

function back(cid)

 

if isInArea(getCreaturePosition(cid), seilar, seilas) then

doTeleportThing(cid, newpos)

end

end

 

if isPlayer(cid) then

for _, pid in ipairs(getPlayersOnline()) do

addEvent(back, 1000, pid) ---- tempo (1000 = 1 segundo)

doSendMagicEffect(getCreaturePosition(pid), 10) --- Efeito (/z)

end

 

return true

 

end

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

  • 0

Acho que adicionei uma função atoa, esse deve funcionar:

 

local time = 3.25 -- bota aki só os segundos

local newpos = {x=125,y=47,z=7} --- onde ira teleporat

local events = {} -- não modifique

local seilar = {x = 100, y = 100, z = 7} --- de onde para teleportar

local seilas = {x = 100, y = 100, z = 7} --- ate onde para teleportar

 

function back(cid)

 

if isInArea(getCreaturePosition(cid), seilar, seilas) then

doTeleportThing(cid, newpos)

end

end

 

if isPlayer(cid) then

for _, pid in ipairs(getPlayersOnline()) do

addEvent(back, 1000, pid) ---- tempo (1000 = 1 segundo)

doSendMagicEffect(getCreaturePosition(pid), 10) --- Efeito (/z)

end

 

return true

 

end

Link para o comentário
Compartilhar em outros sites

  • 0

Testado, funcionou esse:

 

Em data/movements/scripts:

 

comeback.lua:

function onStepIn(cid, item)

 

if isPlayer(cid) then

addEvent(doCreatureExecuteTalkAction, 1, cid, 'hfsaufhsajf82', true)

end

return true

end

Em movements.xml:

<movevent type="StepIn" actionid="1755" event="script" value="comeback.lua"/>

Em data/talkactions/scripts:

 

talkacome.lua

function onSay(cid, words, param)

local to = {x = 666, y = 1031, z = 15} -- Para onde levara o player

local area1 = {x = 661, y = 1026, z = 15} -- Ponta de cima na esquerda na area que o tp leva

local area2 = {x = 671, y = 1036, z = 15} -- Ponta de baixo na direita na area que o tp leva

 

function back(cid)

if isInArea(getCreaturePosition(cid), area1, area2) then

doTeleportThing(cid, to)

end

end

 

if isPlayer(cid) then

addEvent(back, 5000, cid) -- tempo (1000 = segundo)

end

return true

 

end

Em talkactions.xml adicione:

<talkaction words="hfsaufhsajf82" event="script" value="talkcome.lua"/>
Editado por Newtonnotwen
Link para o comentário
Compartilhar em outros sites

  • 0

Nao Funcionou =(

 

fiquei mais de 5 segundos nessa area

 

 

 

local area1 = {x = 128, y = 41, z = 7} -- Ponta de cima na esquerda na area que o tp leva

local area2 = {x = 140, y = 57, z = 7} -- Ponta de baixo na direita na area que o tp leva

 

e nao levo para essa

 

local to = {x = 125, y = 47, z = 7} -- Para onde levara o player
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...