ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Коллективный мод для X2, обсуждение | страница 1 |
|
|
|
Канал X2: The Threat: «Коллективный мод для X2, обсуждение» |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
Увлёкся описанием aL144'y чего-то, что я бы хотел видеть на движке Х2 и подумал, что ещё оставшимся пилотам в Х2 канале будет интересно почитать/принять участие в дискуссии.
Ещё начал ощущать повышение градуса оффтопа в ветке про обжеколупание.
Цель этого топика - собрать в кучу все интересные (при этом желательно простые в реализации) идеи и по наличию возможностей/желания воплотить их в жисть.
Цитата: |
Попробую описать чего бы я хотел для поиграть.
Начало должно быть достаточно тугим/сложным без лёгких путей быстрого обогащения.
Упор на торговлю, сбор ресурсов для какой-то цели, рискованные, но необходимые вылазки куда-то за чем-то. Отличный пример - старт в моде от Murka - New Reality. Но там дальше всё глохнет для меня, т.к. стоимость постройки врат высокая, а уникальный контент весь можно добыть рядом. Т.е. исследовать космос через постройку врат нет никаких оснований. Только ради исследования.
Минимум летающей собственности для игрока. Уменьшение количества летающих кораблей в секторах в целом, чтобы в связи с усилением отдельно взятых вражин оставить возможность игроку летать самостоятельно, а не устраивать из игры стратегию.
Как можно больше смысла для использования разных механик игры, не только захвата и как можно меньше возможностей для влияния на мир у игрока. Ограничение в получении всего контента (секторов, например) сразу. Как вариант - для начала у игрока доступен кластер из 3-7 секторов. Он может полететь в другие кластеры, но для этого нужно добыть чего-то для перелёта.
Получение кораблей, станций посредством сбора ресурсов и возможно чертежей. Отсутствие возможности купить корабли и станции просто так в неограниченном количестве из воздуха.
Как обоснование постройки станций в текущем неэффективном по прибыли виде - самостоятельное производство щитов, пушек, ракет и отсутствие возможности усилить мощь своего корабля покупкой оборудования за лёгкие деньги.
Чтобы не было так грустно - можно сделать какие-то секретные расовые производства далеко от стартовой точки игрока в глуши среди пустых/малонаселённых секторов. Тогда будет больше интереса исследовать, о секторах спустя 2 абзаца.
В оригинале как-то не находил для себя ответа, зачем мне строить станцию, если я могу назахватывать кораблей, наубивать по BBS квесту кого-нибудь. Обычно всё сводилось к захвату бастера на открывашке и в последствии после изрядного обогащения захваченными пиратами - захвату новы на бастере. Дальше играть становилось не интересно. Станции обычно ставил для галочки.
В XBTF почти сразу становится доступной покупка станций, и эту наиболее интересную механику дают, когда корабль ещё не оборудован и игрок не в состоянии вынести вперёд ногами всю вселенную. Приятный побочный эффект для меня - самостоятельно забиваешь трюм станции, ищешь товары подешевле, а не включаешь сету в ожидании или летишь на очередной караван пиратиков с пирбазы для отправки оных на верфь.
Секторов должно быть не больше, чем уникального контента в игре и они должны быть максимально симпатичными.
Можно сделать больше не населённых проходных секторов, возможно с какими-то секретами, чаще с вражинами. Основная их цель - заставить игрока выбраться туда, чтобы добыть необходимые ресурсы, которых в охраняемых расами территориях нет, или в грустно-малом количестве, или очень дорого.
Т.е. чтобы был смысл выбираться куда-то, где опасно, а не иметь точно такую же возможность добывать всё что нужно, только под боком и не рискуя.
Снизить процент населённых секторов в целом. В оригинальной игре всё зачем-то забито повторяющимся контентом. Хотя можно было размазать его без особых повторений гораздо интереснее.
В этом пожалуй вся проблема иксов. Весь уникальный контент находится сразу под боком, дальше - он же, но в повторении. При этом он дублируется по функционалу. К примеру покупаешь М3, и тебе уже норм. Какого-то прогресса не ощутишь, если купишь М3 другой расы. Для меня на этом этапе почти достигается финиш в игре.
В моей последней сборке весь процесс игры свёлся к торговле и ожидании суммы, необходимой для покупки самых лучших щитов и пушек. Нужно сделать обоснованной раннюю покупку станций. Конечно приятно было полетать на шаттле с его привычными возможностями, только с улучшенным интерфейсом Х2, но карта по-прежнему скучная.
Играл не так давно в Terran Conflict. Круто они сделали с квестами, но проблема осталась - добавили кучу всего нового, но в большинстве я не видел смысла.
Нет никакой дозированности и постепенности. Все механики игры слились в кашу, обычно выбираешь самую эффективную по получению денег и не смотришь на остальные. А когда уже куча денег - в остальных и без того небольшой смысл пропадает совсем.
Я на земном М4 смог захватывать какие-то там новые классы фрегатов, чинить их и продавать за несколько миллионов. К чему мне эта постройка станций, если я могу так добыть денег гораздо быстрее. А деньги в иксах решают интересно ли дальше играть, или нет. Геймплей и физика не настолько привлекательная, чтобы было интересно бесцельно ради процесса в это погружаться. Типа песочить.
Кататься на велике куда увлекательнее, ради катания, например.
Весь интерес для меня в сложном процессе становления, не обязательно вовлекающем поиск и вынос игрока вперёд ногами вражинами.
Важно, чтобы в игре были риски, связанные с ускорением развития. Но и неспешно-медленное развитие в спокойствии тоже имело место быть.
Пока всё. Устал формулировать.
|
|
|
|
TechCat
100 EGP
 Репутация: 25 Сообщения: 328
Зарегистрирован: 20.02.2006
 |
|
Non : |
Начало должно быть достаточно тугим/сложным без лёгких путей быстрого обогащения.
|
Non : |
Упор на торговлю, сбор ресурсов для какой-то цели, рискованные, но необходимые вылазки куда-то за чем-то. Отличный пример - старт в моде от Murka - New Reality. Но там дальше всё глохнет для меня, т.к. стоимость постройки врат высокая, а уникальный контент весь можно добыть рядом. Т.е. исследовать космос через постройку врат нет никаких оснований. Только ради исследования.
|
Non : |
Получение кораблей, станций посредством сбора ресурсов и возможно чертежей. Отсутствие возможности купить корабли и станции просто так в неограниченном количестве из воздуха.
|
Есть же уже такие настройки, например моды от AlexYar.
Non : |
Минимум летающей собственности для игрока. Уменьшение количества летающих кораблей в секторах в целом, чтобы в связи с усилением отдельно взятых вражин оставить возможность игроку летать самостоятельно, а не устраивать из игры стратегию.
|
Достигается насколько я понял через увеличеня трюма станции и грузовых кораблей. Хотя на счет станций я не уверен.
Non : |
Как обоснование постройки станций в текущем неэффективном по прибыли виде - самостоятельное производство щитов, пушек, ракет и отсутствие возможности усилить мощь своего корабля покупкой оборудования за лёгкие деньги.
Чтобы не было так грустно - можно сделать какие-то секретные расовые производства далеко от стартовой точки игрока в глуши среди пустых/малонаселённых секторов. Тогда будет больше интереса исследовать, о секторах спустя 2 абзаца.
|
Это же можно реализовать через вкусные астеройды и норм освещенность в секторе.
Non : |
В оригинале как-то не находил для себя ответа, зачем мне строить станцию, если я могу назахватывать кораблей, наубивать по BBS квесту кого-нибудь. Обычно всё сводилось к захвату бастера на открывашке и в последствии после изрядного обогащения захваченными пиратами - захвату новы на бастере. Дальше играть становилось не интересно. Станции обычно ставил для галочки.
|
Если ввести орды ксенов/хаков что рушат станции, то для работы заводов по производству вооружения их таки придется строить
Non : |
Нет никакой дозированности и постепенности. Все механики игры слились в кашу, обычно выбираешь самую эффективную по получению денег и не смотришь на остальные. А когда уже куча денег - в остальных и без того небольшой смысл пропадает совсем.
|
Разве поиск эффективности в добыче кредитов не есть цель X?
Non : |
Важно, чтобы в игре были риски, связанные с ускорением развития. Но и неспешно-медленное развитие в спокойствии тоже имело место быть.
|
Это очень сложно реализовать тут. Либо для каждого пилота баланс разный
_________________ CMDR TechCat, Виконт Империи |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
TechCat : |
Есть же уже такие настройки, например моды от AlexYar.
|
Они все делают упор на превращение однолицевого космулятора в стратегию. В одиночку на истребителе там делать нечего. А меня интересует именно это. Некоторая рогаличность и прокачка корабля.
Крутые фичи согласен, все реализованы. Но как-то подкроить мод под себя не представляется возможным. Сорцев обжа нет, а там почти весь функционал в нём. Ну и всякие жесткие античит системы и прочее. Каждый хочет немного подкрутить леталку под себя и не париться о наказаниях.
TechCat : |
Достигается насколько я понял через увеличеня трюма станции и грузовых кораблей. Хотя на счет станций я не уверен.
|
TechCat : |
Это же можно реализовать через вкусные астеройды и норм освещенность в секторе.
|
Да, только я наковырялся и пока желания делать карту нет. aL144 изъявил интерес что-то сделать, поэтому я и выложил этот пост.
Тут тоже своеобразный поиск эффективного получения максимума интересных возможностей за минимум усилий/временных затрат.
Если создание этих не сильно впечатляющих игровых возможностей будет сопряжено с тонной головняка - оно того не стоит. Проще подождать выхода Limit Theory например и поиграть в реал.
В первую очередь я ведь хотел полетать, имея интересные фичи. А не делать эти самые фичи.
TechCat : |
Если ввести орды ксенов/хаков что рушат станции, то для работы заводов по производству вооружения их таки придется строить
|
Я кстати не играл так долго, чтобы проверить, что будет, когда нападут Хааки.
Пиратам удавалось с новым AI, ностальгией от Murka и ускоренными пульками + скорострельностью выносить станции без особых помех.
TechCat : |
Разве поиск эффективности в добыче кредитов не есть цель X?
|
Да, но нужно больше баланса. Строительство станций настолько менее эффективное дело по ощущениям. Нужно влить море игровых денег и времени, чтобы оно начало хотя бы столько же денег приносить, сколько приносит захват/миссии на убийство. Захватил один M3 - вот тебе и торговля.
В XBTF за исключением ограничений в интерфейсе и управлении с этим было гораздо веселей. Строительство и снабжение станций - крутая механика и должна быть доступна как можно раньше, до того как игрок увлечётся захватом из-за томительного ожидания прогресса. Самоограничения типа отыграть мирного торговца - не катят.
TechCat : |
Это очень сложно реализовать тут. Либо для каждого пилота баланс разный
|
Вот. Именно по этой причине нету мода, который порадовал бы всех.
Нужно давать инструменты по допилке. Чтобы сложность была именно такая, как нужно игроку. Легче - скучно, сложнее - раздражает.
Уточню: Тема больше для того, чтобы я понял что людям интересно сделать на базе Х2 на данный момент и посоветовал им где начать копать или помог делом.
Это подразумевает, что все моды, выходящие до этого их чем-то не устраивали. Избыточностью изменений в том числе.
Кому-то возможно хватит боевки от Darth Revan'a в обже, мода ностальгии от Murka и ускоренных пуль, как мне, а они не в курсе что это довольно просто сделать.
Зато берешь и летаешь, а не предпринимаешь очередную сомнительную попытку сделать новую игру на движке X2. В чём собственно немного смысла, учитывая отсутствие нормальной поддержки 16:9 ну и прочей кривоты движка. Прошло 14 лет.
Нет смысла вливать вагон сил. Затраты не будут сопоставимы со временем, которое получится там вследствии провести с удовольствием.
Например подключить боёвку из патча от Darth Revan в близкую к оригиналу игру - не сильно много затрат, она уже готова, но влияние на игру очень сильное, т.к. тупизна AI действительно огорчает в 2017-ом. Летишь прямо на непися, стреляешь ему в лоб плазмой, а он послушно ловит её всю не предпринимая попыток уворота, пока ты на стрейфе уезжаешь в бок.
add:
Ещё немного сформулированного из моего личного опыта.
У Х2 большая проблема в возможности легко в начале игры избежать торговли, постройки станций и их снабжения, прохождения дурацких миссий, разбивания и сбора астероидов, ловли космомух.
Чем больше становится у игрока денег, тем меньше мотивации заниматься чем-либо кроме драк в игре.
К примеру когда имеешь 20000 кредитов и торгуешь на транспортнике - в прикол, т.к. это даёт ощутимый прогресс в игре. Куда меньше мотивации заниматься этим, когда уже несколько лямов на счету и летаешь на М3.
Выходит, что из всех возможностей игры большую часть времени используется пострелушка, а она достаточно посредственно реализована. Куда веселее драться во фрилансере.
В общем надо расширять количество способов провести время в игре, и самое важное - делать осмысленным их существование. Чтобы они все приносили ощутимый прогресс, а не были в игре просто для галочки/массовки.
Можно добавить помимо кредитов банально ресурсы, которые нужны для чего-то, но добываются только определённым способом.
Как пример - сбор обломков хаакских кораблей после убийства + ещё какое-нибудь шаманство с нивидиумом и всё ради создания реплики хаакских технологий, вместо примитивного захвата их корабля со всеми технологиями на борту.
Последний раз редактировалось: Non (20:23 03-05-2017), всего редактировалось 1 раз |
|
|
aL144
325 EGP
    Рейтинг канала: 4(74) Репутация: 30 Сообщения: 436 Откуда: Город непуганных идиотов Зарегистрирован: 07.05.2014
 |
|
Non : |
Уточню: Тема больше для того, чтобы я понял что людям интересно сделать на базе Х2 на данный момент и посоветовал им где начать копать или помог делом.
Это подразумевает, что все моды, выходящие до этого их чем-то не устраивали. Избыточностью изменений в том числе.
|
Итак, я наконец таки добрался до ответа на поставленный вопрос: а что же собственно говоря хочется видеть в Х2? Имеется в виду из нового, с учетом всего накопленного опыта, модов и инструментов к созданию оных.
Итак, мои хотелки. Я огромный фанат X-Tension, и несмотря на ее приличный возраст, графику и урезанные возможности по сравнению с последующими играми серии, у нее были свои крутые плюсы, которые я постараюсь выложить сюда.
- большая галактика. Собственно карта с сюжетом на 300 секторов уже есть, вопрос о ее некоторой доработке и улучшении я пока рассматриваю с разных сторон. Если у кого есть какие-либо предложения - велкам! Например я убрал связь хаакского ядра с аргонским северо-западным облаком, ибо... просто смех, в суперсекретный сектор можно попасть за 10 минут... Это лишь единственный пример.
- заменить вместо нынешних пукалок для IRE, PAC и HEPT выстрелы и звуки на оные из X-Tension. Подозреваю, что при должном обилии времени я с этим справлюсь, но тут вроде у Non'а были какие то наработки.
- заменить самые черные скайбоксы из х2 на скайбоксы из x-tension. Ну в самом деле, я понимаю что космос черный, но у нас игра и всматриваться в половине времени в черный экран вообще не улыбается. Опять таки, по идее можно ковырнуть самому, но от помощи не откажусь.
- добавить в игру именно новыми кораблями (не на замену старым!) модельки-кораблики из X-Tension. Пусть в игре будут и те и другие, уж по спискам кораблей раскидать новые корабли не составит труда.
- убрать напрочь захват кораблей, но добавить возможность купить/собрать недоступные изначально корабли где-либо в дебрях космоса (благо 300 секторов уже есть). Вот это действительно будет интересная игра в стиле думай-строй-воюй. Не знаю, насколько можно такое реализовать, хотя вроде Non сумел хотя бы сделать невозможным захват кораблей.
- добавить скрипт галактического исследователя, по примеру одноименного скрипта из х3. С учетом 300 секторов... очень актуальная штука была бы.
- немного не понял, в редакторе карт от Dimmax'а можно назначать секторам цифру, отвечающую за музыкальный трек? Что то не нашел как добавлять, галочку с "по умолчанию" снимаю и... никаких действий дальнейших не могу сделать.
- Расширить склады некоторым станциям.
- Добавить новые корабли по примеру х3 (пусть даже выглядят как обычные) с увеличенным трюмом (но сниженной скоростью) для тех же транспортников, к примеру. По идее вообще реально, но жду мнения экспертов по х2.
[hr]
Подытожу:
Я слов на ветер не привык бросать. Пусть тут меня знают не многие, но я привык доводить начатые и интересные мне дела до логичного мне и возможного минимума. Я, конечно, не все смогу сделать из вышеперечисленного, но что смогу - то сделаю. Но прошу и помощи экспертов. Плюс интересно, может еще кто-либо выдвинет подобные моим идеи для улучшения игры, одна голова хорошо, а больше - лучше)
_________________ Там где я был - смерти никогда не было, там где я есть - ее никогда не будет...
Последний раз редактировалось: aL144 (22:49 10-05-2017), всего редактировалось 1 раз |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
aL144 : |
- заменить вместо нынешних пукалок для IRE, PAC и HEPT выстрелы и звуки на оные из X-Tension. Подозреваю, что при должном обилии времени я с этим справлюсь, но тут вроде у Non'а были какие то наработки.
|
Это уже есть. Делается очень просто. Единственное - натянуты слегка другие текстуры, из-за этого немного по-другому выглядит. Немного позже скину.
aL144 : |
- заменить самые черные скайбоксы из х2 на скайбоксы из x-tension. Ну в самом деле, я понимаю что космос черный, но у нас игра и всматриваться в половине времени в черный экран вообще не улыбается. Опять таки, по идее можно ковырнуть самому, но от помощи не откажусь.
|
Вот это лично для меня сложновато. Я так и не нашёл 3ds max'a, который бы не выпендривался и работал из под песочницы, а не ставил свои крякнутые трояны в систему.
Там нужно каждой XT-шной модели скайбокса добавить поверх куб. Иными словами, формат скайбоксов несколько отличается. Есть правда несколько скайбоксов от Boron Friend'a, сделанных им для своего мода Another System. Можно адаптировать.
Вторая проблема, что текстуры скайбоксов в X2 используются как попало в перемешку. Некоторые текстуры используются по нескольку раз.
Я составлял себе батничек, который мне посчитал сколько раз каждая текстура из всех текстур для скайбоксов используется.
Использование текстур скайбоксов (кликните здесь для просмотра)
26 103
409 95
142 91
464 41
463 40
488 8
487 8
439 6
442 6
519 5
477 5
518 5
438 5
478 5
485 5
520 5
517 5
497 5
443 4
499 4
523 4
407 4
522 4
444 4
493 4
506 4
498 4
404 4
408 4
441 4
486 4
502 4
491 3
467 3
449 3
402 3
490 3
521 3
450 3
515 3
445 3
492 3
471 3
465 3
512 3
514 3
532 3
500 3
513 3
533 3
403 3
459 2
516 2
447 2
509 2
510 2
505 2
466 2
446 2
469 2
452 2
480 2
448 2
470 2
475 2
526 2
511 2
489 2
527 2
460 2
504 2
503 2
451 2
479 2
405 1
496 1
484 1
528 1
508 1
494 1
455 1
440 1
453 1
462 1
457 1
472 1
507 1
483 1
461 1
481 1
482 1
454 1
525 1
524 1
468 1
458 1
529 1
495 1
456 1
|
Т.е. можно заменить самые редкоиспользующиеся текстуры и подменить соответствующие скайбоксы.
Другая проблема - перенесённые Boron Friend'ом скайбоксы смотрятся как-то странновато, видны границы стыковки, видимо из-за этого чёрного куба.. Не знаю как править.
Единственное что просто менять - это номер текстуры в бодах скайбоксов..
aL144 : |
- добавить в игру именно новыми кораблями (не на замену старым!) модельки-кораблики из X-Tension. Пусть в игре будут и те и другие, уж по спискам кораблей раскидать новые корабли не составит труда.
|
Хорошая мысль. Нужно будет править обж и совместить это с некоторыми патчами, которые я урвал по отдельности. Не знаю насколько это будет сложно.
aL144 : |
- убрать напрочь захват кораблей, но добавить возможность купить/собрать недоступные изначально корабли где-либо в дебрях космоса (благо 300 секторов уже есть). Вот это действительно будет интересная игра в стиле думай-строй-воюй. Не знаю, насколько можно такое реализовать.
|
Согласен, иначе смысла в огромной карте нет. Другое дело в реализации. На стандартных скриптах это будет забавно и костыльно выглядеть, а обж я не разбирал до такой степени, чтобы делать свои менюхи и как следствие - постройку кораблей на каком-нибудь аналоге верфи как в Impact. Как вариант можно размещать их в рандомных секторах скриптом битыми - захватывать при подлёте как в X3.
Захват убирал в своём патче, так гораздо плавнее развитие игрока шло.
aL144 : |
- Расширить склады некоторым станциям.
|
Некоторым без понятия как. Знаю как сразу всем.
aL144 : |
- добавить скрипт галактического исследователя, по примеру одноименного скрипта из х3. С учетом 300 секторов... очень актуальная штука была бы.
|
Тоже очень просто, он уже есть в БД. Качаешь, распаковываешь в папку scripts - вуаля.
aL144 : |
- немного не понял, в редакторе карт от Dimmax'а можно назначать секторам цифру, отвечающую за музыкальный трек? Что то не нашел.
|
Вроде такую возможность добавляли в обж, в стандарте просто как размещен сектор - так и звучит. Не помню чтобы можно было менять.
aL144 : |
- Добавить новые корабли по примеру х3 (пусть даже выглядят как обычные) с увеличенным трюмом (но сниженной скоростью) для тех же транспортников, к примеру. По идее вообще реально, но жду мнения экспертов по х2.
|
Не уверен, что лимита по кораблям даже при правке обжа не было.
Ну и по этому делу надо с Zeron MK7 говорить, у него опыта гораздо больше.
Я просто брал готовые корабли и втыкал их в игру, причём в количестве не более 2.
Я не фанат необоснованно огромных карт. Если есть что там искать - тогда может быть.
Лучше немного, но красивых секторов, которые мне очень лень делать.
Также мне сильно лень добавлять тонны кораблей, на которых я всё равно не буду летать. А в кого стрелять - не особо важно.) К тому же, всё добавленное нужно задействовать, иначе это очередной мод с +100 новых кораблей, в котором кроме коллекционирования нечего делать.
Для меня в X2 достаточно бессмысленного контента, чтобы перед добавлением ещё чего-то - сначала осмыслить уже существующий.
В итоге, ни одна из перечисленных хотелок не замотивирует меня на усиленное совместное колупание. Всё что уже разобрался как делать и сделал - скину, подскажу.
|
|
|
P@SHA
525 EGP
  Рейтинг канала: 5(209) Репутация: 58 Сообщения: 3464 Откуда: Брест, Беларусь Зарегистрирован: 24.11.2006
 |
|
aL144 : |
с увеличенным трюмом (но сниженной скоростью) для тех же транспортников
|
Так ведь есть уже! Хочешь быстрый - крокодил, хочешь необъятный трюм - дельфин. И куча вариаций балансирующих между ними и у прочих рас.
_________________ :X2: |
|
|
aL144
325 EGP
    Рейтинг канала: 4(74) Репутация: 30 Сообщения: 436 Откуда: Город непуганных идиотов Зарегистрирован: 07.05.2014
 |
|
Вспомнил еще один интересный момент. Когда в тебя попадают из орудий в X-tension, твой корабль трясет от попаданий. В Х2 это вообще возможно реализовать?
_________________ Там где я был - смерти никогда не было, там где я есть - ее никогда не будет... |
|
|
P@SHA
525 EGP
  Рейтинг канала: 5(209) Репутация: 58 Сообщения: 3464 Откуда: Брест, Беларусь Зарегистрирован: 24.11.2006
 |
