Postado Junho 26, 2023 1 ano Solução .Qual servidor ou website você utiliza como base? OTX 2 Você tem o código disponível? Se tiver publique-o aqui: void Player::onTarget(Creature* target) { Creature::onTarget(target); if(target == this) { addInFightTicks(false); return; } if(hasFlag(PlayerFlag_NotGainInFight)) return; Player* targetPlayer = target->getPlayer(); if(targetPlayer && !isPartner(targetPlayer) && !isAlly(targetPlayer)) { if(!pzLocked && g_game.getWorldType() == WORLDTYPE_HARDCORE) { pzLocked = true; sendIcons(); } if(getSkull() == SKULL_NONE && getSkullType(targetPlayer) == SKULL_YELLOW) { addAttacked(targetPlayer); targetPlayer->sendCreatureSkull(this); } else if(!targetPlayer->hasAttacked(this)) { if(!pzLocked) { pzLocked = true; sendIcons(); } if(!Combat::isInPvpZone(this, targetPlayer) && !isEnemy(this)) { addAttacked(targetPlayer); if(targetPlayer->getSkull() == SKULL_NONE && getSkull() == SKULL_NONE && (!guildId || !targetPlayer->getGuildId())) { setSkull(SKULL_WHITE); g_game.updateCreatureSkull(this); } if(getSkull() == SKULL_NONE) targetPlayer->sendCreatureSkull(this); } } } addInFightTicks(false); } Bom dia pessoal, hoje percebi que meu servidor está com um comportamento (não sei se esperado) mas indesejado, vamos pensar no seguinte cenário: Player 1 Ataca Player 2 (e pega White Skull) Player 2 ataca de volta player 1 e consegue entrar numa Protection Zone (não deveria/gostaria) Após sair da PZ, o player 2 ataca novamente o player 1 e vira Yellow Skull, e agora sim fica com PZ lock Gostaria que já no primeiro ataque o Player 2 ficasse com PZ lock, poderiam me ajudar? Consegui resolver: // DE else if(!targetPlayer->hasAttacked(this)) { if(!pzLocked) { pzLocked = true; sendIcons(); } // PARA else { if(!pzLocked) { pzLocked = true; sendIcons(); }
Postado Junho 28, 2023 1 ano Diretor void Player::onTarget(Creature* target) { Creature::onTarget(target); if(target == this) { addInFightTicks(false); return; } if(hasFlag(PlayerFlag_NotGainInFight)) return; Player* targetPlayer = target->getPlayer(); if(targetPlayer && !isPartner(targetPlayer) && !isAlly(targetPlayer)) { if(!pzLocked && g_game.getWorldType() == WORLDTYPE_HARDCORE) { pzLocked = true; sendIcons(); } if(getSkull() == SKULL_NONE && getSkullType(targetPlayer) == SKULL_YELLOW) { addAttacked(targetPlayer); targetPlayer->sendCreatureSkull(this); } else if(!targetPlayer->hasAttacked(this)) { if(!pzLocked) { pzLocked = true; sendIcons(); } // Adicione a seguinte condição para receber o PZ lock no primeiro ataque if(getSkull() == SKULL_NONE) { addAttacked(targetPlayer); setSkull(SKULL_WHITE); g_game.updateCreatureSkull(this); targetPlayer->sendCreatureSkull(this); } else if(!Combat::isInPvpZone(this, targetPlayer) && !isEnemy(this)) { addAttacked(targetPlayer); if(getSkull() == SKULL_NONE && (!guildId || !targetPlayer->getGuildId())) { setSkull(SKULL_WHITE); g_game.updateCreatureSkull(this); } if(getSkull() == SKULL_NONE) targetPlayer->sendCreatureSkull(this); } } } addInFightTicks(false); } Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código. #OpenSource #Programação #Contribuição
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.