<?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=RoboN1X</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=RoboN1X"/>
	<link rel="alternate" type="text/html" href="https://wiki.rage.mp/wiki/Special:Contributions/RoboN1X"/>
	<updated>2026-07-18T18:28:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerEnterVehicle&amp;diff=18056</id>
		<title>PlayerEnterVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerEnterVehicle&amp;diff=18056"/>
		<updated>2019-09-03T14:52:44Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: Undo revision 18041 by Mentanding (talk) -- This is a server side example section therefore uses of outputChatBox server function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player entered vehicle.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerEnterVehicle on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
*&#039;&#039;&#039;Known issue&#039;&#039;&#039;: Client side this event is triggered when the player starts to enter the vehicle and not once they&#039;ve completely sat down. This also causes the seat parameter to return &#039;undefined&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - The [[:Category:Player API|player]] which entered vehicle.&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - The current [[:Category:Vehicle API|vehicle]] the player is sitting in.&lt;br /&gt;
* &#039;&#039;&#039;seat&#039;&#039;&#039;: {{RageType|Number}} - The seat ID the player sits down on.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs chat message, when player is in the car.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerEnterVehicleHandler(player, vehicle, seat) {&lt;br /&gt;
	player.outputChatBox(`${player.name} got into the car with ID: ${vehicle.id}. Seat: ${seat}`);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
mp.events.add(&amp;quot;playerEnterVehicle&amp;quot;, playerEnterVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerEnterVehicleDelegate(Vehicle vehicle, int seatId);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039; - vehicle &#039;&#039;&#039;RAGE.Elements.Vehicle&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;seatId&#039;&#039;&#039; - the id of the seat, expects&#039;&#039;&#039;System.Int32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below sends a chat message to play when they enter a vehicle, showing whether they are driver or passenger.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerEnterVehicle += OnPlayerEnterVehicle;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerEnterVehicle(RAGE.Elements.Vehicle vehicle, int seatId, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    if (seatId == -1)&lt;br /&gt;
    {&lt;br /&gt;
        RAGE.Chat.Output(&amp;quot;You got in the driver&#039;s seat&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        RAGE.Chat.Output(&amp;quot;You got in a passenger seat&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - The current [[:Category:Vehicle API|vehicle]] the player entered.&lt;br /&gt;
* &#039;&#039;&#039;seat&#039;&#039;&#039;: {{RageType|Number}} - The seat ID the player sits down on.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerEnterVehicleHandler(vehicle, seat) {&lt;br /&gt;
   mp.gui.chat.push(`You got into the car with ID: ${vehicle.id}. Seat: ${seat}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterVehicle&amp;quot;, playerEnterVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Template:ClientsideCsJsFunction&amp;diff=17673</id>
		<title>Template:ClientsideCsJsFunction</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Template:ClientsideCsJsFunction&amp;diff=17673"/>
		<updated>2019-05-24T14:40:22Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: Copying better format from Template:ClientsideCsJsEvent&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1 style=&amp;quot;padding: 4px 0px; border-bottom: 2px solid #ff704d; margin: 2px 0px 0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: left; width: 50%;&amp;quot;&amp;gt;Client-Side&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right; width: 50%; text-align: right; color: #ff704d;&amp;quot;&amp;gt;Function&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float: right; margin: 0px; border-top: 2px solid #eaecf0; border-right: 6px solid #eaecf0; border-bottom: 2px solid #eaecf0; border-left: 2px solid #eaecf0; background-color: #f8f9fa;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! [[File:c.png|30px|link=#{{{1|C#_Syntax}}}]]&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color: #8A2BE2&amp;quot;&amp;gt;C#&amp;lt;/span&amp;gt;&lt;br /&gt;
! [[File:js.png|25px|link=#{{{2|JavaScript_Syntax}}}]]&amp;amp;nbsp;JavaScript&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Template:ClientSideJS&amp;diff=17672</id>
		<title>Template:ClientSideJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Template:ClientSideJS&amp;diff=17672"/>
		<updated>2019-05-24T14:35:17Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: old to new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:ClientsideJsFunction]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Template:ClientSideEventJS&amp;diff=17671</id>
		<title>Template:ClientSideEventJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Template:ClientSideEventJS&amp;diff=17671"/>
		<updated>2019-05-24T14:34:46Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: old to new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:ClientsideJsEvent]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Note_Template&amp;diff=17670</id>
		<title>Note Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Note_Template&amp;diff=17670"/>
		<updated>2019-05-24T14:27:05Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: RoboN1X moved page Note Template to Help:Note Template: non main topic of this wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Help:Note Template]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Help:Note_Template&amp;diff=17669</id>
		<title>Help:Note Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Help:Note_Template&amp;diff=17669"/>
		<updated>2019-05-24T14:27:05Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: RoboN1X moved page Note Template to Help:Note Template: non main topic of this wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|This is a warning note.}}&lt;br /&gt;
&lt;br /&gt;
{{info|This is a info note.}}&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=GuiReady&amp;diff=17668</id>
		<title>GuiReady</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=GuiReady&amp;diff=17668"/>
		<updated>2019-05-24T14:13:47Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gets triggered when RAGE.Ui.DefaultWindow gets loaded and ready.&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnGuiReadyDelegate();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
&#039;&#039;This event requires no parameters&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnGuiReady += OnGuiReady;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnGuiReady()&lt;br /&gt;
{&lt;br /&gt;
    RAGE.Chat.Output(&amp;quot;Default window ready&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;guiReady&amp;quot;, eventHandler);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;eventHandler&#039;&#039;&#039; is a function&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
&#039;&#039;This event requires no parameters&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;guiReady&amp;quot;, () =&amp;gt; {&lt;br /&gt;
    mp.gui.chat.push(&amp;quot;GUI Ready&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=GuiReady&amp;diff=17667</id>
		<title>GuiReady</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=GuiReady&amp;diff=17667"/>
		<updated>2019-05-24T14:13:19Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gets triggered when RAGE.Ui.DefaultWindow gets loaded and ready.&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnGuiReadyDelegate();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
&#039;&#039;This event requires no parameters&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnGuiReady += OnGuiReady;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnGuiReady()&lt;br /&gt;
{&lt;br /&gt;
    RAGE.Chat.Output(&amp;quot;Default window ready&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;guiReady&amp;quot;, eventHandler);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;eventHandler&#039;&#039;&#039; is a function&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
&#039;&#039;This event requires no parameters&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;guiReady&amp;quot;, () =&amp;gt; {&lt;br /&gt;
    mp.gui.chat.push(&amp;quot;GUI Ready&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityDataChangeByKey&amp;diff=17666</id>
		<title>EntityDataChangeByKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityDataChangeByKey&amp;diff=17666"/>
		<updated>2019-05-24T14:06:52Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClientsideCsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnEntityDataChangeByKey(ulong key, Entity entity, object arg);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;key&#039;&#039;&#039;: key, expects &#039;&#039;&#039;System.UInt64&#039;&#039;&#039; type.&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039;: entity, expects &#039;&#039;&#039;RAGE.Elements.Entity&#039;&#039;&#039; type.&lt;br /&gt;
* &#039;&#039;&#039;arg&#039;&#039;&#039;: arg, expects &#039;&#039;&#039;System.Object&#039;&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below shows up a message for a player with the key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.EnableKeyDataChangeEvent = true;&lt;br /&gt;
Events.OnEntityDataChangeByKey += OnEntityDataChangeByKey;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnEntityDataChangeByKey(ulong key, RAGE.Elements.Entity entity, object arg)&lt;br /&gt;
{&lt;br /&gt;
    RAGE.Chat.Output($&amp;quot;{key}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Events::addDataHandler]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Entity API]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EventTriggeredByKey&amp;diff=17665</id>
		<title>EventTriggeredByKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EventTriggeredByKey&amp;diff=17665"/>
		<updated>2019-05-24T14:05:51Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClientsideCsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnEventTriggeredByKeyDelegate(ulong key, object[] args, CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;key&#039;&#039;&#039; - expects &#039;&#039;&#039;System.UInt64&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;args&#039;&#039;&#039; - expects &#039;&#039;&#039;System.Object&#039;&#039;&#039; Array&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039; - expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below does nothing on invoke of event&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.EnableKeyRemoteEvent = true;&lt;br /&gt;
Events.OnEventTriggeredByKey += OnEventTriggeredByKey;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnEventTriggeredByKey(ulong key, object[] args, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    //do something epic&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EventTriggeredByKey&amp;diff=17664</id>
		<title>EventTriggeredByKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EventTriggeredByKey&amp;diff=17664"/>
		<updated>2019-05-24T14:04:42Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClientsideCsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnEventTriggeredByKeyDelegate(ulong key, object[] args, CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;key&#039;&#039;&#039; - expects &#039;&#039;&#039;System.UInt64&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;args&#039;&#039;&#039; - expects &#039;&#039;&#039;System.Object&#039;&#039;&#039; Array&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039; - expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below does nothing on invoke of event&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.EnableKeyRemoteEvent = true;&lt;br /&gt;
Events.OnEventTriggeredByKey += OnEventTriggeredByKey;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnEventTriggeredByKey(ulong key, object[] args, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    //do something epic&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Events::addEventHandler|addEventHandler]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=ClickWithRaycast&amp;diff=17663</id>
		<title>ClickWithRaycast</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=ClickWithRaycast&amp;diff=17663"/>
		<updated>2019-05-24T14:03:34Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClientsideCsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnClickWithRaycastDelegate(int x, int y, bool up, bool right, float relativeX, float relativeY, Vector3 worldPos, int entityHandle);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;x&#039;&#039;&#039; - expects &#039;&#039;&#039;System.Int32&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;y&#039;&#039;&#039; - expects &#039;&#039;&#039;System.Int32&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;up&#039;&#039;&#039; - expects &#039;&#039;&#039;System.Boolean&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;right&#039;&#039;&#039; - expects &#039;&#039;&#039;System.Boolean&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;relativeX&#039;&#039;&#039; - expects &#039;&#039;&#039;System.Single&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;relativeY&#039;&#039;&#039; - expects &#039;&#039;&#039;System.Single&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;worldPos&#039;&#039;&#039; - the position in the world, expects &#039;&#039;&#039;RAGE.Vector3 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;entityHandle&#039;&#039;&#039; - the handle of the entity, expects &#039;&#039;&#039;System.Int32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below does nothing on invoke of event&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnClickWithRaycast += OnClickWithRaycast;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnClickWithRaycast(int x, int y, bool up, bool right, float relativeX, float relativeY, RAGE.Vector3 worldPos, int entityHandle)&lt;br /&gt;
{&lt;br /&gt;
    //add something beast here&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Template:Blip_function&amp;diff=17662</id>
		<title>Template:Blip function</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Template:Blip_function&amp;diff=17662"/>
		<updated>2019-05-24T13:53:59Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: marked as deletion category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:Delete]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Template:Blip_functions_serverside&amp;diff=17661</id>
		<title>Template:Blip functions serverside</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Template:Blip_functions_serverside&amp;diff=17661"/>
		<updated>2019-05-24T13:53:44Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: marked as deletion category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:Delete]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Blip::sprite&amp;diff=17660</id>
		<title>Blip::sprite</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Blip::sprite&amp;diff=17660"/>
		<updated>2019-05-24T13:53:01Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This function is used to change the blip sprite.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blip.sprite = 40;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This will change a blip to a house.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCode|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
let createdBlip = mp.blips.new(1, new mp.Vector3(0, 0, 0));&lt;br /&gt;
&lt;br /&gt;
createdBlip.sprite = 40;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Blip sprites==&lt;br /&gt;
{{Blips_model}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Blip_definition}}&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Template:Checkpoint_function&amp;diff=17659</id>
		<title>Template:Checkpoint function</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Template:Checkpoint_function&amp;diff=17659"/>
		<updated>2019-05-24T13:51:57Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: marked as deletion category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:Delete]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Template:ColshapePool_block&amp;diff=17658</id>
		<title>Template:ColshapePool block</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Template:ColshapePool_block&amp;diff=17658"/>
		<updated>2019-05-24T13:51:32Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: marked as deletion category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:Delete]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Vehicle::rotation&amp;diff=17657</id>
		<title>Vehicle::rotation</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Vehicle::rotation&amp;diff=17657"/>
		<updated>2019-05-24T13:50:05Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This property is being used to get or set vehicle rotation.&lt;br /&gt;
&lt;br /&gt;
==Getter==&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#008017&amp;gt;Vector3&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Setter==&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#008017&amp;gt;Vector3&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
{{ServersideCode|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
let rotation = vehicle.rotation;&lt;br /&gt;
vehicle.rotation = new mp.Vector3(0, 0, 90);&lt;br /&gt;
console.log(vehicle.rotation.x, vehicle.rotation.y, vehicle.rotation.z);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Vehicle_definition}}&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Template:Entity_block&amp;diff=17656</id>
		<title>Template:Entity block</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Template:Entity_block&amp;diff=17656"/>
		<updated>2019-05-24T13:49:45Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: marked as deletion category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:Delete]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityDataChange&amp;diff=17655</id>
		<title>EntityDataChange</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityDataChange&amp;diff=17655"/>
		<updated>2019-05-24T13:41:30Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This event is replaced with [[Events::addDataHandler|addDataHandler function]] as of RAGE MP version 0.3.7}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Other player data changed&lt;br /&gt;
mp.events.add(&#039;entityDataChange&#039;, (entity, key, value) =&amp;gt; {&lt;br /&gt;
    if(entity.type == &amp;quot;player&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
        mp.gui.chat.push(&amp;quot;Entitydata has been changed!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Deprecated]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityDataChange&amp;diff=17654</id>
		<title>EntityDataChange</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityDataChange&amp;diff=17654"/>
		<updated>2019-05-24T13:41:15Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This event is replaced with [[Events::addDataHandler|addDataHandler function]] as of RAGE MP version 0.3.7}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Other player data changed&lt;br /&gt;
mp.events.add(&#039;entityDataChange&#039;, (entity, key, value) =&amp;gt; {&lt;br /&gt;
    if(entity.type == &amp;quot;player&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
        mp.gui.chat.push(&amp;quot;Entitydata has been changed!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Deprecated]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityDataChange&amp;diff=17653</id>
		<title>EntityDataChange</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityDataChange&amp;diff=17653"/>
		<updated>2019-05-24T13:40:38Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This event is replaced with [[Events::addDataHandler]] as of RAGEMP version 0.3.7.}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Other player data changed&lt;br /&gt;
mp.events.add(&#039;entityDataChange&#039;, (entity, key, value) =&amp;gt; {&lt;br /&gt;
    if(entity.type == &amp;quot;player&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
        mp.gui.chat.push(&amp;quot;Entitydata has been changed!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Deprecated]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=AddDataHandler&amp;diff=17652</id>
		<title>AddDataHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=AddDataHandler&amp;diff=17652"/>
		<updated>2019-05-24T13:38:10Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: Merged with new page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Events::addDataHandler]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Events::addDataHandler&amp;diff=17651</id>
		<title>Events::addDataHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Events::addDataHandler&amp;diff=17651"/>
		<updated>2019-05-24T13:37:52Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: Merged from old page https://wiki.rage.mp/index.php?title=AddDataHandler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Function is used to alert client-side with entity&#039;s data change for a specified variable&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsFunction}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RAGE.events.AddDataHandler(string name, OnEntityDataChangeDelegate handler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;handler&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.addDataHandler(key, handlerFunction);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;key&#039;&#039;&#039;: {{RageType|String}} - Shared data key&#039;s name.&lt;br /&gt;
* &#039;&#039;&#039;handlerFunction&#039;&#039;&#039;: Handler function with parameters:&lt;br /&gt;
** &#039;&#039;&#039;entity&#039;&#039;&#039;: {{RageType|Entity}} - The [[:Category:Entity API|entity]] that had the data change.&lt;br /&gt;
** &#039;&#039;&#039;value&#039;&#039;&#039;: {{RageType|Any}} - The new value of the data key.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    Handles testVar change.&lt;br /&gt;
    Do &amp;quot;player.data.testVar = 1234;&amp;quot; on server-side to trigger this.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
mp.events.addDataHandler(&amp;quot;testVar&amp;quot;, (entity, value) =&amp;gt; {&lt;br /&gt;
    mp.gui.chat.push(`testVar changed to ${value} on entity ${entity.handle}.`);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example sets nickname for player and triggers players&#039; clientside data handler&lt;br /&gt;
&lt;br /&gt;
{{ServersideCode|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.addCommand(&#039;setNick&#039;, (player, nickname) =&amp;gt; {&lt;br /&gt;
  player.setVariable(&#039;oldNick&#039;, player.name);&lt;br /&gt;
  player.name = nickname;&lt;br /&gt;
  player.setVariable(&#039;newNick&#039;, nickname);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCode|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.addDataHandler(&#039;newNick&#039;, function (entity, value) {&lt;br /&gt;
  if (entity.type === &#039;player&#039;) mp.gui.chat.push(`${player.getVariable(&#039;oldNick&#039;)} has changed nickname to ${value}`)&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[EntityDataChangeByKey]]&lt;br /&gt;
&lt;br /&gt;
{{Event_functions}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Entity API]]&lt;br /&gt;
[[Category:Shared Property]]&lt;br /&gt;
[[Category:Client-side Function]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerExitVehicle&amp;diff=17650</id>
		<title>PlayerExitVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerExitVehicle&amp;diff=17650"/>
		<updated>2019-05-24T13:14:54Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player went out from a vehicle.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerExitVehicle on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - [[:Category:Player API|player]], which left the vehicle&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - [[:Category:Vehicle API|vehicle]], which was left by the player.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs a console chat message, when player went out from vehicle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerExitVehicleHandler(player, vehicle) {&lt;br /&gt;
    console.log(`${player.name} when out from vehicle with ID: ${vehicle.id}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerExitVehicle&amp;quot;, playerExitVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[playerLeaveVehicle]]&lt;br /&gt;
&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerLeaveVehicle&amp;diff=17649</id>
		<title>PlayerLeaveVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerLeaveVehicle&amp;diff=17649"/>
		<updated>2019-05-24T13:14:22Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Triggers when the player exits the vehicle.&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerLeaveVehicleDelegate();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
&#039;&#039;This event has no parameters&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below send a chat message to the player when they exit a vehicle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerLeaveVehicle += OnPlayerLeaveVehicle();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerLeaveVehicle()&lt;br /&gt;
{&lt;br /&gt;
    RAGE.Chat.Output(&amp;quot;You exited a vehicle&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs chat message, when player start leave from the car.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerLeaveVehicle&amp;quot;, () =&amp;gt; {&lt;br /&gt;
    mp.gui.chat.push(&amp;quot;Player start leave the vehicle&amp;quot;);&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Development_with_Visual_Studio_Code&amp;diff=17646</id>
		<title>Development with Visual Studio Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Development_with_Visual_Studio_Code&amp;diff=17646"/>
		<updated>2019-05-23T15:10:26Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial explains a basic to develop &amp;amp; debug a RAGE-MP resource / server-side script using [[wikipedia:Visual_Studio_Code|VSCode]] on C# bridge&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: it is not required for you to compile the .cs scripts to run the resource, you can let the server compile them when server starts.&lt;br /&gt;
[[#Client-side|See the comparison below]].&lt;br /&gt;
&lt;br /&gt;
This tutorial will mainly describe about compiling your server-side resource into &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; binary which you can attach a debugger on it. A similar step can be also done in [[wikipedia:Visual Studio|Visual Studio IDE]], except the launch &amp;amp; task part.&lt;br /&gt;
&lt;br /&gt;
== Requirement ==&lt;br /&gt;
* Visual Studio Code - [https://code.visualstudio.com/download Download]&lt;br /&gt;
* .NET Core SDK version 2.2 - [https://dotnet.microsoft.com/download/dotnet-core/2.2 Download] (As of RAGE:MP 0.3.7, Server side uses version 2.0.3 and Client side uses version 2.2.0 so it&#039;s safe to install the latest which are backward compatible)&lt;br /&gt;
* C# Extension for Visual Studio Code powered by OmniSharp - [https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp Download (in Visual Studio Code)]&lt;br /&gt;
&lt;br /&gt;
== Setting Up Project ==&lt;br /&gt;
# Open Visual Studio Code on &#039;&#039;&#039;bridge/resources&#039;&#039;&#039; folder&lt;br /&gt;
# Create a new folder, example &#039;&#039;&#039;mygamemode&#039;&#039;&#039; then select the folder&lt;br /&gt;
# Open the terminal &amp;lt;kbd&amp;gt;&#039;&#039;&#039;Ctrl&#039;&#039;&#039;&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;&#039;&#039;&#039;`&#039;&#039;&#039;&amp;lt;/kbd&amp;gt; (control + tilde)&lt;br /&gt;
# Enter &amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;code&amp;gt;dotnet new classlib -f netcoreapp2&amp;lt;/code&amp;gt; to create a new .NET Core class library&lt;br /&gt;
# A &amp;lt;tt&amp;gt;.csproj&amp;lt;/tt&amp;gt; file will be created, click to edit it&lt;br /&gt;
## [https://docs.microsoft.com/en-us/dotnet/standard/frameworks#how-to-specify-target-frameworks Change the TargetFramework] to &amp;lt;code&amp;gt;netcoreapp2.0&amp;lt;/code&amp;gt;&lt;br /&gt;
## [https://docs.microsoft.com/en-us/dotnet/core/versions/selection#self-contained-deployments-include-the-selected-runtime Set the RuntimeFrameworkVersion] to 2.0.3&lt;br /&gt;
## Include &amp;lt;tt&amp;gt;GTANetworkAPI&amp;lt;/tt&amp;gt; by adding reference to &#039;&#039;&#039;bridge/runtime/Bootstrapper.dll&#039;&#039;&#039;&lt;br /&gt;
## Your &amp;lt;tt&amp;gt;mygamemode.csproj&amp;lt;/tt&amp;gt; should look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Project Sdk=&amp;quot;Microsoft.NET.Sdk&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;
    &amp;lt;TargetFramework&amp;gt;netcoreapp2.0&amp;lt;/TargetFramework&amp;gt;&lt;br /&gt;
    &amp;lt;RuntimeFrameworkVersion&amp;gt;2.0.3&amp;lt;/RuntimeFrameworkVersion&amp;gt;&lt;br /&gt;
  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;PropertyGroup Condition=&amp;quot;&#039;$(Configuration)|$(Platform)&#039;==&#039;Debug|AnyCPU&#039;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch&amp;gt;None&amp;lt;/ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch&amp;gt;&lt;br /&gt;
  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ItemGroup&amp;gt;&lt;br /&gt;
    &amp;lt;Reference Include=&amp;quot;GTANetworkAPI&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;HintPath&amp;gt;..\..\runtime\Bootstrapper.dll&amp;lt;/HintPath&amp;gt; &amp;lt;!-- Or absolute path to your X:/RAGEMP/server-files/bridge/runtime/Bootstrapper.dll --&amp;gt;&lt;br /&gt;
      &amp;lt;Private Condition=&amp;quot;&#039;$(Configuration)|$(Platform)&#039;==&#039;Release|AnyCPU&#039;&amp;quot;&amp;gt;False&amp;lt;/Private&amp;gt;&lt;br /&gt;
    &amp;lt;/Reference&amp;gt;&lt;br /&gt;
  &amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Project&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save the files and enter in terminal: &amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;code&amp;gt;dotnet restore&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Setting up Launch and Task command ==&lt;br /&gt;
Visual Studio Code comes with two kind of project commands: &#039;&#039;&#039;launch.json&#039;&#039;&#039; and &#039;&#039;&#039;tasks.json&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These commands are saved inside a .vscode folder of your project, so you have to do this on every different projects you created.&lt;br /&gt;
&lt;br /&gt;
=== launch.json ===&lt;br /&gt;
The launch command is used for running server debug with &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; key (or from &#039;&#039;&#039;Debug&#039;&#039;&#039; menu) later&lt;br /&gt;
&lt;br /&gt;
# Proceed to Debugging Tab (&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt;)&lt;br /&gt;
# Click the Gear button (next to DEBUG button) to configure the &amp;lt;tt&amp;gt;launch.json&amp;lt;/tt&amp;gt;, select &#039;&#039;.NET Core&#039;&#039; or &#039;&#039;Others&#039;&#039;&lt;br /&gt;
# Modify the configuration like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    // Use IntelliSense to learn about possible attributes.&lt;br /&gt;
    // Hover to view descriptions of existing attributes.&lt;br /&gt;
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.2.0&amp;quot;,&lt;br /&gt;
    &amp;quot;configurations&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;RAGE-MP Launch (build)&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;coreclr&amp;quot;,&lt;br /&gt;
            &amp;quot;request&amp;quot;: &amp;quot;launch&amp;quot;,&lt;br /&gt;
            &amp;quot;preLaunchTask&amp;quot;: &amp;quot;compile&amp;quot;,&lt;br /&gt;
            &amp;quot;program&amp;quot;: &amp;quot;server.exe&amp;quot;, // The RAGEMP server executable&lt;br /&gt;
            &amp;quot;args&amp;quot;: [],&lt;br /&gt;
            &amp;quot;cwd&amp;quot;: &amp;quot;${workspaceFolder}/../../../&amp;quot;, // Or absolute path to your X:/RAGEMP/server-files/&lt;br /&gt;
            &amp;quot;stopAtEntry&amp;quot;: false,&lt;br /&gt;
            &amp;quot;console&amp;quot;: &amp;quot;externalTerminal&amp;quot;,&lt;br /&gt;
            &amp;quot;internalConsoleOptions&amp;quot;: &amp;quot;neverOpen&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save the &amp;lt;tt&amp;gt;launch.json&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
=== tasks.json ===&lt;br /&gt;
We will create two kind of tasks:&lt;br /&gt;
* &#039;&#039;&#039;compile&#039;&#039;&#039; - to compile the resource into &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;, required for debugging in launch task we created before (located in &#039;&#039;&#039;bin/Debug/&#039;&#039;&#039; by default)&lt;br /&gt;
* &#039;&#039;&#039;release&#039;&#039;&#039; - to build the end product of the resource with optimized &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; ready to deploy &amp;amp; run in real server (located in &#039;&#039;&#039;bin/Release/&#039;&#039;&#039; by default)&lt;br /&gt;
&lt;br /&gt;
You can run these tasks by selecting &#039;&#039;&#039;Terminal&#039;&#039;&#039;&amp;gt;&#039;&#039;&#039;Run Task...&#039;&#039;&#039; later time.&lt;br /&gt;
&lt;br /&gt;
# Select on menu bar &#039;&#039;&#039;Terminal&#039;&#039;&#039;&amp;gt;&#039;&#039;&#039;Configure Tasks...&#039;&#039;&#039;, select &#039;&#039;.NET Core&#039;&#039; or &#039;&#039;Others&#039;&#039;&lt;br /&gt;
# Modify the configuration like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    // See https://go.microsoft.com/fwlink/?LinkId=733558&lt;br /&gt;
    // for the documentation about the tasks.json format&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;2.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;tasks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;compile&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;shell&amp;quot;,&lt;br /&gt;
            &amp;quot;command&amp;quot;: &amp;quot;dotnet build&amp;quot;,&lt;br /&gt;
            &amp;quot;presentation&amp;quot;: {&lt;br /&gt;
                &amp;quot;reveal&amp;quot;: &amp;quot;silent&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;problemMatcher&amp;quot;: &amp;quot;$msCompile&amp;quot;,&lt;br /&gt;
            &amp;quot;group&amp;quot;: {&lt;br /&gt;
                &amp;quot;kind&amp;quot;: &amp;quot;build&amp;quot;,&lt;br /&gt;
                &amp;quot;isDefault&amp;quot;: true&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;promptOnClose&amp;quot;: true&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;release&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;shell&amp;quot;,&lt;br /&gt;
            &amp;quot;command&amp;quot;: &amp;quot;dotnet build -c Release&amp;quot;,&lt;br /&gt;
            &amp;quot;problemMatcher&amp;quot;: &amp;quot;$msCompile&amp;quot;,&lt;br /&gt;
            &amp;quot;group&amp;quot;: &amp;quot;build&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save the &amp;lt;tt&amp;gt;tasks.json&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Resource ==&lt;br /&gt;
Now you can create your script in &#039;&#039;&#039;Class1.cs&#039;&#039;&#039;, rename it if you wish (make sure the class name is also renamed)&lt;br /&gt;
&lt;br /&gt;
=== Writing the gamemode ===&lt;br /&gt;
# Add the C# server-side bridge dependency with &amp;lt;code&amp;gt;using GTANetworkAPI&amp;lt;/code&amp;gt;&lt;br /&gt;
# Extends your class to &amp;lt;tt&amp;gt;Script&amp;lt;/tt&amp;gt; API like &amp;lt;code&amp;gt;public class Class1 : Script&amp;lt;/code&amp;gt;&lt;br /&gt;
# Add &amp;lt;code&amp;gt;Hello World!&amp;lt;/code&amp;gt; code in the entry point or class constructor of the script, your code would look like this:&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using GTANetworkAPI;&lt;br /&gt;
&lt;br /&gt;
namespace mygamemode&lt;br /&gt;
{&lt;br /&gt;
    public class Class1 : Script&lt;br /&gt;
    {&lt;br /&gt;
        public Class1()&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;Hello World!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Configuring resource meta file ===&lt;br /&gt;
# Create a new file [https://wiki.gtanet.work/index.php?title=meta.xml meta.xml] in your resource folder (if not exist)&lt;br /&gt;
# Put some resource information, and add the &amp;lt;tt&amp;gt;mygamemode.dll&amp;lt;/tt&amp;gt; file&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info name=&amp;quot;My Gamemode&amp;quot; description=&amp;quot;My C# bridge gamemode Resource&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Uncompiled: --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- &amp;lt;script src=&amp;quot;Class1.cs&amp;quot; /&amp;gt; --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Compiled: --&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;bin/Debug/netcoreapp2.0/mygamemode.dll&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that after running compile task, your &amp;lt;tt&amp;gt;.cs&amp;lt;/tt&amp;gt; scripts will be compiled into &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; by default located on &amp;lt;code&amp;gt;bin/Debug/netcoreapp2.0/&amp;lt;/code&amp;gt; folder relative to your resource directory.&lt;br /&gt;
&lt;br /&gt;
If you are not sure why your &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; does not work, try running the server with raw &amp;lt;tt&amp;gt;Class1.cs&amp;lt;/tt&amp;gt; source code (uncomment the Uncompiled and comment the Compiled script tag).&lt;br /&gt;
&lt;br /&gt;
=== Configuring bridge setting ===&lt;br /&gt;
# Edit &#039;&#039;&#039;bridge/[https://wiki.gtanet.work/index.php?title=settings.xml settings.xml]&#039;&#039;&#039; file in your server folder, add your resource like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;config xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;acl_enabled&amp;gt;false&amp;lt;/acl_enabled&amp;gt;&lt;br /&gt;
  &amp;lt;resource src=&amp;quot;mygamemode&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save the files.&lt;br /&gt;
&lt;br /&gt;
== Debugging the Script ==&lt;br /&gt;
When you are set up ready, it&#039;s time to build the resource!&lt;br /&gt;
&lt;br /&gt;
If there are errors on compilation, try to close the folder and re-open it in your Visual Studio Code, usually the OmniSharp server need to refresh new files.&lt;br /&gt;
&lt;br /&gt;
You can also try &amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;code&amp;gt;dotnet clean&amp;lt;/code&amp;gt; in case you have changes on the referenced files (i.e. Bootstrapper update).&lt;br /&gt;
&lt;br /&gt;
Since we have not added any gameplay code in this tutorial, we do not have to play &amp;amp; join the server.&lt;br /&gt;
&lt;br /&gt;
# Open your script Class1.cs, add a code breakpoint by clicking on the left side of the line number&lt;br /&gt;
# For example, you may want to put a pause before the server prints &amp;quot;Hello World&amp;quot; line&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot; highlight=&amp;quot;10&amp;quot; start=&amp;quot;8&amp;quot; line&amp;gt;&lt;br /&gt;
        public Class1()&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;Hello World!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Go to Debug tab&lt;br /&gt;
# Hit &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; button&lt;br /&gt;
# Your server will run, and the server threads will pause on your breakpoint line&lt;br /&gt;
# Click &#039;&#039;&#039;► Continue&#039;&#039;&#039; button (&amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt;) on top of your Visual Studio window&lt;br /&gt;
# You will get output &amp;quot;Hello World&amp;quot; in your server console.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading resources..&lt;br /&gt;
-&amp;gt; Starting mygamemode resource..&lt;br /&gt;
mygamemode: loading scripts...&lt;br /&gt;
mygamemode: instantiating mygamemode.Class1..&lt;br /&gt;
Hello world!&lt;br /&gt;
-&amp;gt; Resource mygamemode started!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Close the server/hit the &#039;&#039;&#039;■ Stop&#039;&#039;&#039; debugging button (&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
After you made changes to your script, you can always hit &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; again to restart debugging.&lt;br /&gt;
&lt;br /&gt;
== Deploying the Resource ==&lt;br /&gt;
Now that you have learn how to build and debug your script, later when your resource is ready, you may want to compile it with the Release task to deploy an optimized binary.&lt;br /&gt;
&lt;br /&gt;
Simply, click on menu &#039;&#039;&#039;Terminal&#039;&#039;&#039;&amp;gt;&#039;&#039;&#039;Run Task...&#039;&#039;&#039; then select &#039;&#039;&#039;release&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can find your &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; in &amp;lt;code&amp;gt;bin/Release/netcoreapp2.0/&amp;lt;/code&amp;gt; as you may notice it contains cleaner files, since we configured to not copy the &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; files from runtime folder with the &amp;lt;code&amp;gt;&amp;lt;Private&amp;gt;&amp;lt;/code&amp;gt; option.&lt;br /&gt;
This build will be not debugable as the symbols are already removed and optimized for run time.&lt;br /&gt;
&lt;br /&gt;
Proceed to upload these &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; file to your server, and be sure to set your &#039;&#039;&#039;meta.xml&#039;&#039;&#039; differently as it will be using the non-debugged version.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info name=&amp;quot;My Gamemode&amp;quot; description=&amp;quot;My C# bridge gamemode Resource&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;bin/Release/netcoreapp2.0/mygamemode.dll&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to have the &amp;lt;tt&amp;gt;.pdb&amp;lt;/tt&amp;gt; file together with it, it will create useful traceable dump in case your code causes server crash during runtime, even though it is not really possible to debug it.&lt;br /&gt;
&lt;br /&gt;
== Client-side ==&lt;br /&gt;
You can also do similar thing to work with client-side scripts, except you do not deal with launch or task commands. However, please note that in RAGE MP Client-side C-Sharp scripts are NOT compiled nor build into &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;. Which means you cannot debug it like in this tutorial.&lt;br /&gt;
&lt;br /&gt;
You can still make the project, reference to &#039;&#039;&#039;rage-sharp.dll&#039;&#039;&#039; in &#039;&#039;&#039;RAGEMP/dotnet/&#039;&#039;&#039; folder to get IntelliSense auto completion benefit in VSCode, similar way we did on Bootstrapper:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;ItemGroup&amp;gt;&lt;br /&gt;
    &amp;lt;Reference Include=&amp;quot;RAGE&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;HintPath&amp;gt;..\..\..\dotnet\rage-sharp.dll&amp;lt;/HintPath&amp;gt; &amp;lt;!-- Or absolute path to your X:/RAGEMP/dotnet/rage-sharp.dll --&amp;gt;&lt;br /&gt;
      &amp;lt;Private&amp;gt;False&amp;lt;/Private&amp;gt;&lt;br /&gt;
    &amp;lt;/Reference&amp;gt;&lt;br /&gt;
  &amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And you just have to save the &amp;lt;tt&amp;gt;.cs&amp;lt;/tt&amp;gt; file, they will be downloaded to your player&#039;s RAGE-MP client and will be compiled as how you configured it.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|+ A brief comparison how C# works in RAGE-MP&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! Server-side Bridge (Compiled)&lt;br /&gt;
! Server-side (Raw)&lt;br /&gt;
! Client-side&lt;br /&gt;
|-&lt;br /&gt;
! Output&lt;br /&gt;
| [[wikipedia:Common Intermediate Language|IL]] &amp;quot;binary&amp;quot; (&amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | C-Sharp source code (&amp;lt;tt&amp;gt;.cs&amp;lt;/tt&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
! Dependency&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;lt;tt&amp;gt;Bootstrapper.dll&amp;lt;/tt&amp;gt; runtimes &amp;amp; &amp;lt;tt&amp;gt;bridge.dll&amp;lt;/tt&amp;gt; plugin&lt;br /&gt;
| &amp;lt;tt&amp;gt;rage-sharp.dll&amp;lt;/tt&amp;gt; runtimes&lt;br /&gt;
|-&lt;br /&gt;
! Compile Time&lt;br /&gt;
| By server developer with C# Compiler (in SDK)&lt;br /&gt;
| By &amp;lt;tt&amp;gt;server.exe&amp;lt;/tt&amp;gt;&lt;br /&gt;
| By &amp;lt;tt&amp;gt;ragemp_v.exe&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! .NET Core Version&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | 2.0.3 &amp;lt;sup&amp;gt;1)&amp;lt;/sup&amp;gt;&lt;br /&gt;
| 2.2.0 &amp;lt;sup&amp;gt;2)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Debugging&lt;br /&gt;
| Developer&#039;s debugger tool choice (in SDK)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | RAGE MP app built in error handling &amp;amp; logging&lt;br /&gt;
|}&lt;br /&gt;
Notes:&lt;br /&gt;
* &amp;lt;sup&amp;gt;1)&amp;lt;/sup&amp;gt; As of 0.3.7 based on &amp;lt;tt&amp;gt;.version&amp;lt;/tt&amp;gt; file found in &#039;&#039;&#039;RAGEMP/server-files/bridge/runtime/&#039;&#039;&#039; folder&lt;br /&gt;
* &amp;lt;sup&amp;gt;2)&amp;lt;/sup&amp;gt; As of 0.3.7 based on &amp;lt;tt&amp;gt;.version&amp;lt;/tt&amp;gt; file found in &#039;&#039;&#039;RAGEMP/dotnet/&#039;&#039;&#039; folder&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Getting Started with Development]]&lt;br /&gt;
* [https://wiki.gtanet.work/index.php?title=Getting_Started_with_Development Getting started with Development on C# Bridge Server]&lt;br /&gt;
* [[Server-side events]] (or in [https://wiki.gtanet.work/index.php?title=Scripting_Events C#] bridge)&lt;br /&gt;
* [[Server-side functions]] (or in [https://wiki.gtanet.work/index.php?title=Server_Scripting_Functions C#] bridge)&lt;br /&gt;
* [[Client-side events]] (or in [[Client-side_CSharp_events|C#]])&lt;br /&gt;
* [[Client-side functions]] (or in [[Client-side_CSharp_functions|C#]])&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=Development_with_Visual_Studio_Code&amp;diff=17645</id>
		<title>Development with Visual Studio Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=Development_with_Visual_Studio_Code&amp;diff=17645"/>
		<updated>2019-05-23T15:07:49Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial explains a basic to develop &amp;amp; debug a RAGE-MP resource / server-side script using [[wikipedia:Visual_Studio_Code|VSCode]] on C# bridge&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: it is not required for you to compile the .cs scripts to run the resource, you can let the server compile them when server starts.&lt;br /&gt;
[[#Client-side|See the comparison below]].&lt;br /&gt;
&lt;br /&gt;
This tutorial will mainly describe about compiling your server-side resource into &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; binary which you can attach a debugger on it. A similar step can be also done in [[wikipedia:Visual Studio]], except the launch &amp;amp; task part.&lt;br /&gt;
&lt;br /&gt;
== Requirement ==&lt;br /&gt;
* Visual Studio Code - [https://code.visualstudio.com/download Download]&lt;br /&gt;
* .NET Core SDK version 2.2 - [https://dotnet.microsoft.com/download/dotnet-core/2.2 Download] (As of RAGE:MP 0.3.7, Server side uses version 2.0.3 and Client side uses version 2.2.0 so it&#039;s safe to install the latest which are backward compatible)&lt;br /&gt;
* C# Extension for Visual Studio Code powered by OmniSharp - [https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp Download (in Visual Studio Code)]&lt;br /&gt;
&lt;br /&gt;
== Setting Up Project ==&lt;br /&gt;
# Open Visual Studio Code on &#039;&#039;&#039;bridge/resources&#039;&#039;&#039; folder&lt;br /&gt;
# Create a new folder, example &#039;&#039;&#039;mygamemode&#039;&#039;&#039; then select the folder&lt;br /&gt;
# Open the terminal &amp;lt;kbd&amp;gt;&#039;&#039;&#039;Ctrl&#039;&#039;&#039;&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;&#039;&#039;&#039;`&#039;&#039;&#039;&amp;lt;/kbd&amp;gt; (control + tilde)&lt;br /&gt;
# Enter &amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;code&amp;gt;dotnet new classlib -f netcoreapp2&amp;lt;/code&amp;gt; to create a new .NET Core class library&lt;br /&gt;
# A &amp;lt;tt&amp;gt;.csproj&amp;lt;/tt&amp;gt; file will be created, click to edit it&lt;br /&gt;
## [https://docs.microsoft.com/en-us/dotnet/standard/frameworks#how-to-specify-target-frameworks Change the TargetFramework] to &amp;lt;code&amp;gt;netcoreapp2.0&amp;lt;/code&amp;gt;&lt;br /&gt;
## [https://docs.microsoft.com/en-us/dotnet/core/versions/selection#self-contained-deployments-include-the-selected-runtime Set the RuntimeFrameworkVersion] to 2.0.3&lt;br /&gt;
## Include &amp;lt;tt&amp;gt;GTANetworkAPI&amp;lt;/tt&amp;gt; by adding reference to &#039;&#039;&#039;bridge/runtime/Bootstrapper.dll&#039;&#039;&#039;&lt;br /&gt;
## Your &amp;lt;tt&amp;gt;mygamemode.csproj&amp;lt;/tt&amp;gt; should look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Project Sdk=&amp;quot;Microsoft.NET.Sdk&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;
    &amp;lt;TargetFramework&amp;gt;netcoreapp2.0&amp;lt;/TargetFramework&amp;gt;&lt;br /&gt;
    &amp;lt;RuntimeFrameworkVersion&amp;gt;2.0.3&amp;lt;/RuntimeFrameworkVersion&amp;gt;&lt;br /&gt;
  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;PropertyGroup Condition=&amp;quot;&#039;$(Configuration)|$(Platform)&#039;==&#039;Debug|AnyCPU&#039;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch&amp;gt;None&amp;lt;/ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch&amp;gt;&lt;br /&gt;
  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ItemGroup&amp;gt;&lt;br /&gt;
    &amp;lt;Reference Include=&amp;quot;GTANetworkAPI&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;HintPath&amp;gt;..\..\runtime\Bootstrapper.dll&amp;lt;/HintPath&amp;gt; &amp;lt;!-- Or absolute path to your /RAGEMP/server-files/bridge/runtime/Bootstrapper.dll --&amp;gt;&lt;br /&gt;
      &amp;lt;Private Condition=&amp;quot;&#039;$(Configuration)|$(Platform)&#039;==&#039;Release|AnyCPU&#039;&amp;quot;&amp;gt;False&amp;lt;/Private&amp;gt;&lt;br /&gt;
    &amp;lt;/Reference&amp;gt;&lt;br /&gt;
  &amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Project&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save the files and enter in terminal: &amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;code&amp;gt;dotnet restore&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Setting up Launch and Task command ==&lt;br /&gt;
Visual Studio Code comes with two kind of project commands: &#039;&#039;&#039;launch.json&#039;&#039;&#039; and &#039;&#039;&#039;tasks.json&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These commands are saved inside a .vscode folder of your project, so you have to do this on every different projects you created.&lt;br /&gt;
&lt;br /&gt;
=== launch.json ===&lt;br /&gt;
The launch command is used for running server debug with &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; key (or from &#039;&#039;&#039;Debug&#039;&#039;&#039; menu) later&lt;br /&gt;
&lt;br /&gt;
# Proceed to Debugging Tab (&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt;)&lt;br /&gt;
# Click the Gear button (next to DEBUG button) to configure the &amp;lt;tt&amp;gt;launch.json&amp;lt;/tt&amp;gt;, select &#039;&#039;.NET Core&#039;&#039; or &#039;&#039;Others&#039;&#039;&lt;br /&gt;
# Modify the configuration like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    // Use IntelliSense to learn about possible attributes.&lt;br /&gt;
    // Hover to view descriptions of existing attributes.&lt;br /&gt;
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.2.0&amp;quot;,&lt;br /&gt;
    &amp;quot;configurations&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;RAGE-MP Launch (build)&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;coreclr&amp;quot;,&lt;br /&gt;
            &amp;quot;request&amp;quot;: &amp;quot;launch&amp;quot;,&lt;br /&gt;
            &amp;quot;preLaunchTask&amp;quot;: &amp;quot;compile&amp;quot;,&lt;br /&gt;
            &amp;quot;program&amp;quot;: &amp;quot;server.exe&amp;quot;, // The RAGEMP server executable&lt;br /&gt;
            &amp;quot;args&amp;quot;: [],&lt;br /&gt;
            &amp;quot;cwd&amp;quot;: &amp;quot;${workspaceFolder}/../../../&amp;quot;, // Or absolute path to your /RAGEMP/server-files/&lt;br /&gt;
            &amp;quot;stopAtEntry&amp;quot;: false,&lt;br /&gt;
            &amp;quot;console&amp;quot;: &amp;quot;externalTerminal&amp;quot;,&lt;br /&gt;
            &amp;quot;internalConsoleOptions&amp;quot;: &amp;quot;neverOpen&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save the &amp;lt;tt&amp;gt;launch.json&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
=== tasks.json ===&lt;br /&gt;
We will create two kind of tasks:&lt;br /&gt;
* &#039;&#039;&#039;compile&#039;&#039;&#039; - to compile the resource into &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;, required for debugging in launch task we created before (located in &#039;&#039;&#039;bin/Debug/&#039;&#039;&#039; by default)&lt;br /&gt;
* &#039;&#039;&#039;release&#039;&#039;&#039; - to build the end product of the resource with optimized &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; ready to deploy &amp;amp; run in real server (located in &#039;&#039;&#039;bin/Release/&#039;&#039;&#039; by default)&lt;br /&gt;
&lt;br /&gt;
You can run these tasks by selecting &#039;&#039;&#039;Terminal&#039;&#039;&#039;&amp;gt;&#039;&#039;&#039;Run Task...&#039;&#039;&#039; later time.&lt;br /&gt;
&lt;br /&gt;
# Select on menu bar &#039;&#039;&#039;Terminal&#039;&#039;&#039;&amp;gt;&#039;&#039;&#039;Configure Tasks...&#039;&#039;&#039;, select &#039;&#039;.NET Core&#039;&#039; or &#039;&#039;Others&#039;&#039;&lt;br /&gt;
# Modify the configuration like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    // See https://go.microsoft.com/fwlink/?LinkId=733558&lt;br /&gt;
    // for the documentation about the tasks.json format&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;2.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;tasks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;compile&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;shell&amp;quot;,&lt;br /&gt;
            &amp;quot;command&amp;quot;: &amp;quot;dotnet build&amp;quot;,&lt;br /&gt;
            &amp;quot;presentation&amp;quot;: {&lt;br /&gt;
                &amp;quot;reveal&amp;quot;: &amp;quot;silent&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;problemMatcher&amp;quot;: &amp;quot;$msCompile&amp;quot;,&lt;br /&gt;
            &amp;quot;group&amp;quot;: {&lt;br /&gt;
                &amp;quot;kind&amp;quot;: &amp;quot;build&amp;quot;,&lt;br /&gt;
                &amp;quot;isDefault&amp;quot;: true&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;promptOnClose&amp;quot;: true&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;label&amp;quot;: &amp;quot;release&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;shell&amp;quot;,&lt;br /&gt;
            &amp;quot;command&amp;quot;: &amp;quot;dotnet build -c Release&amp;quot;,&lt;br /&gt;
            &amp;quot;problemMatcher&amp;quot;: &amp;quot;$msCompile&amp;quot;,&lt;br /&gt;
            &amp;quot;group&amp;quot;: &amp;quot;build&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save the &amp;lt;tt&amp;gt;tasks.json&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Resource ==&lt;br /&gt;
Now you can create your script in &#039;&#039;&#039;Class1.cs&#039;&#039;&#039;, rename it if you wish (make sure the class name is also renamed)&lt;br /&gt;
&lt;br /&gt;
=== Writing the gamemode ===&lt;br /&gt;
# Add the C# server-side bridge dependency with &amp;lt;code&amp;gt;using GTANetworkAPI&amp;lt;/code&amp;gt;&lt;br /&gt;
# Extends your class to &amp;lt;tt&amp;gt;Script&amp;lt;/tt&amp;gt; API like &amp;lt;code&amp;gt;public class Class1 : Script&amp;lt;/code&amp;gt;&lt;br /&gt;
# Add &amp;lt;code&amp;gt;Hello World!&amp;lt;/code&amp;gt; code in the entry point or class constructor of the script, your code would look like this:&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using GTANetworkAPI;&lt;br /&gt;
&lt;br /&gt;
namespace mygamemode&lt;br /&gt;
{&lt;br /&gt;
    public class Class1 : Script&lt;br /&gt;
    {&lt;br /&gt;
        public Class1()&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;Hello World!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Configuring resource meta file ===&lt;br /&gt;
# Create a new file [https://wiki.gtanet.work/index.php?title=meta.xml meta.xml] in your resource folder (if not exist)&lt;br /&gt;
# Put some resource information, and add the &amp;lt;tt&amp;gt;mygamemode.dll&amp;lt;/tt&amp;gt; file&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info name=&amp;quot;My Gamemode&amp;quot; description=&amp;quot;My C# bridge gamemode Resource&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Uncompiled: --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- &amp;lt;script src=&amp;quot;Class1.cs&amp;quot; /&amp;gt; --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Compiled: --&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;bin/Debug/netcoreapp2.0/mygamemode.dll&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that after running compile task, your &amp;lt;tt&amp;gt;.cs&amp;lt;/tt&amp;gt; scripts will be compiled into &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; by default located on &amp;lt;code&amp;gt;bin/Debug/netcoreapp2.0/&amp;lt;/code&amp;gt; folder relative to your resource directory.&lt;br /&gt;
&lt;br /&gt;
If you are not sure why your &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; does not work, try running the server with raw &amp;lt;tt&amp;gt;Class1.cs&amp;lt;/tt&amp;gt; source code (uncomment the Uncompiled and comment the Compiled script tag).&lt;br /&gt;
&lt;br /&gt;
=== Configuring bridge setting ===&lt;br /&gt;
# Edit &#039;&#039;&#039;bridge/[https://wiki.gtanet.work/index.php?title=settings.xml settings.xml]&#039;&#039;&#039; file in your server folder, add your resource like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;config xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;acl_enabled&amp;gt;false&amp;lt;/acl_enabled&amp;gt;&lt;br /&gt;
  &amp;lt;resource src=&amp;quot;mygamemode&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Save the files.&lt;br /&gt;
&lt;br /&gt;
== Debugging the Script ==&lt;br /&gt;
When you are set up ready, it&#039;s time to build the resource!&lt;br /&gt;
&lt;br /&gt;
If there are errors on compilation, try to close the folder and re-open it in your Visual Studio Code, usually the OmniSharp server need to refresh new files.&lt;br /&gt;
&lt;br /&gt;
You can also try &amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;code&amp;gt;dotnet clean&amp;lt;/code&amp;gt; in case you have changes on the referenced files (i.e. Bootstrapper update).&lt;br /&gt;
&lt;br /&gt;
Since we have not added any gameplay code in this tutorial, we do not have to play &amp;amp; join the server.&lt;br /&gt;
&lt;br /&gt;
# Open your script Class1.cs, add a code breakpoint by clicking on the left side of the line number&lt;br /&gt;
# For example, you may want to put a pause before the server prints &amp;quot;Hello World&amp;quot; line&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot; highlight=&amp;quot;10&amp;quot; start=&amp;quot;8&amp;quot; line&amp;gt;&lt;br /&gt;
        public Class1()&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;Hello World!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Go to Debug tab&lt;br /&gt;
# Hit &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; button&lt;br /&gt;
# Your server will run, and the server threads will pause on your breakpoint line&lt;br /&gt;
# Click &#039;&#039;&#039;► Continue&#039;&#039;&#039; button (&amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt;) on top of your Visual Studio window&lt;br /&gt;
# You will get output &amp;quot;Hello World&amp;quot; in your server console.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading resources..&lt;br /&gt;
-&amp;gt; Starting mygamemode resource..&lt;br /&gt;
mygamemode: loading scripts...&lt;br /&gt;
mygamemode: instantiating mygamemode.Class1..&lt;br /&gt;
Hello world!&lt;br /&gt;
-&amp;gt; Resource mygamemode started!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Close the server/hit the &#039;&#039;&#039;■ Stop&#039;&#039;&#039; debugging button (&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
After you made changes to your script, you can always hit &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; again to restart debugging.&lt;br /&gt;
&lt;br /&gt;
== Deploying the Resource ==&lt;br /&gt;
Now that you have learn how to build and debug your script, later when your resource is ready, you may want to compile it with the Release task to deploy an optimized binary.&lt;br /&gt;
&lt;br /&gt;
Simply, click on menu &#039;&#039;&#039;Terminal&#039;&#039;&#039;&amp;gt;&#039;&#039;&#039;Run Task...&#039;&#039;&#039; then select &#039;&#039;&#039;release&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can find your &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; in &amp;lt;code&amp;gt;bin/Release/netcoreapp2.0/&amp;lt;/code&amp;gt; as you may notice it contains cleaner files, since we configured to not copy the &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; files from runtime folder with the &amp;lt;code&amp;gt;&amp;lt;Private&amp;gt;&amp;lt;/code&amp;gt; option.&lt;br /&gt;
This build will be not debugable as the symbols are already removed and optimized for run time.&lt;br /&gt;
&lt;br /&gt;
Proceed to upload these &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt; file to your server, and be sure to set your &#039;&#039;&#039;meta.xml&#039;&#039;&#039; differently as it will be using the non-debugged version.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info name=&amp;quot;My Gamemode&amp;quot; description=&amp;quot;My C# bridge gamemode Resource&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;bin/Release/netcoreapp2.0/mygamemode.dll&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to have the &amp;lt;tt&amp;gt;.pdb&amp;lt;/tt&amp;gt; file together with it, it will create useful traceable dump in case your code causes server crash during runtime, even though it is not really possible to debug it.&lt;br /&gt;
&lt;br /&gt;
== Client-side ==&lt;br /&gt;
You can also do similar thing to work with client-side scripts, except you do not deal with launch or task commands. However, please note that in RAGE MP Client-side C-Sharp scripts are NOT compiled nor build into &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;. Which means you cannot debug it like in this tutorial.&lt;br /&gt;
&lt;br /&gt;
You can still make the project, reference to &#039;&#039;&#039;rage-sharp.dll&#039;&#039;&#039; in &#039;&#039;&#039;RAGEMP/dotnet/&#039;&#039;&#039; folder to get IntelliSense auto completion benefit in VSCode, similar way we did on Bootstrapper:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;ItemGroup&amp;gt;&lt;br /&gt;
    &amp;lt;Reference Include=&amp;quot;RAGE&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;HintPath&amp;gt;..\..\..\dotnet\rage-sharp.dll&amp;lt;/HintPath&amp;gt; &amp;lt;!-- Or absolute path to your /RAGEMP/dotnet/rage-sharp.dll --&amp;gt;&lt;br /&gt;
      &amp;lt;Private&amp;gt;False&amp;lt;/Private&amp;gt;&lt;br /&gt;
    &amp;lt;/Reference&amp;gt;&lt;br /&gt;
  &amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And you just have to save the &amp;lt;tt&amp;gt;.cs&amp;lt;/tt&amp;gt; file, they will be downloaded to your player&#039;s RAGE-MP client and will be compiled as how you configured it.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|+ A brief comparison how C# works in RAGE-MP&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! Server-side Bridge (Compiled)&lt;br /&gt;
! Server-side (Raw)&lt;br /&gt;
! Client-side&lt;br /&gt;
|-&lt;br /&gt;
! Output&lt;br /&gt;
| [[wikipedia:Common Intermediate Language|IL]] &amp;quot;binary&amp;quot; (&amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | C-Sharp source code (&amp;lt;tt&amp;gt;.cs&amp;lt;/tt&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
! Dependency&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;lt;tt&amp;gt;Bootstrapper.dll&amp;lt;/tt&amp;gt; runtimes &amp;amp; &amp;lt;tt&amp;gt;bridge.dll&amp;lt;/tt&amp;gt; plugin&lt;br /&gt;
| &amp;lt;tt&amp;gt;rage-sharp.dll&amp;lt;/tt&amp;gt; runtimes&lt;br /&gt;
|-&lt;br /&gt;
! Compile Time&lt;br /&gt;
| By server developer with C# Compiler (in SDK)&lt;br /&gt;
| By &amp;lt;tt&amp;gt;server.exe&amp;lt;/tt&amp;gt;&lt;br /&gt;
| By &amp;lt;tt&amp;gt;ragemp_v.exe&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! .NET Core Version&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | 2.0.3 &amp;lt;sup&amp;gt;1)&amp;lt;/sup&amp;gt;&lt;br /&gt;
| 2.2.0 &amp;lt;sup&amp;gt;2)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Debugging&lt;br /&gt;
| Developer&#039;s debugger tool choice (in SDK)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | RAGE MP app built in error handling &amp;amp; logging&lt;br /&gt;
|}&lt;br /&gt;
Notes:&lt;br /&gt;
* &amp;lt;sup&amp;gt;1)&amp;lt;/sup&amp;gt; As of 0.3.7 based on &amp;lt;tt&amp;gt;.version&amp;lt;/tt&amp;gt; file found in &#039;&#039;&#039;RAGEMP/server-files/bridge/runtime/&#039;&#039;&#039; folder&lt;br /&gt;
* &amp;lt;sup&amp;gt;2)&amp;lt;/sup&amp;gt; As of 0.3.7 based on &amp;lt;tt&amp;gt;.version&amp;lt;/tt&amp;gt; file found in &#039;&#039;&#039;RAGEMP/dotnet/&#039;&#039;&#039; folder&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Getting Started with Development]]&lt;br /&gt;
* [https://wiki.gtanet.work/index.php?title=Getting_Started_with_Development Getting started with Development on C# Bridge Server]&lt;br /&gt;
* [[Server-side events]] (or in [https://wiki.gtanet.work/index.php?title=Scripting_Events C#] bridge)&lt;br /&gt;
* [[Server-side functions]] (or in [https://wiki.gtanet.work/index.php?title=Server_Scripting_Functions C#] bridge)&lt;br /&gt;
* [[Client-side events]] (or in [[Client-side_CSharp_events|C#]])&lt;br /&gt;
* [[Client-side functions]] (or in [[Client-side_CSharp_functions|C#]])&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=VehicleHornToggle&amp;diff=17644</id>
		<title>VehicleHornToggle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=VehicleHornToggle&amp;diff=17644"/>
		<updated>2019-05-23T15:00:54Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when a vehicle&#039;s horn is toggled&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}}&lt;br /&gt;
* &#039;&#039;&#039;toggle&#039;&#039;&#039;: {{RageType|Boolean}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;vehicleHornToggle&amp;quot;, (vehicle, toggle) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[vehicleSirenToggle]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerCommand&amp;diff=17643</id>
		<title>PlayerCommand</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerCommand&amp;diff=17643"/>
		<updated>2019-05-23T14:53:32Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player sends a command.&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - [[:Category:Player API|player]], who send command. &lt;br /&gt;
* &#039;&#039;&#039;command&#039;&#039;&#039;: {{RageType|String}} - command (without slash) with arguments. &lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example will write &amp;quot;Hello!&amp;quot; to player, who will enter command /meetme into chatbox.s&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerCommand&amp;quot;, (player, command) =&amp;gt; {&lt;br /&gt;
	const args = command.split(/[ ]+/);&lt;br /&gt;
	const commandName = args.splice(0, 1)[0];&lt;br /&gt;
		&lt;br /&gt;
	if (commandName === &amp;quot;meetme&amp;quot;) {&lt;br /&gt;
		player.outputChatBox(&amp;quot;Hello!&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&#039;&#039;&#039;Detecting Invalid Commands: &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.add(&#039;playerCommand&#039;, (player, command) =&amp;gt; {        &lt;br /&gt;
    player.outputChatBox(`${command} is not a valid command. Use /help to find a list of commands.`);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerCommandDelegate(string cmd, CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;cmd&#039;&#039;&#039;: colshape, expects &#039;&#039;&#039;System.String&#039;&#039;&#039; type.&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039;: cancel, expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example will set player restore player health to max when command &#039;&#039;&#039;/heal&#039;&#039;&#039; is used, or set players armour to max when command &#039;&#039;&#039;/armour&#039;&#039;&#039; is used.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerCommand += OnPlayerCommand;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerCommand(string cmd, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    if (cmd == &amp;quot;heal&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
         RAGE.Elements.Player.LocalPlayer.SetHealth(100);&lt;br /&gt;
    }&lt;br /&gt;
    else if (cmd == &amp;quot;armour&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
         RAGE.Elements.Player.LocalPlayer.SetArmour(100);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;command&#039;&#039;&#039;: {{RageType|String}} - command (without slash) with arguments. &lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example will output info about entered command into client chatbox.&lt;br /&gt;
&lt;br /&gt;
if you enter &amp;quot;/blah 123 566&amp;quot;, it will output next message:&lt;br /&gt;
&amp;quot;You enter command a &amp;quot;blah&amp;quot;, and all arguments it a [123,566]&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerCommand&amp;quot;, (command) =&amp;gt; {&lt;br /&gt;
	const args = command.split(/[ ]+/);&lt;br /&gt;
	const commandName = args[0];&lt;br /&gt;
&lt;br /&gt;
	args.shift();&lt;br /&gt;
		&lt;br /&gt;
	if (commandName === &amp;quot;blah&amp;quot;) {&lt;br /&gt;
		mp.gui.chat.push(`You enter command a &amp;quot;${commandName}&amp;quot;, and all arguments it a [${args.join(&amp;quot;,&amp;quot;)}]`);&lt;br /&gt;
	}&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerExitVehicle&amp;diff=17642</id>
		<title>PlayerExitVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerExitVehicle&amp;diff=17642"/>
		<updated>2019-05-23T14:45:54Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player went out from a vehicle.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerExitVehicle on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - [[:Category:Player API|player]], which left the vehicle&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - [[:Category:Vehicle API|vehicle]], which was left by the player.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs a console chat message, when player went out from vehicle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerExitVehicleHandler(player, vehicle) {&lt;br /&gt;
    console.log(`${player.name} when out from vehicle with ID: ${vehicle.id}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerExitVehicle&amp;quot;, playerExitVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerEnterVehicle&amp;diff=17641</id>
		<title>PlayerEnterVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerEnterVehicle&amp;diff=17641"/>
		<updated>2019-05-23T14:44:07Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player entered vehicle.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerEnterVehicle on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
*&#039;&#039;&#039;Known issue&#039;&#039;&#039;: Client side this event is triggered when the player starts to enter the vehicle and not once they&#039;ve completely sat down. This also causes the seat parameter to return &#039;undefined&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - The [[:Category:Player API|player]] which entered vehicle.&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - The current [[:Category:Vehicle API|vehicle]] the player is sitting in.&lt;br /&gt;
* &#039;&#039;&#039;seat&#039;&#039;&#039;: {{RageType|Number}} - The seat ID the player sits down on.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs chat message, when player is in the car.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerEnterVehicleHandler(player, vehicle, seat) {&lt;br /&gt;
	player.outputChatBox(`${player.name} got into the car with ID: ${vehicle.id}. Seat: ${seat}`);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
mp.events.add(&amp;quot;playerEnterVehicle&amp;quot;, playerEnterVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerEnterVehicleDelegate(Vehicle vehicle, int seatId);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039; - vehicle &#039;&#039;&#039;RAGE.Elements.Vehicle&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;seatId&#039;&#039;&#039; - the id of the seat, expects&#039;&#039;&#039;System.Int32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below sends a chat message to play when they enter a vehicle, showing whether they are driver or passenger.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerEnterVehicle += OnPlayerEnterVehicle;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerEnterVehicle(RAGE.Elements.Vehicle vehicle, int seatId, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    if (seatId == -1)&lt;br /&gt;
    {&lt;br /&gt;
        RAGE.Chat.Output(&amp;quot;You got in the driver&#039;s seat&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        RAGE.Chat.Output(&amp;quot;You got in a passenger seat&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - The current [[:Category:Vehicle API|vehicle]] the player entered.&lt;br /&gt;
* &#039;&#039;&#039;seat&#039;&#039;&#039;: {{RageType|Number}} - The seat ID the player sits down on.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerEnterVehicleHandler(vehicle, seat) {&lt;br /&gt;
   mp.gui.chat.push(`You got into the car with ID: ${vehicle.id}. Seat: ${seat}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterVehicle&amp;quot;, playerEnterVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=VehicleSirenToggle&amp;diff=17640</id>
		<title>VehicleSirenToggle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=VehicleSirenToggle&amp;diff=17640"/>
		<updated>2019-05-23T14:42:08Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when a vehicle&#039;s siren is toggled&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnVehicleSirenToggle on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}}&lt;br /&gt;
* &#039;&#039;&#039;toggle&#039;&#039;&#039;: {{RageType|Boolean}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;vehicleSirenToggle&amp;quot;, (vehicle, toggle) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[vehicleHornToggle]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerExitVehicle&amp;diff=17639</id>
		<title>PlayerExitVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerExitVehicle&amp;diff=17639"/>
		<updated>2019-05-23T14:40:19Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player went out from a vehicle.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerExitVehicle on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - [[:Category|Player API|player]], which left the vehicle&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - [[:Category|Vehicle API|vehicle]], which was left by the player.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs a console chat message, when player went out from vehicle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerExitVehicleHandler(player, vehicle) {&lt;br /&gt;
    console.log(`${player.name} when out from vehicle with ID: ${vehicle.id}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerExitVehicle&amp;quot;, playerExitVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityCreated&amp;diff=17638</id>
		<title>EntityCreated</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityCreated&amp;diff=17638"/>
		<updated>2019-05-23T14:35:19Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when an Entity Is Created. From my testing, this event is only accessible on the serverside.&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039;: {{RageType|Entity}} - the [[:Category:Entity API|entity]] that was created&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function entityCreatedHandler(entity) {&lt;br /&gt;
  console.log(`An Entity with the ID of ${entity.id} was created at ${entity.position}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;entityCreated&amp;quot;, entityCreatedHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnEntityCreatedDelegate(Entity entity);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039; - the streamed in entity, expects &#039;&#039;&#039;RAGE.Elements.Entity&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below sends a message to client when an entity is created, showing the entity model, position and remoteId.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnEntityCreated += OnEntityCreated;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnEntityCreated(RAGE.Elements.Entity entity)&lt;br /&gt;
{&lt;br /&gt;
   RAGE.Chat.Output($&amp;quot;{entity.Model} created at {entity.Position} with serverside id:{entity.RemoteId}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[entityDestroyed]]&lt;br /&gt;
* [[entityModelChange]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Entity API]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityModelChange&amp;diff=17637</id>
		<title>EntityModelChange</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityModelChange&amp;diff=17637"/>
		<updated>2019-05-23T14:34:31Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when an entity model changes.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnEntityModelChange on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039;: {{RageType|Entity}}&lt;br /&gt;
* &#039;&#039;&#039;oldModel&#039;&#039;&#039;: {{RageType|Number}} - hash of the old model&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;entityModelChange&amp;quot;, (entity, oldModel) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[entityCreated]]&lt;br /&gt;
* [[entityDestroyed]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Entity API]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityDestroyed&amp;diff=17636</id>
		<title>EntityDestroyed</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityDestroyed&amp;diff=17636"/>
		<updated>2019-05-23T14:33:40Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when an entity is destroyed&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039;: {{RageType|Entity}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;entityDestroyed&amp;quot;, entity =&amp;gt; {&lt;br /&gt;
  // Do what you want&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnEntityDestroyedDelegate(Entity entity);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039; - the destroyed entity, expects &#039;&#039;&#039;RAGE.Elements.Entity&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below sends a message to client when an entity is destoryed, showing the entity model, position and remoteId.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnEntityDestroyed += OnEntityDestroyed;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnEntityDestroyed(RAGE.Elements.Entity entity)&lt;br /&gt;
{&lt;br /&gt;
   RAGE.Chat.Output($&amp;quot;{entity.Model} destroyed at {entity.Position} with serverside id:{entity.RemoteId}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[entityCreated]]&lt;br /&gt;
* [[entityModelChange]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Entity API]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityCreated&amp;diff=17635</id>
		<title>EntityCreated</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityCreated&amp;diff=17635"/>
		<updated>2019-05-23T14:30:52Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when an Entity Is Created. From my testing, this event is only accessible on the serverside.&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039;: {{RageType|Entity}} - the [[:Category:Entity API|entity]] that was created&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function entityCreatedHandler(entity) {&lt;br /&gt;
  console.log(`An Entity with the ID of ${entity.id} was created at ${entity.position}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;entityCreated&amp;quot;, entityCreatedHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnEntityCreatedDelegate(Entity entity);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039; - the streamed in entity, expects &#039;&#039;&#039;RAGE.Elements.Entity&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below sends a message to client when an entity is created, showing the entity model, position and remoteId.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnEntityCreated += OnEntityCreated;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnEntityCreated(RAGE.Elements.Entity entity)&lt;br /&gt;
{&lt;br /&gt;
   RAGE.Chat.Output($&amp;quot;{entity.Model} created at {entity.Position} with serverside id:{entity.RemoteId}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039;: {{RageType|Entity}} - the local [[:Category:Entity API|entity]] that was created&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;entityCreated&amp;quot;, (entity) =&amp;gt; {&lt;br /&gt;
    // Do something&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[entityDestroyed]]&lt;br /&gt;
* [[entityModelChange]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Entity API]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=EntityCreated&amp;diff=17634</id>
		<title>EntityCreated</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=EntityCreated&amp;diff=17634"/>
		<updated>2019-05-23T14:24:07Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when an Entity Is Created. From my testing, this event is only accessible on the serverside.&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039;: {{RageType|Entity}} - the [[:Category:Entity|entity]] that was created&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function entityCreatedHandler(entity) {&lt;br /&gt;
  console.log(`An Entity with the ID of ${entity.id} was created at ${entity.position}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;entityCreated&amp;quot;, entityCreatedHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnEntityCreatedDelegate(Entity entity);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;entity&#039;&#039;&#039; - the streamed in entity, expects &#039;&#039;&#039;RAGE.Elements.Entity&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below sends a message to client when an entity is created, showing the entity model, position and remoteId.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnEntityCreated += OnEntityCreated;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnEntityCreated(RAGE.Elements.Entity entity)&lt;br /&gt;
{&lt;br /&gt;
   RAGE.Chat.Output($&amp;quot;{entity.Model} created at {entity.Position} with serverside id:{entity.RemoteId}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[entityDestroyed]]&lt;br /&gt;
* [[entityModelChange]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Entity API]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=TrailerAttached&amp;diff=17633</id>
		<title>TrailerAttached</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=TrailerAttached&amp;diff=17633"/>
		<updated>2019-05-23T14:19:12Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when a vehicle&#039;s trailer is attached.&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnVehicleTrailerChange OnVehicleTrailerChange on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}}&lt;br /&gt;
* &#039;&#039;&#039;trailer&#039;&#039;&#039;: {{RageType|Vehicle}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;trailerAttached&amp;quot;, (vehicle, trailer) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=TrailerAttached&amp;diff=17632</id>
		<title>TrailerAttached</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=TrailerAttached&amp;diff=17632"/>
		<updated>2019-05-23T14:17:24Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when a vehicle&#039;s trailer is attached.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnVehicleTrailerChange OnVehicleTrailer on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}}&lt;br /&gt;
* &#039;&#039;&#039;trailer&#039;&#039;&#039;: {{RageType|Vehicle}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;trailerAttached&amp;quot;, (vehicle, trailer) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerStartExitVehicle&amp;diff=17631</id>
		<title>PlayerStartExitVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerStartExitVehicle&amp;diff=17631"/>
		<updated>2019-05-23T14:14:57Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player starts exiting from a vehicle.&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - player, which going out.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs chat message, when player starts exit the vehicle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerStartExitVehicleHandler(player) {&lt;br /&gt;
   const playerName = player.name;&lt;br /&gt;
   const vehicleID = player.vehicle.id;&lt;br /&gt;
&lt;br /&gt;
   mp.players.broadcast(`${playerName} started to exit the vehiclewith ID: ${vehicleID}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerStartExitVehicle&amp;quot;, playerStartExitVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerEnterVehicle&amp;diff=17630</id>
		<title>PlayerEnterVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerEnterVehicle&amp;diff=17630"/>
		<updated>2019-05-23T14:11:38Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player entered vehicle.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerEnterVehicle on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
*&#039;&#039;&#039;Known issue&#039;&#039;&#039;: Client side this event is triggered when the player starts to enter the vehicle and not once they&#039;ve completely sat down. This also causes the seat parameter to return &#039;undefined&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - The current vehicle the player is sitting in.&lt;br /&gt;
* &#039;&#039;&#039;seat&#039;&#039;&#039;: {{RageType|Number}} - The seat ID the player sits down on.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs chat message, when player is in the car.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerEnterVehicleHandler(player, vehicle, seat) {&lt;br /&gt;
	player.outputChatBox(`${player.name} got into the car with ID: ${vehicle.id}. Seat: ${seat}`);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
mp.events.add(&amp;quot;playerEnterVehicle&amp;quot;, playerEnterVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerEnterVehicleDelegate(Vehicle vehicle, int seatId);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039; - vehicle &#039;&#039;&#039;RAGE.Elements.Vehicle&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;seatId&#039;&#039;&#039; - the id of the seat, expects&#039;&#039;&#039;System.Int32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below sends a chat message to play when they enter a vehicle, showing whether they are driver or passenger.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerEnterVehicle += OnPlayerEnterVehicle;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerEnterVehicle(RAGE.Elements.Vehicle vehicle, int seatId, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    if (seatId == -1)&lt;br /&gt;
    {&lt;br /&gt;
        RAGE.Chat.Output(&amp;quot;You got in the driver&#039;s seat&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        RAGE.Chat.Output(&amp;quot;You got in a passenger seat&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - The current vehicle the player entered.&lt;br /&gt;
* &#039;&#039;&#039;seat&#039;&#039;&#039;: {{RageType|Number}} - The seat ID the player sits down on.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerEnterVehicleHandler(vehicle, seat) {&lt;br /&gt;
   mp.gui.chat.push(`You got into the car with ID: ${vehicle.id}. Seat: ${seat}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterVehicle&amp;quot;, playerEnterVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerStartEnterVehicle&amp;diff=17629</id>
		<title>PlayerStartEnterVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerStartEnterVehicle&amp;diff=17629"/>
		<updated>2019-05-23T14:09:45Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player starts to get into a vehicle. This event is cancellable.&lt;br /&gt;
&lt;br /&gt;
{{ServersideJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - player, which sits down (serverside only)&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039;: {{RageType|Vehicle}} - vehicle in which the player sits.&lt;br /&gt;
* &#039;&#039;&#039;seat&#039;&#039;&#039;: {{RageType|Number}} - the place where he sits down.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
This example outputs a chat message when a player gets into a vehicle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function playerStartEnterVehicleHandler(player, vehicle, seat) {&lt;br /&gt;
   const playerName = player.name;&lt;br /&gt;
   const vehicleID = vehicle.id;&lt;br /&gt;
&lt;br /&gt;
   mp.players.broadcast(`${playerName} started to get into the car ID: ${vehicleID}. Seat: ${seat}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerStartEnterVehicle&amp;quot;, playerStartEnterVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerStartEnterVehicleDelegate(RAGE.Elements.Vehicle vehicle, int seatId, RAGE.Events.CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;vehicle&#039;&#039;&#039; - vehicle &#039;&#039;&#039;RAGE.Elements.Vehicle&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;seatId&#039;&#039;&#039; - the id of the seat, expects&#039;&#039;&#039;System.Int32&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039; - cancel, expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below sends a message to client when they start to get in a vehicle, showing whether they are a driver or passenger.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerStartEnterVehicle += OnPlayerStartEnterVehicle;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerStartEnterVehicle(RAGE.Elements.Vehicle vehicle, int seatId, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    if (seatId == -1)&lt;br /&gt;
    {&lt;br /&gt;
        RAGE.Chat.Output(&amp;quot;You started to get in the driver&#039;s seat&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        RAGE.Chat.Output(&amp;quot;You started to get in a passenger seat&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// The player is not emmited client-side assuming it&#039;s you&lt;br /&gt;
function playerStartEnterVehicleHandler(vehicle, seat) {&lt;br /&gt;
   const vehicleID = vehicle.id;&lt;br /&gt;
&lt;br /&gt;
   mp.game.graphics.notify(`You started to get into the car ID: ${vehicleID}. Seat: ${seat}`);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerStartEnterVehicle&amp;quot;, playerStartEnterVehicleHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Vehicle]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerResurrect&amp;diff=17628</id>
		<title>PlayerResurrect</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerResurrect&amp;diff=17628"/>
		<updated>2019-05-23T14:05:29Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is called everytime a player resurrects.&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerResurrectDelegate();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
&#039;&#039;This event has no parameters&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below shows a chat message to the client when they respawn.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerResurrect += OnPlayerResurrect;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerResurrect()&lt;br /&gt;
{&lt;br /&gt;
    RAGE.Chat.Output($&amp;quot;YOU&#039;RE ALIVE!?&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&#039;playerResurrect&#039;, () =&amp;gt; {});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
&#039;&#039;This event has no parameters&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below shows up a message for a player when he resurrects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&#039;playerResurrect&#039;, () =&amp;gt; {&lt;br /&gt;
    mp.gui.chat.push(&#039;Like a fenix raised from the ashes, you came back to us!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[playerSpawn]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerExitColshape&amp;diff=17627</id>
		<title>PlayerExitColshape</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerExitColshape&amp;diff=17627"/>
		<updated>2019-05-23T14:00:12Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player exits a colshape.&lt;br /&gt;
&lt;br /&gt;
Default dimension for ColShapes is 0, and the player must be in the same dimension as the Colshape for them to collide.&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerExitColShape on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - The [[:Category:Player API|player]] which exited the colshape&lt;br /&gt;
* &#039;&#039;&#039;shape&#039;&#039;&#039;: {{RageType|ColShape}} - The [[:Category:ColShape API|colshape]] the player left&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
let someColShape = mp.colshapes.newRectangle(0, 0, 100, 100);&lt;br /&gt;
&lt;br /&gt;
function playerExitColshapeHandler(player, shape) {&lt;br /&gt;
  if(shape == someColShape) {&lt;br /&gt;
    console.log(`${player.name} left the colshape!`);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerExitColshape&amp;quot;, playerExitColshapeHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerExitColshapeDelegate(Colshape colshape, CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;colshape&#039;&#039;&#039;: colshape, expects &#039;&#039;&#039;RAGE.Elements.Colshape&#039;&#039;&#039; type.&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039;: cancel, expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerExitColshape += OnPlayerExitColshape;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerExitColshape(RAGE.Elements.Colshape colshape, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    RAGE.Chat.Output($&amp;quot;You exited colshape id:{colshape.Id}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;shape&#039;&#039;&#039;: {{RageType|ColShape}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
let someColShape = mp.colshapes.newRectangle(0, 0, 100, 100);&lt;br /&gt;
&lt;br /&gt;
function playerExitColshapeHandler(shape) {&lt;br /&gt;
  if(shape == someColShape) {&lt;br /&gt;
    //Local player left the colshape&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerExitColshape&amp;quot;, playerExitColshapeHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:ColShape]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerEnterColshape&amp;diff=17626</id>
		<title>PlayerEnterColshape</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerEnterColshape&amp;diff=17626"/>
		<updated>2019-05-23T13:58:49Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This event is triggered when a player enters a colshape. &lt;br /&gt;
&lt;br /&gt;
Default dimension for Colshapes is 0, and the player must be in the same dimension as the Colshape for them to collide.&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerEnterColShape on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - The [[:Category:Player API|player]] which entered the colshape&lt;br /&gt;
* &#039;&#039;&#039;shape&#039;&#039;&#039;: {{RageType|ColShape}} - The [[:Category:ColShape API|colshape]] the player entered&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
let someColShape = mp.colshapes.newRectangle(0, 0, 100, 100);&lt;br /&gt;
&lt;br /&gt;
function playerEnterColshapeHandler(player, shape) {&lt;br /&gt;
  if(shape == someColShape) {&lt;br /&gt;
    console.log(`${player.name} entered the colshape`);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterColshape&amp;quot;, playerEnterColshapeHandler);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
public delegate void OnPlayerEnterColshapeDelegate(Colshape colshape, CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;colshape&#039;&#039;&#039;: colshape, expects &#039;&#039;&#039;RAGE.Elements.Colshape&#039;&#039;&#039; type.&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039;: cancel, expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerEnterColshape += OnPlayerEnterColshape;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerEnterColshape(RAGE.Elements.Colshape colshape, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    RAGE.Chat.Output($&amp;quot;You entered colshape id:{colshape.Id}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;shape&#039;&#039;&#039;: {{RageType|ColShape}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mp.events.add(&#039;playerEnterColshape&#039;, (shape) =&amp;gt; {&lt;br /&gt;
    mp.game.graphics.notify(`You entered a colshape with id &amp;quot;${shape.id}&amp;quot;.`);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:ColShape]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerEnterCheckpoint&amp;diff=17625</id>
		<title>PlayerEnterCheckpoint</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerEnterCheckpoint&amp;diff=17625"/>
		<updated>2019-05-23T13:57:06Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when a player enters into a checkpoint&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerEnterCheckpoint on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterCheckpoint&amp;quot;, eventHandler);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;eventHandler&#039;&#039;&#039; expects function with:&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - The [[:Category:Player API|player]] who entered checkpoint.&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: {{RageType|Checkpoint}} - The [[:Category:Checkpoint API|checkpoint]] that player entered.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterCheckpoint&amp;quot;, (player, checkpoint) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public delegate void OnPlayerEnterCheckpointDelegate(Checkpoint checkpoint, CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: checkpoint, expects &#039;&#039;&#039;RAGE.Elements.Checkpoint&#039;&#039;&#039; type.&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039;: cancel, expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below shows a message to player with the position of the checkpoint they entered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerEnterCheckpoint += OnPlayerEnterCheckpoint;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerEnterCheckpoint(RAGE.Elements.Checkpoint checkpoint, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    Vector3 pos = checkpoint.Position;&lt;br /&gt;
    RAGE.Chat.Output($&amp;quot;Player just entered the checkpoint at X{pos.X} Y{pos.Y} Z{pos.Z}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: {{RageType|Checkpoint}} The checkpoint.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterCheckpoint&amp;quot;, (checkpoint) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[playerExitCheckpoint]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Checkpoint]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerExitCheckpoint&amp;diff=17624</id>
		<title>PlayerExitCheckpoint</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerExitCheckpoint&amp;diff=17624"/>
		<updated>2019-05-23T13:56:47Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when a player leaves a checkpoint&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerExitCheckpoint on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerExitCheckpoint&amp;quot;, eventHandler);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;eventHandler&#039;&#039;&#039; expects a function with:&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - The [[:Category:Player API|player]] who exited checkpoint.&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: {{RageType|Checkpoint}} - The [[:Category:Checkpoint API|checkpoint]] that player exited.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerExitCheckpoint&amp;quot;, (player, checkpoint) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public delegate void OnPlayerExitCheckpointDelegate(Checkpoint checkpoint, CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: checkpoint, expects &#039;&#039;&#039;RAGE.Elements.Checkpoint&#039;&#039;&#039; type.&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039;: cancel, expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below shows a message to player with the position of the checkpoint they just exited.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerExitCheckpoint += OnPlayerExitCheckpoint;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerExitCheckpoint(RAGE.Elements.Checkpoint checkpoint, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    Vector3 pos = checkpoint.Position;&lt;br /&gt;
    RAGE.Chat.Output($&amp;quot;Player just left the checkpoint at X{pos.X} Y{pos.Y} Z{pos.Z}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: {{RageType|Checkpoint}}&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerExitCheckpoint&amp;quot;, (checkpoint) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[playerEnterCheckpoint]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Checkpoint]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
	<entry>
		<id>https://wiki.rage.mp/w/index.php?title=PlayerEnterCheckpoint&amp;diff=17623</id>
		<title>PlayerEnterCheckpoint</title>
		<link rel="alternate" type="text/html" href="https://wiki.rage.mp/w/index.php?title=PlayerEnterCheckpoint&amp;diff=17623"/>
		<updated>2019-05-23T13:55:22Z</updated>

		<summary type="html">&lt;p&gt;RoboN1X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Event triggered when a player enters into a checkpoint&lt;br /&gt;
&lt;br /&gt;
{{ServersideCsJsEvent}}&lt;br /&gt;
{{CSharpContainer|1=&lt;br /&gt;
See [https://wiki.gtanet.work/index.php?title=OnPlayerEnterCheckpoint on GTA Network Wiki].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterCheckpoint&amp;quot;, eventHandler);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;eventHandler&#039;&#039;&#039; expects function with:&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;player&#039;&#039;&#039;: {{RageType|Player}} - The [[:Category:Player API|player]] who entered checkpoint.&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: {{RageType|Checkpoint}} - The [[:Category:Checkpoint API|checkpoint]] that player entered.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterCheckpoint&amp;quot;, (player, checkpoint) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ClientsideCsJsEvent}}&lt;br /&gt;
{{CSharpContainer|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public delegate void OnPlayerEnterCheckpointDelegate(Checkpoint checkpoint, CancelEventArgs cancel);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: checkpoint, expects &#039;&#039;&#039;RAGE.Elements.Checkpoint&#039;&#039;&#039; type.&lt;br /&gt;
* &#039;&#039;&#039;cancel&#039;&#039;&#039;: cancel, expects &#039;&#039;&#039;RAGE.Events.CancelEventArgs&#039;&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
The example below shows a message to player with the position of the checkpoint they entered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
Events.OnPlayerEnterCheckpoint += OnPlayerEnterCheckpoint;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
public void OnPlayerEnterCheckpoint(RAGE.Elements.Checkpoint checkpoint, RAGE.Events.CancelEventArgs cancel)&lt;br /&gt;
{&lt;br /&gt;
    Vector3 pos = checkpoint.Position;&lt;br /&gt;
    RAGE.Chat.Output($&amp;quot;Player just entered the checkpoint at X{pos.X} Y{pos.Y} Z{pos.Z}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{JSContainer|&lt;br /&gt;
{{Parameters}}&lt;br /&gt;
* &#039;&#039;&#039;checkpoint&#039;&#039;&#039;: {{RageType|Checkpoint}} The checkpoint.&lt;br /&gt;
&lt;br /&gt;
{{Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
mp.events.add(&amp;quot;playerEnterCheckpoint&amp;quot;, (checkpoint) =&amp;gt; {&lt;br /&gt;
 // Do what you want.&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Player]]&lt;br /&gt;
[[Category:Checkpoint]]&lt;br /&gt;
[[Category:Server-side Event]]&lt;br /&gt;
[[Category:Client-side Event]]&lt;/div&gt;</summary>
		<author><name>RoboN1X</name></author>
	</entry>
</feed>