|
Non : |
Начало должно быть достаточно тугим/сложным без лёгких путей быстрого обогащения
|
Оно и тугое и сложное, когда на стартовой открывахе нет даже SETA, если ее вовсе из игры выпилить, то вся игра такой и будет.
Самые незабываемые впечатления от игры были, когда впервые в нее сел играть и не знал про SETA, хотя она и была тогда, т.к. первую игру начал на нормальной сложности. Но я про нее просто еще не знал и получал массу положительных эмоций от бесконечно долгого созерцания космоса во время продолжительных перемещений между станциями даже в пределах одного сектора. Особенно атмосферно было делать межсекторные перелеты торговые на подаренном стареньком меркурии. Как на настоящем корабле в настоящем перелете - сходил пообедал, попил чай, почитал книгу, а ты все летишь и летишь - романтика . Жаль только времени свободного так мало и оно так ценно, что так полетать уже непозволительно
Non : |
Снизить процент населённых секторов в целом. В оригинальной игре всё зачем-то забито повторяющимся контентом.
|
Вот тут тоже согласен. А то на старте игры лишь один пустой сектор под боком - Президентский рубеж. Сделать по-больше ненаселенных секторов, и добавить возможность старта в случайном секторе.
Еще, если это возможно, исправить баг с фабриками щитов 125МВт. Как известно, они продолжают скупать ресурсы даже при полностью забитых складах, тем самым способствуя быстрому обогащению, достаточно лишь рядом с ними пару солярок воткнуть и транспорты с фабрик 125 МВт начинают батареи выкачивать по максимальной цене, едва там соберется хоть пара штук. С таким соблазном даже мне, устойчивому к халяве, трудно бороться
Еще, если возможно, отключить новости на станциях, они уже сто раз прочитаны, да и не несут никакой абсолютно смысловой нагрузки. Лишь долго листать их нужно в поисках миссий. Вот если бы они отражалии суть событий вселенной, как в Космических рейнджерах, типо на такой-то сектор напали Хааки или в таком-то секторе скопилось много такой-то продукции, или, наоборот, ее нехватка - вот такое было бы интересно.
aL144 : |
убрать напрочь захват кораблей
|
Дело силы воли, как и в случае с багом на халявные деньги от фабрик 125МВт щитов или мегачитом с миллионами халявными за миссии по отражению атак Ксенонов.
Я просто убиваю врагов, быстро и нещадно, а не часами задрачиваю их с целью захватить. Ну а если уже случайно захватился, то приятный и не очень дорогой бонус, т.к. сильно побит и чаще всего уже без оборудования. Да и даже такие до верфи долетают нечасто.
Последний раз редактировалось: P@SHA (13:56 11-05-2017), всего редактировалось 2 раз(а) |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
aL144 : |
Вспомнил еще один интересный момент. Когда в тебя попадают из орудий в X-tension, твой корабль трясет от попаданий. В Х2 это вообще возможно реализовать?
|
Так, чтобы сбивало с курса - нет, но поднятие скорости полёта пуль в TBullets до тысячи м/с неплохо будет трясти.
P@SHA : |
Оно и тугое и сложное, когда на стартовой открывахе нет даже SETA, если ее вовсе из игры выпилить, то вся игра такой и будет.
|
Как вариант, который бы меня устроил - отсутствие сеты, но наличие турбо-двигателя на шаттле.
80 мс открываха без СЕТЫ зашла бы, когда мне было лет 12. Сейчас действительно слишком много времени уйдёт.
P@SHA : |
Еще, если это возможно, исправить баг с фабриками щитов 125МВт. Как известно, они продолжают скупать ресурсы даже при полностью забитых складах, тем самым способствуя быстрому обогащению, достаточно лишь рядом с ними пару солярок воткнуть и транспорты с фабрик 125 МВт начинают батареи выкачивать по максимальной цене, едва там соберется хоть пара штук. С таким соблазном даже мне, устойчивому к халяве, трудно бороться
|
Не знал про этот баг, как-нибудь посмотрю как это работает в игре.
Как вариант - убрать из вселенной все заводы по производству 125 МВт щитов - пусть игрок сам делает, только ему они и нужны.
P@SHA : |
Еще, если возможно, отключить новости на станциях, они уже сто раз прочитаны, да и не несут никакой абсолютно смысловой нагрузки. Лишь долго листать их нужно в поисках миссий. Вот если бы они отражалии суть событий вселенной, как в Космических рейнджерах, типо на такой-то сектор напали Хааки или в таком-то секторе скопилось много такой-то продукции, или, наоборот, ее нехватка - вот такое было бы интересно.
|
Тоже хотел это сделать. Ковырялся тут, но так особо ничего и не понял:
Класс BBS в обже (кликните здесь для просмотра)
Код: |
.section code, con
.classdef TMENU_BBS(TMENU_BIGTEXT), 2288d ; 08F0h
.varray mb_aTextData
.vtable mb_tSelections
.vint mb_NewMessage
.vint mb_CurMessage = -1d ; 0FFFFFFFFh
.vint mb_NumMessages
.vint mb_CurSel
.vstr mb_SelectValue
.vint mb_ColNum
.vint mb_ColOffset
.vint mb_ColWidth
.vint mb_ColSpacing
.vint mb_TimePosX
.vint mb_CurTradeMedal = -1d ; 0FFFFFFFFh
.vint mb_CurFightMedal = -1d ; 0FFFFFFFFh
.vint mb_TradeMedalInst
.vint mb_FightMedalInst
.func GetObjectBody ; 001250E2h
.func GetName ; 001250F0h
.func Create ; 0012511Eh
.func CreateNext ; 0012516Eh
.func SpecialMenu ; 001251C6h
.func ExitMenu ; 0012526Eh
.func ShowMedal ; 001252A6h
.func ParseMessages ; 001253A2h
.func UpdateMessages ; 001266C0h
.func DrawAuthorAndDate ; 00126780h
.func SpecialUpdate ; 0012683Ch
.func ArticleDisplayed ; 00127B6Eh
.func Input ; 00127BCAh
.func GetLoopCutID ; 00128270h
.func GetBackgroundCutID ; 0012827Eh
.func GetClass ; 0012828Ch
.func IsClass ; 0012829Ah
.endclass TMENU_BBS
function TMENU_BBS.GetObjectBody()
{
return(190);
}
function TMENU_BBS.GetName()
{
return(SE_ReadText(35,TMENU.me_Object?4401:4402));
}
function TMENU_BBS.Create(arg1)
{
if(arg1&&!SE_ObjectExists(arg1))
{
arg1=0;
}
return(2246->Create(arg1));
}
function TMENU_BBS.CreateNext(arg1, arg2, arg3)
{
if(arg3&&!SE_ObjectExists(arg3))
{
arg3=0;
}
return(2246->CreateNext(arg1,arg2,arg3));
}
function TMENU_BBS.SpecialMenu()
{
TMENU.me_TopLineInfo=2;
TMENU.me_PageLinesInfo=15;
if(TMENU.me_Object)
{
TMENU.me_TopLineInfo=TMENU.me_TopLineInfo+2;
TMENU.me_PageLinesInfo=TMENU.me_PageLinesInfo-2;
}
TMENU_BBS.mb_TimePosX=this->TextLeftPos(global.GetTimeString(
0),615);
TMENU_BBS.mb_NewMessage=1;
TMENU_BBS.mb_CurSel=-2;
TMENU_BBS.mb_TradeMedalInst=0;
TMENU_BBS.mb_FightMedalInst=0;
TMENU_BBS.mb_CurTradeMedal=-1;
TMENU_BBS.mb_CurFightMedal=-1;
2246->SpecialMenu();
return(0);
}
function TMENU_BBS.ExitMenu()
{
2246->ExitMenu();
start
{
TX_AUDIO.SpeakWithPriority(0,0,-20);
}
return(0);
}
function TMENU_BBS.ShowMedal(arg1, arg2)
{
var loc1=0;
var loc2=0;
var loc3=3800;
if(arg1)
{
if(arg2>=0)
{
TMENU_BBS.mb_FightMedalInst=this->AddInst(10259+arg2,9);
if(TMENU_BBS.mb_FightMedalInst)
{
B3D_InstSetSize(TMENU_BBS.mb_FightMedalInst,loc3);
}
}
else
{
if(TMENU_BBS.mb_FightMedalInst)
{
this->RemoveInst(9);
TMENU_BBS.mb_FightMedalInst=0;
}
}
}
else
{
if(arg2>=0)
{
TMENU_BBS.mb_TradeMedalInst=this->AddInst(10228+arg2,10);
if(TMENU_BBS.mb_TradeMedalInst)
{
B3D_InstSetSize(TMENU_BBS.mb_TradeMedalInst,loc3);
}
}
else
{
if(TMENU_BBS.mb_TradeMedalInst)
{
this->RemoveInst(10);
TMENU_BBS.mb_TradeMedalInst=0;
}
}
}
return(0);
}
function TMENU_BBS.ParseMessages(arg1)
{
var loc1=0;
var loc2=-1;
var loc3=0;
if(TMENU.me_Object&&TMENU_BBS.mb_NumMessages&&TMENU_BBS.mb_CurMessage>=
0&&TMENU_BBS.mb_aTextData&&TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage])
{
loc2=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][2];
for(loc3=TMENU_BBS.mb_CurMessage;loc3>=0;loc3=loc3-1)
{
if(TMENU_BBS.mb_aTextData[loc3][2]!=loc2)
{
break;
}
}
loc3=TMENU_BBS.mb_CurMessage-loc3;
TMENU_BBS.mb_CurMessage=-1;
}
var loc4=arg1?SE_ArraySize(arg1):0;
if(!loc4)
{
return(0);
}
var loc5=SE_ArrayAlloc(loc4);
var loc6=0;
var loc7=0;
var loc8=0;
var loc9=0;
var loc10=0;
for(loc6=0;loc6<loc4;loc6=loc6+1)
{
loc8=loc6;
loc9=TCLIENT.GetPlayer()->GetAge();
for(loc7=loc6;loc7<loc4;loc7=loc7+1)
{
loc10=arg1[loc7];
if(loc10[2]<loc9)
{
loc8=loc7;
loc9=loc10[2];
}
}
loc10=arg1[loc8];
if(loc8!=loc6)
{
arg1[loc8]=arg1[loc6];
arg1[loc6]=loc10;
}
if(loc10[2]==loc2&&!(loc3=loc3-1))
{
TMENU_BBS.mb_CurMessage=loc6;
loc2=-1;
}
loc5[loc6]=SE_ArrayAlloc(12);
loc5[loc6][9]=loc10[1];
loc5[loc6][2]=loc10[2];
loc1=SE_StringSubst(loc10[0],"[","<");
loc1=SE_StringSubst(loc1,"]",">");
loc1=SE_StringSubst(loc1,"<br/>","\n");
loc1=SE_StringSubst(loc1,"\n","<br/>\n");
var loc11=SE_XMLImport("<root>"+loc1+"</root>");
if(!loc11)
{
loc5[loc6][0]=0;
loc5[loc6][1]=0;
loc5[loc6][7]=array("");
loc5[loc6][8]=SE_TableAlloc();
loc5[loc6][3]=1;
continue;
}
var loc12=SE_TableAlloc();
var loc13=SE_ArrayAlloc(10);
var loc14=0;
var loc15="\033X";
var loc16="";
var loc17="";
var loc18=0;
var loc19=0;
var loc20=0;
var loc21=0;
var loc22=1;
var loc23=30;
var loc24=-1;
var loc25=0;
var loc26=32;
var loc27=0;
var loc28=0;
var loc29=0;
var loc30=0;
loc1="";
var loc31=1;
while(1)
{
if((loc31=loc31+1)==SE_ArraySize(loc11))
{
if(!loc14)
{
break;
}
loc11=loc13[loc14=loc14-1][0];
loc31=loc13[loc14][1];
loc19=loc13[loc14][2];
var loc32=0;
if(loc19[0]==27)
{
loc1=loc1+(loc15=loc19);
}
else
{
if(loc19=="text")
{
break;
}
switch(locate(loc19,"title","author","u","select",
"right","center","justify"))
{
case 1:
{
loc28=0;
loc16=loc1;
loc1=loc18;
break;
}
case 2:
{
loc29=0;
loc17=loc1;
loc1=loc18;
break;
}
case 3:
{
loc32=2;
break;
}
case 4:
{
loc32=8;
break;
}
case 5:
case 6:
case 7:
{
loc26=(loc32=32);
break;
}
}
}
if(loc32&&!loc28&&!loc29)
{
loc21=SE_StringLen(loc1);
loc12[loc21+1]=loc12[loc21+1]|loc32;
}
continue;
}
var loc32=SE_GetExprType(loc11[loc31]);
if(loc32==3)
{
if(loc14==10)
{
continue;
}
loc19=loc11[loc31][0];
loc27=loc11[loc31][1];
var loc33=0;
var loc34=0;
switch(locate(loc19,"title","author","text","ondisplay",
"select","ranking","u","br","b","yellow","red","green",
"blue"))
{
case 1:
{
if(loc28||loc29||loc30)
{
loc34=1;
}
else
{
loc28=1;
loc18=loc1;
loc1=loc16;
if(loc15!="\033X")
{
loc1=loc1+loc15;
}
}
break;
}
case 2:
{
if(loc28||loc29||loc30)
{
loc34=1;
}
else
{
loc29=1;
loc18=loc1;
loc1="";
if(loc15!="\033X")
{
loc1=loc1+loc15;
}
}
break;
}
case 3:
{
if(loc28||loc29||loc30)
{
loc34=1;
}
else
{
loc30=1;
loc1="";
loc15="\033X";
loc22=1;
loc12=SE_TableAlloc();
if(loc27)
{
loc22=loc27["cols"];
if(SE_GetExprType(loc22)!=1||loc22<1)
{
loc22=1;
}
else
{
if(loc22>4)
{
loc22=4;
}
}
loc24=loc27["colwidth"];
if(SE_GetExprType(loc24)!=1||!loc24)
{
loc24=-1;
}
else
{
if(loc24<120)
{
loc24=120;
}
}
loc23=loc27["colspacing"];
if(SE_GetExprType(loc23)!=1||!loc23)
{
loc23=30;
}
else
{
if(loc25==0)
{
loc25=128;
}
if(loc23<20)
{
loc23=20;
}
}
var loc35=loc27["colalign"];
loc32=SE_GetExprType(loc35);
if(loc32==2||loc32==9)
{
switch(locate(loc35,"left","right","center",
"justify"))
{
case 1:
{
loc25=32;
break;
}
case 2:
{
loc25=64;
break;
}
case 3:
{
loc25=128;
break;
}
case 4:
{
loc25=256;
break;
}
}
}
}
}
break;
}
case 4:
{
loc34=1;
if(loc27&&(loc20=loc27["value"]))
{
loc5[loc6][10]=loc20;
}
break;
}
case 5:
{
loc33=4;
if(loc27&&(loc20=loc27["value"]))
{
loc12[-SE_StringLen(loc1)-1]=loc20;
}
break;
}
case 6:
{
loc34=1;
if(loc27)
{
var loc35=loc27["type"];
var loc36=loc27["title"];
loc32=SE_GetExprType(loc35);
if((loc32==2||loc32==9)&&SE_GetExprType(loc36)==1)
{
loc36=loc36+1;
if(loc35=="fight")
{
loc5[loc6][11]=(loc5[loc6][11]&65535)|loc36<<16;
}
else
{
if(loc35=="trade")
{
loc5[loc6][11]=(loc5[loc6][11]&-65536)|loc36;
}
}
}
}
break;
}
case 7:
{
loc33=1;
break;
}
case 8:
{
loc33=16;
loc34=1;
break;
}
case 9:
case 10:
{
loc19=loc15;
loc1=loc1+(loc15="\033Y");
break;
}
case 11:
{
loc19=loc15;
loc1=loc1+(loc15="\033R");
break;
}
case 12:
{
loc19=loc15;
loc1=loc1+(loc15="\033G");
break;
}
case 13:
{
loc19=loc15;
loc1=loc1+(loc15="\033B");
break;
}
case 0:
{
if(loc26==32&&!loc28&&!loc29)
{
if(loc19=="right")
{
loc26=(loc33=64);
}
else
{
if(loc19=="center")
{
loc26=(loc33=128);
}
else
{
if(loc19=="justify")
{
loc26=(loc33=256);
}
}
}
}
break;
}
}
if(loc33&&!loc28&&!loc29)
{
loc21=SE_StringLen(loc1);
loc12[loc21+1]=loc12[loc21+1]|loc33;
}
if(!loc34)
{
loc13[(loc14=loc14+1)-1]=array(loc11,loc31,loc19);
loc11=loc11[loc31];
loc31=1;
}
continue;
}
if(loc32==2||loc32==9)
{
loc1=loc1+loc11[loc31];
}
}
loc21=SE_StringLen(loc1);
loc12[loc21+1]=loc12[loc21+1]|16;
if(loc24==-1)
{
loc24=(600-(loc22-1)*loc23)/loc22;
if(loc24<120)
{
loc24=120;
loc23=(600-loc22*loc24)/(loc22-1);
}
loc5[loc6][6]=15;
}
else
{
var loc32=(loc24+loc23)*loc22-loc23;
if(loc32>600)
{
loc23=30;
loc24=(600-(loc22-1)*loc23)/loc22;
loc25=32;
}
if(loc25==0)
{
loc25=256;
}
if(loc25==256&&loc22==1)
{
loc25=128;
}
switch(locate(loc25,64,128,256))
{
case 1:
{
loc32=600-loc32;
break;
}
case 2:
{
loc32=(600-loc32)/2;
break;
}
case 3:
{
loc32=0;
loc23=(600-loc22*loc24)/(loc22-1);
break;
}
case 0:
{
loc32=0;
break;
}
}
loc5[loc6][6]=15+loc32;
}
loc5[loc6][3]=loc22;
loc5[loc6][4]=loc23;
loc5[loc6][5]=loc24;
loc5[loc6][8]=loc12;
loc5[loc6][0]=loc16==""?0:this->CheckString(loc16,620);
loc5[loc6][1]=loc17==""?0:loc17;
loc5[loc6][7]=B3D_TexGetTextArray(-34,loc1,global.FONT_OCR,
loc24,129);
if(!loc5[loc6][7])
{
loc5[loc6][7]=array("");
}
}
return(loc5);
}
function TMENU_BBS.UpdateMessages()
{
if(!TMENU_BBS.mb_aTextData||(TMENU.me_Object&&TQUESTMASTER.NextBBSUpdate(
TMENU.me_Object)))
{
TMENU_BBS.mb_aTextData=this->ParseMessages(TMENU.me_Object?
TQUESTMASTER.GetStationBBSOffers(TMENU.me_Object):TCLIENT.GetIncomingMessages());
TMENU_BBS.mb_NumMessages=TMENU_BBS.mb_aTextData?SE_ArraySize(
TMENU_BBS.mb_aTextData):0;
}
return(0);
}
function TMENU_BBS.DrawAuthorAndDate()
{
var loc1=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][1];
if(!loc1)
{
loc1=SE_ReadText(35,4413);
}
this->DrawText(SE_ReadText(35,TMENU.me_Object?4411:4412)+" "+
loc1);
loc1=global.GetIngameDateString(TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
2]);
this->DrawTextX(loc1,this->TextLeftPos(loc1,615));
return(0);
}
function TMENU_BBS.SpecialUpdate()
{
var loc1=0;
this->UpdateMessages();
if(TMENU_BBS.mb_CurMessage<0||TMENU_BBS.mb_CurMessage>=TMENU_BBS.mb_NumMessages)
{
TMENU_BBS.mb_CurMessage=0;
TMENU_BBS.mb_CurSel=-2;
}
{
var loc2=-1;
var loc3=-1;
if(TMENU_BBS.mb_NumMessages)
{
loc2=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][11];
loc3=loc2>>16-1;
loc2=loc2&65535-1;
}
if(TMENU_BBS.mb_CurTradeMedal!=loc2)
{
this->ShowMedal(0,(TMENU_BBS.mb_CurTradeMedal=loc2));
}
if(TMENU_BBS.mb_CurFightMedal!=loc3)
{
this->ShowMedal(1,(TMENU_BBS.mb_CurFightMedal=loc3));
}
B3D_TexRectFill(-57,0,0,384,13,65793);
if(TMENU_BBS.mb_CurTradeMedal>=0&&TMENU_BBS.mb_CurTradeMedal<=
30)
{
loc1=SE_ReadText(20,699000+TMENU_BBS.mb_CurTradeMedal);
B3D_TexTextBlock(-57,loc1,global.FONT_OCR,382-B3D_TexTextWidth(
loc1,global.FONT_OCR,129),0,0,16777215,129);
}
if(TMENU_BBS.mb_CurFightMedal>=0&&TMENU_BBS.mb_CurFightMedal<=
30)
{
loc1=SE_ReadText(21,699100+TMENU_BBS.mb_CurFightMedal);
B3D_TexTextBlock(-57,loc1,global.FONT_OCR,30,0,0,16777215,
129);
}
}
TMENU_BBS.mb_tSelections=SE_TableAlloc();
TMENU.me_OutLine=TMENU.me_TopLineInfo-2;
if(TMENU_BBS.mb_NumMessages)
{
var loc2=0;
var loc3=0;
var loc4=0;
var loc5=0;
var loc6=0;
var loc7=0;
var loc8=0;
var loc9=0;
var loc10=0;
var loc11=0;
var loc12=0;
var loc13=32;
var loc14=!TMENU.me_Object;
this->DrawAuthorAndDate();
this->StartInfo();
if(this->NewLine())
{
if((loc1=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][0])!=
0)
{
var loc15=B3D_TexTextWidth(loc1,global.FONT_OCR,129);
loc9=15+(600-loc15)/2;
this->DrawRect(loc9,((TMENU.me_OutLine+1)*TMENU.me_YSpacing+
TMENU.me_YOff)-1,loc15,1,1);
this->DrawTextX(loc1,loc9);
}
}
this->NewLine();
if(TMENU_BBS.mb_CurSel>=0&&((loc5=TMENU_BBS.mb_CurSel/TMENU_BBS.mb_ColNum)<
TMENU.me_FirstLine||loc5>TMENU.me_LastLine))
{
TMENU_BBS.mb_CurSel=-1;
}
TMENU.me_SelectedItem=0;
TMENU_BBS.mb_ColNum=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
3];
TMENU_BBS.mb_ColWidth=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
5];
TMENU_BBS.mb_ColSpacing=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
4];
TMENU_BBS.mb_ColOffset=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
6];
var loc15=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][7];
var loc16=((SE_ArraySize(loc15)+TMENU_BBS.mb_ColNum)-1)/TMENU_BBS.mb_ColNum;
TMENU_BBS.mb_SelectValue=0;
loc2=0;
loc8=0;
loc5=0;
var loc17=TMENU.me_NextLine;
var loc18=TMENU.me_NextOutLine;
var loc19="\033X";
for(loc3=0;loc3<TMENU_BBS.mb_ColNum;loc3=loc3+1)
{
TMENU.me_NextLine=loc17;
TMENU.me_NextOutLine=loc18;
for(loc4=0;loc4<loc16;loc4=loc4+1)
{
this->NewLine();
loc5=loc3*loc16+loc4;
if(loc5>=SE_ArraySize(loc15))
{
continue;
}
loc6=TMENU.me_Line*TMENU_BBS.mb_ColNum+loc3;
if(loc2&4)
{
loc2=loc2&-5;
}
loc10=0;
loc9=TMENU_BBS.mb_ColOffset+loc3*(TMENU_BBS.mb_ColWidth+TMENU_BBS.mb_ColSpacing);
for(loc7=0;1;loc7=loc7+1)
{
if(loc7!=0&&loc7!=SE_StringLen(loc15[loc5])&&(loc13!=256||
loc15[loc5][loc7]!=32)&&!SE_TableExists(TMENU_BBS.mb_aTextData[
TMENU_BBS.mb_CurMessage][8],loc8+loc7+1))
{
continue;
}
var loc20=0;
var loc21=loc13;
if(loc7!=0)
{
var loc22=SE_StringSub(loc15[loc5],loc10,loc7-loc10);
if(this->LineVisible())
{
if(loc2&4)
{
var loc23=TMENU.me_OutLine*TMENU.me_YSpacing+TMENU.me_YOff;
var loc24=B3D_TexTextWidth(loc22,global.FONT_OCR,129)+
4;
this->DrawRect(loc9-2,loc23,loc24,TMENU.me_YSpacing,TMENU_BBS.mb_CurSel==
loc6?9:13);
this->DrawRect(loc9-1,loc23+1,loc24-2,TMENU.me_YSpacing-
2,TMENU_BBS.mb_CurSel==loc6?1:3);
this->DrawTextColX(loc22,loc9,1);
}
else
{
if(loc2&1)
{
this->DrawRect(loc9,((TMENU.me_OutLine+1)*TMENU.me_YSpacing+
TMENU.me_YOff)-1,B3D_TexTextWidth(loc22,global.FONT_OCR,129),
1,9);
}
this->DrawTextX(loc19+loc22,loc9);
}
}
loc10=loc7;
loc21=32;
loc9=loc9+(B3D_TexTextWidth(loc22+" ",global.FONT_OCR,129)-
TMENU.me_XSpacing);
while((loc20=SE_StringStr(loc22,"\033"))!=-1)
{
loc19=SE_StringSub(loc22,loc20,2);
loc22=SE_StringSub(loc22,loc20+2);
}
}
loc20=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][8][
loc8+loc7+1];
if(loc20&256)
{
loc21=256;
}
else
{
if(loc20&128)
{
loc21=128;
}
else
{
if(loc20&64)
{
loc21=64;
}
else
{
if(loc20&32)
{
loc21=(loc13=32);
}
}
}
}
if(loc21!=32)
{
loc13=loc21;
loc11=0;
loc12=0;
var loc22=TMENU_BBS.mb_ColOffset+loc3*(TMENU_BBS.mb_ColWidth+
TMENU_BBS.mb_ColSpacing)+TMENU_BBS.mb_ColWidth;
var loc23=B3D_TexTextWidth(SE_StringSub(loc15[loc5],loc7),
global.FONT_OCR,129);
if(loc13==64)
{
loc9=loc22-loc23;
}
else
{
if(loc13==128)
{
loc9=((loc9+loc22)-loc23)/2;
}
else
{
if(loc13==256&&!(TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
8][loc8+SE_StringLen(loc15[loc5])+1]&16))
{
var loc24=0;
for(loc24=SE_StringLen(loc15[loc5])-1;loc24>=loc7;loc24=
loc24-1)
{
if(loc15[loc5][loc24]==32)
{
loc11=loc11+1;
}
}
if(loc11)
{
loc12=((loc22-loc9)-loc23)%loc11;
loc11=((loc22-loc9)-loc23)/loc11;
}
}
}
}
}
if(loc20&1)
{
loc2=loc2|1;
}
if(loc20&2)
{
loc2=loc2&-2;
}
if(loc20&8)
{
loc2=loc2&-5;
}
if(loc20&4)
{
loc2=loc2|4;
TMENU_BBS.mb_tSelections[loc6+1]=TMENU_BBS.mb_aTextData[
TMENU_BBS.mb_CurMessage][9];
if(TMENU_BBS.mb_CurSel==-1&&this->LineVisible())
{
TMENU_BBS.mb_CurSel=loc6;
}
var loc22=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
8][-(loc8+loc7)-1];
loc14=0;
if(TMENU_BBS.mb_CurSel==loc6)
{
TMENU.me_SelectedItem=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
9];
TMENU_BBS.mb_SelectValue=loc22;
var loc23=SE_GetExprType(TMENU_BBS.mb_SelectValue);
if(TMENU_BBS.mb_SelectValue&&loc23==1)
{
TMENU_BBS.mb_SelectValue=SE_SPrintf("%d",TMENU_BBS.mb_SelectValue);
}
else
{
if(TMENU_BBS.mb_SelectValue&&!(loc23==2||loc23==9))
{
TMENU_BBS.mb_SelectValue=0;
}
}
}
}
if(loc7==SE_StringLen(loc15[loc5]))
{
loc7=loc7+1;
break;
}
if(loc13==256&&loc15[loc5][loc7]==32)
{
loc9=loc9+(loc11+((loc12=loc12-1)>=0));
}
}
loc8=loc8+loc7;
}
}
if(loc14)
{
this->NewLine();
this->NewLine();
loc6=TMENU.me_Line*TMENU_BBS.mb_ColNum;
TMENU_BBS.mb_tSelections[loc6+1]=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
9];
if(TMENU_BBS.mb_CurSel==-1&&this->LineVisible())
{
TMENU_BBS.mb_CurSel=loc6;
}
if(TMENU_BBS.mb_CurSel==loc6)
{
TMENU.me_SelectedItem=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
9];
TMENU_BBS.mb_SelectValue=0;
}
if(this->LineVisible())
{
loc1=SE_ReadText(35,679);
loc9=TMENU_BBS.mb_ColOffset+(((TMENU_BBS.mb_ColWidth+TMENU_BBS.mb_ColSpacing)*
TMENU_BBS.mb_ColNum-TMENU_BBS.mb_ColSpacing)-B3D_TexTextWidth(
loc1,global.FONT_OCR,129))/2;
var loc20=TMENU.me_OutLine*TMENU.me_YSpacing+TMENU.me_YOff;
var loc21=B3D_TexTextWidth(loc1,global.FONT_OCR,129)+24;
this->DrawRect(loc9-12,loc20,loc21,TMENU.me_YSpacing,TMENU_BBS.mb_CurSel==
loc6?9:13);
this->DrawRect(loc9-11,loc20+1,loc21-2,TMENU.me_YSpacing-
2,TMENU_BBS.mb_CurSel==loc6?1:3);
this->DrawTextColX(loc1,loc9,1);
}
}
if(!TMENU.me_Object&&SE_ArraySize(TCLIENT.GetIncomingMessages())>
1)
{
if(!loc14)
{
this->NewLine();
this->NewLine();
}
if(this->LineVisible())
{
var loc20=SE_ArraySize(TCLIENT.GetIncomingMessages())-1;
loc1=SE_SPrintf(SE_ReadText(35,loc20==1?4225:4224),loc20);
this->DrawTextX(loc1,this->TextLeftPos(loc1,600));
}
}
this->EndInfo();
if(TMENU.me_Object)
{
if(TMENU_BBS.mb_CurMessage)
{
this->DrawTab("\033G<<\033X "+SE_ReadText(35,4407),190,TMENU.me_YOff,
100,TMENU.me_YSpacing,1);
}
else
{
this->DrawTab("\033R<< "+SE_ReadText(35,4407),190,TMENU.me_YOff,
100,TMENU.me_YSpacing,0);
}
if(TMENU_BBS.mb_CurMessage<TMENU_BBS.mb_NumMessages-1)
{
this->DrawTab(SE_ReadText(35,4409)+" \033G>>",340,TMENU.me_YOff,
100,TMENU.me_YSpacing,1);
}
else
{
this->DrawTab("\033R"+SE_ReadText(35,4409)+" >>",340,TMENU.me_YOff,
100,TMENU.me_YSpacing,0);
}
TMENU.me_OutLine=0;
this->DrawTextX(global.GetTimeString(TCLIENT.GetPlayer()->GetAge()),
TMENU_BBS.mb_TimePosX);
TMENU.me_OutLine=1;
this->DrawText(SE_SPrintf("%d/%d",TMENU_BBS.mb_CurMessage+
1,TMENU_BBS.mb_NumMessages));
var loc20=(TMENU.me_VirtualTexWidth-2*TMENU.me_XOff)-50;
this->DrawRawRect(TMENU.me_XOff+50,TMENU.me_YOff+TMENU.me_YSpacing+
6,loc20,2,5921370);
this->DrawRawRect(TMENU.me_XOff+50+(loc20*TMENU_BBS.mb_CurMessage)/
TMENU_BBS.mb_NumMessages,TMENU.me_YOff+TMENU.me_YSpacing+6,loc20/
TMENU_BBS.mb_NumMessages,2,16777215);
this->ArticleDisplayed();
}
else
{
if(TMENU_BBS.mb_NewMessage)
{
TMENU_BBS.mb_NewMessage=0;
var loc20=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
9];
var loc21=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][
10];
if(loc21&&loc20&&SE_ObjectExists(loc20))
{
TQUESTMASTER.SelectBBSQuest(loc20,loc21);
}
}
}
}
else
{
this->DrawText(SE_ReadText(35,TMENU.me_Object?4414:4415));
TMENU.me_SelectedItem=0;
TMENU_BBS.mb_CurSel=-1;
}
return(0);
}
function TMENU_BBS.ArticleDisplayed()
{
var loc1=TMENU_BBS.mb_aTextData[TMENU_BBS.mb_CurMessage][9];
if(loc1&&SE_ObjectExists(loc1))
{
TQUESTMASTER.BBSArticleDisplayed(loc1);
}
return(0);
}
function TMENU_BBS.Input(arg1, arg2)
{
switch(locate(arg1,260,261,259,258,339,338,13,343,
431))
{
case 1:
{
if(TMENU.me_Mode!=2)
{
return(2);
}
if(!TMENU.me_Object)
{
if(TMENU_BBS.mb_CurSel==-2)
{
TMENU_BBS.mb_CurSel=-1;
this->Update();
}
return(2);
}
if(TMENU_BBS.mb_CurMessage>0)
{
TMENU_BBS.mb_CurMessage=TMENU_BBS.mb_CurMessage-1;
TMENU_BBS.mb_CurSel=-2;
TMENU.me_FirstLineInfo=0;
TX_AUDIO.PlayMoveSample();
this->Update();
}
else
{
TX_AUDIO.PlayFailSample();
}
return(2);
}
case 2:
{
if(TMENU.me_Mode!=2)
{
return(2);
}
if(!TMENU.me_Object)
{
if(TMENU_BBS.mb_CurSel==-2)
{
TMENU_BBS.mb_CurSel=-1;
this->Update();
}
return(2);
}
if(TMENU_BBS.mb_CurMessage<TMENU_BBS.mb_NumMessages-1)
{
TMENU_BBS.mb_CurMessage=TMENU_BBS.mb_CurMessage+1;
TMENU_BBS.mb_CurSel=-2;
TMENU.me_FirstLineInfo=0;
TX_AUDIO.PlayMoveSample();
this->Update();
}
else
{
TX_AUDIO.PlayFailSample();
}
return(2);
}
case 3:
{
if(TMENU.me_Mode!=2)
{
return(2);
}
if(TMENU_BBS.mb_CurSel!=-1)
{
if(TMENU_BBS.mb_CurSel==-2)
{
TMENU_BBS.mb_CurSel=-1;
}
var loc1=(TMENU.me_FirstLine-1)*TMENU_BBS.mb_ColNum-1;
var loc2=loc1;
var loc3=0;
while(loc3=SE_TableNext(TMENU_BBS.mb_tSelections,loc3))
{
if(loc3-1>loc2&&(TMENU_BBS.mb_CurSel==-1||loc3-1<TMENU_BBS.mb_CurSel))
{
loc2=loc3-1;
}
}
if(loc2!=loc1)
{
TMENU_BBS.mb_CurSel=loc2;
if(TMENU_BBS.mb_CurSel>loc1+2*TMENU_BBS.mb_ColNum||TMENU.me_FirstLineInfo==
0)
{
TX_AUDIO.PlayMoveSample();
this->Update();
return(2);
}
}
}
this->KeyUpInfo();
return(2);
}
case 4:
{
if(TMENU.me_Mode!=2)
{
return(2);
}
if(TMENU_BBS.mb_CurSel!=-1)
{
if(TMENU_BBS.mb_CurSel==-2)
{
TMENU_BBS.mb_CurSel=-1;
}
var loc1=(TMENU.me_LastLine+2)*TMENU_BBS.mb_ColNum;
var loc2=loc1;
var loc3=0;
while(loc3=SE_TableNext(TMENU_BBS.mb_tSelections,loc3))
{
if(loc3-1>TMENU_BBS.mb_CurSel&&loc3-1<loc2)
{
loc2=loc3-1;
}
}
if(loc2!=loc1)
{
TMENU_BBS.mb_CurSel=loc2;
if(TMENU_BBS.mb_CurSel<loc1-2*TMENU_BBS.mb_ColNum||TMENU.me_TotalLinesInfo<=
TMENU.me_FirstLineInfo+TMENU.me_PageLinesInfo)
{
TX_AUDIO.PlayMoveSample();
this->Update();
return(2);
}
}
}
this->KeyDownInfo();
return(2);
}
case 5:
{
if(TMENU.me_Mode!=2)
{
return(2);
}
if(arg1==arg2)
{
return(2);
}
this->KeyPgUpInfo();
return(2);
}
case 6:
{
if(TMENU.me_Mode!=2)
{
return(2);
}
if(arg1==arg2)
{
return(2);
}
this->KeyPgDownInfo();
return(2);
}
case 7:
case 8:
case 9:
{
if(TMENU.me_Mode!=2)
{
return(2);
}
if(arg1==arg2)
{
return(2);
}
if(TMENU_BBS.mb_CurSel==-2)
{
TMENU_BBS.mb_CurSel=-1;
this->Update();
if(TMENU_BBS.mb_CurSel!=-1)
{
TX_AUDIO.PlayMoveSample();
return(2);
}
}
if(!TMENU_BBS.mb_NumMessages||TMENU_BBS.mb_CurSel==-1)
{
TX_AUDIO.PlayFailSample();
return(2);
}
TX_AUDIO.PlaySuccessSample();
if(!TMENU.me_Object)
{
TCLIENT.ReadMessage();
TMENU_BBS.mb_NewMessage=1;
TMENU.me_FirstLineInfo=0;
TMENU_BBS.mb_CurSel=-2;
}
if(TMENU.me_SelectedItem&&SE_ObjectExists(TMENU.me_SelectedItem))
{
TQUESTMASTER.SelectBBSQuest(TMENU.me_SelectedItem,TMENU_BBS.mb_SelectValue);
}
if(!TMENU.me_Object&&!SE_ArraySize(TCLIENT.GetIncomingMessages()))
{
this->Stop();
return(2);
}
if(TCLIENT.GetActiveMenu()==this)
{
TMENU_BBS.mb_aTextData=0;
this->Update();
}
return(2);
}
}
return(0);
}
function TMENU_BBS.GetLoopCutID()
{
return(825);
}
function TMENU_BBS.GetBackgroundCutID()
{
return(4777);
}
function TMENU_BBS.GetClass()
{
return(2288);
}
function TMENU_BBS.IsClass(arg1)
{
return(arg1==2288||2246->IsClass(arg1)?1:0);
} |
|
P@SHA : |
Дело силы воли, как и в случае с багом на халявные деньги от фабрик 125МВт щитов или мегачитом с миллионами халявными за миссии по отражению атак Ксенонов.
Я просто убиваю врагов, быстро и нещадно, а не часами задрачиваю их с целью захватить. Ну а если уже случайно захватился, то приятный и не очень дорогой бонус, т.к. сильно побит и чаще всего уже без оборудования. Да и даже такие до верфи долетают нечасто.
|
К сожалению к халяве неустойчив. Иногда даже начинаю игру с мыслью забить на захват, но записи в логе - ваш корабль убит, а вы агрессор - огорчают меня. И через некоторое время ловишь себя на том, что стреляешь с опаской.
Поэтому я нашёл как убрать захват и палил как только мог.
В общем я думаю нам нужно ковырять генераторы карт от Murka и GreyWolf.
Принцесса правда со своей болезнью лесом пойдёт, ну ниче. Зато каждый раз - новая вселенная.
|
|
|
P@SHA
525 EGP
  Рейтинг канала: 5(209) Репутация: 58 Сообщения: 3464 Откуда: Брест, Беларусь Зарегистрирован: 24.11.2006
 |
