Postado Março 17, 2019 6 anos .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 Março 17, 2019 6 anos por Eduardozim (veja o histórico de edições)
Postado Março 25, 2019 6 anos Autor 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
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.