[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Альтернативный скрипт спауна ящиков
firsacho
Админы
Сообщений: 3813
Реп: 84 / Инв: 15
Во время разработки обновы для Renewation возникла необходимость ограничить спаун ящиков определенной зоной / зонами на карте. Подобное в игре сделано на картах режима Дом родной (Homelands), но работает на уровне движка. Поэтому встала задача написать свой скрипт, который дублирует вшитые в игру функции по спауну случайных ящиков (с учетом настроек вероятностей ящиков в игровой схеме).
Минусы - мы не можем через скрипты дропать ящики на случайные координаты в пространстве. Спаун либо совсем рандомный (что не подходит), либо в точках заранее размещенных эмиттеров. Пришлось использовать последний вариант - 16 точек спауна для ящиков, заранее раставленные, но выбираем из них место каждый раз случайно. Первая проблема, что это не очень большая вариативность и периодически будет дропаться несколько ящиков в одной точке. Вторая проблема, что мы не можем проверить наличие земли под ящиком в случае разрушения уровня, тогда ящики будут сразу падать в воду, либо надо отключать им гравитацию и они будут висеть в небе. Еще при подборе "дождя из ящиков" (crate shower) запускается игровая логика, выбрасывающая ящики в обход этого скрипта, т.е. в любом месте. Кроме того, данная реализация скрипта использует встроенный в игру генератор случайных чисел, у которой наблюдается одна проблема - семя (seed) для получения числа в диапазоне меняется один раз за ход, а значит если мы спауним через скрипт несколько ящиков в один ход - это будут одинаковые ящики дропнутые в одной точке.
Кидаю скрипт сюда, возможно кому-нибудь будет полезен, например при разработке своих скриптов. Например, здесь можно посмотреть, как дропнуть абсолютно любой ящик в игре.

Если скрипт будет улучшаться - буду обновлять и в этой теме.

Для запуска скрипта мы в начале запускаем функцию SetupSchemeCrates() для получения настроек схемы (один раз в самом начале), а далее когда необходимо заспаунить ящик делаем SpawnSchemeCrate()




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

mod.worms.pro - мод Worms Renewation для Worms4
 
  • Страница 1 из 1
  • 1
Поиск: