ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Ковровое сканирование ресурсов | |
|
|
|
Канал X4: Foundations: «Ковровое сканирование ресурсов» |
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
Ковровое сканирование ресурсов
Кратко: Программка помогающая в сканировании ресурсов в секторе.
Внимание! Не для игры, модифицирует сохранение.
Автор: Я
Версия игры: любая
Описание:
Из того, что раздражает в X4 больше всего, задания на поиск ресурсов, пожалуй занимают одно из главных мест. Для меня по крайней мере.
По сути это лото или лотерея на огромной карте, где ни визуально, ни логически невозможно определить где и сколько ресурсов находится.
Цветовая подсказка, так же мало помогает, особенно в секторах полностью покрытых астероидами и/или газом.
Для таких случаев, сделал в помощь программку, которая покрывает часть карты ковром из зондов.
Как пользоваться.
Конечно не без танцев с бубнами, но всё же попроще традиционного способа поиска.
1. В игре разместите в нужном секторе исследовательский зонд и как ни будь его назовите.
В моём случае я дал ему имя "Тест-зонд". Имя можно дать какое угодно, кроме стандартного "Исследовательский зонд". Это будет центр "коврика".
Желательно не находиться в секторе сканирования. В противном случае часть зондов может сорваться и улететь куда-то на запад.
Возможно, что-то прописано у них в xml, а возможно просто реакция на появление внутри астероидов.
2. Сохраните игру.
3. Запустите программку.
4. В поле Имя зонда впишите то имя, которое вы дали зонду в игре.
5. Задайте размеры коврика. Имейте в виду 10 - это 10 в одну и 10 в другую сторону от вашего зонда, т.е. по сути 20 + 1 центральный = 21 зонд по оси. В поле шаг можно проставить расстояние между зондами, стандарт 32км.
6. Нажать "Загрузить XML", выбрать xml или xml.gz.
7. Если всё прошло хорошо, то программа автоматически предложит вам сохранить файл. И по завершении сохранения закроется.
8. Загрузите модифицированное сохранение. В игре вы увидите коврик из зондов. Найдите то что вам нужно, можете сделать для себя скриншот.
9. Вот в общем-то и всё, далее можете загружать игру с обычного сейва и сбрасывать зонд в нужное вам место сверившись со скриншотом.
Наверное важно.
Временные файлы программа создаёт в папке в которой находится.
Если вы переживаете за свой SSD, то вероятно будет лучше хранить её где ни будь на HDD.
Я бы посоветовал отдельную папку, на случай сбоев или ошибок программы.
Временных файлов всего 2, весом по ~1Гб.
mat.rar |
Description: |
|
Filename: |
mat.rar |
Filesize: |
8.22 KB |
Downloaded: |
347 Time(s) |
Last edited by Mechick on 07:54 13-06-2021; edited 11 times in total |
|
|
anDron
576 EGP
      Рейтинг канала: 13(2117) : 54 Posts: 5970 Location: Новосибирск Joined: 27 Nov 2013
 |
|
Надо добавить нормальное описание-шапку по программе. По принципу оформления модов. А то, без поллитры, и не сообразишь, сходу, о чем речь.
|
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
Надеюсь так получше?
|
|
|
Progger
50 EGP Рейтинг канала: 2(20) : 0 Posts: 7
Joined: 18 May 2021
 |
|
В игре ресурсы представлены в виде кубов 32x32x32 км, поэтому нет смысла так часто ставить зонды - достаточно по одному в центр каждого куба.
|
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
Progger wrote: |
В игре ресурсы представлены в виде кубов 32x32x32 км, поэтому нет смысла так часто ставить зонды - достаточно по одному в центр каждого куба.
|
Не знал. Можно сделать изменяемый шаг.
добавлено спустя 27 минут:
Обновил, добавил возможность смены шага.
Last edited by Mechick on 08:57 05-06-2021; edited 1 time in total |
|
|
ayes
92 EGP
 Рейтинг канала: 5(112) : -37 Posts: 1016 Location: Чебоксары Joined: 22 Feb 2008
 |
