Ir para conteúdo
  • Cadastre-se

(Resolvido)Systema !Fly [PokeTibia]


Ir para solução Resolvido por zipter98,

Posts Recomendados

Digo em questão da velocidade

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Sobre a velocidade, irei alterar o código. Já sobre o bug, encontrei-o e logo o corrigirei também.

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

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Nao encontrei a arvore e meus  Rme nao esta abrindo, mas é tipo isso aqui olha
11010299_813778072032405_432128152506817

 

O fly atravessa as paredes, que nao tem tiler na frente /\  é o sistema de fly que é meio bugado.

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Hm, fiz umas pequenas alterações no código. Se possível, substitua o seu antigo pelo novo e também faça a outra modificação indicada no meu primeiro comentário. Sobre a velocidade, poderia informar a fórmula que deseja? Lembre-se: o intervalo de tempo entre os passos do jogador (a "velocidade") é medido em milésimos de segundo (1000 milésimos = 1 segundo).

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

So me fala aonde configura e eu testo aqui a melhor velocidade 


local configuration = {
    storage = 918311,
    fly_storage = 17000,    --Storage do Fly no seu servidor.
}
function isWalkable(pos, creature, proj, pz)-- by Nord
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.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 topos = getPosByDir(getThingPos(cid), getCreatureLookDir(cid))
    if topos then
        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)
        else
            setPlayerStorageValue(cid, configuration.storage, -1)
            doPlayerSendTextMessage(cid, 27, "Há algum objeto à sua frente impedindo a passagem.")
            doPlayerSetNoMove(cid, false)
            return true
        end
    else
        doPlayerSendCancel(cid, "Sorry, not possible.")
        setPlayerStorageValue(cid, configuration.storage, -1)
        doPlayerSetNoMove(cid, false)
    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)
        doPlayerSetNoMove(cid, true)
        autoWalk(cid, getPlayerGUID(cid))
    end
    return true
end
Em data/actions/scripts, order.lua:
Abaixo de:
doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", me deixe descer!", TALKTYPE_MONSTER)
adicione:
doPlayerSetNoMove(cid, false)

Escrevi este código há mais de 1 ano, mas suponho que ainda funcione como deve.

 

No meu move nao tem 
doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", me deixe descer!", TALKTYPE_MONSTER)

so encontrei 
doCreatureSay(cid, ""..getCreatureName(mysum)..", control "..string.lower(getCreatureName(cmed)).."'s mind!", 1)


Funcionou porem agora nao da de vira >< /\ \/  pra virar tem que desativar o comando ou segurar contro

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Ops, eu traduzi a fala no meu servidor. Coloque a linha abaixo de algo assim:

doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", let me get down!", 1)

E sim, a intenção é só poder mudar de direção segundo CTRL + setas. Se não, a velocidade ia bugar.

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Agora aonde eu configuro a velocidade?

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Nesta linha:

addEvent(autoWalk, 500, cid, id)

Onde 500 é o intervalo de tempo entre os passos do jogador, em milésimos. Ou, em outras palavras, a velocidade. Quanto menor, mais rápido.

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Vlw so nao do +rp pq nao tenho + kkk

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Zipter teria alguma forma de remover o UP que fica aparecendo enquanto o Pokemon anda ?

Link para o post
Compartilhar em outros sites

Se isto for removido, não aparecerá tanto no !fly quanto no fly normal. Ainda assim deseja removê-lo?

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

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

zipter98
ainda esta com um bug quando eu ativo o fly e desativo  o personagem nao anda nas setas, ae tenho que relogar pra poder andar

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

zipter98

ainda esta com um bug quando eu ativo o fly e desativo  o personagem nao anda nas setas, ae tenho que relogar pra poder andar

Falta de atenção minha, código corrigido.

 

Zipter , eu gostaria ! Teria algum modo ?

Em data/movements/scripts, fly.lua:

Remova as linhas:

   for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 then
                doTransformItem(item.uid, 11677)
            end
        end
    end

zypter poderia me passar a função na lib do

 

getPosByDir

getCreatureLookDir(cid)

 

getPosByDir(getThingPos(cid), getCreatureLookDir(cid))

Essas funções já vêm escritas no TFS. Há uma versão em lua semelhante a getPosByDir, que é:

function getPositionByDirection(position, direction, size)
    local n = size or 1
    if(direction == NORTH) then
        position.y = position.y - n
    elseif(direction == SOUTH) then
        position.y = position.y + n
    elseif(direction == WEST) then
        position.x = position.x - n
    elseif(direction == EAST) then
        position.x = position.x + n
    elseif(direction == NORTHWEST) then
        position.y = position.y - n
        position.x = position.x - n
    elseif(direction == NORTHEAST) then
        position.y = position.y - n
        position.x = position.x + n
    elseif(direction == SOUTHWEST) then
        position.y = position.y + n
        position.x = position.x - n
    elseif(direction == SOUTHEAST) then
        position.y = position.y + n
        position.x = position.x + n
    end

    return position
end 

Já getCreatureLookDir é C++ made. Segue o código:

int32_t LuaScriptInterface::luaGetCreatureLookDirection(lua_State* L)
{
    //getCreatureLookDirection(cid)
    ScriptEnviroment* env = getEnv();

    if(Creature* creature = env->getCreatureByUID(popNumber(L)))
        lua_pushnumber(L, creature->getDirection());
    else
    {
        errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
        lua_pushboolean(L, false);
    }
    return 1;
} 

Na pasta data do servidor, em algum arquivo da lib, basta declarar que getCreatureLookDir = getCreatureLookDirection. 

Porém, suponho que já haja tais funções em seu servidor.

PS: O código do !fly que escrevi não funciona em TFS 1.0+.

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

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Falta de atenção minha, código corrigido.

 

Em data/movements/scripts, fly.lua:

Remova as linhas:

   for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 then
                doTransformItem(item.uid, 11677)
            end
        end
    end

Essas funções já vêm escritas no TFS. Há uma versão em lua semelhante a getPosByDir, que é:

function getPositionByDirection(position, direction, size)
    local n = size or 1
    if(direction == NORTH) then
        position.y = position.y - n
    elseif(direction == SOUTH) then
        position.y = position.y + n
    elseif(direction == WEST) then
        position.x = position.x - n
    elseif(direction == EAST) then
        position.x = position.x + n
    elseif(direction == NORTHWEST) then
        position.y = position.y - n
        position.x = position.x - n
    elseif(direction == NORTHEAST) then
        position.y = position.y - n
        position.x = position.x + n
    elseif(direction == SOUTHWEST) then
        position.y = position.y + n
        position.x = position.x - n
    elseif(direction == SOUTHEAST) then
        position.y = position.y + n
        position.x = position.x + n
    end

    return position
end 

Já getCreatureLookDir é C++ made. Segue o código:

int32_t LuaScriptInterface::luaGetCreatureLookDirection(lua_State* L)
{
    //getCreatureLookDirection(cid)
    ScriptEnviroment* env = getEnv();

    if(Creature* creature = env->getCreatureByUID(popNumber(L)))
        lua_pushnumber(L, creature->getDirection());
    else
    {
        errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
        lua_pushboolean(L, false);
    }
    return 1;
} 

Na pasta data do servidor, em algum arquivo da lib, basta declarar que getCreatureLookDir = getCreatureLookDirection. 

Porém, suponho que já haja tais funções em seu servidor.

PS: O código do !fly que escrevi não funciona em TFS 1.0+.

as sources são 0.3.6

em qual arquivo d source eu preciso add pr compilar?

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo