• SiteAnalyzer, технический и SEO-анализ сайтов

Группа/Альянс

  • Автор темы Автор темы Free
  • Дата начала Дата начала
в этой сборке 3.0 с остальными проблемами была оснавная причина всех проблем это вот эта строка
if (GSConfig.SERVER_VERSION.startsWith("3.1")) {
её просто надо было стереть о то всюду
но в данной проблеме я хз.
 
смотри PvpService.getInstance().doReward(victim);

там как раз сообщение посылается
// Announce that player has died.
PacketSendUtility.broadcastPacketAndReceive(victim,
SM_SYSTEM_MESSAGE.STR_MSG_COMBAT_FRIENDLY_DEATH_TO_B(victim.getName(), winner.getName()));
 
смотри PvpService.getInstance().doReward(victim);

там как раз сообщение посылается
// Announce that player has died.
PacketSendUtility.broadcastPacketAndReceive(victim,
SM_SYSTEM_MESSAGE.STR_MSG_COMBAT_FRIENDLY_DEATH_TO_B(victim.getName(), winner.getName()));
охх разобрался)) отсутствовала строка
в этой сборке 3.0
PacketSendUtility.broadcastPacketAndReceive(victim,
SM_SYSTEM_MESSAGE.STR_MSG_COMBAT_FRIENDLY_DEATH_TO_B(victim.getName(), winner.getName()));

проверил в в других сборках 2.7 и 3.9 там есть эти строки а в 3.0 вообще не было!
 
компил прошёл успешно + GS был запущен успешно
преблема решилась на 50 % килл убиваем персонажа килл теперь анонсируется.

остальные 50 % не решились
Проблема заключается в том что при убийстве не пришли Очки бездны + не был зачислен килл за убийство!
 

Вложения

  • Aion0009.jpg
    Aion0009.jpg
    395,8 KB · Просмотры: 7
  • Aion0010.jpg
    Aion0010.jpg
    252 KB · Просмотры: 5
там же смотри
Код:
		// Distribute AP to groups and players that had damage.
		for (AggroInfo aggro : victim.getAggroList().getFinalDamageList(true)) {
			if (aggro.getAttacker() instanceof Player) {
				success = rewardPlayer(victim, totalDamage, aggro);
			}
			else if (aggro.getAttacker() instanceof PlayerGroup) {
				success = rewardPlayerGroup(victim, totalDamage, aggro);
			}
			else if (aggro.getAttacker() instanceof PlayerAlliance) {
				success = rewardPlayerAlliance(victim, totalDamage, aggro);
			}

			// Add damage last, so we don't include damage from same race. (Duels, Arena)
			if (success)
				playerDamage += aggro.getDamage();
		}
 
там же смотри
Код:
		// Distribute AP to groups and players that had damage.
		for (AggroInfo aggro : victim.getAggroList().getFinalDamageList(true)) {
			if (aggro.getAttacker() instanceof Player) {
				success = rewardPlayer(victim, totalDamage, aggro);
			}
			else if (aggro.getAttacker() instanceof PlayerGroup) {
				success = rewardPlayerGroup(victim, totalDamage, aggro);
			}
			else if (aggro.getAttacker() instanceof PlayerAlliance) {
				success = rewardPlayerAlliance(victim, totalDamage, aggro);
			}

			// Add damage last, so we don't include damage from same race. (Duels, Arena)
			if (success)
				playerDamage += aggro.getDamage();
		}
это есть всё! сравнивал со сборкой 3.9 и 2.7 тоже самое у 2.7 написано всё но у 3.9 написано вот так вот

// Distribute AP to groups and players that had damage.
for (AggroInfo aggro : victim.getAggroList().getFinalDamageList(true)) {
success = false;
if (aggro.getAttacker() instanceof Player) {
success = rewardPlayer(victim, totalDamage, aggro);
}
else if (aggro.getAttacker() instanceof PlayerGroup) {
success = rewardPlayerGroup(victim, totalDamage, aggro);
}
else if (aggro.getAttacker() instanceof PlayerAlliance) {
success = rewardPlayerAlliance(victim, totalDamage, aggro);
}

// Add damage last, so we don't include damage from same race. (Duels, Arena)
if (success)
playerDamage += aggro.getDamage();
}
 
Код:
// Distribute AP to groups and players that had damage.
	  for (AggroInfo aggro : victim.getAggroList().getFinalDamageList(true)) {
		 success = false;
		 if (aggro.getAttacker() instanceof Player) {
			success = rewardPlayer(victim, totalDamage, aggro);
		 }
		 else if (aggro.getAttacker() instanceof PlayerGroup) {
			success = rewardPlayerGroup(victim, totalDamage, aggro);
		 }
		 else if (aggro.getAttacker() instanceof PlayerAlliance) {
			success = rewardPlayerAlliance(victim, totalDamage, aggro);
		 }

		 // Add damage last, so we don't include damage from same race. (Duels, Arena)
		 if (success)
			playerDamage += aggro.getDamage();
	  }
 
ну так это выдача ап , персонажу , в группе , в альянсе смотри дальше
rewardPlayer что выдает
 
тут ещё есть такой нюанс. в данной сборке 3.0 файла PvPRewardService ---- PvpService ---- PvPSpreeService а вот в других я смотрел 3.9 + в 2.7 дак там только 1 файл PvpService
 
Ну так что, ещё идеи или помощь будет?
Как исправить а то уже и не знаю куда смотреть где это норм работает и по похожим скриптам!
 
Код:
private boolean rewardPlayer(Player victim, int totalDamage, AggroInfo aggro) {
// Reward Player
Player winner = ((Player) aggro.getAttacker());
 
// Don't Reward Player out of range/dead/same faction
if (winner.getRace() == victim.getRace() || !MathUtil.isIn3dRange(winner, victim, GroupConfig.GROUP_MAX_DISTANCE) || winner.getLifeStats().isAlreadyDead()) {
return false;
}
 
int baseApReward = 1;
int baseGpReward = 1;
int baseXpReward = 1;
int baseDpReward = 1;
 
if (this.getKillsFor(winner.getObjectId(), victim.getObjectId()) < CustomConfig.MAX_DAILY_PVP_KILLS) {
baseApReward = StatFunctions.calculatePvpApGained(victim, winner.getAbyssRank().getRank().getId(), winner.getLevel());
baseGpReward = StatFunctions.calculatePvpGpGained(victim, winner.getAbyssRank().getRank().getId(), winner.getLevel());
baseXpReward = StatFunctions.calculatePvpXpGained(victim, winner.getAbyssRank().getRank().getId(), winner.getLevel());
baseDpReward = StatFunctions.calculatePvpDpGained(victim, winner.getAbyssRank().getRank().getId(), winner.getLevel());
if (EventSystem.ENABLE_CRAZY) {
if (winner.getRace() != victim.getRace()) {
CrazyDaevaService.getInstance().increaseRawKillCount(winner);
}
}
}
 
int apPlayerReward = Math.round(baseApReward * aggro.getDamage() / totalDamage);
apPlayerReward = (int) RewardType.AP_PLAYER.calcReward(winner, apPlayerReward);
int gpPlayerReward = Math.round(baseGpReward * aggro.getDamage() / totalDamage);
gpPlayerReward = (int) RewardType.GP_PLAYER.calcReward(winner, gpPlayerReward);
int xpPlayerReward = Math.round(baseXpReward * winner.getRates().getXpPlayerGainRate() * aggro.getDamage() / totalDamage);
int dpPlayerReward = Math.round(baseDpReward * winner.getRates().getDpPlayerRate() * aggro.getDamage() / totalDamage);
 
AbyssPointsService.addAp(winner, victim, apPlayerReward);
AbyssPointsService.addGp(winner, victim, gpPlayerReward);
winner.getCommonData().addExp(xpPlayerReward, RewardType.PVP_KILL, victim.getName());
winner.getCommonData().addEventExp(xpPlayerReward);
winner.getCommonData().addDp(dpPlayerReward);
this.addKillFor(winner.getObjectId(), victim.getObjectId());
return true;
}


это выше версия части не должно быть по идее но работает
 
Назад
Сверху