Ir para conteúdo
  • Cadastre-se

Programação Anel de sauron (ghost mode para player)


Posts Recomendados

.Qual servidor ou website você utiliza como base? 
TFS 1.3 
Base do Maluco 

 

Qual o motivo deste tópico? 

Estou criando um "anel de sauron" igual ao do senhor dos anéis. 
Consegui fazer o script ficar funcional, porém ao testar me deparei com uma função bem chatinha: ao equipar o jogador fica invisivel e tudo, porém também fica com a condição de não poder ser atacado  (o que é chato, já que eu pretendo fazer com que ao levar hit o jogador que esteja com o ring equipado perca a condição de invisibilidade por x segundos e depois retorne a ficar invisível)
Alguém consegue dar uma luz? 
Pesquisando cheguei a conclusão de que para mudar isso terei que mexer nas sources, mas não faço ideia de como mudar isso, meus conhecimentos em c++ são rasos, para não dizer nenhum kkk
Existe alguma maneira de fazer o nome do jogador sumir e ele ficar sem outfit? Pq ai substituiria o uso da função ghost dos gods/gms.
Alguém pode dar uma luz ? 

 

Script: 

Spoiler

function onEquip(cid, item, slot)
local player = Player(cid)
    if isPlayer() then
        return true
    end
    
    local position = player:getPosition()
    local isGhost = not player:isInGhostMode()
        item:transform(2202)
        combat:setCallback(CALLBACK_PARAM_SKILLVALUE)
        player:setGhostMode(isGhost)
        player:sendTextMessage(MESSAGE_INFO_DESCR, "You are invisible.")
        -- position.x = position.x + 1
        position:sendMagicEffect(67)
    return true
end

function onDeEquip(cid, item, slot)
local player = Player(cid)
    if isPlayer() then
        return true
    end

    local position = player:getPosition()
    local isGhost = not player:isInGhostMode()
        item:transform(2165)
        player:setGhostMode(isGhost)
        player:sendTextMessage(MESSAGE_INFO_DESCR, "You are visible again.")
        -- position.x = position.x + 1
        position:sendMagicEffect(67)
    return true
end

 

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

Apesar de ninguém ter falado nada, vou postar aqui a solução, já que vi algumas pessoas procurando por isso. Consegui resolver isso com a ajuda de um membro da Otland (nesse caso a ajuda foi referente a em que lugar da source eu poderia alterar para que o ghostmode identificasse que o jogador de fato deve ser atacado pois não tem acesso de gm/god)

O que fiz foi o seguinte

Eu alterei a função que era para todos os players e coloquei para que somente se for god ou gm ele não possa ser atacado (em game.cpp)


Na pasta src/game.cpp troque da linha 3738 até a linha 3747 por:

Spoiler

bool Game::combatBlockHit(CombatDamage& damage, Creature* attacker, Creature* target, bool checkDefense, bool checkArmor, bool field)

{

    Player* targetPlayer = target->getPlayer();

    if (damage.primary.type == COMBAT_NONE && damage.secondary.type == COMBAT_NONE) {

        return true;

    }

 

    if (target->isInGhostMode() && targetPlayer->getAccountType() < ACCOUNT_TYPE_GAMEMASTER && targetPlayer->getAccountType() < ACCOUNT_TYPE_GOD) {

        return true;

 

Passei dias mexendo para conseguir fazer essa função funcionar, espero que seja de bom uso para quem vier aqui. Já aproveito para deixar o script que criei (funciona para tfs 1.3, to usando a base do maluco)

Este é o script que criei para onEquip e deEquip (movements)
 

Spoiler

function onEquip(cid, item, slot)
local player = Player(cid)
    if isPlayer() then
        return true
    end
    
    local position = player:getPosition()
    local isGhost = not player:isInGhostMode()
        item:transform(2202)
        player:setGhostMode(isGhost)
        player:sendTextMessage(MESSAGE_INFO_DESCR, "You are invisible.")
        -- position.x = position.x + 1
        position:sendMagicEffect(67)
    return true
end

function onDeEquip(cid, item, slot)
local player = Player(cid)
    if isPlayer() then
        return true
    end

    local position = player:getPosition()
    local isGhost = not player:isInGhostMode()
        item:transform(2165)
        player:setGhostMode(isGhost)
        player:sendTextMessage(MESSAGE_INFO_DESCR, "You are visible again.")
        -- position.x = position.x + 1
        position:sendMagicEffect(67)
    return true
end


 

 
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.


  • Conteúdo Similar

    • Por Muvuka
      Alguem tem anti-nuker igual a esse 
       

       
    • Por Muvuka
      [SQLite] -=[TFS]=- 0.4 8.60 Alguem faz apk mobile pra mim ip: dexsoft.ddns.net
       
      pra mim
       
      https://www.mediafire.com/file/5klqnyy6k7jda0u/OTClientV8.rar/file
       
      TA TUDO AI
    • Por yuriowns
      Salve rapazes, estou precisando de um client próprio para o meu servidor 7.4, preciso que algum programador experiente e com referências faça um client do jeito que eu procuro. Responda aqui para fazermos um orçamento, obrigado!

      Não sei se estou no lugar certo, se não me desculpem e peço que movam por gentileza!
    • Por paulo thush
      Pessoal to com um grande problema, estou com um servidor TFS 1.4x 10.98, recentemente começou dar um problema, sempre quando falava "trade" com o npc dava um erros, com qual quer npc, o erro e o seguinte.
       
       
      me falaram que o problema e nas sourcer que precisava mudar umas coisas me passaram um link no github esse aqui 
      https://github.com/otland/forgottenserver/pull/3996/files
       
      porem eu vi vídeos no youtube ensinando a compilar, já vi muitos tópicos como compilar a sourcer, ai quando vou compilar da esse erro
      já tentei instalar, desinstala muitas coisas, alterar também não vai, minha sourcer e essa 
      https://github.com/otland/forgottenserver
       
       
      Alguém poderia me ajuda com esse erro, ou ate compilar 100% as sourcer. os Tópicos que eu tentei para compilar e esse daqui, se não poder o link me desculpe.
      https://forums.otserv.com.br/index.php?/forums/topic/169234-windowsvc2019-compilando-sources-tfs-14-vcpkg/
       
      alguém me da uma luz por favor kkk
    • Por Ryzek
      Uso tfs 0.4 trunk3884 bem simples.
      Queria acrescentar magic effects para 255 pois o meu só vai até 69. Encontrei um tópico que falava sobre porém parece ter sido removido, não consigo acessar!
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo