<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.teamspec.net/index.php?action=history&amp;feed=atom&amp;title=Level_Editor%2FScripting%2FClient_HUD</id>
	<title>Level Editor/Scripting/Client HUD - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.teamspec.net/index.php?action=history&amp;feed=atom&amp;title=Level_Editor%2FScripting%2FClient_HUD"/>
	<link rel="alternate" type="text/html" href="https://wiki.teamspec.net/index.php?title=Level_Editor/Scripting/Client_HUD&amp;action=history"/>
	<updated>2026-10-28T10:23:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.teamspec.net/index.php?title=Level_Editor/Scripting/Client_HUD&amp;diff=475&amp;oldid=prev</id>
		<title>TeamSpecBot: American spelling</title>
		<link rel="alternate" type="text/html" href="https://wiki.teamspec.net/index.php?title=Level_Editor/Scripting/Client_HUD&amp;diff=475&amp;oldid=prev"/>
		<updated>2026-10-20T04:44:45Z</updated>

		<summary type="html">&lt;p&gt;American spelling&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:44, 20 October 2026&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-l29&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&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;=== team_score ===&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;=== team_score ===&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;Every team&#039;s value of one team counter, side by side in team order, followed by the goal. Teams 1 and 2 have their own &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;colours&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;Every team&#039;s value of one team counter, side by side in team order, followed by the goal. Teams 1 and 2 have their own &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;colors&lt;/ins&gt;.&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;&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;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: the team counter to show.&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;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: the team counter to show.&lt;/div&gt;&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;=== boss_health ===&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;=== boss_health ===&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;Two bars for a two-team boss mode: the player&#039;s own team&#039;s boss on the left, the enemy&#039;s on the right, each in its team&#039;s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;colour&lt;/del&gt;, with the share it has left. A boss at 0 shows SLAIN. A player on no team sees team 1 on the left, with the teams&#039; names on the bars.&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;Two bars for a two-team boss mode: the player&#039;s own team&#039;s boss on the left, the enemy&#039;s on the right, each in its team&#039;s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;color&lt;/ins&gt;, with the share it has left. A boss at 0 shows SLAIN. A player on no team sees team 1 on the left, with the teams&#039; names on the bars.&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;&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;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: a team counter holding each team&amp;#039;s boss&amp;#039;s health, from 0 (dead) to &amp;lt;code&amp;gt;scale&amp;lt;/code&amp;gt;, keyed by the team the boss belongs to.&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;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: a team counter holding each team&amp;#039;s boss&amp;#039;s health, from 0 (dead) to &amp;lt;code&amp;gt;scale&amp;lt;/code&amp;gt;, keyed by the team the boss belongs to.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-55:rev-475:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>TeamSpecBot</name></author>
	</entry>
	<entry>
		<id>https://wiki.teamspec.net/index.php?title=Level_Editor/Scripting/Client_HUD&amp;diff=55&amp;oldid=prev</id>
		<title>TeamSpecBot: Level Editor: client HUD scripting guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.teamspec.net/index.php?title=Level_Editor/Scripting/Client_HUD&amp;diff=55&amp;oldid=prev"/>
		<updated>2026-10-20T03:46:17Z</updated>

		<summary type="html">&lt;p&gt;Level Editor: client HUD scripting guide&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;code&amp;gt;client.gd&amp;lt;/code&amp;gt; draws your mode. It starts with &amp;lt;code&amp;gt;extends GamemodeClientScript&amp;lt;/code&amp;gt; and runs on every player&amp;#039;s machine, so it can read and show but never change anything: its &amp;lt;code&amp;gt;api&amp;lt;/code&amp;gt;, a [[Level Editor/Scripting/Reference/GamemodeClientApi|GamemodeClientApi]], has no way to write. Its hooks are on [[Level Editor/Scripting/Reference/GamemodeClientScript|GamemodeClientScript]].&lt;br /&gt;
