samp / Угол поворота колес, как установить?

Double Tap Inside

Известный
Автор темы
Проверенный
1,899
1,254
Версия MoonLoader
.026-beta



Как указать угол поворота колеса? Чтобы получилось эмулировать повороты как на руле. Чтобы можно было сделать поворот плавнее.

Возможно этот Lua скрипт поможет


Или этот CLEO
 
Последнее редактирование:
  • Вау
Реакции: qdIbp
Решение
перед использованием set нужно вызвать patchWheelRotation(true)

Lua:
local memory = require("memory")

function patchWheelRotation(status)
  if status then
    for offset = 0x1, 0x6 do
      memory.setint8(0x6ADD21 + offset, 0x90, true)
    end
  else
    for offset, value in ipairs({ 0x89, 0x8E, 0x94, 0x4, 0x0, 0x0 }) do
      memory.setint8(0x6ADD21 + offset, value, true)
    end
  end
end

function getWheelRotationAngle(handle)
  if doesVehicleExist(handle) then
    return memory.getfloat(getCarPointer(handle) + 0x494, true)
  end
end

function setWheelRotationAngle(handle, angle)
  if doesVehicleExist(handle) then
    return memory.setfloat(getCarPointer(handle) + 0x494, angle, true)
  end
end

wojciech?

Известный
216
130
перед использованием set нужно вызвать patchWheelRotation(true)

Lua:
local memory = require("memory")

function patchWheelRotation(status)
  if status then
    for offset = 0x1, 0x6 do
      memory.setint8(0x6ADD21 + offset, 0x90, true)
    end
  else
    for offset, value in ipairs({ 0x89, 0x8E, 0x94, 0x4, 0x0, 0x0 }) do
      memory.setint8(0x6ADD21 + offset, value, true)
    end
  end
end

function getWheelRotationAngle(handle)
  if doesVehicleExist(handle) then
    return memory.getfloat(getCarPointer(handle) + 0x494, true)
  end
end

function setWheelRotationAngle(handle, angle)
  if doesVehicleExist(handle) then
    return memory.setfloat(getCarPointer(handle) + 0x494, angle, true)
  end
end
 
  • Нравится
Реакции: Tak и Vespan

Double Tap Inside

Известный
Автор темы
Проверенный
1,899
1,254
перед использованием set нужно вызвать patchWheelRotation(true)

Lua:
local memory = require("memory")

function patchWheelRotation(status)
  if status then
    for offset = 0x1, 0x6 do
      memory.setint8(0x6ADD21 + offset, 0x90, true)
    end
  else
    for offset, value in ipairs({ 0x89, 0x8E, 0x94, 0x4, 0x0, 0x0 }) do
      memory.setint8(0x6ADD21 + offset, value, true)
    end
  end
end

function getWheelRotationAngle(handle)
  if doesVehicleExist(handle) then
    return memory.getfloat(getCarPointer(handle) + 0x494, true)
  end
end

function setWheelRotationAngle(handle, angle)
  if doesVehicleExist(handle) then
    return memory.setfloat(getCarPointer(handle) + 0x494, angle, true)
  end
end
Ща ебану на тест

перед использованием set нужно вызвать patchWheelRotation(true)

Lua:
local memory = require("memory")

function patchWheelRotation(status)
  if status then
    for offset = 0x1, 0x6 do
      memory.setint8(0x6ADD21 + offset, 0x90, true)
    end
  else
    for offset, value in ipairs({ 0x89, 0x8E, 0x94, 0x4, 0x0, 0x0 }) do
      memory.setint8(0x6ADD21 + offset, value, true)
    end
  end
end

function getWheelRotationAngle(handle)
  if doesVehicleExist(handle) then
    return memory.getfloat(getCarPointer(handle) + 0x494, true)
  end
end

function setWheelRotationAngle(handle, angle)
  if doesVehicleExist(handle) then
    return memory.setfloat(getCarPointer(handle) + 0x494, angle, true)
  end
end
И так, ахуенно, но люди на сервере не видят, что колесо вывернуто. Верно? Если да, то как исправить?

перед использованием set нужно вызвать patchWheelRotation(true)

Lua:
local memory = require("memory")

function patchWheelRotation(status)
  if status then
    for offset = 0x1, 0x6 do
      memory.setint8(0x6ADD21 + offset, 0x90, true)
    end
  else
    for offset, value in ipairs({ 0x89, 0x8E, 0x94, 0x4, 0x0, 0x0 }) do
      memory.setint8(0x6ADD21 + offset, value, true)
    end
  end
end

function getWheelRotationAngle(handle)
  if doesVehicleExist(handle) then
    return memory.getfloat(getCarPointer(handle) + 0x494, true)
  end
end

function setWheelRotationAngle(handle, angle)
  if doesVehicleExist(handle) then
    return memory.setfloat(getCarPointer(handle) + 0x494, angle, true)
  end
end
также надо получить MaxRotate потому шо я вывернул колесо так, как оно не должно уметь выворачивацца
 
Последнее редактирование:

wojciech?

Известный
216
130
И так, ахуенно, но люди на сервере не видят, что колесо вывернуто. Верно? Если да, то как исправить?
Lua:
function sampev.onSendVehicleSync(data)
  local vehicleHandle = storeCarCharIsInNoSave(playerPed)
  local k = -math.floor(getWheelRotationAngle(vehicleHandle) * 0xFF)
  if k > 0x80 then k = 0x80 elseif k < -0x80 then k = -0x80 end
  data.leftRightKeys = k
  return data
end

также надо получить MaxRotate потому шо я вывернул колесо так, как оно не должно уметь выворачивацца
на инфернусе (вероятно на всех так) диапазон был от -0.5 до 0.5, можно поправлять, если выходит за эти значения

up
в первом исходнике максимальный поворот +-0.7
 

Double Tap Inside

Известный
Автор темы
Проверенный
1,899
1,254
Lua:
function sampev.onSendVehicleSync(data)
  local vehicleHandle = storeCarCharIsInNoSave(playerPed)
  local k = -math.floor(getWheelRotationAngle(vehicleHandle) * 0xFF)
  if k > 0x80 then k = 0x80 elseif k < -0x80 then k = -0x80 end
  data.leftRightKeys = k
  return data
end


на инфернусе (вероятно на всех так) диапазон был от -0.5 до 0.5, можно поправлять, если выходит за эти значения
такс... это синхру мы шлем на сервер, чтобы все видели угол поворота.
Я точно знаю, что у каждой тачки есть статы, в которой есть максимальный угол поворота колеса. Как бы получать такую инфу? Делать новый вопросник)) ?
 

wojciech?

Известный
216
130
data/handling.cfg
V (fSteeringLock) - максимальный угол поворота колес машины (в градусах).
1694117697109.png
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,778
11,225
такс... это синхру мы шлем на сервер, чтобы все видели угол поворота.
Я точно знаю, что у каждой тачки есть статы, в которой есть максимальный угол поворота колеса. Как бы получать такую инфу? Делать новый вопросник)) ?
Lua:
local carModelId = 411; -- infernus
local maxAngle = memory.getfloat(memory.getint16(memory.getint32(carModelId * 0x4 + 0xA9B0C8, false) + 0x4A, false), * 0xE0 + 0xC2B9DC + 0xA0, false)
p.s. на лаунчере арз это не работает
 
Последнее редактирование:

Double Tap Inside

Известный
Автор темы
Проверенный
1,899
1,254
data/handling.cfg
V (fSteeringLock) - максимальный угол поворота колес машины (в градусах).
Посмотреть вложение 214520

если есть конфиг, то он должен быть загружен в память. Я хз, в частности Аризона может же менять угол на свое усмотрение, в своих аризоновских тачках, например? Вот я бы и хотел получать тот угол, который дает мне сервер как максимум.


1694118148008.png



А чё это за Англ Два ?
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,778
11,225
если есть конфиг, то он должен быть загружен в память. Я хз, в частности Аризона может же менять угол на свое усмотрение, в своих аризоновских тачках, например? Вот я бы и хотел получать тот угол, который дает мне сервер как максимум.


Посмотреть вложение 214521


А чё это за Англ Два ?
float m_f2ndSteerAngle; // used for steering 2nd set of wheels or elevators etc..
 
  • Влюблен
Реакции: Double Tap Inside