|
И теперь главный вопрос: А как потом удалить зонды?
|
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
ayes wrote: |
И теперь главный вопрос: А как потом удалить зонды?
|
Ты же не собираешься продолжать игру с модифицированным сейвом? См. п. 12
Сделал скриншот, и уже в нормальной игре сбросил зонд там где тебе нужно.
|
|
|
anDron
576 EGP
      Рейтинг канала: 13(2117) : 54 Posts: 5970 Location: Новосибирск Joined: 27 Nov 2013
 |
|
Mechick wrote: |
Надеюсь так получше?
|
Получше.
Следущее в первом посте есть, но:
вообще-то есть еще пожелание, как-то более заметно выделить предупреждение (возможно дополнительно добавить в шапку), что программа безвозвратно модифицирует сейв и соответственно требует предварительного его "перепрятывания". (bold-ом ли, цветом или курсивом).
ЗЫ. Если что, я не как модератор пишу, а как обычный участник канала. Т.е. написанное - не требование администрации, а просто пожелания...
добавлено спустя 22 минуты:
ЗЫ2. Общие пожелания на развитие:
- автоматически разархивировать сейв (если он "пожат")
- заполнять зондами все сектора (т.е. делать сейв-общую_карту распределения ресов); без всякого "опорного зонда".
- сохранять сейв с измененным именем (тогда его можно хранить в общей папке с сейвами, но потребуются уже ручные манипуляции для загрузки); либо автоматически бэкапить старый сейв.
Last edited by anDron on 12:54 05-06-2021; edited 2 times in total |
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
anDron wrote: |
- автоматически разархивировать сейв (если он "пожат")
|
Если его возьмёт стандартный zip архиватор, то можно попробовать.
anDron wrote: |
- заполнять зондами все сектора (т.е. делать сейв-общую_карту распределения ресов); без всякого "опорного зонда".
|
Это вряд ли. Чёрт ногу сломит в их XML, да и не лучшее это дело ковырять сейвы.
В идеале хорошо бы сделать скрипт или мод как в X3, но с этим движком я пока не знаком.
anDron wrote: |
- сохранять сейв с измененным именем (тогда его можно хранить в общей папке с сейвами, но потребуются уже ручные манипуляции для загрузки); либо автоматически бэкапить старый сейв.
|
Тоже думал как лучше, сделаю что ни будь.
|
|
|
anDron
576 EGP
      Рейтинг канала: 13(2117) : 54 Posts: 5970 Location: Новосибирск Joined: 27 Nov 2013
 |
|
7-zip, винрар? ну и gunzip - gz-тку берут.
Mechick wrote: |
Тоже думал как лучше, сделаю что ни будь.
|
Можно делать папку в папке сейвов. А там парочку папочек Модифиед и Бэкап. И туда соответствующие копии скинуть.
|
|
|
alexusvm
664 EGP
        Рейтинг канала: 15(2516) : 33 Posts: 1597 Location: Москва Joined: 30 Aug 2012
 |
|
Mechick wrote: |
Если его возьмёт стандартный zip архиватор, то можно попробовать.
|
Если написано на .NET, есть штатный метод фреймворка, прекрасно это делающий без сторонних бубнов.
добавлено спустя 38 минут:
Progger wrote: |
ресурсы представлены в виде кубов 32x32x32 км
|
Даже беглый взгляд на region_definitions покажет что это не так
Last edited by alexusvm on 00:23 06-06-2021; edited 1 time in total |
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
alexusvm wrote: |
Mechick wrote: |
Если его возьмёт стандартный zip архиватор, то можно попробовать.
|
Если написано на .NET, есть штатный метод фреймворка, прекрасно это делающий без сторонних бубнов.
|
Я его и имел в виду под стандартным архиватором. В данном случае всё сработало. Обновил 1-й пост.
|
|
|
Progger
50 EGP Рейтинг канала: 2(20) : 0 Posts: 7
Joined: 18 May 2021
 |
|
alexusvm wrote: |
Даже беглый взгляд на region_definitions покажет что это не так
|
А неторопливый взгляд в сейв покажет, что ресурсы хранятся так:
Cкрытый текст (кликните здесь для просмотра)
Code: |
<component class="sector" macro="cluster_18_sector001_macro" connection="cluster" code="QIF-571" owner="paranid" knownto="player" known="1" id="[0xbeff]">
<resourceareas>
...
<area x="192000" y="32000" z="-32000">
<wares>
<ware ware="nividium">
<recharge max="20" current="18" time="604800"/>
</ware>
<ware ware="ore">
<recharge max="15952" current="489" time="144000"/>
</ware>
<ware ware="silicon">
<recharge max="15972" time="144000"/>
</ware>
</wares>
<yields>
<ware ware="nividium">
<yield name="medium"/>
</ware>
<ware ware="ore">
<yield name="medium"/>
</ware>
<ware ware="silicon">
<yield name="medium"/>
</ware>
</yields>
</area>
...
</resourceareas>
</component> |
|
region_definitions используется для генерации этих кубов при создании вселенной. Собственно я это выяснил, изменяя region_definitions и удивляясь, почему в игре нет никаких изменений
|
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
Progger wrote: |
alexusvm wrote: |
Даже беглый взгляд на region_definitions покажет что это не так
|
А неторопливый взгляд в сейв покажет, что ресурсы хранятся так:
Cкрытый текст (кликните здесь для просмотра)
Code: |
<component class="sector" macro="cluster_18_sector001_macro" connection="cluster" code="QIF-571" owner="paranid" knownto="player" known="1" id="[0xbeff]">
<resourceareas>
...
<area x="192000" y="32000" z="-32000">
<wares>
<ware ware="nividium">
<recharge max="20" current="18" time="604800"/>
</ware>
<ware ware="ore">
<recharge max="15952" current="489" time="144000"/>
</ware>
<ware ware="silicon">
<recharge max="15972" time="144000"/>
</ware>
</wares>
<yields>
<ware ware="nividium">
<yield name="medium"/>
</ware>
<ware ware="ore">
<yield name="medium"/>
</ware>
<ware ware="silicon">
<yield name="medium"/>
</ware>
</yields>
</area>
...
</resourceareas>
</component> |
|
region_definitions используется для генерации этих кубов при создании вселенной. Собственно я это выяснил, изменяя region_definitions и удивляясь, почему в игре нет никаких изменений
|
Странно, что никто ещё не сделал карту ресурсов. Или я просто не знаю?
Возможно получится упростить программку вываливая зонды в координатах с наивысшим содержанием ресурсов.
|
|
|
Progger
50 EGP Рейтинг канала: 2(20) : 0 Posts: 7
Joined: 18 May 2021
 |
|
Mechick wrote: |
Странно, что никто ещё не сделал карту ресурсов. Или я просто не знаю?
|
Скорее всего ей было бы очень трудно воспользоваться. Т.к. отсутствует возможность послать корабль по заданным координатам, то очень сложно прилететь у богатому месторождению, находящемуся значительно выше или ниже эклиптики, чтобы развернуть там зонд.
|
|
|
gotis
50 EGP Рейтинг канала: 4(64) : 0 Posts: 19
Joined: 31 Dec 2018
 |
