Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Коллективный мод для X2, обсуждение | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 2
На страницу: 1, 2  След. | Все страницы
Поиск в этой теме:
Канал 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 смог захватывать какие-то там новые классы фрегатов, чинить их и продавать за несколько миллионов. К чему мне эта постройка станций, если я могу так добыть денег гораздо быстрее. А деньги в иксах решают интересно ли дальше играть, или нет. Геймплей и физика не настолько привлекательная, чтобы было интересно бесцельно ради процесса в это погружаться. Типа песочить.

Кататься на велике куда увлекательнее, ради катания, например. Улыбка

Весь интерес для меня в сложном процессе становления, не обязательно вовлекающем поиск и вынос игрока вперёд ногами вражинами.

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

Пока всё. Устал формулировать. Улыбка
    Добавлено: 23:02 02-05-2017   
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, Виконт Империи
    Добавлено: 16:46 03-05-2017   
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 раз
    Добавлено: 17:36 03-05-2017   
aL144
 322 EGP


Рейтинг канала: 4(54)
Репутация: 27
Сообщения: 426
Откуда: Город непуганных идиотов
Зарегистрирован: 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 раз
    Добавлено: 22:45 10-05-2017   
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 достаточно бессмысленного контента, чтобы перед добавлением ещё чего-то - сначала осмыслить уже существующий.

В итоге, ни одна из перечисленных хотелок не замотивирует меня на усиленное совместное колупание. Всё что уже разобрался как делать и сделал - скину, подскажу.
    Добавлено: 23:30 10-05-2017   
P@SHA
 522 EGP


Рейтинг канала: 5(206)
Репутация: 58
Сообщения: 3443
Откуда: Брест, Беларусь
Зарегистрирован: 24.11.2006
aL144 :
с увеличенным трюмом (но сниженной скоростью) для тех же транспортников

Так ведь есть уже! Хочешь быстрый - крокодил, хочешь необъятный трюм - дельфин. И куча вариаций балансирующих между ними и у прочих рас.
_________________
:X2:
    Добавлено: 00:17 11-05-2017   
aL144
 322 EGP


Рейтинг канала: 4(54)
Репутация: 27
Сообщения: 426
Откуда: Город непуганных идиотов
Зарегистрирован: 07.05.2014
Вспомнил еще один интересный момент. Когда в тебя попадают из орудий в X-tension, твой корабль трясет от попаданий. В Х2 это вообще возможно реализовать?
_________________
Там где я был - смерти никогда не было, там где я есть - ее никогда не будет...
    Добавлено: 09:07 11-05-2017   
P@SHA
 522 EGP


Рейтинг канала: 5(206)
Репутация: 58
Сообщения: 3443
Откуда: Брест, Беларусь
Зарегистрирован: 24.11.2006
Non :
Начало должно быть достаточно тугим/сложным без лёгких путей быстрого обогащения

Оно и тугое и сложное, когда на стартовой открывахе нет даже SETA, если ее вовсе из игры выпилить, то вся игра такой и будет.
Самые незабываемые впечатления от игры были, когда впервые в нее сел играть и не знал про SETA, хотя она и была тогда, т.к. первую игру начал на нормальной сложности. Но я про нее просто еще не знал и получал массу положительных эмоций от бесконечно долгого созерцания космоса во время продолжительных перемещений между станциями даже в пределах одного сектора. Особенно атмосферно было делать межсекторные перелеты торговые на подаренном стареньком меркурии. Как на настоящем корабле в настоящем перелете - сходил пообедал, попил чай, почитал книгу, а ты все летишь и летишь - романтика Улыбка. Жаль только времени свободного так мало и оно так ценно, что так полетать уже непозволительно Расстроен
Non :
Снизить процент населённых секторов в целом. В оригинальной игре всё зачем-то забито повторяющимся контентом.

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

Еще, если это возможно, исправить баг с фабриками щитов 125МВт. Как известно, они продолжают скупать ресурсы даже при полностью забитых складах, тем самым способствуя быстрому обогащению, достаточно лишь рядом с ними пару солярок воткнуть и транспорты с фабрик 125 МВт начинают батареи выкачивать по максимальной цене, едва там соберется хоть пара штук. С таким соблазном даже мне, устойчивому к халяве, трудно бороться Улыбка