|
Non : |
вариант, который бы меня устроил - отсутствие сеты, но наличие турбо-двигателя на шаттле.
|
Давно уже есть - "Синтез-инжектор" из бонус-пака, продается на пиратских базах, при активации сильно повышает максимальную скорость на определенное время, в зависимости от класса корабля, требуется топливо - батареи или космические мухи
Последний раз редактировалось: P@SHA (17:32 11-05-2017), всего редактировалось 1 раз |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
P@SHA : |
Давно уже есть - "Синтез-инжектор" из бонус-пака, продается на пиратских базах, при активации сильно повышает максимальную скорость на определенное время, в зависимости от класса корабля, требуется топливо - батареи или космические мухи
|
У меня тоже есть. При этом не нужно открывать никаких менюх, включается/выключается нажатием кнопки V. Садит щит в 0.
Можно пожирание ресурсов добавить + повесить на определённое оборудование, пока работает только на шаттле.
На обычных скриптах довольно неудобно такие фичи делать. Постоянное лазание по менюхам.
add:
Выкладываю хотелки aL144 в виде куда копать + местами в готовом.
Излагал мысли максимально дотошно и, надеюсь, понятно.
Читать index.html в папке !README.
aL144.7z |
Описание: |
|
Имя файла: |
aL144.7z |
Размер файла: |
1.85 MB |
Скачано: |
834 раз(а) |
Последний раз редактировалось: Non (00:49 12-05-2017), всего редактировалось 1 раз |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
Если кто не в курсе, для X2 есть рабочий внешний редактор скриптов, который много чего может упростить.
http://forum.egosoft.com/viewtopic.php?t=211689
Искал по каналу инфу на предмет случайной карты и понял, что вся модо-революция уже давно была.
http://www.elite-games.ru/conference/viewtopic.php?p=1073102#1073102
В частности, этот мод включает в себя случайную карту, рабочий сюжет, новые корабли и даже костыльные посадки на планеты.
Чем не Super Mod?
Найти бы желание перебрать имеющиеся вариации случайных карт на базе карты от Grey Wolf на предмет приближения к только генератору карт. Думаю это куда перспективнее, чем делать карты руками.
Скрипты, отвечающие за создание станций, астероидов, планет и солнц в секторе уже скорее всего в допиленном виде.
Если всё не так уж и хорошо - есть ещё встроенный в игру редактор карт, т.е. сгенерированную карту можно поковырять в игре и экспортнуть. Потом может и чем-то доредактировать.
Надо наверное просто взять и полетать, так сказать - испытать мод в полевых условиях и осознать, что можно улучшить.
Обж уже тогда копали, причём по хардкору, без всяких там упрощений в виде xc, как я.. Пытались вправить неписям мозги в бою.
|
|
|
aL144
325 EGP
    Рейтинг канала: 4(74) Репутация: 30 Сообщения: 436 Откуда: Город непуганных идиотов Зарегистрирован: 07.05.2014
 |
|
К слову. По описанию мод топовый, но вот генерация, аля смешивание секторов... она нужна вообще?) Ее можно в этом моде как то выключить через скрипты или еще как то? Т.е. чтобы играть со статичной картой, с теми же 300 секторами адаптированными под сюжет.
_________________ Там где я был - смерти никогда не было, там где я есть - ее никогда не будет... |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
aL144 : |
К слову. По описанию мод топовый, но вот генерация, аля смешивание секторов... она нужна вообще?) Ее можно в этом моде как то выключить через скрипты или еще как то? Т.е. чтобы играть со статичной картой, с теми же 300 секторами адаптированными под сюжет.
|
Через скрипты её можно не подключать.
Открываешь через браузер скрипты и смотришь, кто что делает.
Пляшет всё от setup.* скриптов.
Я не заглядывал слишком глубоко, но на поверхности кажется достаточным закоментировать в файле setup.plugin.EG.mod строчку 10, которая запускает генератор карты. Следующим этапом - заменить карту в папке maps - своей.
Код: |
001 load text: id=4
002 *load text: id=100
003 load text: id=101
004 load text: id=1111
005 load text: id=1114
006 load text: id=1116
007 if not get global variable: name='modstart'
008 set global variable: name='modstart' value=1
009 @ = [THIS] -> call script 'mod.set.game.difficulty' :
010 @ = [THIS] -> call script 'EG.new.map.mod' :
011 @ START [THIS] -> call script 'EG.master.mod' :
012
013 @ = [THIS] -> call script 'qmod.stations' :
014
015 *= [THIS] -> call script t.p :
016
017 @ = [THIS] -> call script 'set.mod.inv' :
018 @ = [THIS] -> call script 'EG.setup.al' :
019 @ = [THIS] -> call script 'plugin.RA.mod' :
020 end
021 return null |
Но меня как раз интересует адаптация генерации. Это позволило бы с интересом летать, сделав мод для себя. Алгоритмически она мне кажется не сильно сложной.
Например, как бы я сделал, от большего к меньшему:
1. берутся 5 случайных секторов на карте 20х15 и помечаются праймами каждой расы, расстояние между праймами не менее 7-8 прыжков
2. в пределах 1-2 прыжка от прайма, сектора в количестве 3-6 помечаются технически развитыми, но бедными по руде/кремнию
3. сектора в пределах 1-2 прыжка от каждого технически развитого помечаются окраинами, в которых среднее количество ресурсов, минимум охраны и 1-3 странции
4. вышеперечисленные группы секторов связываются через пиратские, ксенонские и неизвестные сектора
Дальше для каждого сектора, согласно его типу (прайм, развитые, окраины, неизвестные) отрабатывают скрипты, наполняющие его станциями, астероидами, скайбоксами из соответствующего списка (тёмные для вражеских и неизвестных секторов, светлые для расовых), солнцами и т.п. для атмосферности.
Всё что меня не устраивает в рандоме - размещение секторов. Оно должно быть осмысленно. Их содержание - ничем не хуже обычной карты и при этом случайное. Всегда интереснее, чем помнить где лучше купить, где продать. Где купить пушки и щиты.
К тому же, каждый сможет немного твикнуть карту под себя. Как опция для генератора - отсутствие заводов по производству щитов и оружия круче среднего, отсутствие оного в доках. Мол хочешь выжить в суровых условиях - строй свои цепочки и охраняй их, чтобы оснастить корабли.
Скучное и сложное Grey Wolf уже сделал - создание огромных массивов из станций, добавление на них соответствующих ресурсов и т.д.
Погляди только на эту дичь. Я бы повесился столько ковыряться в этом скрипт редакторе, выбирая команды стрелочками.
скрипт, создающий станции в секторе (кликните здесь для просмотра)
Код: |
$racear = array alloc: size=6
$racear[0] = Argon
$racear[1] = Split
$racear[2] = Paranid
$racear[3] = Boron
$racear[4] = Teladi
$racear[5] = Pirates
$tech1IDar = array alloc: size=14
$tech1IDar[0] = 5
$tech1IDar[1] = 30
$tech1IDar[2] = 50
$tech1IDar[3] = 75
$tech1IDar[4] = 184
$tech1IDar[5] = 159
$tech1IDar[6] = 199
$tech1IDar[7] = 214
$tech1IDar[8] = 224
$tech1IDar[9] = 229
$tech1IDar[10] = 234
$tech1IDar[11] = 120
$tech1IDar[12] = 125
$tech1IDar[13] = 130
$tch1prodar = array alloc: size=14
$tch1prodar[0] = 16
$tch1prodar[1] = 9
$tch1prodar[2] = 10
$tch1prodar[3] = 8
$tch1prodar[4] = 8
$tch1prodar[5] = 16
$tch1prodar[6] = 8
$tch1prodar[7] = 8
$tch1prodar[8] = 8
$tch1prodar[9] = 16
$tch1prodar[10] = 16
$tch1prodar[11] = 15
$tch1prodar[12] = 15
$tch1prodar[13] = 11
$subprodar = array alloc: size=14
$subprodar[4] = 18
$subprodar[5] = 7
$subprodar[6] = 9
$subprodar[7] = 16
$subprodar[8] = 12
$subprodar[9] = 50
$subprodar[10] = 44
$subprodar[12] = 1
$tech1stepar = array alloc: size=14
$tech1stepar[0] = 5
$tech1stepar[1] = 4
$tech1stepar[2] = 5
$tech1stepar[3] = 9
$tech1stepar[4] = 3
$tech1stepar[5] = 4
$tech1stepar[6] = 3
$tech1stepar[7] = 2
$resrase2 = array alloc: size=5
$resrase2[0] = Meatsteak Cahoonas
$resrase2[1] = Rastar Oil
$resrase2[2] = Soja Husk
$resrase2[3] = BoFu
$resrase2[4] = Nostrop Oil
$amountstar = array alloc: size=236
$amountstar[33] = 3
$amountstar[36] = 4
$amountstar[39] = 2
$amountstar[45] = 2
$amountstar[47] = 5
$amountstar[64] = 3
$amountstar[82] = 1
$amountstar[83] = 1
$amountstar[91] = 1
$amountstar[92] = 1
$amountstar[100] = 2
$amountstar[184] = 1
$amountstar[185] = 2
$amountstar[187] = 2
$amountstar[189] = 2
$amountstar[191] = 2
$amountstar[194] = 2
$amountstar[195] = 2
$amountstar[196] = 2
$amountstar[198] = 1
$amountstar[205] = 2
$amountstar[206] = 2
$amountstar[207] = 1
$amountstar[211] = 2
$amountstar[214] = 2
$amountstar[215] = 2
$amountstar[219] = 1
$amountstar[222] = 3
$amountstar[223] = 2
$amountstar[226] = 2
$amountstar[228] = 3
$amountstar[229] = 2
$amountstar[230] = 2
$createdstations = array alloc: size=236
$prressubst = array alloc: size=236
$secressubst = array alloc: size=236
$groupstationsar = array alloc: size=5
$equipnoshipar = array alloc: size=5
$equipshipar = array alloc: size=5
$groupsectorsarrange = array alloc: size=5
$fargroupsar = array alloc: size=9
copy array $farsectors index 5 ... 8 into array $fargroupsar at index 5
$piratesector = get global variable: name='piratesector'
$n = 5
while $n
dec $n =
$group = $groupsectors[$n]
$sector = $group[0]
$racegroup = $sector -> get owner race
$m = 5
while $m
dec $m =
$race = $racear[$m]
if $race == $racegroup
$groupsectorsarrange[$m] = $group
$group = $farsectors[$n]
$fargroupsar[$m] = $group
break
end
end
end
set global variable: name='centresectors' value=$groupsectorsarrange
set global variable: name='farsectors' value=$fargroupsar
$m = -1
while $m 13
inc $m =
$tech1ID = $tech1IDar[$m]
$stepmax = $tech1stepar[$m]
skip if $m 8
$stepmax = 1
$mainprod = $tch1prodar[$m]
$step = $stepmax
while $step
dec $step =
$n = 5
while $n
dec $n =
* only 3 races have advanced satellite station
skip if not ( $m == 10 AND $n > 2 )
continue
$race = $racear[$n]
if $m == 5 OR $m == 7
$subst = $tech1ID + $n + $step * 5
else
$subst = $tech1ID + $step + $stepmax * $n
end
$type = get ware from maintype 6 and subtype $subst
* product
$subprod = $subprodar[$m]
skip if $subprod
$subprod = 0
$subprod = $step + $subprod
$prod = get ware from maintype $mainprod and subtype $subprod
$product = array alloc: size=1
$product[0] = $prod
* primary resources
$prresar = array alloc: size=0
$secresar = array alloc: size=0
skip if $m == 13
append Energy Cells to array $prresar
if $m 11
$res = $resrase2[$n]
append $res to array $prresar
append Ore to array $prresar
skip if not ( $m == 0 OR $m == 2 OR $m == 10 )
append Silicon Wafers to array $prresar
if $m == 5 AND $step == 0
remove element from array $prresar at index 2
append Silicon Wafers to array $prresar
append Majaglit to array $prresar
else if $m == 5 AND $step == 3
remove element from array $prresar at index 2
append Silicon Wafers to array $prresar
append Massom powder to array $prresar
end
if $m == 10
remove element from array $prresar at index 2
append Majaglit to array $prresar
end
if $m == 0
skip if not ( $step == 1 OR $step == 3 )
remove element from array $prresar at index 2
if $step == 0
remove element from array $prresar at index 3
append Cloth Rimes to array $prresar
skip if not $n == 0
remove element from array $prresar at index 1
end
end
end
$prressubst[$subst] = $prresar
* secondary resources
if $m == 0 AND $step == 4
append Microchips to array $secresar
append Quantum Tubes to array $secresar
else if $m == 1
append Quantum Tubes to array $secresar
else if $m == 2
append Warheads to array $secresar
append Cloth Rimes to array $secresar
skip if $step 3 OR $n == 2
append Quantum Tubes to array $secresar
else if $m == 3
if $step >= 3 AND $step 6 AND $n != 4
append Quantum Tubes to array $secresar
else
append Crystals to array $secresar
end
else if $m == 5
if $step == 0
append Quantum Tubes to array $secresar
append Microchips to array $secresar
else if $step == 3
append Quantum Tubes to array $secresar
append Computer Components to array $secresar
else
append Warheads to array $secresar
append Cloth Rimes to array $secresar
end
else if $m == 9
append Teladianium to array $secresar
else if $m == 10
append Computer Components to array $secresar
else if $m == 4 OR ( $m >= 6 AND $m 8 ) OR $m == 13
append Crystals to array $secresar
end
skip if not ( $m == 7 AND $step == 0 )
remove element from array $secresar at index 0
$secressubst[$subst] = $secresar
* amount of station in centre
if ( $subst >= 30 AND $subst 49 AND $step != 0 ) OR ( ( $subst >= 75 AND $subst 119 ) AND ( $step == 7 OR $step == 8 ) ) OR ( $subst >= 184 AND $subst 233 ) OR ( $subst >= 50 AND $subst 74 AND $step == 4 )
$amountorigin = $amountstar[$subst]
if $amountorigin
* product for shipyard and equip dock
$stgr = $groupstationsar[$n]
skip if $stgr
$stgr = array alloc: size=0
append $type to array $stgr
$groupstationsar[$n] = $stgr
$equip = $equipnoshipar[$n]
skip if $equip
$equip = array alloc: size=0
append $prod to array $equip
$equipnoshipar[$n] = $equip
* end product. amount
$needamount = $amountorigin * 3 / 5
if $amountorigin 4
$s = $amountorigin - $needamount + 1
$random = random value from 0 to $s - 1
skip if not $random
inc $needamount =
end
else
$needamount = 0
end
else
* product for shipyard and equip dock
if $m != 0 AND $m != 5 AND $m 9
$random = random value from 0 to 3 - 1
if $random
$equip = $equipshipar[$n]
skip if $equip
$equip = array alloc: size=0
append $prod to array $equip
$equipshipar[$n] = $equip
end
end
$stgr = $groupstationsar[$n]
skip if $stgr
$stgr = array alloc: size=0
append $type to array $stgr
$groupstationsar[$n] = $stgr
* end product. amount
if ( $m > 0 AND $m 4 ) OR ( $m > 6 AND $m 10 )
$needamount = random value from 0 to 7 - 1
$needamount = $needamount / 3
else if $m == 0
$needamount = random value from 1 to 3 - 1
skip if not $step == 1
$needamount = random value from 2 to 6 - 1
else if $m == 5
$needamount = random value from 0 to 3 - 1
skip if $step != 1
$needamount = 0
else if $m == 10
$needamount = random value from 0 to 4 - 1
else if $m == 11
$needamount = random value from 12 to 15 - 1
else if $m == 12
$needamount = random value from 8 to 11 - 1
else if $m == 13
$needamount = random value from 28 to 35 - 1
end
end
$group = $groupsectorsarrange[$n]
$size = size of array $group
while $needamount
dec $needamount =
$count = 0
randomgroup:
inc $count =
$s = random value from 0 to $size - 1
$sector = $group[$s]
if $count 50
$stsector = $sector -> get factory array from sector
if $stsector
$s = size of array $stsector
$st = find station: sector=$sector class or type=$type race=$race flags=[Find.Multiple] refobj=null maxdist=null maxnum=99 refpos=null
if $st
$s1 = size of array $st
if ( $m == 0 AND $step == 1 )
skip if $s1 2
goto label randomgroup
else if $m == 11
skip if $s1 3
goto label randomgroup
else if $m == 12
skip if $s1 2
goto label randomgroup
else if $m == 13
skip if $s1 5
goto label randomgroup
else
skip if not $s1
goto label randomgroup
skip if $s 8
goto label randomgroup
end
end
end
end
$amount = $createdstations[$subst]
skip if $amount
$amount = 0
inc $amount =
$createdstations[$subst] = $amount
= [THIS] -> call script EG.create.station.in.sector.mod : type of station=$type array of product=$product sector=$sector race=$race number of race=$n array of primary resources=$prresar array of secondary resources=$secresar amount of product=null factory, trade dock, eq dock, sh=0
end
end
* create stations far from centre
$n = 5
$totalamount = 0
while $n
dec $n =
if $m == 5 OR $m == 7
$subst = $tech1ID + $n + $step * 5
else
$subst = $tech1ID + $step + $stepmax * $n
end
$amount = $createdstations[$subst]
skip if $amount
$amount = 0
$totalamount = $totalamount + $amount
end
$needamount = $amountstar[$subst]
if $m == 0
$needamount = random value from 10 to 14 - 1
skip if not $step == 1
$needamount = random value from 28 to 35 - 1
else if ( $m > 0 AND $m 5 ) OR ( $m > 6 AND $m 10 )
$needamount = random value from 3 to 6 - 1
else if $m == 5
$needamount = random value from 7 to 10 - 1
else if $m == 6
$needamount = 2
else if $m == 11
$needamount = random value from 130 to 170 - 1
else if $m == 12
$needamount = random value from 95 to 110 - 1
else if $m == 13
$needamount = $farcultsect * 3 + $totalamount
end
if $totalamount $needamount
$needamount = $needamount - $totalamount
while $needamount
dec $needamount =
randomrace:
$n = random value from 0 to 5 - 1
skip if not ( $m == 10 AND $n > 2 )
goto label randomrace
if $m == 5 OR $m == 7
$subst = $tech1ID + $n + $step * 5
else
$subst = $tech1ID + $step + $stepmax * $n
end
if ( $subst >= 30 AND $subst 49 AND $step != 0 ) OR ( ( $subst >= 75 AND $subst 119 ) AND ( $step == 7 OR $step == 8 ) ) OR ( $subst >= 184 AND $subst 233 ) OR ( $subst >= 50 AND $subst 74 AND $step == 4 )
$amountorigin = $amountstar[$subst]
skip if $amountorigin
goto label randomrace
end
$race = $racear[$n]
$count = 0
randomsector:
inc $count =
if $m == 5 AND $step == 1
$s1 = 5
else if $m >= 11
$s1 = $n
$random = random value from 0 to 9 - 1
skip if $random
$s1 = 5
else
$s1 = $n
end
$group = $fargroupsar[$s1]
$size = size of array $group
$s = random value from 0 to $size - 1
$sector = $group[$s]
skip if not $sector == $piratesector
goto label randomsector
$type = get ware from maintype 6 and subtype $subst
if $count 50
$st = find station: sector=$sector class or type=$type race=$race flags=[Find.Multiple] refobj=null maxdist=null maxnum=99 refpos=null
$stsector = $sector -> get factory array from sector
if $stsector
$s = size of array $stsector
if $st
$s1 = size of array $st
if $m == 0 AND $step == 1
skip if $s1 2
goto label randomsector
else if $m == 11
skip if $s1 3
goto label randomsector
else if $m == 12
skip if $s1 2
goto label randomsector
else if $m == 13
skip if $s1 5
goto label randomsector
else
skip if not $s1
goto label randomsector
skip if $s 3
goto label randomsector
end
end
end
end
$prresar = $prressubst[$subst]
$secresar = $secressubst[$subst]
= [THIS] -> call script EG.create.station.in.sector.mod : type of station=$type array of product=$product sector=$sector race=$race number of race=$n array of primary resources=$prresar array of secondary resources=$secresar amount of product=null factory, trade dock, eq dock, sh=0
end
end
end
end
* create stations of races resources
$racear1 = clone array $racear : index 0 ... 4
remove element from array $racear1 at index 3
insert Boron into array $racear1 at index 1
$subst = 157
while $subst > 135
dec $subst =
$prresar = array alloc: size=1
$prresar[0] = Energy Cells
$secresar = array alloc: size=0
if $subst > 145
$subprod = $subst - 146
$mainprod = 14
$n = $subprod - 1
$m = $subst - 147
skip if not ( $subst == 154 OR $subst == 148 )
$m = $m - 1
skip if not ( $subst == 146 OR $subst == 147 OR $subst == 153 OR $subst == 156 )
$m = $m + 1
$res = get ware from maintype 13 and subtype $m
append $res to array $prresar
skip if not $subst == 147
append Delexian Wheat to array $prresar
else
$subprod = $subst - 135
$mainprod = 13
$n = $subprod
end
$prod = get ware from maintype $mainprod and subtype $subprod
$product = array alloc: size=1
$product[0] = $prod
skip if $n 10
$n = $n - 1
$n = $n / 2
$type = get ware from maintype 6 and subtype $subst
$race = $racear1[$n]
skip if not $subst == 136
append Scruffin Fruits to array $secresar
skip if not ( $subst == 136 OR $subst == 150 )
append Plankton to array $secresar
skip if not ( $subst == 137 OR $subst == 149 )
append Delexian Wheat to array $secresar
skip if not ( $subst == 138 OR $subst == 144 )
append Ore to array $secresar
skip if not ( ( $subst >= 138 AND $subst 143 ) OR $subst == 145 )
append Teladianium to array $secresar
skip if not ( ( $subst >= 139 AND $subst 142 ) OR $subst == 151 OR $subst == 152 OR $subst == 154 )
append Nostrop Oil to array $secresar
skip if not $n == 2
append Spaceflies to array $secresar
skip if not ( ( $subst >= 141 AND $subst 143 ) OR $subst == 145 OR $subst == 153 )
append BoGas to array $secresar
skip if not ( ( $subst >= 149 AND $subst 151 ) OR $subst == 140 )
append Soja Husk to array $secresar
skip if not ( ( $subst >= 154 AND $subst 156 ) OR $subst == 147 OR $subst == 148 )
append Stott Spices to array $secresar
if $subst == 153
append Rastar Oil to array $secresar
append Nividium to array $secresar
end
skip if not $subst == 155
append Swamp Plant to array $secresar
* amount
if ( $subst == 142 OR $subst == 145 OR $subst == 153 OR $subst == 151 )
$needamount = random value from 11 to 14 - 1
$m = 1
else if ( $subst == 148 OR $subst == 156 )
$needamount = random value from 6 to 9 - 1
$m = 2
else if ( $subst == 137 OR $subst == 144 OR $subst == 146 OR $subst == 149 OR $subst == 139 )
$needamount = random value from 16 to 23 - 1
$m = 3
else
$needamount = random value from 70 to 80 - 1
$m = 5
end
if $n == 1
$n = 3
else if $n == 2 OR $n == 3
$n = $n - 1
end
$stgr = $groupstationsar[$n]
append $type to array $stgr
while $needamount
dec $needamount =
$count = 0
sectorrace:
inc $count =
$s = $n
if ( $subst == 148 OR $subst == 156 )
$s = 5
$group = $fargroupsar[$s]
else
$random = random value from 0 to 10 - 1
if $random > 5
$group = $groupsectorsarrange[$s]
else
$random = random value from 0 to 9 - 1
skip if $random
$s = 5
$group = $fargroupsar[$s]
end
end
$size = size of array $group
$s = random value from 0 to $size - 1
$sector = $group[$s]
skip if not $sector == $piratesector
goto label sectorrace
if $count 50
$st = find station: sector=$sector class or type=$type race=$race flags=[Find.Multiple] refobj=null maxdist=null maxnum=99 refpos=null
if $st
$size = size of array $st
skip if $size $m
goto label sectorrace
end
end
= [THIS] -> call script EG.create.station.in.sector.mod : type of station=$type array of product=$product sector=$sector race=$race number of race=$n array of primary resources=$prresar array of secondary resources=$secresar amount of product=null factory, trade dock, eq dock, sh=0
end
end
= [THIS] -> call script EG.create.shipyard.mod : groups of sectors in centre=$groupsectorsarrange groups of sectors far from centr=$fargroupsar array of races=$racear array groups of stations=$groupstationsar product of equip dock wo shipyar=$equipnoshipar product of equip dock w shipyard=$equipshipar
= [THIS] -> call script EG.create.dock.mod : groups of sectors in centre=$groupsectorsarrange groups of sectors far=$fargroupsar array of races=$racear
= [THIS] -> call script EG.create.bigships.npc.mod : groups of sectors in centre=$groupsectorsarrange groups of sectors far from centr=$fargroupsar array of races=$racear
return null |
|
Нужно только адаптировать глобальную часть генератора и должно стать поинтереснее.
Накидал себе небольшой грязный скрипт на python, который мне парсит xml скрипты в plain-text, чтобы потом сравнивать скрипты между собой, не глазами, а программно.
Например, что изменил unihorn в генераторе карт по факту.
Вот сам скрипт:
Cкрытый текст (кликните здесь для просмотра)
Код: |
import re, sys
with open(sys.argv[1], encoding='utf-8') as file:
fileContents = file.read()
sourceText = re.search('<sourcetext>(.+?)</sourcetext>', fileContents, flags=re.DOTALL).group(1)
processedText = re.sub('<[^>]+>', '', re.sub('<line.+?indent="', '', sourceText.replace(' ', ' ')).replace('">', '').replace('>', '>').replace('<', '<'))
print(processedText) |
|
А вот как я его запускаю в командной строке для всех скриптов X2, начинающихся с EG.create (т.е. касающихся генератора карт):
Код: |
for %A in (EG.create*) do xxml %A > %~nA.x2s |
Он создает для всех найденых скриптов их аналоги в простом тексте, с расширением x2s.
Если интересно будет покопаться и посравнивать, что поменялось с каждым редактированием скриптов карты Grey Wolf'a - могу выложить скрипты по карте в текстовом виде.
Если ещё кто-то знает вариации карты от Grey Wolf'a кроме Murka NewReality, unihorn+SD EGMOD - напишите.
Я пока их поизучаю.
|
|
|
aL144
325 EGP
    Рейтинг канала: 4(74) Репутация: 30 Сообщения: 436 Откуда: Город непуганных идиотов Зарегистрирован: 07.05.2014
 |
