Postado Março 25, 2019 6 anos Autor 3 hours ago, Eduardozim said: @xWhiteWolf, mano 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: Hide contents 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) Lembrando que o script só deixa invisível e retira a invisbilidade (on equip e deequip) porém está sem nenhuma condition (como as que você colocou no seu script.) essa parte eu ainda irei criar para o meu ot. Espero que seja de bom uso mano, e se puder adicionar isso ao post, acho q ajudaria muita gente. Hide contents 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 obrigado pela contribuição! Outra forma sem incluir source editing poderia ser setar a outfit como a de algum item invisivel (procura algum no object builder) e dar setHiddenHealth, tem o mesmo efeito! Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Março 28, 2019 6 anos @xWhiteWolf alguém me falou que dessa maneira aí, seria possível enxergar usando bots (como magebot), aí eu preferi editar a source, por garantia. Mas valeu, seu script serviu demais para mim.
Postado Março 28, 2019 6 anos @Eduardozim if (target->isInGhostMode() && targetPlayer->getAccountType() < ACCOUNT_TYPE_GAMEMASTER && targetPlayer->getAccountType() < ACCOUNT_TYPE_GOD) { Tá estranho essa verificação, no caso, você está bloqueando hit para todos os players que não são GOD (e estão invisível - detalhe: targetPlayer não foi instanciado na função), não acha? Posso está enganado, mas... se quer que o hit seja bloqueado apenas para GM para cima e que estejam invisíveis, seria mais ou menos assim: if (target->getPlayer() && target->isInGhostMode() && target->getPlayer()->getAccountType() > ACCOUNT_TYPE_SENIORTUTOR) { Feliz daquele que ensina o que sabe, e aprende o que ensina.
Postado Março 28, 2019 6 anos @lordzetros Como eu postei funcionou normalmente, verifica se o jogador é god ou gm, se for então não poderá ser atacado, se for player vai poder ser atacado. Salvo engano "target"(que foi iniciada dentro do bool) leva a "getPlayer()" Tentei mais ou menos da maneira que você falou, mas não funcionou. O uso dessa função eu peguei dentro do próprio game.cpp, mas em outra linha, então só repliquei e coloquei a "player * targetPlayer = ..." Editado Março 28, 2019 6 anos por Eduardozim (veja o histórico de edições)
Postado Abril 27, 2019 6 anos O meu nao deu certo, podem me ajudar? uso 8.6 Edit 1: quero usar a primeira opçao que da 3% de dado a cada segundo Edit 2: consegui usar, configurei tudo certinho, mas queria saber se tem como fazer o player que fica invisivel não pode atacar nada e nem usar skill Editado Abril 27, 2019 6 anos por fritsche2002 Informaçoes faltando (veja o histórico de edições)
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.