Форум Pawn.Wiki - Воплоти мечту в реальность!: Мануал по добавлению кастомных моделей авто - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Мануал по добавлению кастомных моделей авто Оценка: -----

#1
Пользователь офлайн   ShadowFiend 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
В интернете очень мало информации на эту тему, поэтому пишу эту статью. Необходимые инструменты и плагины прилагаются.

Нам понадобятся:

- fastman92 limit abjuster
- IMG TOOL
- OpenSAA
- vehiclesIdFix.so
- vehicles.asi

- С помощью fastman92 limit abjuster снимим лимиты с игры.
- IMG TOOL позволит загрузить модель машины напрямую в файлы игры-
- OpenSAA позволит загрузить измененный handling.cfg, vehicles.ide, carmods.dat и т.д.
- vehiclesIdFix.so убирает серверный лимит моделей.
- vehicles.asi убирает клиентский лимит авто.

Версия мультиплеера должна быть 0.3.7 R3

Убираем лимит с игры
Сперва, найдем модель машины, которую мы будем добавлять(Модели можно найти на сайте gtavicecity.ru). Обратите внимание на то, какую машину заменяет мод.
Устанавливаем fastman92 limit abjuster:
- Переходим по пути fastman92 limit adjuster 7.6\files\files\additional_files\GTA_SA и копируем папку data в корень игры
- Переходим в папку \files\files\libraries\WIN_X86 и копируем все файлы в корень игры кроме .lib и .exp файлов.
Запускаем игру и сразу закрываем ее. Если вы сделали все правильно, плагин сообщит вам, что был создан файл fastman92limitabjuster_GTASA.ini.

- Открываем файл .ini любым редактором кода
Ищем Count of killable model IDs убираем # и присваиваем значение 12600
Count of killable model IDs = 12600

ИщемApply handling.cfg patch, убираем #, присваиваем значение 1
Apply handling.cfg patch = 1

Ниже ищем Number of standard lines и ставим значение 300, убираем хештег
Number of standard lines = 300

Ищем Vehicle Models, ставим значение 300, убираем хештег
Vehicle Models = 300

Ищем Enable vehicle audio loader, ставим значение 1, убираем хештег
Enable vehicle audio loader = 1


- Запускаем программу IMG TOOL, вверху нажимаем File - Open и открываем папка_с_игрой\models\gta3.img
- Изменяем название файлов модели автомобиля(.dff, .txd)
- Нажимаем Commands - Add и добавляем наши модели.

Открываем файл data/vehicles.ide
К коней файла, перед оператором end пишем следующие
612,	cuscar,		cuscar,		car,		SENTINEL,	CUSCAR,		null,	richfamily, 	10, 	0,	0,		-1, 0.7, 0.7,		0

612 - id автомобиля
cuscar - название .dff/.txd файлов
car - тип транспорта
SENTINEL - переменная в handling.cfg
CUSCAR - название в игре(Бесполезная переменная, но указывать ее обязательно)
"null, richfamily, 10, 0, 0, -1, 0.7, 0.7, 0" - флаги замененной модели. Чтобы найти нужные вам значения, откройте файл handling.cfg в папке data и скопируйте с того автомобиля, который заменяет ваша модель

Готово

Снимаем лимит с клиента SAMP

Переместите файл vehicles.asi в корневую папку игры.

Готово

Убираем лимит с сервера

Подключаем плагин vehiclesIdFix.so как и все другие(Плагин только для хостинга)

Готово

Заходим в игру и спавним авто с id 612

Решение проблем

- Сдвоенные колеса / Скачка транспорта при разгоне - необходимо изменить амплитуду сжатия пружин в handling.cfg. Если же вы используете стандартные переменные измените на SULTAN


Своя переменная в handling.cfg

- Открываем файл data\handling.cfg
CUSCAR        1200.0 3000.0 2.5 0.0 0.1 0.0 70 0.70 0.90 0.48 5 150.0 18.0 20.0 F P 4.0 0.80 0 30.0 0.8 0.08 0.0 0.45 -0.25 0.45 0.3 0.2 0.60 10000 20 0 1 1 0