|
Попробовал вышеописанный мод. Вырубил генератор карт по инструкции Non,а, установил 300 секторов от мурки, убрав в этой карте дурные дальние врата между хааками/ксенонами и центральными секторами аргона. Поиграл.
Сразу что бросилось в глаза - абсолютно неадекватный ребаланс кораблей. Аргонский экспресс управляется так же хорошо как истребитель, да еще и скоростя у всех кораблей увеличены... кхм... слишком.
В общем вопрос - как безболезненно у кораблей вернуть стандартные ТТХ? Ребаланс орудий наверно можно оставить, т.к. как я понял в моде есть новое вооружение и если вернуть ваниль новые пушки не установить.
При этом на карте в 300 секторов сюжет нормально завелся вместе с модом. Так же из мода вырезал ненужный ретекстур общей текстуры космоса, такое ощущение стало, что каждый сектор болеет космической ветрянкой. Чуть позже поколдую с ванильной текстурой, сделаю ее слегка светлее, тогда у секторах не будет слишком темно.
Отдельное спасибо Non,у за Хтшные звуки и выстрелы IRE PAC HEPT, все здорово смотрится. Понятно, что в х2 модельки выстрелов поменьше, но все равно смотрится лучше оригинала в 10 раз)
Буду продолжать смотреть как улучшить сложившуюся у меня сборку. Пока что явно виду то, что нужно вернуть ванильные ТТХ кораблей без изменения ряда вооружения.
_________________ Там где я был - смерти никогда не было, там где я есть - ее никогда не будет... |
|
|
Finist
1816 EGP
              Рейтинг канала: 5(131) Репутация: 391 Сообщения: 12170 Откуда: Рязань РОССИЯ Зарегистрирован: 25.12.2003
 |
