[SCRIPT][REL]Manual Transmission & Steering Wheel Support
-
@cyril69850
Looks like the wheel is detected fine. Have you attempted to set it up?Edit:
It's been solved, turned out the wrong section was being configured.
-
@ikt
Yes I tried but none of the buttons or pedals are recognized when I try to bind it in game
-
@ikt Could you make the clutch bite stronger or maybe an option to increase it manually? It got weaker in the last patch, everything else is perfect. I'm on keyboard, sequencial btw. Keep up the wonderfull work, love this mod!
-
@unforgetabelz
Hmmmm, do you mean the speed or the power? I've decreased the power but the speed should be the same. Increasing the power makes it rev the engine a bit too much, but I'll see if I can pump it up more.
-
@ikt Yes the power, sometimes while in reverse on a straight line the car takes a lot of time to move, but yeah if it revs the engine too much then it's fine. It was more like a suggestion
-
@ikt I can't find the way on how you created the manual transmission on your github
-
@lorizz12
What do you mean? Everything is there.
-
@ikt in which file did you code the manual transmission, I mean how did you manage to stop the automatic shifting
-
@lorizz12
script.cpp
handleRPM()
checks for gear state changes by the game
The bottom ofupdate()
just continuously sets a particular gear.
-
@ikt thanks, damn I can't access the memoryaddress with C#
-
@lorizz12
...why do you need this?In C# you can simply do
vehicle.MemoryAddress
to get the address, and use offsets just like in C++. You do need anunsafe
block, but you can dereference pointers fine.Here's a thing where I look up wheel stuff in memory in C#.
-
This post is deleted!
-
@ikt those addresses are driving me insane, by the way I need it to remove the automatic transmission, I need to do drag races and so it's a must.
I just need to change the currentgear by writing in the memory since no set method exists in ScriptHookDotVNet
those are the offsets
gearOffset = Game.Version >= GameVersion.VER_1_0_372_2_STEAM ? 0x7A6 : 0x796;
gearOffset = Game.Version >= GameVersion.VER_1_0_877_1_STEAM ? 0x7C6 : gearOffset;
gearOffset = Game.Version >= GameVersion.VER_1_0_944_2_STEAM ? 0x7E6 : gearOffset;
gearOffset = Game.Version >= GameVersion.VER_1_0_1103_2_STEAM ? 0x7F6 : gearOffset;
And this is the code:
int* vehPointer = vehicle.MemoryAddress;
int* currentGear = vehPointer + gearOffset;
*currentGear = gear;
I even tried using memory.WriteInt32 with some helper classes.
-
@lorizz12
I had to patch a bunch of things to get the gear locking working properly and there's a fakeRev() thing that adjusts the RPM accordingly for the cases that the game doesn't handle, and lately added a custom rev limiter.Here's what a non-patching version would do:
It's very handling dependent on how well redlining works.
As for the addresses, I guess something like this works:
unsafe void SetGear(Vehicle handle, uint16_t gear) { var address = (ulong)handle.MemoryAddress; ulong offset = 0x7F2; *((ulong*)(address + offset)) = gear; }
TopGear does not limit speed, you need to set current / next gear on each tick: Early C# poc.
Also idk if this is selfish but I'd appreciate it if any mod based on the manual transmission code doesn't fuck up manual transmission.
-
@ikt I'll try it now, yeah I noticed, I managed to block currentspeed by changing the maxspeed.
By the way I fixed it by modifying the scripthookdotvnet, added the set method and it works nice, now I'll contribute on the v3.
The mod I'm doing will not be released probably, it will be an exclusive total conversion
-
@ikt everything works great, I managed to give effects when you shift up, like if you are on too high rpms you'll get an over rev and you'll clutch slow, if you are on the "perfect" rpms you get a little bit of acceleration, and so on (good shift, short shift), like the NFS drag races, the problem is the same one you faced, when you are on too low RPM and you accelerate the game forces to downshift and I can't find a way to block that.
Do I need to use clutch and throttle addresses? Even if I have the STEAM version?
-
@lorizz12
You just need to patch a few things to get the game gear behavior working with a gear blocking script.Sorry, I can't say I feel much for an exclusive mod. Here's the patchy stuff.
-
@ikt oh god it's all in c++, I'll work on it tomorrow, thanks
-
this is one of the best mods on the site, happy g27 user here with no complaints besides my left foot being extremely sore from clutching so much
-
I finally got around properly implementing the damper force. Anybody who's sensitive to force feedback want to try it out? Strength etc should be similar but the feel is just different.
-
Apparently my implementation is less than perfect and doesn't work well on Thrustmaster devices. I only got one report or something though.
Meanwhile the G920 + SHVDN is still broken.
My email to Logitech has been met with silence.
Thrustmaster's reply:There is no other support that we can provide you with. The SDK or any other technical details regarding the FFB functions of the unit are not available for distribution.
That's it then, I guess. It should be feature complete and aside from a tiny few bug fixes I can't do anything more.
+ I doubt anybody's still actively following this mod, so time to drop it after tidying things up.
-
I have been following this mod for quite some time, still nervous about installing it though as my techie side is beyond lacking, but now i am going to take that leap, cause i so want to use my G27, have ever since the game was released to PC.
Your work and dedication is brilliant, have a great Christmas and Happy New Year, and see you on the flip side.
-
Hello guys i've got a G29 but when i want to enter into a car i got this error "CORE: an exception occurred while executing 'Gears.asi' (0x00007FF99CEDB950), id 144"
-
@Sabi95190
Yeah it'd help more if you did a few things:- Show Gears.log
- Did you complete the set up?
-
@ikt Thanks. There's the .log file 4:58.284] [ INFO] GTAVManualTransmission v4.5.1 (build Dec 19 2017)
[20:34:58.285] [ INFO] Game version VER_1_0_1180_2_STEAM
[20:34:58.285] [ INFO] Script registered
[20:37:17.002] [ INFO] Script started
[20:37:17.051] [ INFO] Settings read
[20:37:17.550] [ INFO] Setting up globals
[20:37:17.597] [ INFO] WHEEL: Initializing input devices
[20:37:17.598] [ INFO] WHEEL: Setting up DirectInput interface
[20:37:17.619] [ INFO] WHEEL: Found 1 device(s)
[20:37:17.620] [ INFO] WHEEL: Device: Logitech G29 Driving Force Racing Wheel USB
[20:37:17.620] [ INFO] WHEEL: GUID: {ACB805F0-EA3F-11E7-8003-444553540000}
[20:37:17.620] [ INFO] WHEEL: Devices initialized
[20:37:17.620] [ INFO] WHEEL: Init FFB device
[20:37:17.621] [ INFO] WHEEL: Init FFB effect on axis lX
[20:37:17.639] [ INFO] WHEEL: Init FFB effect success
[20:37:17.639] [ INFO] WHEEL: Steering wheel initialization finished
[20:37:17.640] [ INFO] START: Initialization finished
[20:37:57.659] [ INFO] WHEEL: Initializing input devices
[20:37:57.670] [ INFO] WHEEL: Setting up DirectInput interface
[20:37:57.709] [ INFO] WHEEL: Found 1 device(s)
[20:37:57.710] [ INFO] WHEEL: Device: Logitech G29 Driving Force Racing Wheel USB
[20:37:57.710] [ INFO] WHEEL: GUID: {ACB805F0-EA3F-11E7-8003-444553540000}
[20:37:57.710] [ INFO] WHEEL: Devices initialized
[20:37:57.710] [ INFO] WHEEL: Init FFB device
[20:37:57.711] [ INFO] WHEEL: Init FFB effect on axis lX
[20:37:57.737] [ INFO] WHEEL: Init FFB effect success
[20:37:57.737] [ INFO] WHEEL: Steering wheel initialization finished
[20:38:01.849] [ INFO] WHEEL: Initializing input devices
[20:38:01.850] [ INFO] WHEEL: Setting up DirectInput interface
[20:38:01.873] [ INFO] WHEEL: Found 1 device(s)
[20:38:01.873] [ INFO] WHEEL: Device: Logitech G29 Driving Force Racing Wheel USB
[20:38:01.873] [ INFO] WHEEL: GUID: {ACB805F0-EA3F-11E7-8003-444553540000}
[20:38:01.873] [ INFO] WHEEL: Devices initialized
[20:38:01.874] [ INFO] WHEEL: Init FFB device
[20:38:01.874] [ INFO] WHEEL: Init FFB effect on axis lX
[20:38:01.885] [ INFO] WHEEL: Init FFB effect success
[20:38:01.886] [ INFO] WHEEL: Steering wheel initialization finished
[20:38:06.379] [ INFO] WHEEL: Initializing input devices
[20:38:06.380] [ INFO] WHEEL: Setting up DirectInput interface
[20:38:06.403] [ INFO] WHEEL: Found 1 device(s)
[20:38:06.403] [ INFO] WHEEL: Device: Logitech G29 Driving Force Racing Wheel USB
[20:38:06.403] [ INFO] WHEEL: GUID: {ACB805F0-EA3F-11E7-8003-444553540000}
[20:38:06.403] [ INFO] WHEEL: Devices initialized
[20:38:06.404] [ INFO] WHEEL: Init FFB device
[20:38:06.404] [ INFO] WHEEL: Init FFB effect on axis lX
[20:38:06.415] [ INFO] WHEEL: Init FFB effect success
[20:38:06.416] [ INFO] WHEEL: Steering wheel initialization finished
[20:38:20.110] [ INFO] WHEEL: Initializing input devices
[20:38:20.110] [ INFO] WHEEL: Setting up DirectInput interface
[20:38:20.135] [ INFO] WHEEL: Found 1 device(s)
[20:38:20.136] [ INFO] WHEEL: Device: Logitech G29 Driving Force Racing Wheel USB
[20:38:20.136] [ INFO] WHEEL: GUID: {ACB805F0-EA3F-11E7-8003-444553540000}
[20:38:20.136] [ INFO] WHEEL: Devices initialized
[20:38:20.137] [ INFO] WHEEL: Init FFB device
[20:38:20.137] [ INFO] WHEEL: Init FFB effect on axis lX
[20:38:20.150] [ INFO] WHEEL: Init FFB effect success
[20:38:20.150] [ INFO] WHEEL: Steering wheel initialization finishedI don't understand with ''set it up'' what do you want to say?