|
|
|
Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
Я тут глянул, он не был на форуме уже почти год. Может у кого есть его контакты, попросить подправить редактор в виду новых возможностей?
|
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
В общем, после некоторых опытов с данными переменными удалось установить, что максимальная матрица (предполагаемая) может иметь максимум 31х31 секторов, дальше возможности упираются в интерпретатор. В любом случае, при выставлении больших значений, начинает ломаться структура obj. Как то так.
Написал уважаемому Shaddie письмо, с просьбой увеличить матрицу в его редакторе, что бы можно было проверить мои предположения. Буду ждать ответа.
|
|
|
AKELLO
645 EGP
   Рейтинг канала: 3(45) Репутация: 67 Сообщения: 3043 Откуда: [OEG] Зарегистрирован: 13.05.2003
 |
|
Блин. Собрал новую систему - новый проц, мамка. Вот это все это. Запустил Х-Т и.. все тож самое как и было. Во время заставки, которая должна плавно переходить в меню - реакции на клавиши или ESC нулевая. У самой менюшки клавиши ввех или вниз тоже не работают
_________________ The truth is out there ...
Каждая мина в душе риппер, каждая торпа в душе васп (с) Флекс |
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
Используйте версию запускного файла 2.2 и будет Вам счастье
|
|
|
AterBatraal
57 EGP Рейтинг канала: 1(9) Репутация: 2 Сообщения: 14 Откуда: Москва Зарегистрирован: 25.04.2013
 |
|
По поводу запуска XT не 2.2 версии (которая по ряду причин мне не по нраву) на винде 7 и выше 64 бит.
Я тоже мучился с тем, что игра не реагировала и вообще поиграть не выходило.
А потом, прочитав совет одного из пилотов...
А насчёт мода от пилота KWON: даже незаконченный, он радовал!
Последний раз редактировалось: AterBatraal (00:17 24-06-2016), всего редактировалось 3 раз(а) |
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
Я тут покумекал и пришел к выводу:
obj использует некий вид шифрации/сжатия байт-кода (я тут не силён). Если посмотреть этот же код с расшифровкой байт-кода, то можно увидеть, что операция
Код: |
00094966: 001D | 0 push 20d ; 14h |
занимает один байт-код 001D, и расшифровывается как 001Dh - 0009h = 0014h
а если нам надо закинуть в стек большее число, то используется две комманды
Код: |
000949FA: 0001 07D1 | 5 pushw 2001d ; 07D1h |
и занимают 2 байт-кода, при этом ничего не отнимается.
В принципе, если процедуру эту полностью заменить на свою (потому как простая замена аргумента приводит к смещению адресов) - методы есть, то можно (чисто теоретически) получить любой размер матрицы
PS. Просьба к модераторам перенести последние посты, не относящиеся к теме XTNL в раздел Редактор карт или Раскопки обжа, где они будут более логично смотреться по смыслу, начиная с этого сообщения
Последний раз редактировалось: yakim81 (16:34 24-06-2016), всего редактировалось 2 раз(а) |
|
|
KWON
331 EGP
   Рейтинг канала: 7(586) Репутация: -10 Сообщения: 142 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
yakim81 : |
Если посмотреть этот же код с расшифровкой байт-кода, то можно увидеть, что операция
Код: |
00094966: 001D | 0 push 20d ; 14h |
занимает один байт-код 001D, и расшифровывается как 001Dh - 0009h = 0014h
а если нам надо закинуть в стек большее число, то используется две комманды
Код: |
000949FA: 0001 07D1 | 5 pushw 2001d ; 07D1h |
и занимают 2 байт-кода, при этом ничего не отнимается.
|
Правильно. А если нужно 4 байта, тогда пишут так (возьму Ваши цифры для примера):
Код: |
000949FA: 0002 0000 07D1 |
Допишу.
Тут доходчивые объяснения:
http://www.elite-games.ru/conference/viewtopic.php?p=674372#674372
_________________ Следи за собой, будь осторожен.
В. Цой.
Последний раз редактировалось: KWON (09:40 25-06-2016), всего редактировалось 1 раз |
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
В общем печальные новости у меня.
Вчера провел эксперимент на XTNL, добавил вручную сектор на 10-ю горизонталь с северными вратам, установил южные врата на 9-й горизонтали, попробовал влететь - ожидаемо очутился на 1-й горизонтали без корабля (там же северных ворот нету).
Но я не отчаялся, и начал изучать obj на предмет кода
Код: |
push 20d ; 14h
if SP[0]<=SP[1] then push 0 else push 1
if SP[0]=0 then jump |
и
Код: |
push 10d ; 0Ah
if SP[0]<=SP[1] then push 0 else push 1
if SP[0]=0 then jump |
Вот тут я и понял, что все мои потуги никчемны.
Не достаточно просто указать карте размеры, таким кодом исписана добрая часть игрового кода - встречается везде и всюду: расстановка станций, в процедуре поиска больших кораблей (если в доп меню установлена галочка восстанавливать ксенонские М0), для транспорта - поиск товара для фабрики, для пиратов - поиск цели для зондер-команды, вообще вся "фоновая симуляция" игрушки.
В некоторых процедурах, размер галактики передается подпрограмме в качестве аргументов, при чем бывает, что вертикаль обрабатывается в основной процедуре, а горизонталь передается в качестве аргумента в другую подпрограмму.
И тут я опечалился совсем. Проверить все места - не в моих силах, а получить половину галактики неработоспособной - не в моих интересах.
Посему изыскания в данной области временно приостанавливаю, в виду нехватки времени, но с правом возобновления изысканий (ближе к осени решится вопрос с работой, и, возможно, появится больше времени (главное, что бы его не стало меньше ))
Кстати, участок
Код: |
L00094980: push SP[0] ; loc1
push 20d ; 14h
if SP[0]<=SP[1] then push 0 else push 1
if SP[0]=0 then jump L00094A28
jump L000949A8
|
банальный цикл for или while
|
|
|
AKELLO
645 EGP
   Рейтинг канала: 3(45) Репутация: 67 Сообщения: 3043 Откуда: [OEG] Зарегистрирован: 13.05.2003
 |
|
yakim81 : |
Используйте версию запускного файла 2.2 и будет Вам счастье
|
Я правильно понимаю, что в папку с Х-Т NL нужно будет вставить старый ЕХЕшник? оО
AterBatraal : |
По поводу запуска XT не 2.2 версии (которая по ряду причин мне не по нраву) на винде 7 и выше 64 бит.
Я тоже мучился с тем, что игра не реагировала и вообще поиграть не выходило.
А потом, прочитав совет одного из пилотов...
А насчёт мода от пилота KWON: даже незаконченный, он радовал!
|
Не помогло
_________________ The truth is out there ...
Каждая мина в душе риппер, каждая торпа в душе васп (с) Флекс |
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
AKELLO : |
Я правильно понимаю, что в папку с Х-Т NL нужно будет вставить старый ЕХЕшник? оО
|
Ответил в профильной ветке
|
|
|
Shaddie
550 EGP
     Рейтинг канала: 6(387) Репутация: 118 Сообщения: 259 Откуда: Томск Зарегистрирован: 09.09.2004
 |
|
yakim81 : |
В общем печальные новости у меня.
Вчера провел эксперимент на XTNL, добавил вручную сектор на 10-ю горизонталь с северными вратам, установил южные врата на 9-й горизонтали, попробовал влететь - ожидаемо очутился на 1-й горизонтали без корабля (там же северных ворот нету).
Но я не отчаялся, и начал изучать obj на предмет кода
Код: |
push 20d ; 14h
if SP[0]<=SP[1] then push 0 else push 1
if SP[0]=0 then jump |
и
Код: |
push 10d ; 0Ah
if SP[0]<=SP[1] then push 0 else push 1
if SP[0]=0 then jump |
Вот тут я и понял, что все мои потуги никчемны.
Не достаточно просто указать карте размеры, таким кодом исписана добрая часть игрового кода - встречается везде и всюду: расстановка станций, в процедуре поиска больших кораблей (если в доп меню установлена галочка восстанавливать ксенонские М0), для транспорта - поиск товара для фабрики, для пиратов - поиск цели для зондер-команды, вообще вся "фоновая симуляция" игрушки.
В некоторых процедурах, размер галактики передается подпрограмме в качестве аргументов, при чем бывает, что вертикаль обрабатывается в основной процедуре, а горизонталь передается в качестве аргумента в другую подпрограмму.
И тут я опечалился совсем. Проверить все места - не в моих силах, а получить половину галактики неработоспособной - не в моих интересах.
Посему изыскания в данной области временно приостанавливаю, в виду нехватки времени, но с правом возобновления изысканий (ближе к осени решится вопрос с работой, и, возможно, появится больше времени (главное, что бы его не стало меньше ))
Кстати, участок
Код: |
L00094980: push SP[0] ; loc1
push 20d ; 14h
if SP[0]<=SP[1] then push 0 else push 1
if SP[0]=0 then jump L00094A28
jump L000949A8
|
банальный цикл for или while
|
Всем привет!
Собственно и зашел, что бы что то похожее написать. Что бы изменить размеры матрицы галактики нужно менять не в паре мест.
Собственно сама карта хранится в виде массива размером в 20 элементов, где каждый элемент это то же массив размером в 10 элементов, а вот тут каждый элемент это уже объект сектор (TSECTOR):
Код: |
function TGALAXY.Build(arg1)
{
if(arg1 >= 0)
{
return(0);
}
P_ViewEBMFullscreen("Loadings", 1);
global.gs_DelayFactor = 1000;
global.ga_Sectors = SE_ArrayAlloc(20);
loc1 = 0;
for(loc1 < 20; loc1 = loc1 + 1)
{
global.ga_Sectors[loc1] = SE_ArrayAlloc(10);
loc2 = 0;
for(loc2 < 10; loc2 = loc2 + 1)
{
global.ga_Sectors[loc1][loc2] = new(TSECTOR)->Create(loc1, loc2);
}
}
...
|
Исправлять нужно по всему коду, как минимум в тех местах где идет обращение к глобальной переменной global.ga_Sectors.
Исходники редактора могу поискать - там думаю реально изменить размер матрицы (возможно сразу предусмотрел такую возможность и там размеры вынесены в константы).
_________________ Быстро едешь, тихо понесут...
Последний раз редактировалось: Shaddie (15:50 08-07-2016), всего редактировалось 1 раз |
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
Какая радость, с возвращением! Я пошерстил obj и обнаружил уже свыше 37 мест, где используется два цикла со счетчиком 20 и 10 элементов, но это еще не все места. Я уже писал тов. KWON о двух местах, где цифры 20 и 10 передаются в качестве параметров для функции
Код: |
push 10d ; 0Ah
push 20d ; 14h
push 1
callasm P_Random ; 000000F5
|
в функции TFACTORY.Production2();
Если Вы присоединитесь к данной разработке, думаю все получится.
|
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
Вопрос на засыпку знающим людям.
1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?
2. Имеется ли такой же признак у торговой станции?
Если ответ положительный:
3. Имеется ли такой же признак для фабрики игрока?
4. Можно ли использовать этот признак для присвоения его торговой станции?
5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?
Где то во внутренностях игры видел заготовки принадлежности сектора игроку. Если можно сделать п. 5, то можно будет сделать и сектор, принадлежащий Игроку так, что бы эта информация отображалась на галактической карте. (моя давняя мечта)
|
|
|
AlexYar
1616 EGP
             Рейтинг канала: 5(238) Репутация: 346 Сообщения: 25243
Зарегистрирован: 26.10.2003
 |
|
yakim81 : |
1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?
|
В х2 это TSTATION.st_Owner
Может и тут так.
yakim81 : |
2. Имеется ли такой же признак у торговой станции?
|
У всех подклассов должен быть (либо берётся с родительского класса).
yakim81 : |
3. Имеется ли такой же признак для фабрики игрока?
|
Да, игрок - это тоже раса.
yakim81 : |
4. Можно ли использовать этот признак для присвоения его торговой станции?
|
Да.
yakim81 : |
5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?
|
Нет. Товар не имеет принадлежности, а на верфь добавить можно только в виде товара.
yakim81 : |
Где то во внутренностях игры видел заготовки принадлежности сектора игроку.
|
TSECTOR.sec_Owner тоже есть в х2, но чтобы назначить сектор игроку - нужно во многих местах код менять, так как изначально это не было предусмотрено. В оригинале принадлежность сектора назначается во время создания вселенной (на старте новой игры) и потом уже не меняется. В разных меню, в алгоритмах поиска кораблей/станций/товара и прочих местах потом проблемы могут быть.
|
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
Т.е. если я правильно понял, то торговая станция как товар отсутствует в XT? но в X2, как я знаю, торговую станцию можно купить на верфи, и она будет принадлежать Игроку?
|
|
|
aL144
307 EGP
   Рейтинг канала: 6(284) Репутация: 25 Сообщения: 363 Откуда: Город непуганных идиотов Зарегистрирован: 07.05.2014
 |
|
Ребята сделаете мне расширенную матрицу - я сделаю новые качественные сектора, сделаете 20х40 - сделаю еще 600 секторов в довесок к 800, сделаете размер больше - сделаю больше. Лучше больше, я серьезно настроен.
_________________ Там где я был - смерти никогда не было, там где я есть - ее никогда не будет... |
|
|
KWON
331 EGP
   Рейтинг канала: 7(586) Репутация: -10 Сообщения: 142 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
yakim81 : |
1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?
2. Имеется ли такой же признак у торговой станции?
3. Имеется ли такой же признак для фабрики игрока?
4. Можно ли использовать этот признак для присвоения его торговой станции?
|
Возьмите редактор, создайте станцию.
Скопируйте обж, вставте тут же (Копия 001.obj).
Откройте редактором "Копия 001.obj" в созданной станции поменяйте свойства:
расу и тип завода или фабрики (осторожно не сместив координаты).
Сохраните. Откройте оба файла Гекс-идитором, сравните.
И будет вам счастье. Можете приписать таким образом игроку любую станцию заменив код какой то расы на код расы игрока (0012).
Список кодов рас:
000A - 1 Argon
000B - 2 Boron
000C - 3 Split
000D - 4 Paranid
000E - 5 Teladi
000F - 6 Xenon
0010 - 7 Pirate
0011 - 8 Goner
0012 - 9 Player
yakim81 : |
5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?
|
Вот таблица xmagnat'а:
http://xmagnat. narod.ru/code_obj.html
поиграйтесь сами заменяя на верфи разные предприятия.
Возмите оригинальный обж начните игру в Аргон Прайм, сохранитесь на верфи.
Откройте сейв Гекс-редактором, задайте в поиск, например, Аргонский спутниковый завод.
Код встретится два раза. Из таблицы Магната возмите код любой станции.
Замените в найденных двух местах.
Запускаем сохранеку, смотрим чаво случилось.
И будет видно что доки и торговые станции на верфь добавится не захотят.
_________________ Следи за собой, будь осторожен.
В. Цой. |
|
|
Shaddie
550 EGP
     Рейтинг канала: 6(387) Репутация: 118 Сообщения: 259 Откуда: Томск Зарегистрирован: 09.09.2004
 |
|
yakim81 : |
Если Вы присоединитесь к данной разработке, думаю все получится.
|
Времени мало свободного, но постараюсь помочь. Пока подправил редактор под матрицу 30 на 30. Надо теперь подготовить 001.obj под эти размеры.
_________________ Быстро едешь, тихо понесут... |
|
|
yakim81
305 EGP
  Рейтинг канала: 6(373) Репутация: 16 Сообщения: 217
Зарегистрирован: 07.02.2015
 |
|
Shaddie : |
yakim81 : |
Если Вы присоединитесь к данной разработке, думаю все получится.
|
Времени мало свободного, но постараюсь помочь. Пока подправил редактор под матрицу 30 на 30. Надо теперь подготовить 001.obj под эти размеры.
|
Теперь самое главное - заставить игру видеть сектора больше 20 по вертикали и 10 по горизонтали.
Я провел опыт, где добавил на 11 горизонталь сектор, включил отображение всех секторов на карте через чит меню - все сектора отобразились, а вот 11 горизонталь не отобразилась, хотя связь с 10 на 11 горизонт отображалась, но это 00749.bod, проблему с отображением которого мы уже решили.
KWON : |
И будет видно что доки и торговые станции на верфь добавится не захотят.
|
Возможен ли такой вариант - где то в obj должен храниться список станций, которые являются товаром для верфей. Возможно туда нужно добавить торговую станцию в список, или заменить какую нить фабрику на Торговую.
|
|
|
Shaddie
550 EGP
     Рейтинг канала: 6(387) Репутация: 118 Сообщения: 259 Откуда: Томск Зарегистрирован: 09.09.2004
 |
|
yakim81 : |
Теперь самое главное - заставить игру видеть сектора больше 20 по вертикали и 10 по горизонтали.
Я провел опыт, где добавил на 11 горизонталь сектор, включил отображение всех секторов на карте через чит меню - все сектора отобразились, а вот 11 горизонталь не отобразилась, хотя связь с 10 на 11 горизонт отображалась, но это 00749.bod, проблему с отображением которого мы уже решили.
|
Подправил генерацию файла 00749.bod из редактора на новые размеры, обновил редактор в теме (еще раз скачать).
_________________ Быстро едешь, тихо понесут... |
|
|
|
|
|
Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |
|