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

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

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Re: Вопросы.

    В общем со статиками так пока и не разобрался, но дошла одна маленькая вещь.. Как до жирафа.. Надо сильно забыть концепцию миссии из ила, т.к. тут как таковой миссии (с точки зрения Ила) не существует. Есть "битва", а в ее рамках выполняются различные миссии.

    Миссия вообще умеет может загружать сама себя. Технически это конечно не так, но выглядит именно так. Т.е. из миссии мы приказываем через GamePlay.gpPostMissionLoad() загрузить в битву еще одну миссию, а что это за миссия - не важно. Походу общими для всех миссий является объект Battle и наверное GamePlay... Каждая миссия загружается под новым номером.

    Скажем у меня есть одна миссия-хост (так сказать, "точка входа"). По OnBattleStarted() она загружает стартовый набор миссий (скажем одна - красные танки, вторая синие танки, едут навстречу). И в каждой из этих миссий отслеживается OnActorDead(). Если была уничтожена группа (она одна все равно), миссия загружает себя снова, сразу или по таймеру. Если помер танчик, то через несколько сек. убираем его трупик через Destroy(), что бы не мешался. Получается "бесконечная" стенка-на-стенку. Но миссия-хост понятия не имеет, что там творится. Вот в чем затык. (

    Что делать со старыми, "сёгранными" кар... миссиями? Или если на круглосуточном сервере скажем рано или поздно счетчик выйдет за MAXINT?
    Что есть поле MissionNumberListener? Пробовал присваивать номер свежезагруженной миссии - вообще всякие события вызывать перестало (в этой миссии).

    Ну и собственно, пока не придумал, как эти миссии связать в одну кучу. Т.е. у Battle есть список миссий, но он в защищенном поле... облом.. Ивентов у Battle тоже нет. Подозреваю, для этого надо бы рисовать свой собственный Battle, а это будет доступно только в юзер-аддоне? Или есть другой путь?

    Кстати интересная особенность (возвращаясь все к той же машинке из колонны). Похоже события миссии должны срабатывать только для своих "объектов".. Но они работают и для другой миссии - частично для "продвинутой" наземки и полностью для самолетов. Частично - имеется ввиду, что когда загружается новая миссия с акторами, в "старой" на каждого свежесозданного актора срабатывает OnActorCreated(), но никакой внятной инфы из параметров выдрать нельзя. shortName = "NONAME", actor не является ни группой, ни наземкой, вообще ничем походу... Хотя если в одной миссии поставить триггер "Враги прилетели", то если эта "анонимная" наземка из другой миссии туда заезжает, тригер срабатывает... Или я совсем уже запутался.

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

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Но миссия-хост понятия не имеет, что там творится. Вот в чем затык.
    Я конечно кроме бейсика и алгоритмов ничего не проходил, но мне кажется, отслеживать OnActorDead() и делать Destroy() нужно в миссии-хосте, т.к. только она и есть на сервере. Т.е. каждой под-миссии свой .сs файл совсем не обязателен и даже поначалу вреден, т.к. слишком ветвит скрипт основной миссии.

    Допустим: запущена миссия, которая определила стартовые аэродромы, дала общий брифинг, запустила один основной скрипт.

    Основной скрипт делает:
    Через 5 минут подгрузили новые цели: синие бомбят аэродром, красные топят транспорты. (Это уже в момент подгрузки стало частью хост-миссии.)

    По триггеру "посадка + 5 минут" уничтожаем ненужные тушки. По тригеру "умер" + 10 минут уничтожаем тушки ... и т.д.

    По тригеру транспорт потоплен, загружаются следующие цели: синим судам выйти в море. Красным вылететь на перехват судов, синие самолеты прикрывают суда.

    По триггеру "посадка + 5 минут" уничтожаем ненужные тушки. По тригеру "умер" + 10 минут уничтожаем тушки ... и т.д.

    По тригеру красный аэродром разбомблен синие начинают бомбить заводы. Красные вылетают на перехват....

    По триггеру "посадка + 5 минут" уничтожаем ненужные тушки. По тригеру "умер" + 10 минут уничтожаем тушки ... и т.д.

    Через 40 минут выступают красные танки, 110е отправляются на штурмовку. И т.д. собрать пакет из 50-100 подмиссий, связанных логически тригерами. Причем как и в жизни эти задания могут происходить одновременно.

    По триггеру "посадка + 5 минут" уничтожаем ненужные тушки. По тригеру "умер" + 10 минут уничтожаем тушки ... и т.д.

    Там где нужно добавить ограничения по времени, ограничение на количество одновременно проистекающих "подмиссий" и др.

    Ко всему этому прикрутить интерфейс в котором игрок может выбрать для себя миссию из ожидающих взлета в данный момент как в WWII Online, занять слот вместе с сосквадниками в соответствующей комнате миссии и через 5 минут появиться вместе с ними на полосе для вылета.

    На следующем этапе прикрутить веб- или игровой интерфейс, где командиры сквадов выбирают направления для атаки, распределяют ограниченные ресурсы (самолеты и наземку), выбирают тип атаки (тип миссии) и т.п.

    Где не прав, поправьте.
    ...зелёные горят.
    ----------------------

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

  3. #3

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Я конечно кроме бейсика и алгоритмов ничего не проходил, но мне кажется, отслеживать OnActorDead() и делать Destroy() нужно в миссии-хосте, т.к. только она и есть на сервере. Т.е. каждой под-миссии свой .сs файл совсем не обязателен и даже поначалу вреден, т.к. слишком ветвит скрипт основной миссии.

    Допустим: запущена миссия, которая определила стартовые аэродромы, дала общий брифинг, запустила один основной скрипт.

    Основной скрипт делает:
    Через 5 минут подгрузили новые цели: синие бомбят аэродром, красные топят транспорты. (Это уже в момент подгрузки стало частью хост-миссии.)

    По триггеру "посадка + 5 минут" уничтожаем ненужные тушки. По тригеру "умер" + 10 минут уничтожаем тушки ... и т.д.

    По тригеру транспорт потоплен, загружаются следующие цели: синим судам выйти в море. Красным вылететь на перехват судов, синие самолеты прикрывают суда.

    По триггеру "посадка + 5 минут" уничтожаем ненужные тушки. По тригеру "умер" + 10 минут уничтожаем тушки ... и т.д.

    По тригеру красный аэродром разбомблен синие начинают бомбить заводы. Красные вылетают на перехват....

    По триггеру "посадка + 5 минут" уничтожаем ненужные тушки. По тригеру "умер" + 10 минут уничтожаем тушки ... и т.д.

    Через 40 минут выступают красные танки, 110е отправляются на штурмовку. И т.д. собрать пакет из 50-100 подмиссий, связанных логически тригерами. Причем как и в жизни эти задания могут происходить одновременно.

    По триггеру "посадка + 5 минут" уничтожаем ненужные тушки. По тригеру "умер" + 10 минут уничтожаем тушки ... и т.д.

    Там где нужно добавить ограничения по времени, ограничение на количество одновременно проистекающих "подмиссий" и др.

    Ко всему этому прикрутить интерфейс в котором игрок может выбрать для себя миссию из ожидающих взлета в данный момент как в WWII Online, занять слот вместе с сосквадниками в соответствующей комнате миссии и через 5 минут появиться вместе с ними на полосе для вылета.

    На следующем этапе прикрутить веб- или игровой интерфейс, где командиры сквадов выбирают направления для атаки, распределяют ограниченные ресурсы (самолеты и наземку), выбирают тип атаки (тип миссии) и т.п.

    Где не прав, поправьте.
    Юмор в том, что наземка при гибели не вызывает OnActorDead в миссии-хосте. Только "родная"... Возможно так и задумано, возможно баг. Вообще наземку можно стартовать и по скрипту (ставить в свойствах "Старт по скрипту" прикрепить к группе экшен и из скрипта этот экшен запускать). НО, снова юмор. Такая галка для наземки как-то глючно работает, плюс наземные группы с такой галкой в начале миссии не создаются, но и появляться тоже упорно не желают. С самолетами этот номер проходит на ура, кстати. Я в соседней теме выложил миссию, можете поэкспериментировать.
    Вообще я так и предполагал сделать. Миссия-хост, в ней свои переменные - ресурсы, состояния и т.д., и она всем остальным крутит. но.. Наземка "скриптом" не стартует, только через загрузку другой миссии, отследить состояние наземки из другой миссии тоже не могу.. Вот так вот. (((

    Интерфейс и прочее... возможно когда разрешат аддоны делать... Пока его прикрутить чего-то не вышло (((

  4. #4

    Re: Вопросы.

    Возможно попробовать стоит такой принцип - раз обьекты подгруженные к баталии в субмисии не контролируются из другой субмисии, то собственно, все родные для субмиссии объекты должны контролироваться скриптом этой субмисии, то есть по логическому завершению этой саммой мисии дестроится как по гибели так и по достижению цели.

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

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Юмор в том, что наземка при гибели не вызывает OnActorDead в миссии-хосте. Только "родная"... Возможно так и задумано, возможно баг.
    Думаю, либо баг, либо не успели доделать наземку либо как-то по-хитрому делается. Скрипт - это же код программы, насколько я понимаю, какая разница, в каком .cs файле он прописан? Главное, чтобы программа его нашла и выполнила по большому счету. Но вероятно есть тонкости, которых не знаю.

    Эта ветка с вопросами, думаю будут и ответы )


    зы. проблема только статиков касается или всей наземки?
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

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

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    но дошла одна маленькая вещь.. Как до жирафа.. Надо сильно забыть концепцию миссии из ила, т.к. тут как таковой миссии (с точки зрения Ила) не существует. Есть "битва", а в ее рамках выполняются различные миссии. Миссия вообще умеет может загружать сама себя. Технически это конечно не так, но выглядит именно так. Т.е. из миссии мы приказываем через GamePlay.gpPostMissionLoad() загрузить в битву еще одну миссию, а что это за миссия - не важно. Походу общими для всех миссий является объект Battle и наверное GamePlay... Каждая миссия загружается под новым номером.
    Да, всё так.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Скажем у меня есть одна миссия-хост (так сказать, "точка входа"). По OnBattleStarted() она загружает стартовый набор миссий (скажем одна - красные танки, вторая синие танки, едут навстречу). И в каждой из этих миссий отслеживается OnActorDead(). Если была уничтожена группа (она одна все равно), миссия загружает себя снова, сразу или по таймеру. Если помер танчик, то через несколько сек. убираем его трупик через Destroy(), что бы не мешался. Получается "бесконечная" стенка-на-стенку. Но миссия-хост понятия не имеет, что там творится. Вот в чем затык. (

    Что делать со старыми, "сёгранными" кар... миссиями? Или если на круглосуточном сервере скажем рано или поздно счетчик выйдет за MAXINT?
    Можно баталию останавливать саму.
    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Что есть поле MissionNumberListener? Пробовал присваивать номер свежезагруженной миссии - вообще всякие события вызывать перестало (в этой миссии).
    это поле, которое показывает события какой миссии скрипт миссии слушает - при загрузке миссии в это поле ставится её номер - т.е. она "слышит" только свои события. Если выставить номер другой миссии - будет "слушать" только её, чтобы все миссии слышать - поле в меньше нуля выставить надо.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Ну и собственно, пока не придумал, как эти миссии связать в одну кучу. Т.е. у Battle есть список миссий, но он в защищенном поле... облом.. Ивентов у Battle тоже нет. Подозреваю, для этого надо бы рисовать свой собственный Battle, а это будет доступно только в юзер-аддоне? Или есть другой путь?
    тут пока не могу сказать, в юзер-аддоне можно свою Battle описывать и миссии загруженные дёргать.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Кстати интересная особенность (возвращаясь все к той же машинке из колонны). Похоже события миссии должны срабатывать только для своих "объектов".. Но они работают и для другой миссии - частично для "продвинутой" наземки и полностью для самолетов. Частично - имеется ввиду, что когда загружается новая миссия с акторами, в "старой" на каждого свежесозданного актора срабатывает OnActorCreated(), но никакой внятной инфы из параметров выдрать нельзя. shortName = "NONAME", actor не является ни группой, ни наземкой, вообще ничем походу... Хотя если в одной миссии поставить триггер "Враги прилетели", то если эта "анонимная" наземка из другой миссии туда заезжает, тригер срабатывает... Или я совсем уже запутался.
    надо посмотреть, тут я не помню.
    Don't happy, be worry

  7. #7

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    Ну, в общем как я и говорил, сейчас статики - мишура и акторами не являются, интерфейса для доступа к ним нет, посмотрим, может быть в будущем сделаем.
    Это было бы гуд, тем более что артиллерия тоже в статики записалась.

    это поле, которое показывает события какой миссии скрипт миссии слушает - при загрузке миссии в это поле ставится её номер - т.е. она "слышит" только свои события. Если выставить номер другой миссии - будет "слушать" только её, чтобы все миссии слышать - поле в меньше нуля выставить надо.
    О, супер, походу то что надо, вечером попробую..

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

    Эта ветка с вопросами, думаю будут и ответы )


    зы. проблема только статиков касается или всей наземки?
    Походу, с MissionNumberListener много вопросов снимаются. А скрипт отдельной миссии нужен конечно, скажем так одну битву можно будет дополнять сколько хошь новыми интересными миссиями, не ломая старое.

Ваши права

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