Нарисовалась проблема. Запустил миссию на выделенном, все воюет считается нормально, а как только сам захожу выскакивают ошибки и почти все объекты пропадают из миссии. Самому можно вообще заходить на свой выделенный?
Раньше это удавалось... Что в скрипте может приводить к такой ошибке?
Код:================================================= [21:56:12] System.NullReferenceException: Object reference not set to an instance of an object. [21:56:12] [21:56:12] Server stack trace: [21:56:12] at 6UZP66dp5dKAdD5LMYr.F9pJL9dGtcbAt8r8Umh.JwjWWYN9w9(xnKDxkk8wATA33F3hpA , G7xPRi2e9fpuLtHG23a ) [21:56:12] at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.sp1UnA9jmwb(Player[] , String , Object[] , Double ) [21:56:12] at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.yEy1eAe2YPQxskLBZIku(Object , Object , Object , Double ) [21:56:12] at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.d87UnNOmgnm(Player[] , String , Object[] ) [21:56:12] at pqlnUTF7gnMAoU4L9MP.lm1GgkFoiOOBGu1gmwf.ZnhKPrKgxsgJUIGtmgOK(Object , Object , Object ) [21:56:12] at pqlnUTF7gnMAoU4L9MP.lm1GgkFoiOOBGu1gmwf.HUDLogCenter(Player[] , String , Object[] ) [21:56:12] at maddox.game.GameDef.gpHUDLogCenter(Player[] to, String msg, Object[] parms) [21:56:12] at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) [21:56:12] at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) [21:56:12] [21:56:12] Exception rethrown at [0]: [21:56:12] at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) [21:56:12] at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) [21:56:12] at maddox.game.IGamePlay.gpHUDLogCenter(Player[] to, String msg, Object[] parms) [21:56:12] at Mission.sendScreenMessageTo(Int32 army, String msg, Object[] parms) [21:56:12] at Mission.OnActorDead(Int32 missionNumber, String shortName, AiActor actor, List`1 damages) [21:56:12] at maddox.game.world.Strategy.OnActorDead(Int32 missionNumber, String shortName, AiActor actor, AiDamageInitiator initiator) [21:56:12] at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [21:56:12] at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [21:56:12] at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) [21:56:12] at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) [21:56:12] [21:56:12] Exception rethrown at [1]: [21:56:12] at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) [21:56:12] at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) [21:56:12] at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [21:56:12] at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt) [21:56:12] at RoFTf9069W6jWRmA8PN.U2RoVL0OVdWjVQJ7319.eventGame(GameEventId , Object , Object , Int32 ) [21:56:12] at NTlYp6NdtgpnKt7wGgO.VvFELvNie2My3mOTesk.WPGBQuHHKI8(GameEventId , Object , Object , Int32 ) [21:56:12] =================================================
...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
Сами сообщения сервера проходят как положено. Думаю разберусь, только нескоро получится. Заодно добавлю еще пару интересных вещей.
Кажется нашел ошибку, хотя не уверен. Много раз читал тему, но все равно особенности выделеного не учел.
Сам скрипт сообщений работает идеально.
Код://******************Send Screen Message Method******************* private void sendScreenMessageTo(int army, string msg, object[] parms) { List<Player> Players = new List<Player>(); //Singleplayer or Dedi Server if (GamePlay.gpPlayer() != null) { if (GamePlay.gpPlayer().Army() == army || army == -1) Players.Add(GamePlay.gpPlayer()); } // Multiplayer if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0) { foreach (Player p in GamePlay.gpRemotePlayers()) { if (p.Army() == army || army == -1) Players.Add(p); } } if (Players != null && Players.Count > 0) GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms); }Пока "в игре" только [Server] - локализация тоже работает правильно, но в ней есть определение языка игрока:Код:[21:34:02] Server to [Server]: ====================================== [21:34:02] Server to [Server]: RED> [ 142 ] / [ 166 ] <BLUE [21:34:02] Server to [Server]: Миссия будет остановлена через 2 min. [21:34:02] Server to [Server]: ====================================== [21:34:19] Server to [Server]: Команда красных уничтожила самолет-разведчик синих[ 1 ] [21:34:19] Server to [Server]: Команда красных получает очки за выполнение задания: [ 100 ] [21:34:19] Server: Bf 110 C-4 () (Бот) сбил FW 200 () (Бот).
Получается, что текст сообщения определяется по GamePlay.gpPlayer()(скорее всего здесь конфликт), а сообщения отправляются массиву игроков(они все могут оказаться с разными языками):Код:string langIndex = GamePlay.gpPlayer().LanguageName();
Попробую сделать определение языка для каждого игрока из массива и тправку сообщений в соответствии с ним, но я не очень хорошо понимаю отличия выделенного/сингла от мультиплеера. Хотел бы уточнить, чтобы правильно понимать что происходит с этими плеерами, так как они везде используются.Код:sendScreenMessageTo(-1, getLocalizedMessage("noWinner"), new object[] { });
Для сингла и dedi:
GamePlay.gpPlayer() - это кто?
Для мультиплеера:
GamePlay.gpRemotePlayers() - массив игроков на сервере(он состоит из GamePlay.gpPlayer() ?)
И почему определение игрока отличается для сингла и выделенного?
Крайний раз редактировалось podvoxx; 11.01.2012 в 10:35.
Игрок сингла и хост сервера из GUI (на деди возможно сам Сервер).
Не думаю.
Чтобы юзерам было неудобно программировать, было меньше миссий, меньше продаж. Саботаж, в общемВсе авторы, даже такие профессионалы как Kodiak с этим мучаются часами.
--- Добавлено ---
А компрессия времени в игре при этом работает?
onTickGame при включении компрессии тоже дает небольшие сбои как мне показалось, но наверное это надежнее?
...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
Это замедление/ускорение времени? Делаю для онлайн миссии, поэтому все нормально должно быть. У Snafu весь учет времени практически построен. И если верить мсдн, то этот метод используется как раз для точного измерения производительности.
--- Добавлено ---
А простые смертные как я днями и неделями![]()
Определение игроков не отличается ни для сервера, ни для сингла. И там и там это - AiPlayer.
GamePlay.gpPlayer() - мы всегда получаем хост. Для сингла он будет совпадать с собственно игроком. gpRemotePlayers() получает список всех игроков, подключившихся удаленно. Нет тут ни проблемы, ни противоречия вообще.
Если хотим сделать универсальный скрипт, проверяем сразу gpRemotePlayers() + gpPlayer(). Не вижу зла, в общем.
В конце концов можно проверить, что запущено - сингл, сервер или дедик.
Проблема с определениями. GamePlay.gpPlayer() - это метод, возвращающий объект AiPlayer(). GamePlay.gpRemotePlayers() соответственно возвращает набор таких AiPlayer.Для мультиплеера:
GamePlay.gpRemotePlayers() - массив игроков на сервере(он состоит из GamePlay.gpPlayer() ?)
Универсальный совет - при получении любого массива методами из GamePlay и т.д., перед использованием всегда проверяем его на null.
Не изобретай велосипед.Попробую сделать определение языка для каждого игрока из массива и тправку сообщений в соответствии с ним, но я не очень хорошо понимаю отличия выделенного/сингла от мультиплеера. Хотел бы уточнить, чтобы правильно понимать что происходит с этими плеерами, так как они везде используются.![]()
Спасибо за информацию, проблемы нет, только от незнания и ее отсутствияПро плееры примерно так и представлял.
Там недолго править, в голове уже все исправил, осталось в коде )) Просто хочется попроще и без дополнений, чтобы миссии можно было запустить используя только ее файлы.
Я о том, что с точки зрения usability и дружелюбности к создателю миссий эти проверки лучше бы делались самим движком, чтобы у создателя голова не болела.
Делать удобно разработчику или делать удобно пользователю - это 2 разные парадигмы. Например меню мультика сделано полностью взглядом через глаза программиста, а не пользователя.
Рабочему ВАЗа удобно пользоваться Жигулями. Остальным все же удобнее хотя бы Фиат. Yahoo или Altavista смотрели на свои страницы поиска глазами акционеров, менеджеров, программистов и размещали там рекламу, новости и т.д. Где они теперь? Гугл смотрел на страницу поиска глазами юзера и дал ему быстрый ответ на его вопрос "Как найти ...?".
Юзер, заходящий в мультик с вопросом "Хочу сервер, чтобы полетать!" найдет ответ на него только с 3го тыка, потому что программисту так было быстрее и просто лениво думать заранее, поставив себя на место пользователя и посмотреть его глазами. В Арме почему-то такой проблемы нет, список серверов находится сразу. Шкода лучше жигулей. Поэтому Российские компании обычно и неконкурентоспособны.
Также с созданием миссий. Тенденция, к сожалению. Мы с Kodiak тоже потратили немало времени на эту проблему http://forum.1cpublishing.eu/showthread.php?t=26623 Кодиак что-то в C# понимает в отличии от меня. podvoxx сталкивается абсолютно с теми же трудностями. Это уже проблема для продукта, "и так сойдет" может не прокатить на мировом рынке.
Также с хотфиксами. Нет звука в онлайне? Подождут месяца 3, т.к. девелоперу неудобно делать хотфикс, а удобнее сразу новый движок. Нет возможности летать из-за вылета лончера? Не важно, хотфикса не будет, ждите еще 3 месяца. Если компания ориентирована не на клиента, а на себя любимых/своих акционеров, она может исправить какие-то баги, но не может дать клиенту то, что он хочет как целостный продукт.
Крайний раз редактировалось -atas-; 11.01.2012 в 19:47.
...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
Я так и не понял, в чем именно проблема с этими игроками. Как хотелось бы это реализовать, что бы было понятно?
Хотфиксы - один, с точки зрения юзера маленький баг, может потребовать огромного труда и вложений. Понятно, что со стороны этого не видно.
По поводу гугла, у меня несколько другая информация о причинах его успеха, ну да это оффтоп.
Юзер это одно - создатель миссий - совсем разный уровень "пользователей". Поэтому. Текущий редактор практически ничем не отличается от старого, так что для миссий на уровне старого ила вообще никакими навыками обладать не надо, плюс он привычен уже.
Для более сложных сценариев - в руках мощный инструмент, но что бы его применить, да, необходим некоторый багаж знаний. И тут разработчик и "пользователь" начинают говорить на одном языке. Если владеют, конечно. А как иначе? Соседи сделали мега редактор, и что? Подозреваю, что создатели миссий не используют и 10-й доли его возможностей, а труда туда вложено дай боже. Теперь они сделали внешние интерфейсы без всяких иконок и GUI - народ духом воспрянул. Да, для того что бы их юзать, тоже надо обладать определенными навыками. И никакого "юзерфриндли" там нет и не надо. Или надо было сделать так же - что бы когда дали скрипты, все от счастья заплясали? )))
Для полного счастья мне не хватает только учета всех статиков и сетевых дополнений по аналогии с оффом. С остальным - проблем нет. У кого они есть - это не проблема ни игры, ни самого C#. За баги сейчас не говорим ).
Интерфейс игровой - это совсем другой вопрос. Я бы тоже сказал, что он неудобный, если бы не увидел интерфейс новых "Героев" )))
Например, чтобы скрипт, который работает в оффлайне, или на хостед сервере, работал на выделенном. Если у меня нет внешнего IP я не могу выделенный сервер запустить, как мне миссии тестировать? Запускаю в лобби, они работают, запускаю на Репке, они не работают. Не порядок. Много таких моментов, где подходы не унифицированы. Например, танки можно как группу запустить, а корабли нельзя и т.д. и т.п. Унификация сильно облегчает обучение юзера, делающего миссии.
Понятно, что это вопрос приоритетов (удобство пользователя vs. ресурсы команды, нервы, бессонные ночи, ругань с издателем, конфликты с начальством), бесплатного ничего не бывает. Кто выбирает правильные приоритеты, добивается любви пользователей, мировой славы продукта, выдающихся для Российской компании продаж. Кто выбирает неправильные, вызывает критику пользователей, забвение, закрытие проекта.
Мне вот рассказывали, что бывшие сотрудники на Олега жаловались, мол приносишь ему хорошую работу, а он заставляет переделывать, и так много раз, просто невыносимо. Видимо Олег смотрел не глазами программиста/дизайнера, а глазами юзера, как на западе принято. Иначе бы Ил-2 не был успешен. Другие продукты там продать невозможно. Работал раньше в западной кампании немного с иностранцами. Совсем другой подход, как у братков "пацан сказал, пацан сделал" Ресурсы никого не волнуют, это личная ответственность называется: рви зубами, когтями, не спи ночами, поставь всех на уши, вывернись наизнанку, но сделай на 100%. Сильно отличается от осваивания бюджета строго в рабочее время в отечественной контторе.
Но это все лирика, сори за оффтоп.
...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
Еще пара вопросов.
1.
GamePlay.gpPlayer() - игрок , выделенный сервер/сингл
GamePlay.gpPlayer().LanguageName() - язык игрока, string, вида "ru", "en" и т.д.
GamePlay.gpPlayer().Army() - армия игрока, может быть 1 и 2
GamePlay.gpRemotePlayers() - игрок , мультиплеер через главное меню
GamePlay.gpRemotePlayers().Length - количество игроков
Какие еще есть варианты и можно ли при помощи GamePlay.gpPlayer() определить ник игрока?
2.
Корректно ли в БОБе будет использовать метод определения и отсчета времени на основе DateTime?
Например для отсчета времени от начала миссии? Подойдет для точной засечки времени в миссии на гоночном сервере?
3.Код:DateTime dateTime = DateTime.Now; C.WriteLine ("d = {0:d}", dateTime ); // mm/dd/yyyy C.WriteLine ("D = {0:D}", dateTime ); // month dd, yyyy C.WriteLine ("f = {0:f}", dateTime ); // day, month dd, yyyy hh:mm C.WriteLine ("F = {0:F}", dateTime ); // day, month dd, yyyy HH:mm:ss AM/PM C.WriteLine ("g = {0:g}", dateTime ); // mm/dd/yyyy HH:mm C.WriteLine ("G = {0:G}", dateTime ); // mm/dd/yyyy hh:mm:ss C.WriteLine ("M = {0:M}", dateTime ); // month dd C.WriteLine ("R = {0:R}", dateTime ); // ddd Month yyyy hh:mm:ss GMT C.WriteLine ("s = {0:s}", dateTime ); // yyyy-mm-dd hh:mm:ss (Sortable) C.WriteLine ("t = {0:t}", dateTime ); // hh:mm AM/PM C.WriteLine ("T = {0:T}", dateTime ); // hh:mm:ss AM/PM // yyyy-mm-dd hh:mm:ss (Sortable) C.WriteLine ("u = {0:u}", dateTime ); // day, month dd, yyyy hh:mm:ss AM/PM C.WriteLine ("U = {0:U}", dateTime ); // month, yyyy (March, 2006) C.WriteLine ("Y = {0:Y}", dateTime ); C.WriteLine ("Month = " + dateTime.Month); // month number (3) // day of week name (Friday) C.WriteLine ("Day Of Week = " + dateTime.DayOfWeek); // 24 hour time (16:12:11) C.WriteLine ("Time Of Day = " + dateTime.TimeOfDay); // (632769991310000000) C.WriteLine("DateTime.Ticks = " + dateTime.Ticks); // Ticks are the number of 100 nanosecond intervals since 01/01/0001 12:00am // Ticks are useful in elapsed time measurement.
Есть примеры с использованием Stopwatch(), он тоже подходит для отсчета времени? Выглядит очень удобным
Крайний раз редактировалось podvoxx; 11.01.2012 в 13:13.
Подвох, вот SharpDevelop - думаю неплохой вариант для тебя, раз уж студия не встает. Ставишь, подключаешь игровые либы, как описано здесь [Tutorial] Simple Scripting Lessons - Preparations. Писать и отлаживать код в блокноте - это не вариант.
Octocat, спасибо, что наставил на путь истинный. Все скачалось-установилось-подключилось за пять минут, интерфейс как в студии, мне понравилась программка
О чем я думал полгода не понимаю, может это ide для c++(я с него начал, когда с Армой возился) меня оттолкнули от нефирменных программ
Наконец-то кончилась у меня эпоха использования боба как компилятора))
Есть такой вопрос. Встречал в миссиях объект маркер, который использовался для спауна наземки в определенном этим маркером положении. В редакторе где этот маркер находится?
По процессу спауна наземки. Допустим есть группа статиков, расставленных красиво в редакторе, мне нужно эту группу спаунить скриптом в определенных местах на карте, где не будет конфликтов с окружением на земле. Для этого я ставлю всю группу в подходящем месте на карте, беру координаты из файла миссии, затем повторяю процесс сколько нужно. Потом заношу эти координаты группы объектов в массив, случайным образом выбираю оттуда их при создании миссии и создаю в скрипте миссию с заданными координатами и группой объектов. Это нормальное решение? И задния/окопы наверное тоже не будут подгружаться?
Это маркер линии фронта. Как на нем спаунить технику - в примерах naryv в моем архиве. У него там хорошая танковая война, которую с небольшими исправлениями можно превратить в проект. Жаль, что он не довел до конца. Banks грозится внедрить ее в свой генератор, но когда это будет...
--- Добавлено ---
Это в багрепорты, если их кто-то еще читает. У меня была дыра с Pkz 222.
...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
Для операций с временными интервалами - TimeSpan, с датой и временем - DateTime.
Учет статиков и сетевые дополнения это конечно хорошо, но API нет, вообще. Ни красивого объектного API ни безобъектного, вообще никакого. Нормальный API - целый комплекс сервисов, где можно получить список дескрипторов типов самолетов, которые содержат всю мета-информацию о самолете, (вплоть до максимальной скорости в горизонте на разных высотах, скороподъемности, вариантах вооружения), дескипторы эскадрилий (типы используемых самолетов, количество и размеры звеньев, типы стандартных построений и решаемых задач), возможность до старта миссии проложить маршруты наземки, получить информацио о расположении линии фронта и координатах секторов, нормальные человеческие функци CreateGroup() и CreateUnit() чтобы порождать юниты и группы. Всего этого нет. Что же есть? Вместо всего перечисленного у нас ISectionFile, который по хорошему давно пора бы похоронить в свинцовом гробу, убожество, написанное джава-программистом в джава-стиле, работающее наполовину (колонны в поддмиссиях нельзя создать через gpPostMissionLoad(ISectionFile), только предварительно сохранив файл и вызвав gpPostMissionLoad(string)). В общем трешово все внутри с точки зрения коммерческого программиста. Про комментарии, оформление кода, и говорить нечего, в путевой фирме такой код к продакшн-ветке репозитория близко бы не подпустили.![]()
Гм. А каким образом тогда работает пример с машинками на аэродромах от naryv? Там как раз это дело и используется.
Не очень представляю создание групп и прочего одним методом. Это ж сколько параметров туда передать? Разве что примитивное что-то вроде домиков и прочего. Моя претензия только к формату файла, ибо большой поклонник XML. ) Да и тоже можно найти оправдание - формат миссии привычен. )
Хотя конечно можно. И обрубать себе руки, потому что если захочется добавить фичу, то нифига не получится, иначе придется менять интерфейсы (в лучшем случае), а это значит, что старый код (нами же написанный) работать не будет. Либо нарисовать их настолько обобщенными, что будет похоже на.. ISectionFile.
По поводу скоростей и параметров. Их же можно вроде снять с самолета? Если надо макс. скорость по высотам - я делал небольшой скрипт, где у меня боты летали на всем на всех высотах. Через полтора часа мин. радиус виража я конечно не получил, но информация для генерации маршрутов у меня была в полном объеме.
За Олега тоже неоднозначный вывод. Что значит переделывать? Я так понимаю, есть конкретное ТЗ - если проект ТЗ соответствует, какие вопросы? Переделывание всегда влечет за собой трату времени, как реального, так и потенциального (время на старую работу тоже ведь потрачено было?), и чревато набором трудно уловимых ошибок. Если нет внятного ТЗ - это уже к руководителю вопросы. Можно конечно применять там модульные решения, с прицелом на расширяемость... Но. Кто знает, будет ли эта вся модульность реально использоваться в условиях отсутствия нормального ТЗ? А время потрачено.. Сделай то, не знаю что и далее по тексту.
Подход иностранцев конечно супер, но... такая фиговина частенько приводит к шикарному набору костылей и заплаток, потому что сделать нормально просто не было времени - работает, и слава богу, контракт выполнен, дальше - трава не расти или новый контракт. Вот кстати у иностранцев такие продукты и видел. Над ними же тихо сходил с ума ). А оценка потребного времени на решение задачи с точки зрения программиста головная боль еще та. Извечный, понимаешь "быстро, дешево, качественно - выбирайте любые два" )
В общем завязываем оффтопить, ибо все равно каждый при своем останется, а будет сообща искать выход из создавшегося положения.
Во кстати, Octocat, есть предложение - нарисовать классы-обертки для вот такого создания юнитов и прочего, как предложил. Это реально будет востребованная фича. Ну или объединить усилия )
Крайний раз редактировалось Small_Bee; 12.01.2012 в 00:25.
Мне практически этим приходится заниматься большую часть времени, разными обертками и подпорками, вместо полезных фич. А объединять усилия - дело хорошее, я однозначно за.
Про неправильную работу gpPostMissionLoad(), в этой теме подробно расписал.
Насчет большого числа параметров, вот хороший пример: Scripting_Commands_ArmA2, функции CreateUnit, CreateVehicle, CreateGroup![]()
Ну... сравнил тоже ). Хотя не спорю, подход такой имеет смысл безусловно. Но мне проще изучить язык какой-то новый, чем с этим всем разобраться.
По объединению усилий. Как известно, сейчас доделываю стату и коммандер. По коммандеру есть несколько задач, который можно раздельно писать, по самой библиотеке со статой и расширению ее функционала, ну и много чего есть. )
По коммандеру кстати я там использовал прием, который раньше не юзал - не помешает взгляд другого программера, ибо подозреваю, что не все идеально.
А вообще думаю надо обменяться ближайшими и не очень планами.
Будет хорошо, если обменяемся контактами и как то согласовывать работу начинать.
Можно в теме про редактор еще продублировать http://www.sukhoi.ru/forum/showthrea...t=68596&page=3
Планы по объединению усилий радуют, надеюсь Репкам с этого что-то перепадетСпасибо за труды.
...зелёные горят.
----------------------
i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.
1.
Есть ли в редакторы акторы, которые глючат/не работают, точнее список никто не составлял? Вчера из стандартной красной автоколонны черная дыра вылезла, танчик синий при этом удивительным образом пощадил машинку для аэростатов - возможно с лодом дамадж-модели проблемы или с человечком.
![]()
Крайний раз редактировалось podvoxx; 12.01.2012 в 20:36.
У меня при убийстве немецкой транспортной колонны "зенитки" и тягача G.QUAD подвисала игра.