Логин  Пароль 
 запомнить меня 




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.
Изучение структуры данных КР2ДП 
Автор Сообщение
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 21.03.2011, 19:10
Данная тема посвящена изучению структуры данных игры с целью дальнейшего расширения возможностей редактора скриптов Перезагрузки. Выкладываю уже известные данные о формате игровых объектов (в xls файле), а также разработанный специально для цели ковыряния в структуре игры скрипт. Для работы скрипта требуется наличие динамической библиотеки sr2_scripter.dll в папке игры, а также модифицированный файл rus.dat, содержащий часть текста скрипта (и то и другое выкладываю). Для Революции соответствующие dat файлы будут выложены в случае необходимости, ну а кто умеет - может пересобрать их сам.


Последний раз редактировалось evilcoward 07.06.2011, 14:15, всего редактировалось 9 раз(а).



  
 
Администратор
Сообщений: 2673

Аватар пользователя

Своих первых рейнджеров я выпустил в 16 лет
Сообщение 24.03.2011, 01:39
Однако, все это интересно очень. А можно краткий мануал по тому, как выбирать конкретный объект и изменять конкретные параметры? Назначение модификатора оборудованию, например.

Кстати, можно как-то таким образом принудительно заставить конкретный корабль врубить форсаж?


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 24.03.2011, 08:06
Ok. Для перемещения к другим объектам лично я просто выписываю себе на бумаге ключевые адреса из xls файла. Например, из объекта Галактика есть ссылки на: список звезд (смещение 44), список ЧД (48), планет (52), рейнджеров (56), ЦР (60) и секторов (296). Если я хочу перейти из объекта Галактика на какую-то звезду я делаю следующее:

1. Смещение 44, переход по ссылке.
2. Попадаю на объект, который скрипт распознает как "заголовок списка объектов".
3. Смещение 4, переход по ссылке (перед этим в адресе со смещением 8 можно увидеть, сколько объектов в списке).
4. Попадаю на список адресов (в списке артефактов адреса перемежаются какими-то значениями, все остальные распознанные списки состоят только из адресов), которые скрипт никак не распознает.
5. Можно сразу нажать переход по ссылке еще раз - попадем на первый объект из списка. В данном случае это будет звезда Тарон. Если нужна другая звезда - жму "вернуться к предыдущему объекту" и выбираю один из следующих адресов.

Чтобы добраться до модификатора оборудования -
1. Еыбираем нужный корабль
2. Если предмет используется - переходим по ссылке в соответствующем адресе (ссылки на надетое оборудование начинаются со смещения 240 в объекте корабль), модификатор прописан одним байтом со смещением 73 (ну или смещение 72, второй байт).
3. Если предмет не используется - надо идти в полный список предметов корабля (трюм, смещение 732) и уже оттуда переходить на предмет. Там правда будет проблема с опознанием нужного предмета, поскольку я пока поленился выписать значения заголовков всех типов оборудования.

Касательно форсажа, специально не проверял, но по идее это параметр Burn на двигателе (смещение 89), который я просто переписал из исходников RCC. Но скорее всего придется каждый ход врубать форсаж заново (по крайней мере транклюкатор его после каждого хода выключает, если делать это обычным методом).


  
 
Администратор
Сообщений: 2673

Аватар пользователя

Своих первых рейнджеров я выпустил в 16 лет
Сообщение 24.03.2011, 16:45
И тогда в довершение еще более простой вопрос: как перейти к конкретному объекту? По каким значениям можно определить что это именно необходимый объект? :lasos-smile:


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 24.03.2011, 17:08
Если этот объект - сектор, звезда, планета или корабль - скрипт напишет его название. Если астероид - можно по индексу посмотреть (он написан в названии астероида). А если это предмет, то не знаю даже. Можно по характеристикам смотреть. Индекс то есть и у предметов, но в игре он никак не показывается. Для предмета в космосе можно еще примерно по координатам прикинуть.


  
 
Администратор
Сообщений: 2673

Аватар пользователя

Своих первых рейнджеров я выпустил в 16 лет
Сообщение 24.03.2011, 17:35
А по значению веса, типа или техноуровня можно как-то найти?


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 24.03.2011, 17:57
Ну я это и имел в виду под характеристиками. Где прописан вес, тип и техноуровень есть в xls-файле. Только для типов нет расшифровки, какая цифра что обозначает. Набирать было лень, поэтому прикрепляю кусок, скопированный из исходников RCC. Кстати тип предмета определяется еще и заголовком объекта. Для снаряжения не проверял, а вот для артефактов значение типа определяет действие предмета, а заголовок - его внешний вид и название. Значения заголовков как-нибудь соберусь с силами и внесу в таблицу.


Вложения:
item types.rar [842 байт]
Скачиваний: 104
  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 27.03.2011, 20:28
Обновил xls файл (в основном данные по предметам). Также обновил скрипт - теперь распознает все типы предметов.


  
 
Администратор
Сообщений: 2673

Аватар пользователя

Своих первых рейнджеров я выпустил в 16 лет
Сообщение 27.03.2011, 20:38
Однако, потяжелел список, что не может не радовать :lasos-smile: .


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 04.04.2011, 17:42
Результаты исследования, что в игре влияет на внешний вид корабля (с целью менять анимацию кораблям на свою)

1. Корпус. Меняет анимацию и шлейфы при установке. И все, больше никогда. Однозначно определяет изометрию и маленькую иконку корабля.
2. Главный управляющий параметр. Имеет вид типа Ship.People.Ranger. Определяет анимацию и шлейфы, но применяется только при S/L или сворачивании игры. Фактически, грузит параметры из файла в папке SE и CacheData.
3. Собственно графика анимации (hai). Грузится при заходе на экран космоса. Чтобы обновить можно, например, открыть экран корабля, или сесть на планету.
4. Раскадровка. Применяется сразу и постоянно. Если в загруженной в этот момент графике нет нужных кадров - происходит вылет.

Т.о. чтобы поменять анимацию корабля нужно поменять:
1. Главный параметр (чтобы игра потом не вернула старую графику)
2. Имя файлов анимации (ну и шлейфы тоже)
3. Раскадровку.
Поскольку раскадровка применяется сразу, а анимация - нет, это нужно делать, когда игрок не видит корабль, иначе могут быть вылеты.


  
 
Администратор
Сообщений: 2673

Аватар пользователя

Своих первых рейнджеров я выпустил в 16 лет
Сообщение 05.04.2011, 22:32
А найдено ли место, где хранится кол-во убитых мирных для покупки "Убийцы"? Имхо, очень полезно было б показывать где-то это количество. :lasos-smile:


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 05.04.2011, 22:37
Пока нет, для этого же надо их отлавливать, мочить и смотреть, что поменялось в памяти, долго. Вполне возможно хранится рядом с количеством убитых всего, пиратов и прочих.


  
 
Администратор
Сообщений: 2673

Аватар пользователя

Своих первых рейнджеров я выпустил в 16 лет
Сообщение 06.04.2011, 03:44
3:40, сижу кушаю вкусный шнур. Добавил новый скин к в игру, спрайт взят от Эгемона:

Изображение

Скин корабля из АБ, #8 в функции (call(164,GroupToShip(gTrank),10,8,0);), он же #7 для игры. С меньшими номерами тоже работат, но у меня это семерка.

Список изменений :
cfg/se/shipX.txt:

7 {
SizeImage=128,128
SmeImage=64,64
SmeCenterImage=64,64
PosZ=Ship
ImageMap=Bm.Ship.FeiMap
SmeImageMap=2,2
StateTime=2000
Tail1=32,103
Tail2=95,103


Image=Bm.Ship.x7
ImageS=Bm.Ship.x7s

Anim {
Normal=1,[80,0-49]

}
AnimS {
Normal=1,[80,0-49]
}
}

cfg/cachedata.txt:
Блок ship:
x7=data\Ship\x7.hai
x7s=data\Ship\x7.hai

data/ship
x7.hai
x7s.hai


Как узнать, знает ли игра, что такой корпус существует и для его назначения нужна графика? Игра при попытке присвоить скин (у меня это было в момент прыжка в систему) зависнет, но в логах напишет что-то типа
Код:
RTL: Exception
TDataEC.PathGetBuf. path=Bm.Ship.x7

Где x7 и будет системным именем необходимого скина.


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 06.04.2011, 08:30
Сейчас в dll прописана поддержка только уже существующих корпусов. Добавление новых в разделы X, HS, или в доминаторские работать будет (поскольку там аргумент type входит в имена ссылок напрямую), но только если у них стандартная раскадровка. У анимации эгемона раскадровка нестандартная, поскольку в ней всего 50 кадров, а ф-ция по умолчанию вбивает 0-49, 50-100. Но почему при этом именно такое сообщение об ошибке мне не ясно, вроде как он получается ругается на то, что в CacheData ссылку не нашел. Сейчас попробую сам похимичить.

Добавлено спустя 17 мин. 54 сек.:
Сейчас попробовал то же самое, что у тебя, плюс добавил исключение в dll, для учета этого типа. Работает, не вылетает. Без добавления в dll - вылетает при попытке сделать полную анимацию, но с другой ошибкой. Т.е. полное впечатление, что у тебя он именно в CacheData не может найти соответствующую запись. Если что, прикрепляю набор файлов, с которым я работал.

А в dll, если хочешь, я могу вбить поддержку всех клисанских корпусов.


Edit: только сейчас сообразил, что ты не спрашивал, почему игра вылетает, а объяснял, как определил имя нужного файла :) Туплю с утра, походу.


Вложения:
egemon.rar [592.82 KIB]
Скачиваний: 70
  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 07.04.2011, 12:25
Я тут немного поэксперементировал, игра похоже не особо возражает против назначения ничейной расы кораблям коалиции и базам, ей только надо полную поддержку в cfg сделать - файлы для рож капитанов, названия назначить и т.д. и т.п. При вылетах она конкретные данные запрашивает (в отличие от вылетов при назначении, например, доминаторской расы). Возможно, удастся и дополнительные картинки для изометрии впихнуть. Но сам я сейчас пытаюсь копать по другим направлениям. Остап, может попробуешь реализовать? Я пробовал только с названиями, без проблем удалось присвоить рейнджерам ничейной расы имя класса "дундук" :) (кстати имена имеет смысл назначить сразу, иначе игра наспаунит кучу одинаковых Error-логов; если что, это в Rus\Ship\Type.txt, добавить раздел None). Цепляю вариант dll, в котором убрано ограничение на установку расы в ф-ции ShipStats.


Вложения:
sr2_scripter.rar [18.87 KIB]
Скачиваний: 87
  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 10.04.2011, 14:01
Обновил данные, в том числе внес инфу по уровням оборудования для планеты. Не во всем я там разобрался, правда. Что понял - излагаю:

1. Для каждого типа оборудования есть свой уровень (кроме вертиксов, имхо и торпедников). Это понятно и ожидаемо.
2. Уровень для генератора защиты одновременно является общим планетарным уровнем (ПТУ). Чего ради - непонятно, было бы логичнее хотя бы по корпусу его брать.
3. У всех типов оборудование есть еще один уровень, что он означает - неясно. Возможно с таким уровнем оборудование будет выдаваться ИИ. У корпуса там судя по значению сидит что-то другое. Кроме того, хотя обычно этот уровень меньше основного, я видел как он один раз поднялся до 9.
4. Все оборудование (не оружие), похоже ПТУ игнорирует, смотрит только на свой уровень.
5. Все типы оружия больше смотрят на общий ПТУ, чем на свой. По-моему, максимальный уровень, с которым на планете может возникнуть пушка определяется как-то так - максимум из (ПТУ-2) и собственного уровня, но не выше ПТУ, если уровень оружия его превышает). При повышении уровня оружия создается пушка с уровнем=ПТУ (даже если ПТУ 8, а переход был с уровня 1 на уровень 2). Иногда создается с ПТУ-1, возможно при повышении второго, дополнительного уровня.


  
 
Администратор
Сообщений: 2673

Аватар пользователя

Своих первых рейнджеров я выпустил в 16 лет
Сообщение 10.04.2011, 14:08
evilcoward :
Кроме того, хотя обычно этот уровень меньше основного, я видел как он один раз поднялся до 9.

Таки может быть, в далеком и светлом будущем можно будет запилить 9 ТУ?


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 10.04.2011, 14:20
По-моему лучше будет при необходимости самим выкладывать в магазин пушку нужного уровня. А то мало ли - вдруг оно начнет потом ИИ кораблям цеплять оборудование 9 уровня с нулевыми характеристиками и без графики соответствующей.


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 07.06.2011, 14:25
Что-то у меня опять стало рабочее место захламляться записями, так что я собрался с силами и внес очередную порцию в xls-файл. На этот раз внес данные о том, где и как игра хранит характеристики ММ/уников и серий корпусов. Также внесены данные о структуре вообще всей считанной игрой из cfg информации (в необработанном виде), но работать с этим делом неудобно из-за разветвленной структуры, да еще и вся информация хранится в виде строк (даже числовая). Кстати, похоже та то, что игра будет хранить даже инфу, которую не знает как обрабатывать, что теоретически дает возможность добавлять в конфиги дополнительные настройки специально для скриптов (хотя, наверное, все-таки проще это делать считывая инфу из отдельного файл).


  
 
Новичок
Сообщений: 18

Аватар пользователя
Сообщение 10.06.2011, 16:03
Привет всем! Помогите пожалуйста мне, вот такая вот у меня ситуация:
Я прошел КР2: Перезагрузка. Можно ли сделать так, чтобы после этого где-нибудь заспаунился доминатор, а дальше я разберусь что с ним сделаю. Очень прошу помочь.


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 10.06.2011, 16:22
Ну если умеешь работать с редактором скриптов (rscript), то да, можно. Сделать в скрипте группу с доминаторовским кораблем, он и создастся при запуске скрипта. Я уж боюсь спрашивать, что именно ты там с ним собрался сделать... Неужели так сильно донимали в течении игры? :lasos-mrgreen:


  
 
Новичок
Сообщений: 18

Аватар пользователя
Сообщение 10.06.2011, 17:24
Нее... я не собирался там издеваться над ним. Просто хочу, чтобы один доминатор захватил систему (Я ему помог бы трейнером), ну и началось возрождение доминаторов, система за системой. И я бы снова повоевал. Просто я не хочу игру начинать заново.
Кстати, я пока изучаю редактор, как думаете, я в силах это сделать?

Добавлено спустя 19 мин. 24 сек.:
evilcoward, я посмотрел ваш скрипт Транклю... короче где робот с планеты незаселенной взлетает. Можно ли чтобы это был доминатор, а не транклю... робот.


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 10.06.2011, 18:05
Ну возьми вот этот скриптик. С незаселенной планеты взлетит 10 эквенторов. Не знаю, правда, какой они будут серии, тут игра как-то странно себе ведет.


Вложения:
create-dominators.rar [2.68 KIB]
Скачиваний: 65
  
 
Новичок
Сообщений: 18

Аватар пользователя
Сообщение 10.06.2011, 22:49
Интересно, а возможно ли чтобы с планеты взлетел сам Келлер, Блазер или Террон? Я ничего не прошу, просто интересно.


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 10.06.2011, 23:01
Нет, не получится. Боссов и станции скрипт создавать не может, может только подключаться к уже существующим.


  
 
Новичок
Сообщений: 18

Аватар пользователя
Сообщение 10.06.2011, 23:48
А ну да. А Террон вообще уникальная единица - это и как бы корабль, и движется по орбите.
А вот еще туповатый вопрос: Можно ли изменить назначение чита RndBase на создание босса, а не базы?


  
 
Сотрудник СНК-Games
Сообщений: 6388

Аватар пользователя
Символ творца. За разработку утилиты "Микроскоп", значительно облегчившей создание чемпионатных генераций КР2.

Шаман без бубна
Сообщение 11.06.2011, 13:32
Теоретически. На практике же, чтобы изменить назначение какого-либо чита нужно очень нехило знать расположение и устройство внутренних механизмов игры. Намного лучше, чем на данный момент знаю я. Вообще, хоть какое-то вмешательство в исполняемые механизмы игры я видел только у Коса в стим-программах RCC-трейнера.


  
 
Новичок
Сообщений: 7

Аватар пользователя

Кодер
Сообщение 02.07.2011, 12:57
Способ редактирования с помощью Cheat Engine скачать который можно тут http://www.cheatengine.org/downloads.php
Скачиваем во вложении таблицу со скриптом, ставим галочку "Снять защиту" - всё теперь указатели не затираются и специально для любителей оконного режима игра не сворачивается
Используя описание структуры от evilcoward можно легко поправить любое значение и возможно найти новые
И от себя добавлю маленький тутор по Cheat Engine
http://www.vivid-abstractions.net/downloads/InDem%20Present/Structures%20In%20Memory.htm


Вложения:
Комментарий к файлу: SR2.CT
SR2.zip [5.24 KIB]
Скачиваний: 64
  
 
Новичок
Сообщений: 7

Аватар пользователя

Кодер
Сообщение 07.07.2011, 17:23
И так создание сообщений
Использовать данный код очень просто:
Код:
AddMsg(L"Привет <color=255,0,0>evilcoward</color>!");


Вложения:
Комментарий к файлу: AddMsg.cpp
AddMsg.zip [344 байт]
Скачиваний: 41
  
 
Новичок
Сообщений: 7

Аватар пользователя

Кодер
Сообщение 10.07.2011, 03:03
Итак я продолжил возню и немного улучшил читаемость и писаемость кода
Код:
void AddMsg()
{
    BSTR bstr = SysAllocString(L"русский");

    int curtime = *(DWORD *)(*(DWORD *)(*(DWORD *)(0x007058D0))+0x48); // текущее время
                                                             //в каких то своих единицах

    _call(0x006B67BC, 3, 7, curtime, bstr); // Вызываем функцию добавления сообщения прям как в дампе

    DWORD *screens = *(DWORD **)(0x007056BC);
    BYTE index = *(BYTE *)(*(DWORD *)(0x00705DA8));
    DWORD curscreen = *(DWORD *)(screens[index]+0xB8); // жуткая ересь :o)
    _call(0x006A6374, 1, curscreen); // Вызываем функцию обновления текущего экрана прям как в дампе

    SysFreeString(bstr);
}


_call процедура вызова процедур из SR2 и вызывается так - первый параметр адрес процедуры, второй количество параметров, третий и последующие параметры


Вложения:
Комментарий к файлу: Исходники
SR2.zip [6.87 KIB]
Скачиваний: 55
  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 35 ] 
Перейти:  

Найти:
На страницу 1, 2  След.

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
©2003-2017, CHK-Games.
Правила форума | Политика приватности
Powered by slightly modified phpBB © phpBB Group
Дизайн Вячеслава Трушкина
Плюшки и фишки by Bret, zavron_lb & ru_maniac
Лучше всего смотрится в 1024x768 и выше

Почта для жалоб и уведомлений // Abuse mail: ru_maniac@snk-games.ru
Russian or English only, please. Requests in any other language will be ignored.

[ Время генерации : 3.720 с. | Запросов к БД: 70 ]