Quando ele sai do portal ele vai para onde? Porque é estranho ele ser teleportado pelo portal e depois que o tempo acaba ser novamente sendo que saiu da área. Ficou um pouco ambíguo, pode explicar mais detalhadamente? Como funciona e/ou você quer que funciona? Explica tudo que qualquer coisa eu refaço o script para você.
[PEDIDO] Remover tempo quando entra em portal
Por LeoPetryScript, 03 de jul. de 2020 em Scripts
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

info
Grupo: Campones
Registrado: 14/03/20
Posts: 25
Reputação: 0

Em 16/07/2020 em 18:08, Yan18 disse:Quando ele sai do portal ele vai para onde? Porque é estranho ele ser teleportado pelo portal e depois que o tempo acaba ser novamente sendo que saiu da área. Ficou um pouco ambíguo, pode explicar mais detalhadamente? Como funciona e/ou você quer que funciona? Explica tudo que qualquer coisa eu refaço o script para você.
então, eu mudei o sistema da porta para ficar mais simples, decidi fazer o sistema de kick pela function de stepIn e stepOut, estou usando essa script que peguei em um site, porém o stop event não está funcionando, se puder me ajudar, fico grato
local config = { time = 1, --Tempo, em minutos, parado para ser teleportado. toPos = {x = 1081, y = 1081, z = 9}, --Para onde o player será teleportado. events = {}, } function onStepIn(cid) config.events[cid] = addEvent(function() if isPlayer(cid) then doTeleportThing(cid, config.toPos) end end, config.time * 60 * 1000) return true end function onStepOut(cid) stopEvent(config.events[cid]) return true end
Editado Julho 23 por LeoPetryScript
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

12 horas atrás, LeoPetryScript disse:então, eu mudei o sistema da porta para ficar mais simples, decidi fazer o sistema de kick pela function de stepIn e stepOut, estou usando essa script que peguei em um site, porém o stop event não está funcionando, se puder me ajudar, fico grato
local config = { time = 1, --Tempo, em minutos, parado para ser teleportado. toPos = {x = 1081, y = 1081, z = 9}, --Para onde o player será teleportado. events = {}, } function onStepIn(cid) config.events[cid] = addEvent(function() if isPlayer(cid) then doTeleportThing(cid, config.toPos) end end, config.time * 60 * 1000) return true end function onStepOut(cid) stopEvent(config.events[cid]) return true end
Qual é a versão da sua TFS?
info
Grupo: Campones
Registrado: 14/03/20
Posts: 25
Reputação: 0

Em 24/07/2020 em 11:12, Yan18 disse:Qual é a versão da sua TFS?
[27/07/2020 19:00:00] We Do OTS, version 0.1.0 (Beta Version)
até queria trocar pra uma versão que agrupe os itens automaticamente na backpack, mas nao sei como se faz isso
Editado Julho 27 por LeoPetryScript
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

Testa assim:
local function teleportPlayer(cid, position) if isPlayer(cid) then doTeleportThing(cid, position) end end local config = { time = 1, --Tempo, em minutos, parado para ser teleportado. toPos = {x = 1081, y = 1081, z = 9}, --Para onde o player será teleportado. event = 0 } -------------------------------------------------------------------------------------------------- function onStepIn(cid) config.event = addEvent(teleportPlayer, config.time * 60 * 1000, cid, config.toPos) end function onStepOut(cid) stopEvent(config.event) return true end
Vê se permanece sem funcionar.
info
Grupo: Campones
Registrado: 14/03/20
Posts: 25
Reputação: 0

28 minutos atrás, Yan18 disse:Testa assim:
local function teleportPlayer(cid, position) if isPlayer(cid) then doTeleportThing(cid, position) end end local config = { time = 1, --Tempo, em minutos, parado para ser teleportado. toPos = {x = 1081, y = 1081, z = 9}, --Para onde o player será teleportado. event = 0 } -------------------------------------------------------------------------------------------------- function onStepIn(cid) config.event = addEvent(teleportPlayer, config.time * 60 * 1000, cid, config.toPos) end function onStepOut(cid) stopEvent(config.event) return true endVê se permanece sem funcionar.
acabei de testar, ele continua teleportando para fora mesmo depois de sair do sqm
Editado Julho 27 por LeoPetryScript
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

18 minutos atrás, LeoPetryScript disse:acabei de testar, ele continua teleportando para fora mesmo depois de sair do sqm
Que estranho. Mas, é uma quest? Me explica como funciona do começo ao fim, como que o player inicia, se clica em algo antes. Explica todo o procedimento.
info
Grupo: Campones
Registrado: 14/03/20
Posts: 25
Reputação: 0

