Street Legal Redline является довольно сложной (если не самой сложной)
игрой в плане моддинга. Сегодня я расскажу вам, как вставить свою
собственную машину в игру.
У каждого есть свои хитрости и свои
способы, здесь я расскажу как мне удобнее. Нам понадобятся следующие
файлы:
1. resdecode.exe и resconvert.exe чтобы править rpk.
2. 3d max 5 для работы с 3D. а так же плагин к нему для экспорта в
формат scx.
3. zmodeler 1.07 а так же плагин к нему для импорта
моделей из формата scx.
4. блокнот он есть у всех.
5. slrr
2.2.1 java pack - исходники стандартных машин.
6. adobe photoshop
или иной графический редактор, но лучше фотошоп, а так же плагин к нему
для работы с текстурами в формате dds.
7. SLRR 230LE. т.к. мы будем
делать машину для этой версии.
Начнем.
Игру лучше
установить в корень диска, так будет проще до нее добираться. У меня она
установлена в "G:\Street Legal Racing 230LE"
Заходим в папку с
игрой, жмем наверху кнопку "Сервис" -> "Свойства папки"
Далее
выбираем вкладку "Вид" и снимаем галочку напротив "Скрывать расширения
для зарегистрированных типов файлов".
Жмем Ок.
Теперь мы видим что в имени
каждого файла отображается и его расширение.
Если в корне игры есть
файл "error.log", удалите его.
Далее берем скачанные
resdecode.exe и resconvert.exe и копируем их в папку с игрой.
Ок, жмем "Пуск" -> "Выполнить" -> в окошке пишем "cmd" и жмем ОК.
В черном окошке пишем (после каждой строки не забываем жать enter)
G:
cd street legal racing 230LE
resdecode
cars/racers/einvagen
Напоминаю, что у меня игра установлена на диске
G: в папке street legal racing 230LE, соответственно заменяйте на свои
пути.
Если у вас игра например установлена на диске C: вместе с
windows, то ваш порядок действий будет таков:
cd /
cd
street legal racing 230LE
resdecode cars/racers/einvagen
Закрываем черное окно и идем в папку с игрой в cars/racers/ .
Там
мы обнаружим новый файлик "einvagen.rdb".
Находим наши скачанные
исходники для 2.2.1, распаковываем их и копируем от туда папку
"einvagen_data" (она в cars/racers/ как и в игре")
Вставляем эту
папочку в нашу игру в папку cars/racers/ , windows спросит о замене,
нажмите "да для всех".
Идем в папку cars/racers/ , копируем папку
"einvagen_data"
И сюда же вставляем
Теперь самое время,
чтобы придумать нашей машинке название.
Назовем ее krevetko
Переименовываем нашу вставленную папку из "копия
einvagen_data" в "krevetko_data", так же переименовываем "einvagen.rdb" в
"krevetko.rdb"
открываем блокнотом "krevetko.rdb"
Небольшой ликбез по рпк файлам.
Рпк это
нечто вроде архива, в основном со ссылками на игровые файлы..
Для
каждой детали используются в основном 5 блоков.
т.е.
script render
mesh
phys
texture
Однако, если деталь имеет
ту же текстуру, или физ. модель.. или меш (3д модель), то можно
использовать меньше блоков, но скрипт у каждой детали обязательно свой.
Если сейчас это непонятно, то современем станет ясно.. это довольно
просто.
В стандартном рпк все это разбросано по всему файлу. И если
мы захотим добавить собственную деталь, то придется собрать нужные
блоки, но об этом позже.
И так, как мы можем заметить
в рпк содержаться ссылки на различные файлы, и путь к ним указан в
папку "einvagen_data" .. нам же нужно все их переместить в папку
"krevetka_data".
Жмем "Правка" -> "Заменить"
В поле
"Что" пишем "einvagen_data"
В поле "Чем" пишем "krevetko_data" ..
точнее название своей машины.
Жмем "Заменить все"
После окончания
процесса, закрываем маленькое окошко и сохраняемся.
Сворачиваем наш
блокнот "krevetko.rdb", он нам еще пригодится.
Далее мы идем
править исходники.
Они лежат в папке
cars/racers/krevetko_data/scripts/src/
Имеют расширение .java и
опять же открываются блокнотом.
Кстати рекомендую сделать "Вид"
-> "Таблица"
Открываем файл "Einvagen_110_GT.java"
Выделенные строки и являются названием нашего автомобиля, кузова,
описания.. текст внутри кавычек можно править, например так:
Чуть ниже мы увидим вот это, комментарии на
скрине.
Нам снова надо заменить "einvagen" на "krevetko"
но только в тех строках, в которых ставятся кузовные панели.
Жмем
"правка" -> "заменить" , остальное видно на скрине.
Сохраняемся и закрываем. Для начала у нас будет 1
модель машины, поэтому другие 110 GTK, 140 GTA мы трогать не будем.
Поэтому открываем "Einvagen_models.java" и удаляем синие строки.
Quote |
package java.game.cars; import java.util.*; import java.util.resource.*; import java.game.parts.bodypart.*; public class Einvagen_models extends Chassis { static int MODEL_110_GT = 1; static int MODEL_110_GTK = 2; static int MODEL_140_GTA = 3; static int MODEL_110_GTD = 4; public Einvagen_models( int id ) { super( id ); carCategory = PACKAGE; make = MAKE_EINVAGEN; } public void updatevariables() { super.updatevariables(); ResourceRef ref = new ResourceRef(sound:0x00000015r); setHornSFX(ref, 1.0, 1); setHornSFX(ref, 1.0, 3); ref.set(0); setHornSFX(ref, 1.0, 2); } } |
Далее открываем "Einvagen_VT.java"
Жмем "правка" -> "заменить" ,
остальное видно на скрине.
точно так же заменяем "racers.einvagen" на
"racers.krevetko" в файлах "einvagen_FL_door.java" ,
"einvagen_FR_door.java", "einvagen_RL_door.java",
"einvagen_RR_door.java", "einvagen_R_door.java" и "kit_gta_body.java"
Теперь самое скучное - во всех исходниках надо заменить название
деталей на свои, например для бампера:
Quote |
package java.game.cars; import java.util.*; import java.util.resource.*; import java.game.parts.bodypart.*; public class Einvagen_F_bumper extends Bumper { public Einvagen_F_bumper( int id ) { super( id ); carCategory = PACKAGE; name = "Einvagen GT/GTK front bumper"; // собственно название детали в игре. description = "The stock front bumper for the 110 GT and 110 GTK models."; // описание детали, его можно не менять. value = tHUF2USD(55.633); // цена детали, разделенная примерно на 5, т.е. в игре бампер стоит примерно 280 у.е. brand_new_prestige_value = 24.00; // престиж детали } } |
Все то же самое придется проделать для остальных деталей, если
цену и престиж можно оставить прежними, то название детали стоит
заменить на свое. Например вот тот же бампер после переименования.
Кстати, если кто не знает, то двойной слеш "//" отделяет комментарии,
т.е. за ним можно писать что угодно.
Quote |
package java.game.cars; import java.util.*; import java.util.resource.*; import java.game.parts.bodypart.*; public class Einvagen_F_bumper extends Bumper { public Einvagen_F_bumper( int id ) { super( id ); carCategory = PACKAGE; name = "Krevetko bumper"; // собственно название детали в игре. description = "The stock front bumper for the 110 GT and 110 GTK models."; // описание детали, его можно не менять. value = tHUF2USD(100); // цена детали, разделенная примерно на 5, т.е. теперь в игре бампер стоит примерно 500 у.е. brand_new_prestige_value = 34.00; // престиж детали } } |
С исходниками разобрались.
Теперь заходим в корень игры
и создаем там текстовый файлик с любым именем, например krevetko.txt ,
заходим в него и пишем следующее:
resconvert
cars/racers/krevetko
Сохраняемся, закрываем и переименовываем
этот файлик в krevetko.bat
Запускаем получившийся файлик, появится черное
окно, в котором побегут строки, когда остановятся закрываем его. Таким
путем мы создали из "krevetko.rdb" "krevetko.rpk" , и теперь если мы
обновим что-то в "krevetko.rdb" нам достаточно лишь запустить наш
"krevetko.bat" в корне игры, чтобы сохранить наши изменения в рпк.
Заходим в игру, создаем карьеру и идем в обменник кузовов или в
магазины .. если все сделали правильно, то должен появится эйнваген
только под именем "krevetko"
К сожалению у меня нет времени
проверять, но вроде ничего не упустил.
Покупаем любую машину и
меняемся на кузов креветки, заходим в каталог и смотрим все секции
"body" .. листаем все страницы, если игра не вылетела, то все отлично,
покупаем движок, подвеску, ставим все это на креветку и сохраняем игру,
выходим.
Если же игра вылетела, то идем в корень игра, открываем
блокнотом файл error.log и смотрим где же был сбой. К примеру если
содержимое error.log такое:
Quote |
!syntax error in file cars\racers\krevetko_data\scripts\fl_quarterpanel.java at line 14 |
То это означает, что мы ошиблись в файле FL_quarterpanel.java
нашей машины, следуем по адресу и открываем этот файл, переходим на 14
строку и внимательно смотрим на нее, ошибка может возникнуть из-за
любого пустяка, например вот из-за такого:
Quote |
package java.game.cars; import java.util.*; import java.util.resource.*; import java.game.parts.bodypart.*; public class Einvagen_FL_quarterpanel extends Quarterpanel { public Einvagen_FL_quarterpanel( int id ) { super( id ); carCategory = PACKAGE; name = Krevetko GT front left quarterpanel"; // вот здесь и закралась ошибка, обратите внимание, я забыл открыть кавычки перед словом Krevetkо. description = "The stock front left quarterpanel for the GT models."; value = tHUF2USD(87.375); brand_new_prestige_value = 18.60; } } |
Чтож, бывает, заходим в игру и снова смотрим каталог.. если
вылет, повторяем поиск проблемы.
Все ошибки исправлены, машина
есть, теперь приступаем к собственно моделингу.
Устанавливаем 3D
max 5, zmodeler 1.07 и не забываем плагины к ним.
Открываем
zmodeler 1.07 , жмем "File" -> "Import" далее идем вот так street
legal racing/cars/racers/einvagen_data/meshes/ открываем файл
chassis.scx,
при этом появятся несколько ошибок, жмем ок на каждой и
видим перед собой кузов эйнвагена. Мышью его можно покрутить
Видите справа окошко с названием "Objects" ,
удалите из него chassis.scx и chassis.scx+ (правой кнопкой на
chassis.scx -> Delete, аналогично с chassis.scx+)
Должно
получиться вот так.
Жмем "File" -> "Export"
В поле "Имя
файла" пишем любое имя.. например "chas" и сохраняем в формате 3DS.
Закрываем занозу. Изменения можно не сохранять.
Открываем 3D Max 5
Жмем "File" - "Import" и находим наш только что сохраненный
файлик. А сохранили мы его в street legal
racing/cars/racers/einvagen_data/meshes/chas.3ds
Открываем его.
В появившемся мелком окошке жмем "ок"
Вот что мы должны увидеть.
Но модель слишком маленькая, надо увеличить ее в
100 раз.
Как работать в максе, я описывать тут не буду, для этого
существует куча туторов, учитесь искать информацию.
И так, кузов
эйнвагена нам нужен для того, чтобы подогнать размер своей машины к
размеру игровой.
После этого кузов эйнвагена можно удалить.
Далее игровой материал, процесс его создания и вставки детали в игру
очень хорошо описан в туторе "Накладывание текстур", за который скажем
спасибо Konner.
Однако я крайне советую еще в свойствах материала
ставить "specular level:" 100 для окрашиваемых деталей, для хрома
150-200
"glossines:" 40
Я думаю не надо объяснять на что это влияет, для
примера джип разрезанный пополам, угадайте на какой половине применены
эти настройки
Допустим модель автомобиля готова. Перед
экспортом детали в игру, выделите ее, зайдите в "hierarchy", нажмите
"affect pivot only", нажмите "center to object", еще раз нажмите "affect
pivot only", чтобы отжать кнопку.
Далее в поля координат ставим нули, деталь
сместится на начало координат.
Жмем "File" -> "Export selected" в
окошке заходим в папку игры street legal
racing/cars/racers/krevetka_data/meshes/ и заменяем нужную нам деталь.
Небольшой ликбез: FL - front left - передний левый
FR - front right - передний
правый
RL - rear left - задний левый
RR - rear right - задний
правый
L - left - левый
R- right - правый, однако бывает и
rear - задний, зависит от детали, например R_mirror - правое зеркало, а
R_bumper - задний бампер.
F - front - передний
----
quarterpanel - крыло
door - дверь
seat - сиденье
steering_wheel - руль
hood - капот
bumper - бампер
trunk -
багажник
sideskirt - порог
roof - съемная крыша
window -
стекло
windshield - переднее или заднее стекло
mirror -
зеркало
headlights - передние фары
taillights - задние фары.
В любом случае, если вам будет непонятна какая-то деталь, то всегда
можно открыть ее модель в zmodeler и покрутить детальку.
После замены детали иногда сбивается порядок текстур, опять же все это
описано в туторе "Накладывание текстур", однако опять же добавлю от
себя, необязательно при экспорте кузова или иных сложных деталей
соединять их последовательно, я всегда экспортировал просто выделив
деталь и прописав потом правильно порядок текстур.
О порядке
текстур опять же добавлю, в рпк вы пишете порядок именно таким, который
написан в получившимся tex файле при экспорте детали, НО меняете местами
default_white.dds (0x00020025) и основную текстуру вашей детали, для
крыла например это Einvagen_F_quarterpanel.dds (0x0000005A). В противном
случае, ваша деталь будет закрашиваться полностью, иногда это плохо.
Далее мы возвращаем перемещенную в 0.0.0 деталь на место, для этого
достаточно пару раз нажать "CTRL+Z", теперь наша задача установить ее
правильно на машине.
Открываем street legal
racing/cars/racers/krevetko_data/scripts/_main_110_GT.cfg
находим в
нем нужную нам деталь, в данном случае это
Quote |
slot -0.700 0.137 -0.778 0.000 0.000 0.000 34 ; FL_quarterpanel |
(строка 481) Это слот на кузове, в который ставится переднее
левое крыло.
Мы видим 3 блока цифр.
-0.700 0.137 -0.778 отвечает за положение слота по 3 осям
координат x,y,z (относительно автомобиля: x - перпендикулярная ось, т.е.
влево вправо, y - высота, z - продольная ось, т.е. вперед назад.
0.000 0.000 0.000 отвечает за наклон
детали по 3 осям.
34 номер слота
В 3д максе эти оси расположены
немного по-другому. (пришлось взять гольф, т.к. джип завис и не
сохранился .. ЧАЩЕ ЖМИТЕ CTRL+S В МАКСЕ!)
Думаю скрин все
объяснит, обратите внимание, что знак у оси X надо менять.
А так же
делить эти значения на 100.
Если стандартный слот выглядил вот так:
Quote |
slot -0.700 0.137 -0.778 0.000 0.000 0.000 34 ; FL_quarterpanel |
То с нашим крылом он будет вот таким:
Quote |
slot -0.734 -0.185 -1.532 0.000 0.000 0.000 34 ; FL_quarterpanel |
Надеюсь понятно..
После этого необходимо зайти в скрипт
нашей детали, т.е. левого крыла и поставить там его координаты на 0.0.0.
Открываем street legal
racing/cars/racers/krevetko_data/scripts/FL_quarterpanel.cfg
Вот
и нужный нам слот на самой детали:
Quote |
slot 0.022 0.371 0.468 0.000 0.000 0.000 34 ; FL_quarterpanel attach 0x00000006 34 ; chassis->FL_quarterpanel |
Ставим координаты на нули, вот так:
Quote |
slot 0.000 0.000 0.000 0.000 0.000 0.000 34 ; FL_quarterpanel attach 0x00000006 34 ; chassis->FL_quarterpanel |
Все, после этого можно зайти в игру, купить наше крыло и
поставить его на машину.
И так со всеми прочими кузовными деталями,
поэтому создавать машины так нудно..
Также не стоит забывать о
том, что эта координата относительно детали на которую крепится наша,
т.е. например для того, чтобы расположить зеркало на двери, придется
ставить дверь и зеркало в начало координат и смотреть какие координаты у
зеркала.
С дверьми, багажниками и капотами все несколько
сложнее. Проделайте все тоже самое, но придется еще сдвинуть наш слот в
то место, где деталь будет закреплена и вокруг которого она будет
поворачиваться при нажатии на нее.
Сдвиньте слот в _main_110_GT.cfg
по оси Z в нужное место (определяется через 3д макс или
экспериментальным путем), не забудьте про flap, ее координата должна
быть такой же
На такое же число, но с противоположным знаком,
сдвиньте слот на самой детали (в ее cfg).. сложно?
Если очень
сложно, то можно в 3д максе нажать "Affect pivot only" (помните, мы
проделывали это ранее), но не нажимать "Center to object" а перенести
указатель к предполагаемой оси кручение (грубо говоря - где будут
петли), поставить деталь в начало координат и экспортировать в игру.
(так же как и обычно).
Получится немного некрасиво, но легче.
Допустим вы экспортировали все детали в игру, собрали машину. Отлично.
Далее надо настроить положение водителя, колес и камер.
Все это
описывается в _main_110_GT.cfg координатами. (надеюсь помните где он
находится )
Начинаем с первой камеры, она же
голова водителя.
Quote |
camera -0.380 0.350 0.202 0.000 0.000 0.000 90.000 |
Надеюсь, что систему координат вы уже освоили и можете
сообразить как и куда двигать. Но если ваша машина будет похожа на
стандартный эйнваген, то есть шанс, что водилу и не придется трогать.
Quote |
steering -0.378 0.080 -0.500 0.000 -0.454 0.000 0.01 sphere 0.1 |
Сюда крепится руль
и соответственно руки водителя.
Quote |
seat -0.375 -0.320 0.000 0.000 0.350 0.000 |
Сюда наш афроамериканец кладет свою попку.
Quote |
pedals -0.375 -0.370 -0.610 |
А сюда тянет ноги к педалям.
Можно еще дописать ниже
Quote |
shifter 0.000 0.000 0.000 |
ну координаты соответствующие, и сюда водила будет тянуть руку во
время переключения передач.
Quote |
cockpit_speed -0.265 0.135 -0.600 0.000 0.000 0.000 0x00020037 2.2 -0.03 -3.0 1.5 cockpit_rpm -0.357 0.135 -0.600 0.000 0.000 0.000 0x00020037 2.2 -0.00045 -1.5 1.5 |
Координаты стрелок спидометра и
тахометра
А сюда будут
крепится пружины и амортизаторы к кузову, по порядку: FL, FR, RL, RR
(помним что это такое?)
Quote |
;upper arms on chassis slot -0.490 -0.103 -1.146 0 0 0 501 slot 0.490 -0.103 -1.146 0 0 0 502 slot -0.500 -0.172 1.220 0 0 0 503 slot 0.500 -0.172 1.220 0 0 0 504 |
Далее меняем положение колес (опять же если понадобится)
Quote |
# FL wheel # type 10.000 sphere 0.315 spring 0.290 0.100 0.050 wheel -0.670 -0.630 -1.146 0.000 0.000 0.000 1.000 1.000 1.000 0.000 wheelbones slot 0.000 0.000 0.000 0.000 0.000 0.000 101 ; FL wheel attach 0x00040200 1 slottype 101 slotdmgmode 0x00000004 |
вынос колеса (наружу/внутрь)
Высота колеса
Продольное положение колеса (вперед/назад)
Вместе с колесом так же меняют свое положение подвески.
Аналогично
проделайте с другими колесами.
Вот и все, надеюсь ничего не
забыл. Тутор по добавлению детали в игру так же есть на promods.us. Есть еще физические модели, это те же 3д модели, детали, но которые как
бы следуют по границам детали, в игре они отвечают за столкновения,
т.е. определяют границы детали при столкновении. Можно и их исправить,
но если ваша машина очень похожа на игровую, с которой делалась (в
данном случае эйнваген) то можно оставить так, но по-хорошему надо бы и
их нарисовать, учтите что при этом надо будет во всех скриптах сменить
пути к 3д модели, т.к. они остались старыми со ссылками на эйнваген.
Источник: promods.eu
Добавлено (14.07.2010, 00:37)
---------------------------------------------
это самый хороший тутор который я видел . потом скину видео туторы by Tariell если он не будет против ))