|
Я, наверное, чего-то напрочь не понимаю в этой жизни.
Cкрытый текст (кликните здесь для просмотра)
Я могу понять людей, которые не играют с модами "принципиально" (Но не "принять" - для меня игра есть средство получения удовольствия и "разминка мозга". Если нечто меня напрягает сверх меры буквально или раздражает - я спокойно использую мод.) Я могу понять тех, кому "до зарезу" нужны "венчуры", и он борется "за чистоту сейва" (Хотя как пор мне - профит от этого сомнительного занятия просто смешон. А ресурсов для модификаций любой курьер, правильно настроенный на "сбор грузов" в секторе "с активностью", даст во много раз больше.) В общем, я многое могу понять...
Но если вы по определению намерены "обманывать игру" и "облегчать игровую механику сторонними программами" - какая религия мешает вам, например, поставить мод Sector Satellites с его ресурсными спутниками? Чтобы точно так же увидеть все ресурсы в секторе. Там можно настроить вид ресурсов, "порог обнаружения", количество дополнительных зондов для "обозначения" и проч., и проч. Не хотите метку на сейв - сделайте так же: найдите, заскриньте, удалите мод, загрузите... Хотите "своё" непременно - посмотрите скрипты мода, разберите, сделайте своё "так же, но лучше" для себя...
Ну вот честно, не в обиду. Лично я только радуюсь, когда люди "активничают", что-то пишут, делают... Просто тупо не понимаю, правда: зачем изобретать велосипед на гусеницах - когда давно есть на колёсах?
И да, простите за резкость, если кому так показалось - всем желаю только благ. И активных пилотов (и людей) - реально уважаю. Если anDron'у покажется, что "не по теме" я тут написал или "чересчур" - пусть аннигилирует. Но написал - как думал.
|
Last edited by gotis on 17:11 06-06-2021; edited 2 times in total |
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
gotis wrote: |
Я, наверное, чего-то напрочь не понимаю в этой жизни.
Cкрытый текст (кликните здесь для просмотра)
Я могу понять людей, которые не играют с модами "принципиально" (Но не "принять" - для меня игра есть средство получения удовольствия и "разминка мозга". Если нечто меня напрягает сверх меры буквально или раздражает - я спокойно использую мод.) Я могу понять тех, кому "до зарезу" нужны "венчуры", и он борется "за чистоту сейва" (Хотя как пор мне - профит от этого сомнительного занятия просто смешон. А ресурсов для модификаций любой курьер, правильно настроенный на "сбор грузов" в секторе "с активностью", даст во много раз больше.) В общем, я многое могу понять...
Но если вы по определению намерены "обманывать игру" и "облегчать игровую механику сторонними программами" - какая религия мешает вам, например, поставить мод Sector Satellites с его ресурсными спутниками? Чтобы точно так же увидеть все ресурсы в секторе. Там можно настроить вид ресурсов, "порог обнаружения", количество дополнительных зондов для "обозначения" и проч., и проч. Не хотите метку на сейв - сделайте так же: найдите, заскриньте, удалите мод, загрузите... Хотите "своё" непременно - посмотрите скрипты мода, разберите, сделайте своё "так же, но лучше" для себя...
Ну вот честно, не в обиду. Лично я только радуюсь, когда люди "активничают", что-то пишут, делают... Просто тупо не понимаю, правда: зачем изобретать велосипед на гусеницах - когда давно есть на колёсах?
И да, простите за резкость, если кому так показалось - всем желаю только благ. И активных пилотов (и людей) - реально уважаю. Если anDron'у покажется, что "не по теме" я тут написал или "чересчур" - пусть аннигилирует. Но написал - как думал.
|
|
Каждому своё и по ситуации. Насчёт мода, да посмотрел, слишком долго. В моём случае мне нужен быстрый результат. Мне не ресурсы сектора нужны, а поскорее выполнить "очень лёгкое" задание, завязанное, повторюсь, на принципе лото или лотереи. Что было под рукой (C#), то и использую. Знал бы скриптовый движок на X4, использовал бы его.
Progger wrote: |
Скорее всего ей было бы очень трудно воспользоваться. Т.к. отсутствует возможность послать корабль по заданным координатам, то очень сложно прилететь у богатому месторождению, находящемуся значительно выше или ниже эклиптики, чтобы развернуть там зонд.
|
Со времён X3 egosoft прошла долгий путь и сделала наконец космос плоским, так что никаких полётов выше/ниже эклиптики. Все основные жирные ресурсы похоже собраны на уровне 0 и в обозримой части сектора, иначе их было бы тупо не найти с навигацией, позволяющей летать только по плоскости. По идее на той же карте из Builder-а, можно к примеру расставить указатели богатых месторождений. Впрочем причину похоже нашёл.
Мне удалось сделать консольное приложение, которое раскидывает зонды по самым жирным точкам ресурсов. Только вот... Оказалось что координаты кубов не бьются с реальностью. Либо они закодированы, либо имеют свою особую точку отбивки, либо вообще все объекты отбиваются друг от дружки. Приконнекчивание зондов в разных местах сохранения выдаёт абсолютно разные координаты в игре.
Last edited by Mechick on 03:46 07-06-2021; edited 3 times in total |
|
|
Progger
50 EGP Рейтинг канала: 2(20) : 0 Posts: 7
Joined: 18 May 2021
 |
|
Mechick wrote: |
Со времён X3 egosoft прошла долгий путь и сделала наконец космос плоским, так что никаких полётов выше/ниже эклиптики. Все основные жирные ресурсы похоже собраны на уровне 0 и в обозримой части сектора, иначе их было бы тупо не найти с навигацией, позволяющей летать только по плоскости.
|
На самом деле можно указать позицию не только на эклиптике, но это не очевидно и очень неудобно: нужно указать позицию, наклонить карту и появляется возможность поднять / опустить эту позицию.
Mechick wrote: |
Оказалось что координаты кубов не бьются с реальностью. Либо они закодированы, либо имеют свою особую точку отбивки, либо вообще все объекты отбиваются друг от дружки.
|
У них там как-то всё сложно организовано - сектора состоят из зон, которые цепляются к сектору с разными смещениями. Судя по всему координаты зондов задаются относительно зоны, в которой они расположены. Как узнать смещение зоны я так и не понял.
|
|
|
Mechick
102 EGP
  Рейтинг канала: 5(243) : 8 Posts: 290
Joined: 24 Jul 2010
 |
|
Progger wrote: |
На самом деле можно указать позицию не только на эклиптике, но это не очевидно и очень неудобно: нужно указать позицию, наклонить карту и появляется возможность поднять / опустить эту позицию.
|
Я к тому, что сколько ни летал по удалённым залежам астероидам (в Большой бирже например - натуральные американские горки и выше и ниже эклиптики) там всегда только мусор, как правило всё самое жирное лежит в зоне доступности. Видимо, чтобы игрок имел возможность добраться до них летая в одной плоскости.
|
|
|
Shadowman
265 EGP
   Рейтинг канала: 5(205) : 42 Posts: 1395 Location: Альфа Центавра Joined: 03 Dec 2003
 |
|
Вылетает с ошибкой при открытии сейва.
Cкрытый текст (кликните здесь для просмотра)
Code: |
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name=".NET Runtime" />
<EventID Qualifiers="0">1026</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2021-06-07T13:27:44.000000000Z" />
<EventRecordID>1763948</EventRecordID>
<Channel>Application</Channel>
<Computer>Komp113</Computer>
<Security />
</System>
<EventData>
<Data>Приложение: Ковровое сканирование.exe Версия платформы: v4.0.30319 Описание. Процесс был завершен из-за необработанного исключения. Сведения об исключении: System.IO.IOException в System.IO.__Error.WinIOError(Int32, System.String) в System.IO.FileStream.Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean, Boolean) в System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, System.IO.FileOptions, System.String, Boolean) в System.IO.FileStream..ctor(System.String, System.IO.FileMode) в Satellites.MainWindow.<OpenXML>g__Zip|16_3(System.String, System.String) в Satellites.MainWindow+<>c__DisplayClass16_0.<OpenXML>g__StartProcess|0(System.String) в Satellites.MainWindow+<>c__DisplayClass16_1.<OpenXML>b__4() в System.Threading.Tasks.Task`1[[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].InnerInvoke() в System.Threading.Tasks.Task.Execute() в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) в Satellites.MainWindow+<OpenXML>d__16.MoveNext() в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) в System.Windows.Threading.DispatcherOperation.InvokeImpl() в MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(System.Object) в System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) в MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object) в System.Windows.Threading.DispatcherOperation.Invoke() в System.Windows.Threading.Dispatcher.ProcessQueue() в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) в MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) в MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) в System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) в System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr) в MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) в System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) в System.Windows.Application.RunDispatcher(System.Object) в System.Windows.Application.RunInternal(System.Windows.Window) в Satellites.App.Main()</Data>
</EventData>
</Event> |
|
Win7 x64 SP1
Last edited by Shadowman on 16:30 07-06-2021; edited 1 time in total |
|
|
|
|
|
Канал X4: Foundations: «Ковровое сканирование ресурсов» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Я конечно дико извиняюсь что оффтоплю, но все же считаю что мой пост по адресу. (Messer)
|
» Ковровое сканирование ресурсов | |
|