???
Математика на уровне МГУ

Показано с 1 по 25 из 789

Тема: Вопросы.

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Старший Офицер Форума
    Регистрация
    15.02.2002
    Адрес
    Moscow
    Возраст
    46
    Сообщений
    6,905
    Images
    51

    Re: Вопросы.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    Илья, еще раз спасибо за корабли, все работало безукоризненно, с первой попытки! Вопрос возник такого плана: а можно ли каким-то образом создавать группы кораблей, по типу самолетов? Ну, такое своеобразное "звено". Т.е. выбрал кораблик, поставил количество, допустим 4, задал строй - "кильватер", "правый пеленг", "левый пеленг", "фронт", ну и т.д. Если такое невозможно (в редакторе вроде не встречал), то планируется ли включить со временем? Было бы очень удобно ПМСМ .
    Нет, нельзя, корабль уже является "группой" состоящей из отдельных частей связанных вместе.

    Цитата Сообщение от -atas- Посмотреть сообщение
    @ naryv

    А как сделать, чтобы новые корабли на обломки не наезжали или по крайней мере не рождались внутри обломков?
    Я бы рождал новые после таймаута, например, так:
    Код:
    base.OnTrigger(missionNumber, shortName, active);    
            if ("ship_Destroed".Equals(shortName) && active) 
            {
                  GamePlay.gpHUDLogCenter("Ship destroed. New ship will be spawn 3 minutes later");
                  Timeout(180, () => {
                           GamePlay.gpPostMissionLoad("missions\\ship.mis");
                   });
                  
           }
    новый корабль загрузится соответственно через три минуты, не будет один в другом рождаться.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Этот вопрос уже был по статическим кораблям, зениткам и проч. Т.е. если новы объект рождается на месте обломков обломки надо бы убрать. ИМХО лучше в коде игры, чтобы каждый объект в скрипте не прописывать.
    да по идее обломки через какое-то время должны исчезать сами, минут 20 по-моему.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Пока это не возможно, что добавить в скрипт , чтобы при приближении к обломкам возродившегося танкера идущего по тому же маршруту их убирать? Или для начала не рождать танкер в обломках? В идеале можно рядом рождать, а обломки уничтожать через час, например, чтобы сервер не грузили. Или обломки за час сами исчезнут? Некоторые суда садятся на мель после бомбардировки и не исчезают.
    за час должны бы исчезнуть уже. На мель не садятся, просто недобитые - плавучесть сохранилась, если пробоины мелкие - заполнятся трюмы могут и несколько часов до потопления, хотя так редко бывает.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Пересечение объектов некрасиво смотрится. В коде бы "защиту от дурака" вставить. В моей миссии то же самое было.
    есть временная задержка на прогнозирование наземкой своего пути - поэтому в колонне часто в подбитого кто-то врезается, не успевает среагировать. Иначе все ресурсы уйдут на обнаружение наземкой новых препятствий у себя на пути, а так они "видят" препятствие если оно стоит уже какое-то время, секунд 10 вроде.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    Вот кстати про это тоже хотел сказать, что можно ли задать задержку рождения танкеров скажем 10 мин, чтобы если он даже родится в самом начале пути, то другой тут же не наезжал на него, а давал возможность в течение 10 мин потонуть первому. Ну или удаление обломков через 5 мин, рождение нового танкера - через 10 мин. Потому как многие тоже жаловались, что в миссии на Р1 обломки не уничтожаются, плавают там себе под водой, вводят комрадов в заблуждение.
    см. выше, пример с таймаутом, время таймаута задаётся в секундах.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    И еще: теперь, когда с кораблями разобрались, остро встал вопрос окончания миссии. Т.е. танкер приходит в порт, и миссия перезагружается. Как это грамотно сделать? Ну, допустим, один из танкеров прорвался таки в порт противника, достиг заданной точки - все, конец миссии, надпись на экране "В этот раз вы проиграли, герр, в следующий раз вы обязательно победите!"?
    Рестарт битвы на сервере надо делать battle Stop и battle Start . Ну или можно по всем объектам пробежать и дестроить их, тогда с карты можно не уходить, самолёты тоже можно оставить, а потом загрузить первую миссию.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    Еще возникал вопрос по стату: возможно ли вести статистику, кто сколько раз победил? Ну допустим, если миссия в целом будет работать по 4-6 часов, то несколько раз она перезагрузится точно, можно как раз вести статистику, н-р красные-синие - 6:0 или 25:32, ну и т.д. так в течение времени будет накапливаться.
    да, конечно ввести переменные для счёта и по разным событиям их изменять, я в миссиях которые раньше выкладывал показывал как.
    Don't happy, be worry

  2. #2
    3GIAP.ru Аватар для -atas-
    Регистрация
    26.12.2001
    Адрес
    Москва
    Возраст
    54
    Сообщений
    2,992
    Записей в дневнике
    1

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение

    Рестарт битвы на сервере надо делать battle Stop и battle Start . Ну или можно по всем объектам пробежать и дестроить их, тогда с карты можно не уходить, самолёты тоже можно оставить, а потом загрузить первую миссию.
    На Репках и Синдикате от battle Stop и battle Start пришлось отказаться, т.к. вылезали ошибки notDestroyedActor, которые как-то глючили, не помню уже. Видимо остается 2й вариант - дестроить всех акторов кроме игроков, написать на экране о победе\поражении, счет +1, и о том, что "Миссия перезагружена, проверьте карту" Чтобы те кто в воздухе на аэродром противника не садились.

    --- Добавлено ---

    Цитата Сообщение от naryv Посмотреть сообщение
    есть временная задержка на прогнозирование наземкой своего пути - поэтому в колонне часто в подбитого кто-то врезается, не успевает среагировать. Иначе все ресурсы уйдут на обнаружение наземкой новых препятствий у себя на пути, а так они "видят" препятствие если оно стоит уже какое-то время, секунд 10 вроде.
    В бою это каждый раз происходит. Их бы клином или уступом развернуть заранее. Можно везде кроме мостов и населенных пунктов. И тольлько на мостах и в городах пусть в колонно перестраиваются. Антуражнее будет и ресурсов не больше.

    --- Добавлено ---

    Цитата Сообщение от naryv Посмотреть сообщение
    плавучесть сохранилась, если пробоины мелкие - заполнятся трюмы могут и несколько часов до потопления, хотя так редко бывает.
    В прошлой миссии с Р1 по 3-4 корабля недотопленных в цепочку собирались. Выкладывал ссылку на галерею багов Р1 в теме про баги.

    Сейчас то же самое получится в новой миссии. Через 30-40 минут новый корабль может врезаться в недотопленный прошлый корабль. Или триггер не сработает пока корабль ко дну не пошел совсем? ИИ капитанов на судах нет, чтобы обходить обломки как танки хотя бы?
    ...зелёные горят.
    ----------------------

    i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.

  3. #3

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    В прошлой миссии с Р1 по 3-4 корабля недотопленных в цепочку собирались. Выкладывал ссылку на галерею багов Р1 в теме про баги.

    Сейчас то же самое получится в новой миссии. Через 30-40 минут новый корабль может врезаться в недотопленный прошлый корабль. Или триггер не сработает пока корабль ко дну не пошел совсем? ИИ капитанов на судах нет, чтобы обходить обломки как танки хотя бы?
    Надо, даже обязательно надо, четко отслеживать момент, что бы не рождалось наземки больше, чем уничтожалось.
    Например, это делается так - миссия-хост загружает (назовем все миссии, отличные от стартовой - слейвами) слейв только один раз. И слейв сам себя контролирует. В случае с колоннами чуть сложнее, в случае с танкерами - слейв самостоятельно отслеживает состояние своего танкера (найти его не проблема, по-умолчанию миссия вызывает методы только для своих объектов), и, по условию, перед тем как загрузить сама себя, принудительно танкер уничтожает. Точно также и танки - перед загрузкой самой себя слейв прибивает все свои объекты. Тогда не будет лишних обломков и битва не будет зарастать мусором.
    Недостаток такого подхода очевиден, слейв ничего не знает о событиях в масштабе битвы. За исключением, конечно, прямого приказа слушать все события. Но все равно он ничего не знает о пользовательских данных хоста (счет и т.д). Это можно обойти чуть более сложным методом:
    1. Именовать объекты в миссии таким способом, что бы хост точно знал, к какой миссии какой объект относится. Перед загрузкой нового слейва убиваем все объекты старые прямо из хоста. Имена объектов можно менять прямо в файле (имена подчиняются определенным правилам правда).
    2. Любой актор в полном имени содержит в начале номер миссии к которой принадлежит. Загружаем слейв, реагируем на OnMissionLoaded - в параметре передается номер свежей миссии. Все, мы можем выборочно убивать объекты по номеру. Далее загрузили следующую, и т.д.
    3. Если не ошибаюсь, можно получить доступ к номеру, который будет присвоен следующей загруженной миссии. Тогда перез загрузкой новой миссии просто запоминаем этот номер. Далее как во втором пункте.

    Идея всего вышеописанного - обязательно убирать за собой перед повторной загрузкой. Тогда и танкеры не будут упираться в своих предшественников.
    Крайний раз редактировалось Small_Bee; 30.08.2011 в 19:45.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •