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

Прописать invul на время

  • Автор темы Автор темы novich
  • Дата начала Дата начала
не наблюдал такого
Ну ты пишешь, как я понял, про мертвую зону. А у меня проблема в том, что даже над землей, не долетев из-за предела/падая с верхнего абиса до ока, ну 60 метров выставил на тесты предел, на 61 метре умираешь.
Если вставать там же саморесом - эффект 1в1 как в мертвой зоне - встал и упал моментально.
Если вставать у ники/кибелиска/в данже - встаешь на респе и сразу же умираешь там. Второй раз встаешь уже нормально
 
Ну ты пишешь, как я понял, про мертвую зону. А у меня проблема в том, что даже над землей, не долетев из-за предела/падая с верхнего абиса до ока, ну 60 метров выставил на тесты предел, на 61 метре умираешь.
Если вставать там же саморесом - эффект 1в1 как в мертвой зоне - встал и упал моментально.
Если вставать у ники/кибелиска/в данже - встаешь на респе и сразу же умираешь там. Второй раз встаешь уже нормально
Насчет ока в старом геодвиге идет аишка как только влетаешь тебе смерть, в новом геодвиге должно дамажить скиллом при входе в око и входе на территорию крепы чужой расы. Походу когда там умираешь тебя не сразу убирает с ObserveController'a и при респе он еще думает что ты в оке\крепе где нельзя вот и килляет
 
Насчет ока в старом геодвиге идет аишка как только влетаешь тебе смерть, в новом геодвиге должно дамажить скиллом при входе в око и входе на территорию крепы чужой расы. Походу когда там умираешь тебя не сразу убирает с ObserveController'a и при респе он еще думает что ты в оке\крепе где нельзя вот и килляет
Да я просто как пример, око тут не при чем
 
Насчет ока в старом геодвиге идет аишка как только влетаешь тебе смерть, в новом геодвиге должно дамажить скиллом при входе в око и входе на территорию крепы чужой расы. Походу когда там умираешь тебя не сразу убирает с ObserveController'a и при респе он еще думает что ты в оке\крепе где нельзя вот и килляет
Просто предел падения багнут. Если умереть от предела падения, то нельзя встать на месте, а на респе умираешь повторно.
 
Насчет ока в старом геодвиге идет аишка как только влетаешь тебе смерть, в новом геодвиге должно дамажить скиллом при входе в око и входе на территорию крепы чужой расы. Походу когда там умираешь тебя не сразу убирает с ObserveController'a и при респе он еще думает что ты в оке\крепе где нельзя вот и килляет
Тут как раз скорее всего при респе кто-то думает что персонаж еще падает и убивает его снова. Даже когда он уже у кибелиска находится, может не получает новых координат?
 
Я уже стул прожжег неделю эту херню копать, как можно было такое начудить.. Все вышеописанные файлы - дефолтные лайты 2.7
 
Это StatFunction -> calculateFallDamage а вызывается метод в PlayerMoveController
StatFunctions? Вот он отличается от лайтов:

Код:
	public static boolean calculateFallDamage(Player player, float distance, boolean stoped) {
		if (player.isInvul()) {
			return false;
		}

		if (distance >= FallDamageConfig.MAXIMUM_DISTANCE_DAMAGE || !stoped) {
			player.getController().onStopMove();
			player.getFlyController().onStopGliding(false);
			player.getLifeStats().reduceHp(player.getLifeStats().getMaxHp() + 1, player);
			return true;
		} else if (distance >= FallDamageConfig.MINIMUM_DISTANCE_DAMAGE) {
			float dmgPerMeter = player.getLifeStats().getMaxHp() * FallDamageConfig.FALL_DAMAGE_PERCENTAGE / 100f;
			int damage = (int) (distance * dmgPerMeter);
			player.getLifeStats().reduceHp(damage, player);
			PacketSendUtility.sendPacket(player, new SM_ATTACK_STATUS(player, SM_ATTACK_STATUS.TYPE.FALL_DAMAGE, 0, -damage));
		}

		return false;
	}
Лайты:
Код:
	public static boolean calculateFallDamage(Player player, float distance, boolean stoped) {
		if (player.isInvul()) {
			return false;
		}

		if (distance >= FallDamageConfig.MAXIMUM_DISTANCE_DAMAGE || !stoped) {
			player.getController().onStopMove();
			player.getFlyController().onStopGliding(false);
			//TODO [AT] don't call onDie directly - better reduce HP!
			player.getController().onDie(player, false);

			if (player.isInInstance())
				PlayerReviveService.instanceRevive(player);
			else if (player.getKisk() != null)
				PlayerReviveService.kiskRevive(player);
			else
				PlayerReviveService.bindRevive(player);
			return true;
		}
		else if (distance >= FallDamageConfig.MINIMUM_DISTANCE_DAMAGE) {
			float dmgPerMeter = player.getLifeStats().getMaxHp() * FallDamageConfig.FALL_DAMAGE_PERCENTAGE / 100f;
			int damage = (int) (distance * dmgPerMeter);

			player.getLifeStats().reduceHp(damage, player);
			PacketSendUtility.sendPacket(player, new SM_ATTACK_STATUS(player, SM_ATTACK_STATUS.TYPE.FALL_DAMAGE, 0, -damage));
		}

		return false;
	}


Сейчас пошаманю
 
Нелегче выдавать просто баф, который вещает щит, который нельзя сбить и т.д.?
 
Назад
Сверху