Vehicle Movement Rates & Acceleration

kinshi

New Member
Joined
Dec 13, 2011
Messages
18
Correct me if I am wrong please, but vehicle spees and acceleration rates (along with modifications) are stored in the client files.

What I am not sure of is if these values are contained in each indidvidual vehicles object datatable, OR, if the movement_human.iff datatable is what governs it (or both). It seems to have all sorts of values for various movementScales, accelerationScales, etc...just not sure which entries correlate to which vehicle, of they really do.

I see entries for those values in the individual vehicle object datatables, just wondering if I can get away with modding values in the movement_human.iff datatable instead of in each vehicle object.

For reference, I am seeking to alter the max speeds of some of the vehicles (for use on a SWGEmu/Core3 setup)

Thanks!
 

Timbab

Administrator
Staff member
Administrator
Moderator
Joined
Oct 6, 2010
Messages
1,057
Location
Magna Germania
Not sure how deepy object.iff are related to it, but you can find it in the SCOTFORM (Top form) of each vehicle (object/mobile/vehicle/ .iff).


You have species as an integer (I assume that'll be what connects it to the movement datatable, maybe, you'll have to check).

You have acceleration, which is two floats
Code:
acceleration
null byte
integer (Might be the number of floats/accel values, but it seems to always be 02 00 00 00/2 floats max)
bool (I think at least, it's either 00 for none, or 01 for yes)
byte (20 - 20s are object .iff seperation bytes for the most part)
float
bool (again like above)
byte (20)
float (second accell value)
Here are examples of all unique acceleration values, just so you get an idea:
Code:
acceleration     |   null  |   int  |  bool | byte | float | bool | byte | float
616363656C65726174696F6E 00 02000000 00 20 00 20
616363656C65726174696F6E 00 02000000 01 20 00002041 01 20 00004040
616363656C65726174696F6E 00 02000000 01 20 00001041 01 20 00004040
616363656C65726174696F6E 00 02000000 01 20 00008040 01 20 00000040
616363656C65726174696F6E 00 02000000 01 20 00003041 01 20 00004040
616363656C65726174696F6E 00 02000000 01 20 00000040 01 20 00000040
616363656C65726174696F6E 00 02000000 01 20 0000C040 01 20 00000040
616363656C65726174696F6E 00 02000000 01 20 00006144 01 20 00006144
616363656C65726174696F6E 00 02000000 01 20 0000D841 01 20 00001041
616363656C65726174696F6E 00 02000000 01 20 CDCC6C40 01 20 00000040
616363656C65726174696F6E 00 02000000 01 20 00000041 01 20 00004040
616363656C65726174696F6E 00 02000000 01 20 0000A040 01 20 00004040
616363656C65726174696F6E 00 02000000 01 20 00004041 01 20 00008040
616363656C65726174696F6E 00 02000000 01 20 0000E040 01 20 00000040
616363656C65726174696F6E 00 02000000 01 20 00004040 01 20 00004040
Then you have speed and turnrate, same setup as above.

SlopeModAngle, Water, Percent is just: bool, byte(20), float

The rest are similar structure.

But as I see now, the ID for the movement datatable is in movementDatatable, though for the barc, for example, it's empty, so I suppose it doesn't use it?

If it would, it would look like:

movementDatatable..datatables/movement/movement_human.iff.
or pure bytes:
Code:
6D6F76656D656E74446174617461626C65 00 01 646174617461626C65732F6D6F76656D656E742F6D6F76656D656E745F68756D616E2E696666 00
Essentially, null, bool (00 for no table, 01 for table) and then the table link.

Hope that helps to any degree, if you're inexperienced with hex editing, I can break it down further if you want. Damn I really gotta dump my documentation, especially on ObjectIFF.
 

kinshi

New Member
Joined
Dec 13, 2011
Messages
18
Thanks for the fast response :)

Some extra breakdown would be nice to, I am "ok" with hex editing, but more detail doesn't hurt (also good for the folks at home). My primary focus is on identifying and altering the max speed values)

I am pretty sure the info I need is in the object datatable, its more a matter of being sure I am reading the datatable correctly and modifying the right thing.
 

Valkyra

Member
Joined
Aug 31, 2010
Messages
211
Pretty sure they are in the client files, but at least for SWGEmu code it's handled serverside and doesn't read the client files atm.

Not sure about SWGANH's source.
 

Lasko

Moderator
Staff member
Moderator
Joined
Feb 13, 2012
Messages
295
Just be aware that increasing the speeder speed will make it more likely that you might get rubberbanding issues, even in the middle of nowhere. Test it thoroughly as I'm sure you will.
 

Tonberry

Inactive Staff
Joined
Aug 30, 2010
Messages
372
The values are in the object IFFs. However unless something has changed since I last tinkered with server-side (Which was a long time ago lol) Valky is right. It's controlled server-side. It uses the same values found in the client files but doesn't actually pull them from the client. I don't recall there being any datatable involvement when I messed with it.
 

kinshi

New Member
Joined
Dec 13, 2011
Messages
18
For SWGEmu it is serverside in the code? I have been digging and digging looking for where the various speeder difference would be in the code and haven't found them yet (I find where the speed modification stuff for players is, but have not found the values that control each individual speeder's movement rates and other statistics, like speed of a X-31 vs a Swoop for instance)

What I want is to to bring the other speeders up to swoop speed (but leave their other stats alone, like turn radius, accelleration, terrain negotiation). I dont want them to go faster than swoop speed however (the afore mentioned rubber banding)
 

Timbab

Administrator
Staff member
Administrator
Moderator
Joined
Oct 6, 2010
Messages
1,057
Location
Magna Germania
I'm fairly certain it actually is in the server code, due to the possibility of exploits prior to that. Though, as Ton said, they're the same values, it's just a matter of finding them.

Logic wise, they should work similar/the same and I'm also sure the rubberbanding can be bypassed/tweaked, since it's more or less a 'anti hax/exploit', based on X values.

You have things like 'warpTolerance' in the object file (bool / byte (20) / float) that might be able to counter the warping, but I have no idea.

Still want me to go into depth about the hex editing of it, with them being server side code actually? (Totally slipped my mind that it was).

All the separate values you want to modify are there in the object file, but I have no idea where or how the serverside file looks for it.
 

kinshi

New Member
Joined
Dec 13, 2011
Messages
18
hmm well seems like I need to spend more time digging the the code than in the datatable :) So, no additional explanation needed, but I will followup if/when I find what I am looking for.
 

Uli

Moderator
Staff member
Moderator
Joined
Aug 30, 2010
Messages
208
As Timbad (not a mistype) object iff contain the majority of information for speed etc. This values can be changed client side and have an effect on the game, warpTolerance to my knowledge has no impact on whether or not you will be rubberbanded.

Last time I looked at how the anti-hack thing worked was it would basicly work out how far you could travel from your present point at max acceleration and between movement packets, which means if you stood still for a very long time you could warp across the entire map and not be rubberbanded because you could of travelled that distance (Unsure if its fixed, its how it was when I was playing).

Rubberbanding has got some leeway so you can push the speeds up slightly (Unsure of the numbers been too long since I toyed with it) and having acceleration on max and turn rate on max won't have any impact on the rubberbanding.

Final note, in some cases, unsure if its just CU+ cases but the game server can force in your client memory the values of speeds etc, in which case you would need to edit it server side to ensure the correct values are in or make sure inside your client memory the values are the increased ones.
 
Top Bottom