CUSCAR - название переменной, которая используется в vehicles.ide
1200.0 — Масса (100...50000)
3000.0 — Масса в повороте
2.5 —--— Множитель тяжести (влияет на разгон 0.0...20.0)
0.0 —--— Центр массы по Х
0.1 —--— Центр массы по У
0.0 —--— Центр массы по Z (верх низ)
70 —--— Погружаемость под воду (10...120)
0.70 —— Сила сцепления с дорогой (0.5...2.0)
0.90 —— Потеря сцепления (скорость поворота 0.5...2.0)
0.48 —— Смещение сцепления (корпуса0.1...0.6)
5 —----— Количество передач (всего 5)
150.0 —- Максимальная скорость
18.0 —— Ускорение (мощность)
20.0 —— Инерция двигателя (влияет на ускорение 0.0...250.0)
F —---— Ведущий мост (F-Передний, R-Задний, 4-Полный)
Р —---— Тип двигателя (Р-Бензиновый, D-Дизельный, Е-Электро)
4.0 —-— Эффективность торможения (1.0...20.0)
0.80 —— Распределение тормоза (0.0-задняя,0.5-равномерно,1.0-передняя)
0 —----— Наличие ABS (0 - нету; 1 - есть)
30.0 —— Уровень поворота колес(10.0...40.0)
0.8 —-— Жесткость пружин (влияет на высоту подвески)
0.08 —— Жесткость амортизаторов (длительность качки корпуса)
0.0 —-— Прыгучесть на скорости
0.45 —— Верхний предел (амплитуда сжатия пружин 0.1...0.5)
-0.25 —- Нижний предел (амплитуда сжатия пружин -0.01...-0.5)
0.45 —— Смещение наклона (высота зада переда 0.0...0.6)
0.3 —-— Множитель анти-наклона (0.0...0.6)
0.2 —-— Сдвиг места посадки (положение водителя от центра авто)
0.60 —— Множитель повреждений (0.2...0.8, неразьбиваемая 0.01)
10000 — Стоимость автомобиля (1...100000)
20 —--— Флаги модели
0 —---— Флаги handling'a
1 —---— Вид фар (0-горизонтальный,1-маленький,2-большой,3-вертикальный)
1 —---— Вид фонарей (0-горизонтальный,1-маленький,2-большой,3-вертикальный)
0 —---— Анимационная группа (при посадки в машину)

Просмотр сообщенияShadowFiend (23 апреля 2025 - 15:13) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Сообщение отредактировал ShadowFiend: 23 апреля 2025 - 15:17

1

#2
Пользователь офлайн   21th year 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
Доступа на файлы нет. Сурсы будут для плагина? (vehicles.asi)
0

#3
Пользователь офлайн   ShadowFiend 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения21th year (23 апреля 2025 - 15:35) писал:

Доступа на файлы нет. Сурсы будут для плагина? (vehicles.asi)

Исходника на vehicles.asi нет. Плагин получил еще около года назад
0

#4
Пользователь офлайн   swlm 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияShadowFiend (23 апреля 2025 - 15:56) писал:

Исходника на vehicles.asi нет. Плагин получил еще около года назад

Это плохо.
0

#5
Пользователь офлайн   21th year 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияswlm (23 апреля 2025 - 18:41) писал:

Это плохо.

Изображение
Ну, кто автор понятно
0

#6
Пользователь офлайн   swlm 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения21th year (23 апреля 2025 - 18:55) писал:

Изображение
Ну, кто автор понятно

хахах, это этот legendaborn?
0

#7
Пользователь офлайн   Retrace 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияswlm (23 апреля 2025 - 19:20) писал:

хахах, это этот legendaborn?

Да
0

#8
Пользователь офлайн   Retrace 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Вот код, который может быть идентичным vehicles.asi
За работоспособность не ручаюсь т. к. лично не проверял (нет возможности).

Lua (MoonLoader):
local memory = require('memory')
local ffi = require('ffi')
local size = 20000

function main()
	if not isSampLoaded() then return end
	while not isSampAvailable() do wait(100) end
	local samp_base = getModuleHandle("samp.dll")
	local e_lfanew = ffi.cast("long*", samp_base + 60)[0]
	local nt_header = samp_base + e_lfanew
	local entry_point_addr = ffi.cast("unsigned int*", nt_header + 40)[0]
	if entry_point_addr == 0xCC4D0 then
		local oldProtection = memory.protect(samp_base + 0xE40D, 6, 0x40)
		memory.write(samp_base + 0xE40D, size, 4)
		memory.protect(samp_base + 0xE40D, 6, oldProtection)
	else
		sampAddChatMessage("Bypassing Vehicle Limits: {F73E3E}SA-MP version is not R3!", 0x808080)
	end
end
Прикрепленные файлы [Показать]

Сообщение отредактировал Retrace: 24 апреля 2025 - 12:18

0

#9
Пользователь офлайн   Tornamic 

  • reversed
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияRetrace (24 апреля 2025 - 12:16) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


не будет работать

.text:1000E40D 3D 63 02 00 00                          cmp     eax, 263h

ты перезаписал полностью инструкцию эту, нужно патчить на байт дальше (samp_base + 0xE40E)
3D это cmp eax
63 02 00 00 это уже int32 (максимальный айди модели)
1

#10
Пользователь офлайн   Retrace 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияTornamic (24 апреля 2025 - 12:35) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Спасибо за поправку. Изменённый код:

local memory = require('memory')
local ffi = require('ffi')
local size = 20000

function main()
	if not isSampLoaded() then return end
	while not isSampAvailable() do wait(100) end
	local samp_base = getModuleHandle("samp.dll")
	local e_lfanew = ffi.cast("long*", samp_base + 60)[0]
	local nt_header = samp_base + e_lfanew
	local entry_point_addr = ffi.cast("unsigned int*", nt_header + 40)[0]
	if entry_point_addr == 0xCC4D0 then
		local oldProtection = memory.protect(samp_base + 0xE40D + 1, 4, 0x40)
		memory.write(samp_base + 0xE40D + 1, size, 4)
		memory.protect(samp_base + 0xE40D + 1, 4, oldProtection)
	else
		sampAddChatMessage("Bypassing Vehicle Limits: {F73E3E}SA-MP version is not R3!", 0x808080)
	end
end
Прикрепленные файлы [Показать]

Сообщение отредактировал Retrace: 24 апреля 2025 - 12:38

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика