<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/wiki/Preprod:Scripted_Analog_Inputs?action=history&amp;feed=atom</id>
	<title>Preprod:Scripted Analog Inputs - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/wiki/Preprod:Scripted_Analog_Inputs?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;action=history"/>
	<updated>2026-04-10T13:01:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;diff=49075&amp;oldid=prev</id>
		<title>ThePiotrek at 18:48, 10 September 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;diff=49075&amp;oldid=prev"/>
		<updated>2016-09-10T18:48:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:48, 10 September 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l65&quot;&gt;Line 65:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 65:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Analog input is something that needs to happen in order to provide proper functionality for gamemodes.  Current gamemodes may suffer is no interface is provided.  It also needs to be designed properly so that we dont have to worry about it come 1.01+&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Analog input is something that needs to happen in order to provide proper functionality for gamemodes.  Current gamemodes may suffer is no interface is provided.  It also needs to be designed properly so that we dont have to worry about it come 1.01+&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==== &lt;/del&gt;'''All this has been written according to my knowledge of MTA, and feel free to correct me wherever appropriate''' &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;====&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''All this has been written according to my knowledge of MTA, and feel free to correct me wherever appropriate'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ThePiotrek</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;diff=49074&amp;oldid=prev</id>
		<title>ThePiotrek: cant =&gt; can't</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;diff=49074&amp;oldid=prev"/>
		<updated>2016-09-10T18:48:07Z</updated>

		<summary type="html">&lt;p&gt;cant =&amp;gt; can&amp;#039;t&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:48, 10 September 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l48&quot;&gt;Line 48:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 48:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Naming &amp;amp; Purpose ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Naming &amp;amp; Purpose ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;set/getAnalogInputState&amp;quot; seems an excuse to merge two different sets of input together.  There are various flaws, even if we just think of documentation:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;set/getAnalogInputState&amp;quot; seems an excuse to merge two different sets of input together.  There are various flaws, even if we just think of documentation:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;quot;Other&amp;quot;'s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cant &lt;/del&gt;be used for setAnalogInputState.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;quot;Other&amp;quot;'s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;can't &lt;/ins&gt;be used for setAnalogInputState.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;quot;Other&amp;quot;'s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cant &lt;/del&gt;be used for serverside bindKey.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;quot;Other&amp;quot;'s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;can't &lt;/ins&gt;be used for serverside bindKey.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Renaming to ''*AnalogControlState'' may seem sensible, but it raises the question of what we name the other set of inputs.  This was easy for getControlState - they were Keys so it could become getKeyState.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Renaming to ''*AnalogControlState'' may seem sensible, but it raises the question of what we name the other set of inputs.  This was easy for getControlState - they were Keys so it could become getKeyState.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-18106:rev-49074 --&gt;
&lt;/table&gt;</summary>
		<author><name>ThePiotrek</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;diff=18106&amp;oldid=prev</id>
		<title>Talidan at 04:38, 3 January 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;diff=18106&amp;oldid=prev"/>
		<updated>2009-01-03T04:38:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:38, 3 January 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#summary Deciding the best way to implement analog inputs as part of the binds system.  &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Proposed names =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Proposed names =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All functions used in the binds system use either '''control names''' or '''key names'''.  Here are proposed names for the new analog variants:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All functions used in the binds system use either '''control names''' or '''key names'''.  Here are proposed names for the new analog variants:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-18105:rev-18106 --&gt;
&lt;/table&gt;</summary>
		<author><name>Talidan</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;diff=18105&amp;oldid=prev</id>
		<title>Talidan: New page: #summary Deciding the best way to implement analog inputs as part of the binds system.    = Proposed names = All functions used in the binds system use either '''control names''' or '''key...</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Preprod:Scripted_Analog_Inputs&amp;diff=18105&amp;oldid=prev"/>
		<updated>2009-01-03T04:38:27Z</updated>

		<summary type="html">&lt;p&gt;New page: #summary Deciding the best way to implement analog inputs as part of the binds system.    = Proposed names = All functions used in the binds system use either &amp;#039;&amp;#039;&amp;#039;control names&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;key...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;#summary Deciding the best way to implement analog inputs as part of the binds system.  &lt;br /&gt;
&lt;br /&gt;
= Proposed names =&lt;br /&gt;
All functions used in the binds system use either '''control names''' or '''key names'''.  Here are proposed names for the new analog variants:&lt;br /&gt;
&lt;br /&gt;
===Controls===&lt;br /&gt;
Since analog controls are shared both on foot and in vehicle, two different sets are not required.&lt;br /&gt;
&lt;br /&gt;
* '''move_x''': This represents moving your left analog stick left/right.  Return values are -1 &amp;lt;= n &amp;lt;= 1.&lt;br /&gt;
* '''move_y''': This represents moving your left analog stick up/down. Return values are -1 &amp;lt;= n &amp;lt;= 1.&lt;br /&gt;
* '''look_x''': This represents moving your right analog stick left/right.  Return values are -1 &amp;lt;= n &amp;lt;= 1.&lt;br /&gt;
* '''look_y''': This represents moving your right analog stick up/down. Return values are -1 &amp;lt;= n &amp;lt;= 1.&lt;br /&gt;
* '''accelerate''': A special analog accelerate that is sensitive.  Return values are 0 &amp;lt;= n &amp;lt;= 1.  Accelerate only acts upon a single direction&lt;br /&gt;
* '''brake_reverse''': A special analog brake/reverse that is sensitive.  Return values are 0 &amp;lt;= n &amp;lt;= 1.  Brake only acts upon a single direction&lt;br /&gt;
&lt;br /&gt;
===Other input===&lt;br /&gt;
These arent &amp;quot;keys&amp;quot; as such anymore, so i'm labelling them &amp;quot;Other&amp;quot; here.  These cannot be ''set'' at any point, only binded to or get'd.  These are ripped from ccw's current definitions, and i cant confirm return values.  I'm guessing what they represent based upon my own controller&lt;br /&gt;
* '''axis_x''': This mostly represents left analog stick left/right.&lt;br /&gt;
* '''axis_y''': This mostly represents left analog stick up/down.&lt;br /&gt;
* '''axis_z''': This mostly represents right analog stick up/down.&lt;br /&gt;
* '''axis_rz''': This mostly represents right analog stick left/right.&lt;br /&gt;
* '''axis_ry''': &lt;br /&gt;
* '''axis_ry''': &lt;br /&gt;
* '''axis_rz''': &lt;br /&gt;
* '''sld''': A trigger button.&lt;br /&gt;
&lt;br /&gt;
= get/setAnalogInputState =&lt;br /&gt;
This is the first, and perhaps the most straightforward set of functions to be implemented.  These are similar to get/setControlState, with a few key differences:&lt;br /&gt;
&lt;br /&gt;
* 1) Clearly it gets/sets the states of '''analog''' inputs.  This means returning and setting accurate floats instead of bools, with a range of -1 and 1, where negative is backwards across an axis and positive is forwards&lt;br /&gt;
* 2) Similar to bindKey, this function will be used for both &amp;quot;Keys&amp;quot; and &amp;quot;Controls&amp;quot;.  This means that unlike getControlState, it will work for both types of input.&lt;br /&gt;
&lt;br /&gt;
Right now MTA's internal get/setControlState use analog inputs, and force them to a value of 255.  Hopefully this means that implementing these is a matter of adding custom input levels.&lt;br /&gt;
&lt;br /&gt;
= bindKey =&lt;br /&gt;
bindKey is based upon binding to &amp;quot;up&amp;quot; and &amp;quot;down&amp;quot; states.  Therefore it is illogical to bind to a float &amp;quot;0.141516516&amp;quot; state.  Instead, based upon configured deadzones, an artifical &amp;quot;up&amp;quot; and &amp;quot;down&amp;quot; state will be replicated:&lt;br /&gt;
&lt;br /&gt;
* '''down''':  No input is being recieved from this input.&lt;br /&gt;
* '''up''':  An input of ''any'' value is being recieved from the controller.&lt;br /&gt;
&lt;br /&gt;
This will allow scripters to use these as 'events' to add their own onClientRender event handlers to handle the specific level of sensitivity.&lt;br /&gt;
&lt;br /&gt;
= toggleControl =&lt;br /&gt;
This would not be very complex but quite simple - it would function exactly as it does now with added functionality to toggle off analog controls.&lt;br /&gt;
&lt;br /&gt;
= Serverside scripting =&lt;br /&gt;
Depending on the amount of data that is actually synced, (i believe control states are synced), serverside functions can be replicated.  I believe all analog controls are synced.  Clearly, like KeyStates, you will not be able to retrieve &amp;quot;Other&amp;quot; inputs serverside.&lt;br /&gt;
&lt;br /&gt;
= Flaws =&lt;br /&gt;
== Naming &amp;amp; Purpose ==&lt;br /&gt;
&amp;quot;set/getAnalogInputState&amp;quot; seems an excuse to merge two different sets of input together.  There are various flaws, even if we just think of documentation:&lt;br /&gt;
* &amp;quot;Other&amp;quot;'s cant be used for setAnalogInputState.&lt;br /&gt;
* &amp;quot;Other&amp;quot;'s cant be used for serverside bindKey.&lt;br /&gt;
* Renaming to ''*AnalogControlState'' may seem sensible, but it raises the question of what we name the other set of inputs.  This was easy for getControlState - they were Keys so it could become getKeyState.&lt;br /&gt;
&lt;br /&gt;
== Mouse input ==&lt;br /&gt;
This raises a big question of something that is missing from MTA.  Technically, Mouse Input is an analog input - it is a &amp;quot;detailed&amp;quot; input method that cannot be accounted for with our current functions, but would make sense using the new analog inputs proposal.   Implementing this has many advantages, for example fixing Mantis #3040 and #3966.  Another example is the fact that mouse aim cannot be replicated by script.  However, there are various issues which (most likely) make this difficult:&lt;br /&gt;
* Mouse input doesnt appear to be implemented into MTA at all.  Although we have events like onClientCursorMove, we dont have any functions that interface with GTA directly.  In other words, there doesnt appear to be any code for MTA to allow ''setting'' the aim, for it to be part of keybinds in the first place.  The whole mouse aim seems to be GTA's own mouse aim, left untouched and detached from the binds system&lt;br /&gt;
* It is unlike any other input: The keybinds system is nice in the way that all controls are implemented using the same system.  In the case of the mouse, it would (afaik) require a completely renewed system specifically for mouse input.  This input would be moulded into the Scripted Analog Input system, rather than already being part of it.&lt;br /&gt;
&lt;br /&gt;
However, it can be argued that since we have Mouse input functions already, this is not a big deal.  In answer to that, i would give this example:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;You've just written paralysis script.  The driver cannot turn while driving but can only accelerate (As seen in the mini gamemode 'Chicken').  A player then goes to settings, turns on &amp;quot;Steer with mouse&amp;quot;, and is now able to get around any  control toggling that may have been done.   In order to detect this, some dodgy mouse input detection would be required alongside something like setElementRotation and setElementVelocity to account for it.  Clearly this is not ideal.&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
Analog input is something that needs to happen in order to provide proper functionality for gamemodes.  Current gamemodes may suffer is no interface is provided.  It also needs to be designed properly so that we dont have to worry about it come 1.01+&lt;br /&gt;
&lt;br /&gt;
==== '''All this has been written according to my knowledge of MTA, and feel free to correct me wherever appropriate''' ====&lt;/div&gt;</summary>
		<author><name>Talidan</name></author>
	</entry>
</feed>