Еще, если возможно, отключить новости на станциях, они уже сто раз прочитаны, да и не несут никакой абсолютно смысловой нагрузки. Лишь долго листать их нужно в поисках миссий. Вот если бы они отражалии суть событий вселенной, как в Космических рейнджерах, типо на такой-то сектор напали Хааки или в таком-то секторе скопилось много такой-то продукции, или, наоборот, ее нехватка - вот такое было бы интересно.

aL144 :
убрать напрочь захват кораблей

Дело силы воли, как и в случае с багом на халявные деньги от фабрик 125МВт щитов или мегачитом с миллионами халявными за миссии по отражению атак Ксенонов.
Я просто убиваю врагов, быстро и нещадно, а не часами задрачиваю их с целью захватить. Ну а если уже случайно захватился, то приятный и не очень дорогой бонус, т.к. сильно побит и чаще всего уже без оборудования. Да и даже такие до верфи долетают нечасто.

Последний раз редактировалось: P@SHA (13:56 11-05-2017), всего редактировалось 2 раз(а)
    Добавлено: 13:50 11-05-2017   
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.
Принцесса правда со своей болезнью лесом пойдёт, ну ниче. Улыбка Зато каждый раз - новая вселенная.
    Добавлено: 14:35 11-05-2017   
P@SHA
 522 EGP


Рейтинг канала: 5(206)
Репутация: 58
Сообщения: 3443
Откуда: Брест, Беларусь
Зарегистрирован: 24.11.2006
Non :
вариант, который бы меня устроил - отсутствие сеты, но наличие турбо-двигателя на шаттле.

Давно уже есть - "Синтез-инжектор" из бонус-пака, продается на пиратских базах, при активации сильно повышает максимальную скорость на определенное время, в зависимости от класса корабля, требуется топливо - батареи или космические мухи Улыбка

Последний раз редактировалось: P@SHA (17:32 11-05-2017), всего редактировалось 1 раз
    Добавлено: 17:31 11-05-2017   
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
 Скачано:  741 раз(а)


Последний раз редактировалось: Non (00:49 12-05-2017), всего редактировалось 1 раз
    Добавлено: 00:48 12-05-2017   
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, как я.. Пытались вправить неписям мозги в бою. Подмигиваю
    Добавлено: 19:10 12-05-2017   
aL144
 322 EGP


Рейтинг канала: 4(54)
Репутация: 27
Сообщения: 426
Откуда: Город непуганных идиотов
Зарегистрирован: 07.05.2014
К слову. По описанию мод топовый, но вот генерация, аля смешивание секторов... она нужна вообще?) Ее можно в этом моде как то выключить через скрипты или еще как то? Т.е. чтобы играть со статичной картой, с теми же 300 секторами адаптированными под сюжет.
_________________
Там где я был - смерти никогда не было, там где я есть - ее никогда не будет...
    Добавлено: 22:43 12-05-2017   
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('&gt;', '>').replace('&lt;', '<'))
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 - напишите.

Я пока их поизучаю.
    Добавлено: 00:56 13-05-2017   
aL144
 322 EGP


Рейтинг канала: 4(54)
Репутация: 27
Сообщения: 426
Откуда: Город непуганных идиотов
Зарегистрирован: 07.05.2014
Попробовал вышеописанный мод. Вырубил генератор карт по инструкции Non,а, установил 300 секторов от мурки, убрав в этой карте дурные дальние врата между хааками/ксенонами и центральными секторами аргона. Поиграл.

Сразу что бросилось в глаза - абсолютно неадекватный ребаланс кораблей. Аргонский экспресс управляется так же хорошо как истребитель, да еще и скоростя у всех кораблей увеличены... кхм... слишком.
В общем вопрос - как безболезненно у кораблей вернуть стандартные ТТХ? Ребаланс орудий наверно можно оставить, т.к. как я понял в моде есть новое вооружение и если вернуть ваниль новые пушки не установить.
При этом на карте в 300 секторов сюжет нормально завелся вместе с модом. Так же из мода вырезал ненужный ретекстур общей текстуры космоса, такое ощущение стало, что каждый сектор болеет космической ветрянкой. Чуть позже поколдую с ванильной текстурой, сделаю ее слегка светлее, тогда у секторах не будет слишком темно.
Отдельное спасибо Non,у за Хтшные звуки и выстрелы IRE PAC HEPT, все здорово смотрится. Понятно, что в х2 модельки выстрелов поменьше, но все равно смотрится лучше оригинала в 10 раз)
Буду продолжать смотреть как улучшить сложившуюся у меня сборку. Пока что явно виду то, что нужно вернуть ванильные ТТХ кораблей без изменения ряда вооружения.
_________________
Там где я был - смерти никогда не было, там где я есть - ее никогда не будет...
    Добавлено: 09:50 14-05-2017   
Finist
 1805 EGP


Модератор
Рейтинг канала: 5(131)
Репутация: 391
Сообщения: 12143
Откуда: Рязань РОССИЯ
Зарегистрирован: 25.12.2003
aL144 :
как безболезненно у кораблей вернуть стандартные ТТХ?

Если корабли в моде "родные", то просто взять оригинальный TShips и подставить в мод.
_________________
Про модераторов сказать можно много разного, вот только написать нельзя...
    Добавлено: 10:46 14-05-2017   
aL144
 322 EGP


Рейтинг канала: 4(54)
Репутация: 27
Сообщения: 426
Откуда: Город непуганных идиотов
Зарегистрирован: 07.05.2014
Finist :
aL144 :
как безболезненно у кораблей вернуть стандартные ТТХ?

Если корабли в моде "родные", то просто взять оригинальный TShips и подставить в мод.


Так я же описал, что не все ТТХ нужно менять. Плюс новые корабли вроде как имеются, да.
_________________
Там где я был - смерти никогда не было, там где я есть - ее никогда не будет...
    Добавлено: 14:38 14-05-2017   
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 - строки реально используемых в игре кораблей, минуя весь мусор).
    Добавлено: 15:01 14-05-2017   
Finist
 1805 EGP


Модератор
Рейтинг канала: 5(131)
Репутация: 391
Сообщения: 12143
Откуда: Рязань РОССИЯ
Зарегистрирован: 25.12.2003
aL144 :
не все ТТХ нужно менять.

Дык тоже не проблема.
Берёшь ТШипс мода и ТШипс оригинала и сравниваешь их. Всё что надо заменить делается на раз в любом текст-редакторе.
_________________
Про модераторов сказать можно много разного, вот только написать нельзя...
    Добавлено: 15:21 14-05-2017   
Zeron-MK7
 342 EGP


Рейтинг канала: 8(977)
Репутация: 46
Сообщения: 569
Откуда: Latvia
Зарегистрирован: 14.09.2008
Non :
Не уверен, что лимита по кораблям даже при правке обжа не было.

В игру с помощью программы OBJ PATCH15 можно добавить еще 200 новых кораблей и максимум в игре тогда будет 314 кораблей.
Если у кого-то есть вопросы о моддинге 3D контента - о созданию кораблей, станций, кокпитов, внутренних стенах станции, ... у меня есть большой опыт в этом, спрашивайте Геймер. .

Мои мысли о карте галактики:
Я думаю, что карта галактики должна быть статичной, потому что тогда можна легко редактировать её с помощью редактора галактики.
В карту можна добавить звездные системы:
Например: 9 секторов одной расы вместе являются звездной системой.
 Cкрытый текст   (кликните здесь для просмотра)

Добавить в каждый сектор только 1, 2 типа станции, Например - в один сектор можно добавлять только станций питания в других секторах станций оружия / щиты.
Станции солнечной электростанции не добавляют в каждый сектор, а добавлять толькоть в отденых секторах, также и с станциями Ore/Silicon.
Также можна добавить некоторые станции в другую систему - тогда корабли будут лететь длинный путь от одной системы в другую.
Теоретически в этом случае в секторах трафик кораблей будет очень интересным и нестандартним Гениальная идея! .
Астероиды для добычи добавить только в неизвестных секторах и с помощью скриптов добавит очень большую рандом генерацию Pirates/Xenons/Khaaks в неизвестных секторов - тогда добыча будет очень опасная.
_________________
Веб-сайт http://thexgalaxy.ucoz.com/
    Добавлено: 18:18 14-05-2017   
Канал X2: The Threat: «Коллективный мод для X2, обсуждение»
На страницу: 1, 2  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Кажется, я теладею... (Fry)

  » Коллективный мод для X2, обсуждение | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18