Postado Março 7, 2015 10 anos Me diz uma coisa, caso esteja com o anel, mas algum bicho mandar alguma magia que atinja o SQM que o player estiver, ele vai tomar dano? ~~ [show Off] Lolksky ~~
Postado Março 7, 2015 10 anos Autor ao que tudo indica, sim 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 17, 2019 6 anos Oi, Wolf. Desculpe reviver um tópico de 2014 kkk Eu vi seu sistema e gostei, só que uso TFS 1.3, então resolvi tentar fazer algo parecido. Teria basicamente as mesmas funções, só que eu quero adicionar algo para quando o jogador ser atacado voltar a ficar visível por x segundos e depois ficar invisível novamente (sem o ring ser removido) E, bem, ao inicio do desenvolvimento do script me deparei com um pequeno problema: o modo invisível faz com que os jogadores não possam ser atacados. Sabe me dizer como posso resolver isso?
Postado Março 19, 2019 6 anos Autor @Eduardozim eu vou te explicar com o maior número de detalhes que eu conseguir mas não vou poder fazer o código pra você. 1. Depois que eu fiz esse sistema e fui testar num sv de verdade eu notei que realmente usando a função de ghost ele trata o jogador como gamemaster (não atacável, etc). Pra contornar isso você precisa usar somente a função de setar outfit, mas usando uma peculiaridade dela que pouca gente conhece que é a de usar lookTypeEx (ex: setOutfit({lookType = 267}) Com o lookTypeEx você consegue passar um id de um item para que o jogador fique com a looktype do item, o 267 no caso é um id que no tibia original é um chão sem imagem, logo vc ficará invisível, contudo outros jogadores ainda poderão ver seu nome/vida. Para ficar com a vida e nome invisivel você usa a função creature:setHiddenHealth(true). No seu caso, você precisa fazer o seguinte, qnd equipar o ring ativar o movements que seta hiddenHealth = true e deixa esse outfit no player. E aí você faz um creaturescripts onHealthChange que se o jogador tiver com hiddenHealth ele perde o hiddenHealth e remove a condition de outfit. Aí nessa mesma lógica você faz uma função recursiva (semelhante com a do tópico) function lifesteal(cid) steal = addEvent(lifesteal, 1000*tempo, cid) if isCreature(cid) then doSendAnimatedText(getCreaturePos(cid), "-"..math.floor((getCreatureMaxHealth(cid) * (percent/100))), 144, cid) doCreatureAddHealth(cid, -math.floor(getCreatureMaxHealth(cid) * (percent/100))) end end lifesteal(cid) só que pra checar se o jogador está com battle, ela vai ficar chamando a si mesma de 1 em 1 segundo até o jogador não ter mais battle. Assim q ele perder o battle, vc seta hidden health e o outfit dnv 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 25, 2019 6 anos @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: 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) 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. 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 Editado Março 25, 2019 6 anos por Eduardozim (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.