|
aL144 : |
как безболезненно у кораблей вернуть стандартные ТТХ?
|
Если корабли в моде "родные", то просто взять оригинальный TShips и подставить в мод.
_________________ Про модераторов сказать можно много разного, вот только написать нельзя... |
|
|
aL144
325 EGP
    Рейтинг канала: 4(74) Репутация: 30 Сообщения: 436 Откуда: Город непуганных идиотов Зарегистрирован: 07.05.2014
 |
|
Finist : |
aL144 : |
как безболезненно у кораблей вернуть стандартные ТТХ?
|
Если корабли в моде "родные", то просто взять оригинальный TShips и подставить в мод.
|
Так я же описал, что не все ТТХ нужно менять. Плюс новые корабли вроде как имеются, да.
_________________ Там где я был - смерти никогда не было, там где я есть - ее никогда не будет... |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
aL144 : |
Понятно, что в х2 модельки выстрелов поменьше, но все равно смотрится лучше оригинала в 10 раз)
|
Их можно легко увеличить, распаковав pbd файлы в bod с помощью unpacker'a от Dimaxx'a, открыв блокнотом и поправив значение в строчке Automatic Object Size или как-то так.
aL144 : |
Ребаланс орудий наверно можно оставить, т.к. как я понял в моде есть новое вооружение и если вернуть ваниль новые пушки не установить.
|
Открой X2 Editor'ом из комплекта, что я тебе прислал, да посмотри какие реально пушки там есть. Тебя интересуют эти файлы: TLasers - здесь всё о пушках - об энергии, регенерации, стоимости и т.д., а в TBullets - о скоростях пуль, энергопотреблении, повреждениях, вращении, эффектах
aL144 : |
Так я же описал, что не все ТТХ нужно менять. Плюс новые корабли вроде как имеются, да.
|
Тоже открываешь с помощью X2 Editor'a, смотришь что там за новые корабли..... ... Блин, я бы себе скрипт на питоне написал, который бы накладывал патчи на TTX кораблей.
Всё что нужно сделать - иметь 2 файла, в одном TShips мода в текстовом виде, в другом - только те строки из оригинального TShips, которые ты хочешь перезаписать.
Прога по очереди считывает каждую строчку из TShips мода и сравнивает по .endswith() с патчем. Если есть соответствие - заменить строку.
Короче если ты ленивый и не спешишь - я тебе накидаю скрипт на питоне.
Но всё равно тебе нужно будет сформировать файл патча (т.е. скопировать из оригинального TShips - строки реально используемых в игре кораблей, минуя весь мусор).
|
|
|
Finist
1816 EGP
              Рейтинг канала: 5(131) Репутация: 391 Сообщения: 12170 Откуда: Рязань РОССИЯ Зарегистрирован: 25.12.2003
 |
