Ir para conteúdo
  • Cadastre-se

(Resolvido)entrar no teleport por determinado tempo e depois ser teleportado depois de 10m


Ir para solução Resolvido por Vodkart,

Posts Recomendados

como faço pra quando o player entrar no teleport
ai dps de 10 minutos se ele nao entrar no outro teleport (dentro da sala) ele fosse jogado pra outra position automatico? (tipo se ele ficasse afk)

Link para o post
Compartilhar em outros sites

faz uma função para checar se está na sala ainda, se estiver só jogar pra position inicial(configuravel)

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@poko360 

Veja se é isso que você quer.

 

1 - Vá em data/globalevents crie um arquivo chamado salaTempo.lua e adicione isso dentro: 


x_inicial = 158 -- Posição X inicial da sala
x_final = 161 -- Posição X final da sala 
y_inicial = 52 -- Posição Y inicial da sala 
y_final = 55 -- Posição Y final da sala
z_andar = 7 -- Andar da sala (Posição Z)

teleport_effect = 10 -- Efeito do teleport
position_teleport = {x=164,y=54,z=7}-- Posição aonde o player será teleportado depois dos 10 minutos.

function onThink(interval, lastExecution)
    
    for i = x_inicial, x_final do
        for j = y_inicial, y_final do

            local position = {x=i,y=j,z=z_andar,stackpos=STACKPOS_TOP_CREATURE}
            local player = getTopCreature(position)
            if (isPlayer(player.uid)) then
                local newPos = doTeleportThing(player.uid, position_teleport)
                doSendMagicEffect(getThingPos(player.uid), teleport_effect)
                break
            end
        end
    end
    return true
end  

 

2 - Vá em data/globalevents e abra o arquivo globalevents.xml e cole essa linha dentro dele: 

<globalevent name="tempoSala" interval="600" script="tempoSala.lua" />

 

Configurando: 

 

(Pense em um retângulo, o retângulo seria a sala)

 

x_inicial é o começo do retângulo.

x_final é o final do retângulo.

y_inicial é o ponto em cima do retângulo.

y_final é o ponto em baixo do retângulo.

z_andar é o andar que esta a sala.

 

Link para o post
Compartilhar em outros sites

@Vodkart 
eu tentei fazer pelo "addevent" mas n consegui remover a storage quando o player saisse da sala manualmente
(n conheço mt a função addevent)

@MatteusDeli
 mas tipo, como eu coloco pra zerar a storage caso o player saia da sala manualmente? queria tipo pro script so funcionar se ele passasse 10min la dentro sem sair por si só, nesse script q vc colocou, o player vai ser jogado a cada 10m (sem o tempo inicial que o player entra na sala =/ )

script original (sem o addevent)

Spoiler

function onStepIn(cid, item, position, fromPosition)
local getP = getPoints(cid)
if getPoints(cid) >= 800 then
doTeleportThing(cid, {x=56, y=1463, z=7})
doPlayerRemovePoints(cid, 800)
doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", 25)
doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", MESSAGE_STATUS_CONSOLE_BLUE)
else
doCreatureSay(cid, "Voce nao possui 800 online coins na sua account.", TALKTYPE_ORANGE_1)
doTeleportThing(cid, fromPosition, true)
end
return true
end

 

Editado por poko360 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@poko360 Veja se eu entendi o que voce quer, testa ai:

 

Em globalevents altere o script para este

Citar


x_inicial = 265 -- Posição X inicial da sala
x_final = 268 -- Posição X final da sala 
y_inicial = 580 -- Posição Y inicial da sala 
y_final = 582 -- Posição Y final da sala
z_andar = 9 -- Andar da sala (Posição Z)

teleport_effect = 10 -- Efeito do teleport
position_teleport = {x=164,y=54,z=7}-- Posição aonde o player será teleportado depois dos 10 minutos.
storageInRoom = 88774 -- o mesmo storage que voce colocou no script moveevent

function onThink(interval, lastExecution)
    
    for i = x_inicial, x_final do
        for j = y_inicial, y_final do

            local position = {x=i,y=j,z=z_andar,stackpos=STACKPOS_TOP_CREATURE}
            local player = getTopCreature(position)
            if (isPlayer(player.uid)) then
                if (getPlayerStorageValue(player.uid, storageInRoom) < os.time()) then
                    local newPos = doTeleportThing(player.uid, position_teleport)
                    doSendMagicEffect(getThingPos(player.uid), teleport_effect)
                    setPlayerStorageValue(player.uid, storageInRoom, -1)
                    break
                end
            end
        end
    end
    return true
end  

 