&lt;br /&gt;
== What it can read ==&lt;br /&gt;
&lt;br /&gt;
* The counters the server declared: [[Level Editor/Scripting/Reference/GamemodeClientApi#get_player|api.get_player]], [[Level Editor/Scripting/Reference/GamemodeClientApi#get_team|api.get_team]] and [[Level Editor/Scripting/Reference/GamemodeClientApi#get_global|api.get_global]]. The client script declares nothing; the server&amp;#039;s counters arrive by themselves.&lt;br /&gt;
* [[Level Editor/Scripting/Reference/GamemodeClientApi#counter_maximum|api.counter_maximum]]: a counter&amp;#039;s declared maximum. Read limits from here instead of copying the server&amp;#039;s numbers, so the two scripts cannot disagree.&lt;br /&gt;
* Who is who: [[Level Editor/Scripting/Reference/GamemodeClientApi#local_player|api.local_player]] (the player at this keyboard, or -1 when there is none yet), [[Level Editor/Scripting/Reference/GamemodeClientApi#team_of|api.team_of]] and [[Level Editor/Scripting/Reference/GamemodeClientApi#players|api.players]].&lt;br /&gt;
* The teams: [[Level Editor/Scripting/Reference/GamemodeClientApi#teams|api.teams]], [[Level Editor/Scripting/Reference/GamemodeClientApi#team_name|api.team_name]] and [[Level Editor/Scripting/Reference/GamemodeClientApi#team_maximum|api.team_maximum]].&lt;br /&gt;
* [[Level Editor/Scripting/Reference/GamemodeClientApi#match_state|api.match_state]], and the payload tracks&amp;#039; lengths and checkpoints (see [[Level Editor/Scripting/Payload tracks|Payload tracks]]).&lt;br /&gt;
&lt;br /&gt;
== Hooks ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;_start()&amp;lt;/code&amp;gt;: the server&amp;#039;s counters have arrived. Put your widgets on screen here.&lt;br /&gt;
* &amp;lt;code&amp;gt;_counter_changed(scope, key, name, value)&amp;lt;/code&amp;gt;: a counter changed. &amp;lt;code&amp;gt;scope&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;api.SCOPE_PLAYER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;api.SCOPE_TEAM&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;api.SCOPE_GLOBAL&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; is the player&amp;#039;s entity id, the team, or 0 for a global counter. Widgets update by themselves, so you only need this hook for something of your own.&lt;br /&gt;
* &amp;lt;code&amp;gt;_match_ended(team)&amp;lt;/code&amp;gt;: the round is decided. &amp;lt;code&amp;gt;team&amp;lt;/code&amp;gt; is the winner, or 0 for a draw.&lt;br /&gt;
&lt;br /&gt;
== Widgets ==&lt;br /&gt;
&lt;br /&gt;
[[Level Editor/Scripting/Reference/GamemodeClientApi#show_widget|api.show_widget]] puts one of TeamSpec&amp;#039;s HUD widgets on screen and returns a handle for [[Level Editor/Scripting/Reference/GamemodeClientApi#remove_widget|api.remove_widget]]. You name the widget and hand it a Dictionary of settings; counter names can be written as plain strings. A widget opens showing the current values and keeps itself up to date, so there is nothing to call every frame. A name that is not one of the five below shows nothing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
func _start() -&amp;gt; void:&lt;br /&gt;
	api.show_widget(&amp;amp;amp;&amp;quot;team_score&amp;quot;, {&lt;br /&gt;
		&amp;quot;counter&amp;quot;: &amp;quot;score&amp;quot;,&lt;br /&gt;
		&amp;quot;threshold&amp;quot;: api.counter_maximum(api.SCOPE_TEAM, &amp;amp;amp;&amp;quot;score&amp;quot;),&lt;br /&gt;
	})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== team_score ===&lt;br /&gt;
&lt;br /&gt;
Every team&amp;#039;s value of one team counter, side by side in team order, followed by the goal. Teams 1 and 2 have their own colours.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: the team counter to show.&lt;br /&gt;
* &amp;lt;code&amp;gt;threshold&amp;lt;/code&amp;gt;: the winning number, shown after the scores. 0 hides it.&lt;br /&gt;
* &amp;lt;code&amp;gt;warn_at&amp;lt;/code&amp;gt;: highlight a team&amp;#039;s number once it reaches this. 0 means never.&lt;br /&gt;
&lt;br /&gt;
=== carry_pips ===&lt;br /&gt;
&lt;br /&gt;
A row of pips for one player counter, for the player the HUD is following: the local player, or whoever they are spectating.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: the player counter to show.&lt;br /&gt;
* &amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;: how many pips to draw.&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;: optional text beside the row.&lt;br /&gt;
&lt;br /&gt;
=== round_timer ===&lt;br /&gt;
&lt;br /&gt;
A clock showing minutes and seconds left.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: a global counter holding the seconds left.&lt;br /&gt;
* &amp;lt;code&amp;gt;warn_at&amp;lt;/code&amp;gt;: at or under this many seconds the clock takes its warning look. 0 means never.&lt;br /&gt;
* &amp;lt;code&amp;gt;setup&amp;lt;/code&amp;gt;: optional global counter; while it is not 0 the clock shows SETUP.&lt;br /&gt;
* &amp;lt;code&amp;gt;overtime&amp;lt;/code&amp;gt;: optional global counter; while it is not 0 the clock shows OVERTIME instead of the time.&lt;br /&gt;
&lt;br /&gt;
=== payload_progress ===&lt;br /&gt;
&lt;br /&gt;
A bar the cart marker rides along, with a pip per checkpoint.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: a global counter holding how far the cart has come, from 0 to &amp;lt;code&amp;gt;scale&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;scale&amp;lt;/code&amp;gt;: that counter&amp;#039;s value at the end of the track.&lt;br /&gt;
* &amp;lt;code&amp;gt;checkpoints&amp;lt;/code&amp;gt;: an Array of each checkpoint&amp;#039;s position along the bar, from 0 to 1. Divide each of [[Level Editor/Scripting/Reference/GamemodeClientApi#track_checkpoints|api.track_checkpoints]] by [[Level Editor/Scripting/Reference/GamemodeClientApi#track_length|api.track_length]].&lt;br /&gt;
* &amp;lt;code&amp;gt;pushers&amp;lt;/code&amp;gt;: optional global counter, shown while above 0.&lt;br /&gt;
* &amp;lt;code&amp;gt;blocked&amp;lt;/code&amp;gt;: optional global counter; while it is not 0 the bar shows BLOCKED.&lt;br /&gt;
* &amp;lt;code&amp;gt;rollback&amp;lt;/code&amp;gt;: optional global counter; while it is not 0 the bar shows ROLLING BACK.&lt;br /&gt;
&lt;br /&gt;
=== boss_health ===&lt;br /&gt;
&lt;br /&gt;
Two bars for a two-team boss mode: the player&amp;#039;s own team&amp;#039;s boss on the left, the enemy&amp;#039;s on the right, each in its team&amp;#039;s colour, with the share it has left. A boss at 0 shows SLAIN. A player on no team sees team 1 on the left, with the teams&amp;#039; names on the bars.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;counter&amp;lt;/code&amp;gt;: a team counter holding each team&amp;#039;s boss&amp;#039;s health, from 0 (dead) to &amp;lt;code&amp;gt;scale&amp;lt;/code&amp;gt;, keyed by the team the boss belongs to.&lt;br /&gt;
* &amp;lt;code&amp;gt;scale&amp;lt;/code&amp;gt;: that counter&amp;#039;s value for a boss at full health.&lt;br /&gt;
* &amp;lt;code&amp;gt;warn_at&amp;lt;/code&amp;gt;: a living boss at or under this takes the warning look. 0 means never.&lt;br /&gt;
* &amp;lt;code&amp;gt;team_names&amp;lt;/code&amp;gt;: a Dictionary of team to name, for a player on no team. Build it from [[Level Editor/Scripting/Reference/GamemodeClientApi#teams|api.teams]] and [[Level Editor/Scripting/Reference/GamemodeClientApi#team_name|api.team_name]].&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
&lt;br /&gt;
A client script cannot send messages: it only knows about the person at its own keyboard. Tell a player something from the server instead, with [[Level Editor/Scripting/Reference/GamemodeServerApi#notify|api.notify]]. See [[Level Editor/Scripting/Server rules#Telling players something|Server rules]].&lt;br /&gt;
&lt;br /&gt;
{{Level Editor nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Level Editor]]&lt;br /&gt;
[[Category:Gamemode scripting]]&lt;/div&gt;</summary>
		<author><name>TeamSpecBot</name></author>
	</entry>
</feed>