Цитата Сообщение от Zed4ever Посмотреть сообщение
Доброго времени суток!
Для вступления - Спасибо авторам компаний за труды, без них БоБ был бы не так интересен!
Теперь по делу.
У меня возникло несколько вопросов, м.б. не в эту ветку, но всё-ж.
Буквально несколько дней назад закончил компанию "День орла". Отлетал все миссии, не всегда строго следовал заданию, и, как следствие крайне редко получал на экране заветную надпись "Миссия выполнена". При этом, назад до филда добирался всегда.
Да и надписи типа "осн или доп задание выполнено", "спу" тоже как-то редко и хаотично появлялись.
А тут начал компанию за 110 и решил исправиться - без "оффициального допуска" в следующую миссию ни-ни.
Однако, уже при прохождении самой первой миссии заветную надпись получить так и не смог. Что я только не пробовал - и убивал все самолеты-танки-машинки на полигоне, и сбивал всех хурей самолично, посадку, есс-но, всегда осуществлял на свой аэродром. Причем как ДО, так и вместе и после ведущего - результат один - "незачот".
Мне стал интересено - как вообще получается надпись "Миссия выполнена успешно". Залез в скрипт миссии и, как понял - для успешного завершения достаточно всего то плюхнуться на филд (и это, вроде, не обязательно), чтобы получить заветные
Campaign.battleSuccess = true;
isComplete = true;
score += 100;
HUDMessgeTo("Вы выполнили основное задание!");
Выяснил следующее - методы по событию типа OnBattleStarted, OnAircraftLanded и т.д. не вызываются вообще. Сделал тестовую миссию, на базе той которую Small_Bee выкладывал, только довесил к ней своих обработчиков событий с выводом на экран по свершению оного. Результат - "фига". События не происходят. Вернее, они происходят, но о-очень через раз...
Посмотрел, что в консоль выводится, различные эксцепшны есть, но всех любопытнее оказалась ругань на campaing.dll - типа не могу найти.
Длл эта, как и положено, оказалась на месте в боб-овой папке. Для надежности я её ещё в систем32 положил, и зарегистрировать попробовал - не вышло, regsvr32 сказал что модуль загружен, но точка входа DllRegisterServer не найдена.
При этом ругань в консоли на длл-ку прекратилась, события стали отрабатывать корректно (скорее всего, нахождение оной в систем32 помогло).
Но при длительных тестах (10 раз перезапускал боб) обнаружил, бывает, что события "проходят мимо" и происходит это тогда, когда в консоль идет ругань на campaing.dll. Однако, прогресс на лицо - сейчас события гораздо чаще отрабатывают. (на долго ли...)

Из всего вышесказанного несколько вопросов и предложений:
1 - у меня одного такие "неполадки" (скрипты выполняются крайне нестабильно)?
2 - а с# в скриптах чем-то "обрезан"? Пространства имен все доступны?
3 - а можно настраивать размер цвет и шрифт выводимой на экран надписи? (можно использовать для отладки, вывода справок и т.д.)
Или вообще сделать его "анимированным", типа гиф-ки? И выводить его не по центру, а там где требуется.
(Это у меня задумки есть сделать обучающие миссии управления самолетом, чтобы совсем новому в ил2 человеку в кабине подсказывать какие рычажки дергать и зачем. А то те обучалки что есть крайне убоги... Да и для каждого самолета желательно иметь хороший "интерактивный" мануал с режимом дополненной реальности)))
4 - может быть есть смысл по прохождению чекпоинтов выводить надпись типа "следуйте к след. чекпоинту" ну, или хотябы "следуйте домой" когда маршрут на последнюю точку переходит? А то в пылу боя не всегда за эфиром следишь, да и не всегда бот-ведущий в эфир говорит о том, что он домой собрался.
5 - можно управлять переговорами по радио между ботами, вставлять туда свои фразы и т.д. из скрипта? (Желательно с озвучкой из указанного файла)
6 - в чем смысл вставки "=" в файле campaings.ini, если его руками убирать надо? (я сначала подумал на заморочки со стимом - чтобы он его не обновлял при проверке целостности, ан нет... затирает гад)
7 - из предыдущего вытекает: в другой ветке разраб обещал подсказать как сделать так, чтобы campaings.ini не затирался при обновлении/проверке целостности - это еще не реализовано?
8 - зачем 2 файла делать для установщика (для 32 и 64 разр) - ведь в инсталяторе всегда можно узнать какая операционка, да и вся разница в установках только в пути до стима, или я чего-то недоосознаю?)
9 - может быть есть смысл в миссиях, для справки, можно добавить в описание что нужно для удачного завершения? (это чтобы такие как я не мучались с вопросами и не лезли скрипты ковырять)))

Еще раз спасибо за Ваши труды!

З.Ы.
Win7x64, i7 2600k gf gtx580, 16Gb, версия игры: последняя из стима, папка кэш чистится скриптом на запуск боба.
Профессия - программист АСУ.
Добрый день!
Итак, по-порядку.
Насчет срабатывания тригеров или событий. Работают они не всегда. Это баг игры. Разработчики вроде бы знают об этом, но дело обстоит так, что данный баг проблематично воспроизвести. А ситуации как у вас встречаются у каждого 2-го. То работает миссия, то нет. Я, увы, ничего поделать с этим не могу. Одна надежда на патчи.

Теперь по вопросам.

1. Баги игры. Очень надеюсь что излечат. Иначе писать что-то для БЗБ теряет смысл.
2. С# ничем не обрезан, насколько мне известно. Так что впринципе все пространства должны быть доступны.
3. Пока надписи какие есть. Они вроде немного анимированы, меняют плавно цвет с красного на желтый. Разработчики обещали расширить управление надписями, что из этого выйдет-покажет время.
4. Чекпоинт выводить можно без проблем. Просто мне такая задача создателем кампании не ставилась. С другой стороны привязывать игрока к какому-то определенному маршруту не всегда будет правильно. Поставят такую задачу-сделаю.
5. Насколько я знаю нет. Сейчас файлы переговоров вшиты в саму игру. Возможно когда дадут SDK для мододелов, такая возможность появится. Снйчас я могу выводить только фразы вшитые в саму игру. Причем не на русском языке.
6. Смысл в том, что со знаком "=" игра не может прочитать ini файл. А все известные мне инсталляторы ставят автоматически знак "=". У меня было обращение к разработчикам по поводу того, чтобы игра игнорировала знак "=", тогда бы не пришлось ничего править и при деинсталляции автоматически бы убирались все надписи. Даже Сергею приводил код, как это можно сделать и что это не займет больше 20 секунд, но воз и ныне там. Пока типа это не в приоритете.
7. Пока нет. Ждем.
8. Дело в том, что разный путь до Стима. А тот инсталлятор, который использую я не дает завести 2 переменные с одним именем. В первой пробной версии был только один инсталлятор, который успешно определял разрядность системы и соответственно использовал ту или иную переменную, имя у них было одно, а значение разное. Но тот продукт был платный, ломать его не хотелось и времени небыло, да не устроил он по другим причинам. Пришлось использовать тот, что сейчас. Хотя самому это не нравится.
9. Да, я этот вопрос предлагал Сергею. Мы его обсудили и решили что пока можно обойтись без этого. То есть человек сам решает, выполнил он задачу или нет. Хотя честно говоря не всегда вообще понятно что именно нужно сделать для успешного завершения, как пример кампания "Битва за Британию". Задания столь разнообразны, что сращу и не поймешь как получить заветные очки.

И спасибо за ваши замечания и вопросы.

С Уважением, Евгений.