<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.rage.mp/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elliot</id>
	<title>RAGE Multiplayer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.rage.mp/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elliot"/>
	<link rel="alternate" type="text/html" href="https://wiki.rage.mp/wiki/Special:Contributions/Elliot"/>
	<updated>2026-06-03T21:46:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Player::setHairColour&amp;diff=8036</id>
		<title>Player::setHairColour</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Player::setHairColour&amp;diff=8036"/>
		<updated>2017-12-18T16:58:04Z</updated>

		<summary type="html">&lt;p&gt;Elliot: fixed function naming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hair color change&lt;br /&gt;
==Parameters==&lt;br /&gt;
* &#039;&#039;&#039;firstColor: &amp;lt;span style=&amp;quot;color:#008017&amp;gt;Number&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;secondColor: &amp;lt;span style=&amp;quot;color:#008017&amp;gt;Number&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;div class=&amp;quot;header&amp;quot; style=&amp;quot;background-color: #408DAE; color: #FFFFFF; border: 2px solid #408DAE;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 10px 10px 10px 10px;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Server-Side&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
player.setHairColor(firstColor, secondColor)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Player_block}}&lt;/div&gt;</summary>
		<author><name>Elliot</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Changelog&amp;diff=8026</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Changelog&amp;diff=8026"/>
		<updated>2017-12-18T10:09:46Z</updated>

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