Reputation Activity
-
AchilleX got a reaction from riquebr in RPH SDK 1.95Hi @LMS, sorry to bother you.
It has been more than a year since RPH is no longer updated on the website (latest version 1.87) and the most recent version (1.95) only comes with LSPDFR. As this is a non-open source project, it is not possible to collaborate or request certain features, such as the implementation of the hashes of the new weapons or an updated natives.h.
So I would like to ask why it has not been made public given the abandonment of the original development team.
-
AchilleX got a reaction from Yasd in RPH SDK 1.95Hi @LMS, sorry to bother you.
It has been more than a year since RPH is no longer updated on the website (latest version 1.87) and the most recent version (1.95) only comes with LSPDFR. As this is a non-open source project, it is not possible to collaborate or request certain features, such as the implementation of the hashes of the new weapons or an updated natives.h.
So I would like to ask why it has not been made public given the abandonment of the original development team.
-
AchilleX reacted to LMS in Disable spawning of ambient vehiclesTry something like SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA.
-
AchilleX reacted to LMS in Disable spawning of ambient vehiclesYou can use the "disable road" natives to make traffic not spawn there or go there, but it can lead to some odd results where vehicles will u-turn in the middle of a road once they hit the disabled nodes.
-
AchilleX got a reaction from GTAbear in Code for getting stun-gun for Player results in flashlightSomething like
if (!keyJustPressed && Game.IsKeyDows(Keys.D2)) { Game.LocalPlayer.Character.Inventory.GiveNewWeapon(WeaponHash.StunGun, 1, true); keyJustPressed = true; } else if (!keyJustPressed) keyJustPressed = false; should work. keyJustPressed is a class attribute that prevents executing the if-branch each tick the key is being pressed.
-
AchilleX reacted to LMS in RPH SDK 1.95Please find attached the latest SDK for RPH (for game build 2699). It contains a new assembly attribute feature for developers to help reduce game folder clutter:
AssemblyProbingPaths - If specified, RPH will consider assemblies in these folders (relative to game folder) during initial plugin load, i.e., when your entrypoint is being loaded. This does not affect anything loaded thereafter, so you have to hook up your own resolver if you have any lazy loaded dependencies. This is to ensure that your solver always gets called first.
Usage (in your global attribute):
AssemblyProbingPaths = "myPlugin;myPlugin\\moreDeps"
RPH_SDK_1_95.zip
-
AchilleX reacted to Rich in AI Blips... an unknown worldThat's correct, you'll get an exception.
-
AchilleX got a reaction from Cyan in Chernobog's outrigger legsWow! Thanks! Now i'll try it.
I was using Cheat Engine to find something similar and I found a byte that was modified by the function with offset 0xF7D0F8, but I did not manage to call it successfully. Never tought I could do something like this!
EDIT
Working!
-
AchilleX got a reaction from LMS in Chernobog's outrigger legsWow! Thanks! Now i'll try it.
I was using Cheat Engine to find something similar and I found a byte that was modified by the function with offset 0xF7D0F8, but I did not manage to call it successfully. Never tought I could do something like this!
EDIT
Working!
-
AchilleX reacted to LMS in Chernobog's outrigger legsI had a quick look and there might not actually be a native for this. However, the legs are controlled via a flag that can be set easily via memory. You can use this (it scans for the flag offset dynamically to make it more resilient against game updates). You also might want to turn this into an extension method and cache the offset somewhere (though RPH does cache the pattern result after the first scan).
private static unsafe void SetOutriggerLegsEnabled(Vehicle vehicle, bool state) { // You could cache the offset somewhere. var patternOffset = Game.FindPattern("74 30 80 BF ?? 03 00 00 00"); var offset = *(int*)(patternOffset + 4); var legsDownFlagAddress = vehicle.MemoryAddress + offset; byte* legsFlags = (byte*)legsDownFlagAddress; *legsFlags = state ? (byte)1 : (byte)0; }
Edit: If you manually change the float (a few bytes before the flag value), you can actually set the ground distance and achieve some funny looking results:
-
AchilleX reacted to Rich in Chernobog's outrigger legsI don't think your explanation is accurate, and I think it is reasonable to believe there could be an undiscovered native that would manipulate the outrigger legs, similar to how there are natives to manipulate parts of other vehicles.