RAGE Multiplayer 0.3.7 introduces client-side C# scripting. Thanks to an incoming game update announcement today it goes into the stable branch with client updates that make it easier (you will have to back up your game files that are going to update still) to stay on the latest supported version until a compatibility update is done (previous time it has been made in a day, we can't give ETA though as the amount of changes is not known yet).
STABLE RELEASE CHANGELOG (changes done from 0.3.7 Testing Release)
Note: while there are no known security issues in the latest build, for now, it has been decided to not enable client-side C# by default in the Stable Release due to potential security concerns. Enabling it as pretty easy: just create "enable-clientside-cs.txt" file in your RAGE Multiplayer root folder.
Added: Events.OnEventTriggeredByKey
Added: Events.EnableKeyRemoteEvent
Added: Events.OnEntityDataChangeByKey
Added: Events.EnableKeyDataChangeEvent
Added: Performance improvements thanks to utilizing some .NET Core features
Added: Colshape.OnEnter (cancellable via OnPlayerEnterColshape)
Added: Colshape.OnExit (cancellable via OnPlayerExitColshape)
Added: Checkpoint.OnEnter (cancellable via OnPlayerEnterCheckpoint)
Added: Checkpoint.OnExit (cancellable via OnPlayerExitCheckpoint)
Added latest C# standard support
Enhancements over providing secure .NET Core environment (@server devs: no worries for partial reflection restrictions introduced - that's going to be whitelisted per local contexts in future updates)
.NET Core has been updated to our own fork based on .NET Core 2.2.0
Added: vehicle.nosActive
Added: vehicle.nosAmount
Peds are using entity streaming events now instead of what it used to be
Fixed reported client-side JS regressions
Fixed reported C# bugs
Updating 0.3.6 resources
Client-side: Update all the entityDataChange events to proper mp.events.addDataHandler:
// old:
mp.events.add("entityDataChange", (entity, dataName, value) =>
{
if(dataName === "mydata")
{
HandleIt();
}
});
// new:
mp.events.addDataHandler("mydata", (entity, value) =>
{
HandleIt();
});
Client-side: Update ped stream in eventing (streamIn param got deprecated in favor of regular entity streaming events). Here's a function to reproduce 0.3.6 mp.peds.new behavior:
mp.peds.newLegacy = (hash, position, heading, streamIn, dimension) =>
{
let ped = mp.peds.new(hash, position, heading, dimension);
ped.streamInHandler = streamIn;
return ped;
};
mp.events.add("entityStreamIn", (entity) =>
{
if(entity.streamInHandler)
{
entity.streamInHandler(entity);
}
});
Downloads
Client* (includes Windows server)
Linux server
Linux C# API
*if you already have RAGE Multiplayer installed, it will update itself on the next launch