FA

[Resolvido] !fly para PDA!

Por falasque, 19 de mar. de 2014 em Resolvidos

resolvido
7
1.3k
falasqueF
19 de março de 2014 às 23:17

Gostaria de pedir o sistema de !fly igual pxg pra PDA! Valeu.

O sistema consiste em quando estiver no fly e falar !fly o player ande sozinho até falar !fly denovo.

 

Aproveitando o tópico... Já acharam alguma maneira de abrir o novo cliente da PXG?

Editado Março 19 por Jose98

zipter98Z
20 de março de 2014 às 12:50
local configuration = {
    storage = 918311,
    fly_storage = 17000,    --Storage do Fly no seu servidor.
}
local a = 0
function isWalkable(pos)-- by Nord / editado por Omega
    if isCreature(getTopCreature(pos).uid) then
        return false
    elseif getTileInfo(pos).protection then
        return false
    else
        if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid ~= 0 then 
            if hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then
                return false
            end
        end
    end
    return true
end
function autoWalk(cid, id)
    if not isCreature(cid) then 
        if id then
            return db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = 918311 AND player_id = "..id)
        end
    elseif getPlayerStorageValue(cid, configuration.storage) < 1 then
        return true
    end
    local tab = {
        [0] = {x = getThingPos(cid).x, y = getThingPos(cid).y - 1, z = getThingPos(cid).z},
        [1] = {x = getThingPos(cid).x + 1, y = getThingPos(cid).y, z = getThingPos(cid).z},
        [2] = {x = getThingPos(cid).x, y = getThingPos(cid).y + 1, z = getThingPos(cid).z},
        [3] = {x = getThingPos(cid).x - 1, y = getThingPos(cid).y, z = getThingPos(cid).z},
    }
    local lookdir = getCreatureLookDir(cid)
    local topos = tab[lookdir]
    if getPlayerStorageValue(cid, configuration.storage) < 1 or getPlayerStorageValue(cid, configuration.fly_storage) < 1 then
        if getPlayerStorageValue(cid, configuration.fly_storage) < 1 then
            setPlayerStorageValue(cid, configuration.storage, -1)
        end
        return true
    elseif isWalkable(topos) then
        if getTileThingByPos({x = topos.x, y = topos.y, z = topos.z, stackpos = 0}).itemid == 0 then
            doCombatAreaHealth(cid, 0, topos, 0, 0, 0, CONST_ME_NONE)
            doCreateItem(11676, 1, topos)
        end
        doTeleportThing(cid, topos)
        a = a + 1
    else
        setPlayerStorageValue(cid, configuration.storage, -1)
        doPlayerSendTextMessage(cid, 27, "Há algum objeto à sua frente impedindo a passagem.")
        return true
    end
    addEvent(autoWalk, 500, cid, id)
end
function onSay(cid, words)
    if getPlayerStorageValue(cid, configuration.fly_storage) < 1 then
        return doPlayerSendCancel(cid, "Para usar este comando, você deve estar em Fly.")
    elseif getPlayerStorageValue(cid, configuration.storage) >= 1 then
        return setPlayerStorageValue(cid, configuration.storage, -1) and doPlayerSendTextMessage(cid, 27, "Comando !fly desativado.")
    else
        doPlayerSendTextMessage(cid, 27, "Comando !fly ativado.")
        setPlayerStorageValue(cid, configuration.storage, 1)
        autoWalk(cid, getPlayerGUID(cid))
    end
    return true
end

E pelo que sei, não.

Editado Março 20 por zipter98

falasqueF
20 de março de 2014 às 13:11

Zipter, o sistema em si funcionou, valeu!

Mas pelo que eu testei aqui, ele ta andando com tipo de um exaust, ou seja, ele anda travando... Se tiver como tirar isso eu agradeço! E outra, depois que ativa, você pode sair do fly que o char continua andando, se tiver como adicionar pra quando sair do fly o comando parar de funcionar eu agradeço em dobro! Mas por enquanto valeu. Já ganhou REP+

Editado Março 20 por Jose98

zipter98Z
20 de março de 2014 às 13:14
Melhor resposta

O quê acontece é que o jogador é "movido" para a frente a cada 500 milésimos. Se quiser que o processo seja mais rápido, basta alterar o tempo nesta linha (em milésimos):

addEvent(autoWalk, 500, cid, id)   --Onde 500 é o intervalo de tempo.

Sobre o segundo problema, não tinha pensado nisso. Logo altero o código do meu comentário anterior com a correção.

#EDIT: Pronto, alterado.

Editado Março 20 por zipter98

falasqueF
20 de março de 2014 às 13:31

Valeu! Pode fechar o tópico. Funcionou perfeitamente.

zipter98Z
20 de março de 2014 às 14:08

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

3 anos depois...
FrenviusF
29 de novembro de 2017 às 14:34
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.