Changelog
Changelog of JS API of RAGE Multiplayer 0.3.2 as of 10.12.2017 (RC-1). WIP.
- Note: Colour was replaced with Color
RC-2
- Updated: all remote trigger arguments should be passed as an array now, e.g. player.call("eventName", [1, 2, 3]). Updated only for server-side API as for RC-2.
- Added: vehicle.quaternion
- Added: vehicle.heading
- WIP
RC-1
- Added: Vehicle.movable (get)
- Updated: mp.environment is mp.world now
- Added: mp.world.requireIpl
- Added: mp.world.removeIpl
- Added: mp.world.trafficLights.locked (get / set)
- Added: mp.world.trafficLights.state (get / set)
- Added Player.removeObject
Client-side updates
- Added: mp.gui.cursor.show(visibility, freezeControls)
- Added: Entity.getVariable
- Added: Entity.setVariable
- Added: mp.vehicles.new
- Added: mp.objects.new
- Added: mp.pickups.new
- Added: mp.markers.new
- Added: mp.blips.new
- Added: mp.checkpoints.new
- Added: mp.labels.new
- Updated: mp.game.graphics.drawText(text, position[, additionalArgs])
- Added: Vehicle.setHandling(name, value)
- Added: mp.discord.update(detailedStatus, state)
- Added: mp.game.cam.getGameplayCamRelativeHeading
- Added: Entity.remoteId
- Added: pool.atRemoteId
Events updates
- Added: Events.getAllOf(eventName)
- Added: Events.remove(eventName[, hander])
- Added: Events.reset()
Player updates
- Added: Player.weapons (documented below)
- Added: Player.removeWeapon(weapon)
- Added: Player.removeAllWeapons()
- Added: Player.weapon (get / set)
- Added: Player.weaponAmmo (get / set)
- Added: Player.getWeaponAmmo(weapon)
- Added: Player.setWeaponAmmo(weapon, ammo)
- Added: Player.allWeapons (get)
- Added: Player.getHeadOverlay(id)
- Added: Player.setHeadOverlay(id, [overlayId, opacity)
- Added: Player.socialClub (get)
- Added: Player.isStreamed(player)
- Added: Player.streamedPlayers (get)
- Added: Player.isReloading (get)
- Added: Player.isOnLadder (get)
- Added: Player.isInMelee (get)
- Added: Player.packetLoss (get)
Blip updates
- Added: Blip.shortRange (get / set)
- Added: Blip.drawDistance (get / set)
- Added: Blip.rotation (get / set)
- Updated: Blip.colour => Blip.color (get / set)
- Removed: mp.blips.newStreamed // use .new() with drawDistance ( see below )
TextLabel updates (includes entity methods)
- Added: TextLabel.color (get / set)
- Added: TextLabel.drawDistance (get / set)
- Added: TextLabel.los (get / set)
- Added: TextLabel.text (get / set)
Vehicle updates
- Added: Vehicle.mods[id] (get / set) // also available as Vehicle.get / setMod(id) since 0.3
- Added: Vehicle.extras[id] (get / set)
- Added: Vehicle.isStreamed(player)
- Added: Vehicle.streamedPlayers
- Added: Vehicle.dashboardColor (get / set)
- Added: Vehicle.pearlescentColor (get / set)
- Added: Vehicle.livery (get / set)
- Added: Vehicle.numberPlateType (get / set)
- Added: Vehicle.trimColor (get / set)
- Added: Vehicle.windowTint (get / set)
- Added: Vehicle.wheelColor (get / set)
- Added: Vehicle.wheelType (get / set)
- Added: Vehicle.getExtra(id)
- Added: Vehicle.setExtra(id, extra)
- Added: Vehicle.taxiLights (get / set)
- Added: Vehicle.dashboardColor (get / set)
- Added: Vehicle.trailer
- Added: Vehicle.traileredBy
New events
- Added: entityCreated (entity)
- Added: playerReady (player)
- Added: entityModelChange (entity, oldModel)
- Updated: playerEnterVehicle => playerStartEnterVehicle
- Updated: playerEnteredVehicle => playerEnterVehicle
- Updated: playerExitVehicle => playerStartExitVehicle
- Updated: playerLeftVehicle => playerExitVehicle
- Added: playerDamage (player, healthLoss, armorLoss)
- Added: playerWeaponChange (player, oldWeapon, newWeapon)
- Added: vehicleDamage (vehicle, bodyHealthLoss, engineHealthLoss)
- Added: vehicleSirenToggle (vehicle, state)
- Added: vehicleHornToggle (vehicle)
- Added: vehicleTrailerAttach (vehicle, trailer)
- Added: playerMarkWaypoint (player, position)
- Added: playerReachWaypoint (player)
Entity updates (for all for entitiy types)
- Added: Entity.data.name (gets / sets synced variable just like getVariable / setVariable)
- Added: Entity.getVariable(name)
- Added: Entity.setVariable(name, value)
Player.weapons
- Added: Player.weapons.all (returns an object just like Player.allWeapons)
- Added: Player.weapons.name / Player.weapons.hash / Player.weapons.current (gets/sets ammo of specific weapon just like Player.get / setWeaponAmmo)
- Added: Player.weapons.clear()
Events examples
// Add events
mp.events.add(
{
playerJoin: (player) => {},
playerChat: (player, msg) => {}
});
//
function playerJoinHandler(player)
{
}
// Add an event
mp.events.add("playerJoin", playerJoinHandler);
// Remove specified handler of specified event
mp.events.remove("playerJoin", playerJoinHandler);
// Remove handler(s) specified event(s)
mp.events.remove("playerJoin");
mp.events.remove(["playerJoin", "playerQuit"]);
// Reset whole event manager
mp.events.reset();
// Get all handlers of specified event
mp.events.getAllOf("playerJoin").forEach(_ev => _ev(null));
//
const ev = new mp.Event("playerDeath", (player, reason, killer) =>
{
mp.players.broadcast('First blood!');
ev.destroy(); // this event handler will be not called anymore since it's destroyed
});
ev.destroy(); // due to this line the event is never going to be executed if we call this before it
// Per-entity (available for all of entities) event manager
mp.events.add("playerJoin", (player) =>
{
player.events.push("playerSpawn", (player) =>
{
mp.players.broadcast(`hey ${player.name}, this is your first spawn!`);
return true; // return true from the event to destroys it for the entity after execution
});
});
New entity constructors
mp.vehicles.new(model, position,
{
heading: heading,
numberPlate: numberPlate,
alpha: alpha,
color: color,
locked: locked,
engine: engine,
dimension: dimension
});
mp.objects.new(model, position,
{
rotation: rotation,
alpha: alpha,
dimension: dimension
});
mp.blips.new(sprite, position,
{
name: name,
scale: scale,
color: color,
alpha: alpha,
drawDistance: drawDistance,
shortRange: shortRange,
rotation: rotation,
dimension: dimension,
});
mp.checkpoints.new(type, position, radius,
{
direction: direction,
color: color,
visible: visible,
dimension: dimension
});
mp.markers.new(type, position, scale,
{
direction: direction,
rotation: rotation,
color: color,
visible: visible,
dimension: dimension
});
mp.labels.new(text, position,
{
los: los,
font: font,
drawDistance: drawDistance,
color: color,
dimension: dimension
});