Changelog

From RAGE Multiplayer Wiki
Jump to: navigation, search
  • Note: Colour was replaced with Color

0.3.4

  • Added: player.getDecoration(collection)
  • Added: player.setDecoration(collection, overlay)
  • Updated: player.setHeadOverlay(overlayId, [index, opacity, color, secondaryColor])
  • Updated: player.getHeadOverlay
  • Updated: mp.game.graphics.screen2dToWorld3d(x, y[, collisionTest])
  • Updated: click event args are (x, y, state, mouseKey, relativeX, relativeY, 3dpos, entityHandle) now
  • Fixed: text label rendering issues
  • Fixed: shared variables not reseting for local player clientside after reconnecting
  • Fixed: invalid password issue
  • Fixed: playerWeaponShot not triggering when there's no any target entity

RC-2

  • Updated: all remote trigger arguments should be passed as an array now, e.g. player.call("eventName", [1, 2, 3]). It was updated only for server-side API as for RC-2.
  • Added: vehicle.quaternion
  • Added: vehicle.heading
  • Added: "this" to events. It includes "cancel" and "handler" properties. Setting "this.cancel = true" would stop triggering futher events this call.

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
});