No globalevent.xml altere para essa linha: 

Citar

	<globalevent name="tempoSala" interval="1" script="tempoSala.lua" />

 

Altere seu script em moveevents para este:

Citar

storageInRoom = 88776
time = 10 -- tempo em minutos que o player podera ficar na sala

function onStepIn(cid, item, pos)

local getP = getPoints(cid)

    if getP >= 800 then
        if (isPlayer(cid)) then
            if (getPlayerStorageValue(cid, storageInRoom) < os.time()) then
                setPlayerStorageValue(cid, storageInRoom, os.time() + (time * 60))
            end
        end
        
        doTeleportThing(cid, {x=56, y=1463, z=7})
        doPlayerRemovePoints(cid, 800)
        doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", 25)
        doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", MESSAGE_STATUS_CONSOLE_BLUE)
    else
        doCreatureSay(cid, "Voce nao possui 800 online coins na sua account.", TALKTYPE_ORANGE_1)
        doTeleportThing(cid, fromPosition, true)
    end
    
return TRUE
end

 

 

Link para o post
Compartilhar em outros sites

@poko360 Acredito que agora vai funcionar

 

1 - Apague o script do globalevent/scripts e exclua a linha do globalevents.XML

 

2 - Vá em creatureevents/scripts e crie um arquivo chamado teleportSala.lua e cole isso:

Citar

x_inicial = 158 -- Posição X inicial da sala
x_final = 161 -- Posição X final da sala 
y_inicial = 52 -- Posição Y inicial da sala 
y_final = 55 -- Posição Y final da sala
z_andar = 7 -- Andar da sala (Posição Z)

teleport_effect = 10 -- Efeito do teleport
position_teleport = {x=160,y=55,z=7}-- Posição aonde o player será teleportado depois dos 10 minutos.
storageInRoom = 88779 -- o mesmo storage que voce colocou no script moveevent
storageStop = 88180 

function onThink(cid, interval)

    if (getPlayerStorageValue(cid, storageInRoom) <= os.time() and getPlayerStorageValue(cid, storageStop) >= 1) then

        for i = x_inicial, x_final do
            for j = y_inicial, y_final do

                local position = {x=i,y=j,z=z_andar,stackpos=STACKPOS_TOP_CREATURE}
                local player = getTopCreature(position)

                if (isPlayer(player.uid)) then
                    if(getThingPos(cid).x == position.x and getThingPos(cid).y == position.y and getThingPos(cid).z == position.z) then
                        local newPos = doTeleportThing(cid, position_teleport)
                        doSendMagicEffect(getThingPos(cid), teleport_effect)
                        setPlayerStorageValue(cid, storageStop, -1)
                        break
                    else
                        setPlayerStorageValue(cid, storageStop, -1)
                        break
                    end
                end
            end
        end
    end
    return true
end

 

2.1 - Registre o evento no creatureevents.XML e no Login.lua em creatureevents/scripts:

Citar

Creatureevents.XML


<event type="think" name="teleportSala" interval="5" event="script" value="teleportSala.lua"/>

Login.LUA


registerCreatureEvent(cid, "teleportSala")

 

 

3 - Altere o script que esta em movements/scripts para este:

Citar

storageInRoom = 88779
storageStop = 88180
time = 10 -- tempo em minutos que o player podera ficar na sala

function onStepIn(cid, item, pos)

local getP = getPoints(cid)

    if getP >= 800 then
        
        if (isPlayer(cid)) then
            if (getPlayerStorageValue(cid, storageInRoom) < os.time()) then
                setPlayerStorageValue(cid, storageInRoom, os.time() + (time * 60))
                setPlayerStorageValue(cid, storageStop, 1)
            end
        end
        
        doTeleportThing(cid, {x=56, y=1463, z=7})
        doPlayerRemovePoints(cid, 800)
        doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", 25)
        doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", MESSAGE_STATUS_CONSOLE_BLUE)
    else
        doCreatureSay(cid, "Voce nao possui 800 online coins na sua account.", TALKTYPE_ORANGE_1)
        doTeleportThing(cid, fromPosition, true)
    end
    
return TRUE
end

 

 

Link para o post
Compartilhar em outros sites

funcionou, agr so falta tipo outro movement que remove essa storage, pra eu colocar dentro da sala, caso o player saia manualmente (pra n bugar)

é so criar um movement simples e colocar isso?
setPlayerStorageValue(cid, storageStop, -1)

Link para o post
Compartilhar em outros sites

@poko360 sim, mais se o player sair da area que voce definiu no script ele já vai setar o storage pra -1, entao eu acho que nem precisa fazer outro script de movements, é só colocar um tp normal mesmo.

