+ Ответить в теме
Показано с 1 по 16 из 16

Тема: Анонс! Система организации игр - ComBat Games

Комбинированный просмотр

  1. #1
    Hauptfeldwebel Аватар для Casper
    Регистрация
    03.04.2008
    Адрес
    Ungvarosh
    Команда
    2./GebJgBtl 233
    Сообщений
    791
    Записей в дневнике
    4

    Re: Анонс! Система организации игр - ComBat Games



    При створені мапи.
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: Screenshot_2.png‎
Просмотров: 324
Размер:	56.5 Кб
ID:	90865  
    Wir sind keine Jäger, wir sind Gebirgsjäger!

  2. #2
    Оператор
    Регистрация
    30.05.2005
    Адрес
    Київ
    Команда
    Освободительная Армия
    Сообщений
    374
    Записей в дневнике
    10

    Re: Анонс! Система организации игр - ComBat Games

    Цитата Сообщение от Casper Посмотреть сообщение
    Це я щойно заблокував створення мап з онлайн джерел, але трохи не корректно. Спробуйте зараз.
    Последний раз редактировалось SuffiX [Бойові бабаки]; 16.05.2017 в 13:55.
    С ув., командир 1-го взвода Освободительной Армии проект ARMS, мл. лейтенант Суффикс.

  3. #3
    Оператор
    Регистрация
    30.05.2005
    Адрес
    Київ
    Команда
    Освободительная Армия
    Сообщений
    374
    Записей в дневнике
    10

    Re: Анонс! Система организации игр - ComBat Games

    Ураа! Это свершилось! На маркет выложен релиз ComBat Games с поддержкой полного перечня скриптовых команд.
    Описание языка здесь https://games.combat.vision/upload/app/Script.ru.pdf

    Если ест ьвопросы по реализации конкретных сценариев или сскриптовых элементов, задавайте здесь...



    Примеры скриптов

    Автореспаун:
    1) Создаем круг или кадрат респауна с системным именем resp.
    2) Создаем локальный триггер:
    2.1) Условие: inArea(@resp,@player)
    2.2) При активации: print("Вы зашли в зону респауна. Ожидайте возрождения 30 мин..."); delay(1800); remStatus(@player, DEAD); print("Вы ожили. Можете вступать в игру.")

    Минное поле (зона аномалий) c вероятностью срабатывания 50%:
    1) Создаем круг, кадрат или полигон минного поля с системным именем mine.
    2) Создаем локальный триггер:
    2.1) Условие: inArea(@mine,@player)
    2.2) При активации: if(rnd(1) > 0.5) { print("Вы подорвались на мине! Выдвигайтесь на мертвяк."); addStatus(@player, DEAD) }

    Авиаудар в выбранном в процессе игры месте:
    1) Создаем локальный выключенный триггер:
    1.1) Условие: inArea(@art_strike,@player)
    1.2) При активации: print("Вас накрыл авиа удар! Выдвигайтесь на мертвяк."); addStatus(@player, DEAD)
    2) Когда нужно совершить авиа удар, создаем в нужном месте круг с именем art_strike и включаем триггер. Все кто попадут в круг - погибают.
    В такой реализации авиаудар может включить только админ, включив триггер, но можно подвязать активацию триггера на какоето условие, например, сменить статуса цели с именем "Запустить ракету" на "Выполнено" или проверку игрока на вхождение в зону пункта управления ПВО.
    Аналогичным способом делаються аномалии для игр сталкера, предупреждение о выходе за игровую територию и т.п.
    Но все вышеописанное - это не шаблон для копирования, а скорее демонстрационный пример. По хорошему нужно все нюансы продумывать и обходить возможное не честное поведение игрока.

    Автоматическое переключение миссий с оповещением всех игроков об этом от имени Штаба с системным именем HQ:
    1) Создаем группу с системным именем HQ и нзванием "Штаб". Размещаем ее где-то за картой или в условном месте.
    2) Создаем задачу с именем mission1. Наносим на него все необходимые объекты, маршруты и т.п.
    3) Создаем задачу с именем mission2. Наносим на него все необходимые объекты, маршруты и т.п. Скрываем ее опцией "Временно спрятать слой от всех".
    4) Создаем глобальный триггер:
    4.1) Условие: getStatus(@mission1) == CMP
    4.2) При активации: say(@HQ, select(isUser(@obj)),"Поздравляем, вы успешно выполнили первую миссию! Получена новая задача. См. карту..."); hide(@mission1); show(@mission2)
    В результе если кто либо из игроков установит у цели mission1 статус "Выполнено", то произойдет скрытие объектов первой миссии, отображение объектов второй миссии, а так же все игроки на карте получать сообщение от группы Штаб о успешном выполнении.

    Пример примитивной реализации войны за территории.
    0) Меняем имя админского юзера на "Штаб" для красоты отправки сообщений от имени Штаба.

    1) Создаем на карте определенное количество зон в виде кругов, квадратов или многоуголтников (с именем zone1,zone2...,zoneN). Делаем их по умолчанию зелеными.

    2) Зеленые зоны будут означать не занятые, жельтые - идет бой, красные - захвачены стороной красных, синие - захвачены стороной синих.

    3) Создаем глобальный одноразовый выключенный триггер с подписью Reset и системным именем var для хранения и инициализации переменных счета. При включении триггера админом будет происходить сброс очков, цвета зон и выключение триггера.
    3.1) Условие: TRUE (то есть всегда безусловно выполняется)
    3.2) По активаци (коментари из кода перед вставкой в триггер надо убрать):
    @self.side_red = 156; // Сторона красных из настроек программы
    @self.side_blue = 157; // Сторона синих из настроек программы
    @self.zones = "@zone1,@zone2,@zone3";
    @self.score_red = 0;
    @self.score_blue = 0;
    foreach(val(@self.zones)) {
    setColor(@obj, #FF00FF00);
    update(@obj);
    }
    foreach(select("isPlayer(@sel)")) {
    setLock(@obj, ADMIN);
    update(@obj);
    }
    deactivate(@self);

    4) Создаем локальный многоразовый триггер Core со временем повторения 60 сек (раз в сколько секунд добавлять бал за контроль) для анализа состоянй захвата территорий.
    4.1) Условие: TRUE (то есть всегда безусловно выполняется)
    4.2) По активации:
    forEach(val(@var.zones)) {
    @self.count_red = count(select("isUser(@sel) AND inArea(@obj, @sel) AND not(checkStatus(@sel, DEAD)) AND (getSide(@sel) == val(@var.side_red))"));
    @self.count_blue = count(select("isUser(@sel) AND inArea(@obj, @sel) AND not(checkStatus(@sel, DEAD)) AND (getSide(@sel) == val(@var.side_blue))"));

    if ((val(@self.count_red) > 0) AND (val(@self.count_blue) > 0)) then {
    if(getColor(@obj) != #FFFFFF00) then {
    setColor(@obj, #FFFFFF00);
    update(@obj);
    say(@player, @all, "Heavy fight in [getCapt(@obj)]!")
    }
    } else if (val(@self.count_red) > 0) then {
    if(getColor(@obj) != #FFFF0000) then {
    setColor(@obj, #FFFF0000);
    update(@obj);
    say(@player, @all, "[getCapt(@obj)] captured by RED!")
    }
    @var.score_red = val(@var.score_red) + 1
    } else if (val(@self.count_blue) > 0) then {
    if(getColor(@obj) != #FF0000FF) then {
    setColor(@obj, #FF0000FF);
    update(@obj);
    say(@player, @all, "[getCapt(@obj)] captured by BLUE!")
    }
    @var.score_blue = val(@var.score_blue) + 1
    } else if(getColor(@obj) == #FFFFFF00) then {
    setColor(@obj, #FF00FF00);
    update(@obj);
    say(@player, @all, "[getCapt(@obj)] is free!")
    } else if(getColor(@obj) == #FFFF0000) then {
    @var.score_red = val(@var.score_red) + 1
    } else if(getColor(@obj) == #FF0000FF) then {
    @var.score_blue = val(@var.score_blue) + 1
    }
    }
    forceUpdate;
    deactivate(@self);

    Суть механики - каждые 60 секунд все зоны на карте проверяються на наличие в них не мертвых игроков красной и синей стороны. Если в зоне пристусвуют обе стороны, то она стает желтая и очки никому не начисляються. Если в ней присутсвуют игроки только одной стороны, то зона принимает цвет стороны и начисляет по 1 балу за каждую минуту контроля. Если зона осталась желтая и в ней никого нет, она стает зеленая.

    5) Создаем выключеный локальный триггер Score для показа счета:
    5.1) Условие: TRUE
    5.2) По активации:
    say(@player, @all, "Score - RED: [val(@var.score_red)], BLUE: [val(@var.score_blue)]!");
    deactivate(@self);
    При включении триггера он отправит всем сообщение со счетом.
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: trig.jpg‎
Просмотров: 19
Размер:	68.3 Кб
ID:	93095  
    С ув., командир 1-го взвода Освободительной Армии проект ARMS, мл. лейтенант Суффикс.

+ Ответить в теме

Похожие темы

  1. Анонс игры KHERSON CQB GAMES 18/08/2019
    от skram в разделе Херсон
    Ответов: 2
    Последнее сообщение: 14.08.2019, 10:23
  2. Анонс игры KHERSON SQB GAMES 04/08/2019
    от skram в разделе Херсон
    Ответов: 5
    Последнее сообщение: 02.08.2019, 15:01
  3. «COYOT GAMES - 2013»
    от KAKTUS_VA в разделе ИГРЫ
    Ответов: 7
    Последнее сообщение: 14.08.2013, 09:53
розробка та технічна підтримка сайтів, інтернет-реклама