6 minutos atrás, Yan18 disse:Que estranho. Mas, é uma quest? Me explica como funciona do começo ao fim, como que o player inicia, se clica em algo antes. Explica todo o procedimento.
Assim, é uma sala onde só pode entrar uma pessoa por vez, pois é uma sala de fusão e são colocados os itens em cima do altar para fazer a fusão. Entra na sala por uma porta que teleporta pra dentro.
Então como só pode entrar uma pessoa por vez, alguém pode entrar e ficar lá trancando a sala, pra não acontecer isso eu preciso de um script de que se o player fica na sala por mais de tantos minutos, ele é jogado pra fora, assim como está acontecendo, porém, se sair pela porta, cancele esse teleport, pois ele ja saiu da sala.
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

40 minutos atrás, LeoPetryScript disse:Assim, é uma sala onde só pode entrar uma pessoa por vez, pois é uma sala de fusão e são colocados os itens em cima do altar para fazer a fusão. Entra na sala por uma porta que teleporta pra dentro.
Então como só pode entrar uma pessoa por vez, alguém pode entrar e ficar lá trancando a sala, pra não acontecer isso eu preciso de um script de que se o player fica na sala por mais de tantos minutos, ele é jogado pra fora, assim como está acontecendo, porém, se sair pela porta, cancele esse teleport, pois ele ja saiu da sala.
Entendi, se tivesse explicado isso no tópico tinha ficado bem mais fácil de entender kkk.
Eu fiz um outro script para você, em movements mesmo. Mas, antes do script, abre o mapa no Remere's e coloca um unique_id em todos os pisos (um único unique id para todos os pisos) da área da fusão onde só fica 1 player. E após isso, substitua o seu código por esse:
-- FUNÇÃO PARA TELEPORTAR O JOGADOR -- local function TimerToKick(cid, pos, texto, time) if time <= 0 then doTeleportThing(cid, pos) cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, texto) else if time > 1 then cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minutos até ser teleportado.") elseif time == 1 then cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minuto até ser teleportado.") end addEvent(TimerToKick, 60000, cid, pos, text, time-1) end end -------------------------------------------------------------------------------------------------------------------- local unique_id = 6325 -- UNIQUE ID QUE COLOCOU NO PISO NO REMERES local kick_position = Position(1000, 1000, 7) -- POSIÇÃO ONDE O PLAYER SERÁ TELEPORTADO local texto = "Você foi teleportado." -- TEXTO QUE O PLAYER RECEBERÁ AO SER TELEPORTADO ----------------------------- CÓDIGO ----------------------------- function onStepIn(cid, item, position, fromPosition) if item.uid == unique_id then TimerToKick(cid, kick_position, texto, 5) -- O ÚLTIMO PARÂMETRO É O TEMPO EM MINUTOS PARA O PLAYER SER TELEPORTADO return true else return true end end
Deixei tudo comentado, mas, você só precisa colocar o número do unique id que colocou nos piso no Remeres na variável unique_id no script e colocar a coordenada correta para onde o player vai ser teleportado na variável kick_position.
E na tag xml em movements.xml:
<movevent event="StepIn" itemid="ID DO PISO" script="NOME DO ARQUIVO.lua"/>
Não sei se já configurou certo o xml do script, mas, só colocar o nome do arquivo onde falei e o id do piso da área.
Testa e me fala se der algum erro ou problema.
Editado Julho 27 por Yan18
info
Grupo: Campones
Registrado: 14/03/20
Posts: 25
Reputação: 0

1 hora atrás, Yan18 disse:Entendi, se tivesse explicado isso no tópico tinha ficado bem mais fácil de entender kkk.
Eu fiz um outro script para você, em movements mesmo. Mas, antes do script, abre o mapa no Remere's e coloca um unique_id em todos os pisos (um único unique id para todos os pisos) da área da fusão onde só fica 1 player. E após isso, substitua o seu código por esse:
-- FUNÇÃO PARA TELEPORTAR O JOGADOR -- local function TimerToKick(cid, pos, texto, time) if time <= 0 then doTeleportThing(cid, pos) cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, texto) else if time > 1 then cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minutos até ser teleportado.") elseif time == 1 then cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minuto até ser teleportado.") end addEvent(TimerToKick, 60000, cid, pos, text, time-1) end end -------------------------------------------------------------------------------------------------------------------- local unique_id = 6325 -- UNIQUE ID QUE COLOCOU NO PISO NO REMERES local kick_position = Position(1000, 1000, 7) -- POSIÇÃO ONDE O PLAYER SERÁ TELEPORTADO local texto = "Você foi teleportado." -- TEXTO QUE O PLAYER RECEBERÁ AO SER TELEPORTADO ----------------------------- CÓDIGO ----------------------------- function onStepIn(cid, item, position, fromPosition) if item.uid == unique_id then TimerToKick(cid, kick_position, texto, 5) -- O ÚLTIMO PARÂMETRO É O TEMPO EM MINUTOS PARA O PLAYER SER TELEPORTADO return true else return true end endDeixei tudo comentado, mas, você só precisa colocar o número do unique id que colocou nos piso no Remeres na variável unique_id no script e colocar a coordenada correta para onde o player vai ser teleportado na variável kick_position.
E na tag xml em movements.xml:
<movevent event="StepIn" itemid="ID DO PISO" script="NOME DO ARQUIVO.lua"/>Não sei se já configurou certo o xml do script, mas, só colocar o nome do arquivo onde falei e o id do piso da área.
Testa e me fala se der algum erro ou problema.
vou testar, xml só precisa stepin ou stepout tbm?
1 hora atrás, Yan18 disse:Entendi, se tivesse explicado isso no tópico tinha ficado bem mais fácil de entender kkk.
Eu fiz um outro script para você, em movements mesmo. Mas, antes do script, abre o mapa no Remere's e coloca um unique_id em todos os pisos (um único unique id para todos os pisos) da área da fusão onde só fica 1 player. E após isso, substitua o seu código por esse:
-- FUNÇÃO PARA TELEPORTAR O JOGADOR -- local function TimerToKick(cid, pos, texto, time) if time <= 0 then doTeleportThing(cid, pos) cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, texto) else if time > 1 then cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minutos até ser teleportado.") elseif time == 1 then cid:sendMessageText(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minuto até ser teleportado.") end addEvent(TimerToKick, 60000, cid, pos, text, time-1) end end -------------------------------------------------------------------------------------------------------------------- local unique_id = 6325 -- UNIQUE ID QUE COLOCOU NO PISO NO REMERES local kick_position = Position(1000, 1000, 7) -- POSIÇÃO ONDE O PLAYER SERÁ TELEPORTADO local texto = "Você foi teleportado." -- TEXTO QUE O PLAYER RECEBERÁ AO SER TELEPORTADO ----------------------------- CÓDIGO ----------------------------- function onStepIn(cid, item, position, fromPosition) if item.uid == unique_id then TimerToKick(cid, kick_position, texto, 5) -- O ÚLTIMO PARÂMETRO É O TEMPO EM MINUTOS PARA O PLAYER SER TELEPORTADO return true else return true end endDeixei tudo comentado, mas, você só precisa colocar o número do unique id que colocou nos piso no Remeres na variável unique_id no script e colocar a coordenada correta para onde o player vai ser teleportado na variável kick_position.
E na tag xml em movements.xml:
<movevent event="StepIn" itemid="ID DO PISO" script="NOME DO ARQUIVO.lua"/>Não sei se já configurou certo o xml do script, mas, só colocar o nome do arquivo onde falei e o id do piso da área.
Testa e me fala se der algum erro ou problema.
[27/07/2020 23:16:29] [Error - MoveEvents Interface]
[27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:onStepIn
[27/07/2020 23:16:29] Description:
[27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:11: attempt to index local 'cid' (a number value)
[27/07/2020 23:16:29] stack traceback:
[27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:11: in function 'TimerToKick'
[27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:28: in function <data/movements/scripts/tpStorages.lua:26>
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

1 hora atrás, LeoPetryScript disse:vou testar, xml só precisa stepin ou stepout tbm?
[27/07/2020 23:16:29] [Error - MoveEvents Interface]
[27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:onStepIn
[27/07/2020 23:16:29] Description:
[27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:11: attempt to index local 'cid' (a number value)
[27/07/2020 23:16:29] stack traceback:
[27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:11: in function 'TimerToKick'
[27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:28: in function <data/movements/scripts/tpStorages.lua:26>
Eu inverti o nome da função sendTextMessage haha, fiz tudo de cabeça. Testa agora:
-- FUNÇÃO PARA TELEPORTAR O JOGADOR -- local function TimerToKick(cid, pos, texto, time) if time <= 0 then doTeleportThing(cid, pos) cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, texto) else if time > 1 then cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minutos até ser teleportado.") elseif time == 1 then cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minuto até ser teleportado.") end addEvent(TimerToKick, 60000 * 5 * 60, cid, pos, text, time-1) end end -------------------------------------------------------------------------------------------------------------------- local unique_id = 6325 -- UNIQUE ID QUE COLOCOU NO PISO NO REMERE'S local kick_position = Position(1000, 1000, 7) -- POSIÇÃO ONDE O PLAYER SERÁ TELEPORTADO local texto = "Você foi teleportado." -- TEXTO QUE O PLAYER RECEBERÁ AO SER TELEPORTADO ----------------------------- CÓDIGO ----------------------------- function onStepIn(cid, item, position, fromPosition) if item.uid == unique_id then TimerToKick(cid, kick_position, texto, 5) -- O ÚLTIMO PARÂMETRO É O TEMPO EM MINUTOS PARA O PLAYER SER TELEPORTADO return true else return true end end
info
Grupo: Campones
Registrado: 14/03/20
Posts: 25
Reputação: 0

4 horas atrás, Yan18 disse:Eu inverti o nome da função sendTextMessage haha, fiz tudo de cabeça. Testa agora:
-- FUNÇÃO PARA TELEPORTAR O JOGADOR -- local function TimerToKick(cid, pos, texto, time) if time <= 0 then doTeleportThing(cid, pos) cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, texto) else if time > 1 then cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minutos até ser teleportado.") elseif time == 1 then cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você tem " ..time.. " minuto até ser teleportado.") end addEvent(TimerToKick, 60000 * 5 * 60, cid, pos, text, time-1) end end -------------------------------------------------------------------------------------------------------------------- local unique_id = 6325 -- UNIQUE ID QUE COLOCOU NO PISO NO REMERE'S local kick_position = Position(1000, 1000, 7) -- POSIÇÃO ONDE O PLAYER SERÁ TELEPORTADO local texto = "Você foi teleportado." -- TEXTO QUE O PLAYER RECEBERÁ AO SER TELEPORTADO ----------------------------- CÓDIGO ----------------------------- function onStepIn(cid, item, position, fromPosition) if item.uid == unique_id then TimerToKick(cid, kick_position, texto, 5) -- O ÚLTIMO PARÂMETRO É O TEMPO EM MINUTOS PARA O PLAYER SER TELEPORTADO return true else return true end end
Deu erro, mudei varias linhas pra ver se dava certo, continuava dando erro, então eu pensei no sistema de colocar storage... sistema resolvido :
---sistema de Kick por tempo--- local pos = {x = 1081, y = 1081, z = 9} -- localização para onde vai local tempo = 2 -- tempo em minutos function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) setPlayerStorageValue(cid, 29109, 1) addEvent(function() if getPlayerStorageValue(cid, 29109) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você foi jogado para fora.") -- para não bugar acento deixe em codificação ANSI doTeleportThing(cid, pos) setPlayerStorageValue(cid, 29109, 0) end end, tempo*60*1000) return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) doPlayerSetStorageValue(cid, 29109, 0) return true end
No Movements XML:
<movevent type="StepIn" uniqueid="xxxx" event="script" value="Nome do arquivo.lua"/> <movevent type="StepOut" uniqueid="xxxx" event="script" value="Nome do arquivo.lua"/>
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

5 horas atrás, LeoPetryScript disse:Deu erro, mudei varias linhas pra ver se dava certo, continuava dando erro, então eu pensei no sistema de colocar storage... sistema resolvido :
---sistema de Kick por tempo--- local pos = {x = 1081, y = 1081, z = 9} -- localização para onde vai local tempo = 2 -- tempo em minutos function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) setPlayerStorageValue(cid, 29109, 1) addEvent(function() if getPlayerStorageValue(cid, 29109) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você foi jogado para fora.") -- para não bugar acento deixe em codificação ANSI doTeleportThing(cid, pos) setPlayerStorageValue(cid, 29109, 0) end end, tempo*60*1000) return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) doPlayerSetStorageValue(cid, 29109, 0) return true end
No Movements XML:
<movevent type="StepIn" uniqueid="xxxx" event="script" value="Nome do arquivo.lua"/> <movevent type="StepOut" uniqueid="xxxx" event="script" value="Nome do arquivo.lua"/>
E que erro estava dando? Porque não adianta sair mudando várias linhas aleatoriamente. Mas enfim, que bom que deu certo.
info
Grupo: Campones
Registrado: 14/03/20
Posts: 25
Reputação: 0

2 horas atrás, Yan18 disse:E que erro estava dando? Porque não adianta sair mudando várias linhas aleatoriamente. Mas enfim, que bom que deu certo.
De cabeçar eu não lembro, porém eu mudava a linha que dava erro, e quando arrumava aquela, outra dava problema, exemplo de uma que foi simples é
"cid:sendtextmessage" meu tfs não reconheceu esse comando. Mesmo não dando nenhum erro no carregamento das movements, quando pisava no sqm ou dava erro, ou nada acontecia
E outra coisa simples foi o tempo, você colocou 60000 ms oq já seria 60 seg, então ficou 60s * 5 * 60
Fico grato pela ajuda de qualquer forma, obrigado por tentar resolver meu problema


info
Grupo: Campones
Registrado: 14/03/20
Posts: 25
Reputação: 0
Eu fiz esse script, porém falta uma coisa. Nesse lugar, tem um portal para se o player quiser sair antes do tempo acabar, porém mesmo ele saindo, quando o tempo acaba ele é teleportado para a kick position, alguém poderia me dizer como faço pra quando ele entrar no portal, parar o temporizador?
Editado Julho 3 por LeoPetryScript
esqueci de um detalhe