|
aL144 : |
не все ТТХ нужно менять.
|
Дык тоже не проблема.
Берёшь ТШипс мода и ТШипс оригинала и сравниваешь их. Всё что надо заменить делается на раз в любом текст-редакторе.
_________________ Про модераторов сказать можно много разного, вот только написать нельзя... |
|
|
Zeron-MK7
343 EGP
    Рейтинг канала: 9(1004) Репутация: 46 Сообщения: 590 Откуда: Latvia Зарегистрирован: 14.09.2008
 |
|
Non : |
Не уверен, что лимита по кораблям даже при правке обжа не было.
|
В игру с помощью программы OBJ PATCH15 можно добавить еще 200 новых кораблей и максимум в игре тогда будет 314 кораблей.
Если у кого-то есть вопросы о моддинге 3D контента - о созданию кораблей, станций, кокпитов, внутренних стенах станции, ... у меня есть большой опыт в этом, спрашивайте .
Мои мысли о карте галактики:
Я думаю, что карта галактики должна быть статичной, потому что тогда можна легко редактировать её с помощью редактора галактики.
В карту можна добавить звездные системы:
Например: 9 секторов одной расы вместе являются звездной системой.
Cкрытый текст (кликните здесь для просмотра)
|
Добавить в каждый сектор только 1, 2 типа станции, Например - в один сектор можно добавлять только станций питания в других секторах станций оружия / щиты.
Станции солнечной электростанции не добавляют в каждый сектор, а добавлять толькоть в отденых секторах, также и с станциями Ore/Silicon.
Также можна добавить некоторые станции в другую систему - тогда корабли будут лететь длинный путь от одной системы в другую.
Теоретически в этом случае в секторах трафик кораблей будет очень интересным и нестандартним .
Астероиды для добычи добавить только в неизвестных секторах и с помощью скриптов добавит очень большую рандом генерацию Pirates/Xenons/Khaaks в неизвестных секторов - тогда добыча будет очень опасная.
_________________ Веб-сайт http://thexgalaxy.ucoz.com/ |
|
|
|
|
|
Канал X2: The Threat: «Коллективный мод для X2, обсуждение» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: фсех расстрелять! Оставить только женщин и Надин! (требует Lisnick)
|
» Коллективный мод для X2, обсуждение | страница 1 |
|