
Сообщение от
Geniok
Накидал тут скриптик против вулчеров.
Возможно есть косяки. Выглядит пока так:
[...]
Можно попробовать брать список дромов из AMission.GamePlay.gpAirports(), позиции и радиусы там есть. Кстати, в классе Point3d есть метод для вычисления расстояния - distance.
Может всё-таки стоит вешать обработку на событие OnAircraftDamaged()? А то можно будет безнаказанно дырявить стоящие самолёты, если не задевать пилота.
--- Добавлено ---

Сообщение от
-atas-
А уменьшить не получится? Например:
При превышении количества истребителей на 10% - задержка 30 секунд, на 20% - минута, на 30% - 3 минуты, на 40% - 10 минут. Все сразу подравняется, т.к. настоящему мастеру все равно на чем летать (да и Е-файт на спите возможен, это не Ишак).
Несложно. Поменять кусок скрипта, заведующий банами на такой:
Код:
if (totalFighters < 10)
{
// Если истребителей мало убираем все баны
SetDictValue(banUntil, p, 0.0);
}
else if (playerArmyPercent > 58.33) // Превышение на 40%
{
if (ban == 0.0)
{
// Блокируем на 10 минут
SetDictValue(banUntil, p, Time.currentReal() + 10*60.0);
}
}
else if (playerArmyPercent > 56.52) // Превышение на 30%
{
if (ban == 0.0)
{
// Блокируем на 3 минуты
SetDictValue(banUntil, p, Time.currentReal() + 3*60.0);
}
}
else if (playerArmyPercent > 54.54) // Превышение на 20%
{
if (ban == 0.0)
{
// Блокируем на 1 минуту
SetDictValue(banUntil, p, Time.currentReal() + 60.0);
}
}
else if (playerArmyPercent > 52.38) // Превышение на 10%
{
if (ban == 0.0)
{ // Устанавливаем бан только для незабаненого игрока.
SetDictValue(banUntil, p, Time.currentReal() + 30.0); // Блокируем на 30 секунд
}
}
else
{
// Разблокируем
SetDictValue(banUntil, p, 0);
}
Код, конечно, не красивый. Надо будет все эти времена свести в массив... Но работать будет.