Editado por MatteusDeli (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

ahhhhh, eu fiz um teste aqui, se eu entrar no tp dnv, ele n ta zerando o tempo, ele continua contando o tempo da primeira entrada =s

ai botei 1 minuto pra testar, fiquei 1 minuto fora do quadrado, quando fui entrar no quadrado dnv, o script me jogou fora
tipo, ele so ta zerando a storage dps q eu sou jogado pra fora (nao quando eu saio manualmente)

Editado por poko360 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

-------------

 

creaturescript

 

roomkick.lua

function onLogin(cid)
    registerCreatureEvent(cid, "RoomKickCheck")
	return true
end
function onThink(cid, interval)
    if getPlayerStorageValue(cid, 982301) > 0 and getPlayerStorageValue(cid, 982300) - os.time() <= 0 then
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
        setPlayerStorageValue(cid, 982301, 0)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"seu tempo na sala acabou")
    end
    return true
end

TAG

 

<event type="think" name="RoomKickCheck" script="roomkick.lua"/>
<event type="login" name="RoomKickLogin" script="roomkick.lua"/>

 

Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@poko360 estranho... tenta separar os arquivos do movements, assim

 

 

roomkick1.lua

function onStepIn(cid, item, position, fromPosition)
    local getP = getPoints(cid)
    local minutos = 10 -- 10 minutos
    
    if not isPlayer(cid) then
        return true
    end
    
    if getPoints(cid) < 800 then
        doCreatureSay(cid, "Voce nao possui 800 online coins na sua account.", TALKTYPE_ORANGE_1)
        doTeleportThing(cid, fromPosition, true)
        return true
    end
    doTeleportThing(cid, {x=56, y=1463, z=7})
    doPlayerRemovePoints(cid, 800)
    setPlayerStorageValue(cid, 982301, 1)
    setPlayerStorageValue(cid, 982300, os.time()+ minutos*60)
    doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", 25)
    doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", MESSAGE_STATUS_CONSOLE_BLUE)
    return true
end


roomkick2.lua

function onStepOut(cid, item, position, lastPosition, fromPosition)
    if not isPlayer(cid) then
        return true
    end
    setPlayerStorageValue(cid, 982301, 0)
    return true
end

 

TAG

<movevent type="StepIn" actionid="16530" event="script" value="roomkick1.lua"/>
<movevent type="StepOut" actionid="16531" event="script" value="roomkick2.lua"/>

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • Solução

@poko360 Testei aqui e funcionou.

 

18:33 [Vodkart]:  Iniciou uma hunt em Nishapur 1 [PVP] 


18:34 seu tempo na sala acabou

 

e fui jogado para o Templo.

 

Unica coisa que esqueci foi de colocar no TP final a coordenadas para sair... 

 

Use assim os movements

 


roomkick1.lua

function onStepIn(cid, item, position, fromPosition)

    local getP = getPoints(cid)
    local minutos = 1 -- 1 minuto
    
    if not isPlayer(cid) then
        return true
    end
    
    if getPoints(cid) < 800 then
        doCreatureSay(cid, "Voce nao possui 800 online coins na sua account.", TALKTYPE_ORANGE_1)
        doTeleportThing(cid, fromPosition, true)
        return true
    end
    doTeleportThing(cid, {x=56, y=1463, z=7})
    doPlayerRemovePoints(cid, 800)
    setPlayerStorageValue(cid, 982301, 1)
    setPlayerStorageValue(cid, 982300, os.time()+ minutos*60)
    doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", 25)
    doBroadcastMessage("["..getCreatureName(cid).."]: \ Iniciou uma hunt em Nishapur 1 [PVP] \n Gastou: 800x Online coins \n Account balance: [".. getP .."] online coins", MESSAGE_STATUS_CONSOLE_BLUE)
    return true
end

roomkick2.lua

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return true
    end
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    setPlayerStorageValue(cid, 982301, 0)
    return true
end

TAG

<movevent type="StepIn" actionid="16530" event="script" value="roomkick1.lua"/>
<movevent type="StepIn" actionid="16531" event="script" value="roomkick2.lua"/>

 

@poko360 acabei de arrumar os movements que estavam errado... favor atualizar eles agr!!

Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart
eu tava adicionando no login.lua tambem, so que ja tinha no script, por isso nao tava funcionando. valeuu!!

se eu quiser botar em outro script, é so colocar essas duas linhas né?

    setPlayerStorageValue(cid, 982301, 1)
    setPlayerStorageValue(cid, 982300, os.time()+ minutos*60)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo