<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KGB</id>
	<title>Multi Theft Auto: Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KGB"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/KGB"/>
	<updated>2026-05-13T08:45:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/setPlayerName&amp;diff=24043</id>
		<title>RU/setPlayerName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/setPlayerName&amp;diff=24043"/>
		<updated>2010-07-14T08:46:11Z</updated>

		<summary type="html">&lt;p&gt;KGB: Перевод примера&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RU/Server function}} &lt;br /&gt;
__NOTOC__ &lt;br /&gt;
Эта функция изменяет имя указанного игрока ([[player]]).&lt;br /&gt;
&lt;br /&gt;
==Синтаксис== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setPlayerName ( player thePlayer, string newName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Обязательные аргументы=== &lt;br /&gt;
*'''thePlayer:''' [[player|игрок]], которому нужно изменить имя.&lt;br /&gt;
*'''newName:''' устанавливаемое имя.&lt;br /&gt;
&lt;br /&gt;
===Вывод===&lt;br /&gt;
Возвращает ''true'' если имя было успешно изменено, ''false'' если были переданы некорректные аргументы.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
Этот пример позволяет добавлять перед именем игрока дополнительный текст по команде /changetag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- Определяем функцию для команды (/changetag, она определена далее)&lt;br /&gt;
-- source = игрок, который вызвал команду&lt;br /&gt;
-- command = команда, передаваемая в функцию (changetag)&lt;br /&gt;
-- thePlayer = игрок, перед именем которого будет добавлен текст&lt;br /&gt;
-- tag = текст, добавляемый перед именем&lt;br /&gt;
function tagPlayer ( source, command, thePlayer, tag )&lt;br /&gt;
	--Попытка получить элемент из имени.&lt;br /&gt;
	local sPlayerElement = getPlayerFromName ( thePlayer )&lt;br /&gt;
	-- Проверка, существует ли такой игрок.&lt;br /&gt;
	if ( sPlayerElement ) then&lt;br /&gt;
		-- Проверка, имеет ли полученный элемент тип [[player]]&lt;br /&gt;
		if getElementType ( sPlayerElement ) == &amp;quot;player&amp;quot; then&lt;br /&gt;
			-- сохраняем текущее имя игрока,&lt;br /&gt;
			local oldName = getPlayerName ( sPlayerElement )&lt;br /&gt;
			-- добавляем перед ним переданный в функцию текст&lt;br /&gt;
			local taggedName = tag .. oldName&lt;br /&gt;
			-- затем устанавливаем полученную строку в качестве нового имени игрока&lt;br /&gt;
			setPlayerName ( sPlayerElement, taggedName )&lt;br /&gt;
			-- Сообщаем игроку, вызвавшему команду, что она выполена успешно&lt;br /&gt;
			outputChatBox ( &amp;quot;Player &amp;quot; .. thePlayer .. &amp;quot;'s tag changed to &amp;quot; .. taggedName, source )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Сообщаем игроку, вызвавшему команду, что не найден игрок для замены имени&lt;br /&gt;
		outputChatBox ( &amp;quot;Unable to change player tag: Player &amp;quot; .. thePlayer .. &amp;quot; not found&amp;quot;, source )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-- Добавляем обработчик команды для консоли/чата&lt;br /&gt;
-- Пример: /changetag &amp;lt;имя&amp;gt; &amp;lt;текст&amp;gt;&lt;br /&gt;
addCommandHandler ( &amp;quot;changetag&amp;quot;, tagPlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
{{RU/Player functions}}&lt;br /&gt;
[[en:setPlayerName]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/GetPlayerName&amp;diff=24042</id>
		<title>RU/GetPlayerName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/GetPlayerName&amp;diff=24042"/>
		<updated>2010-07-14T08:37:42Z</updated>

		<summary type="html">&lt;p&gt;KGB: moved RU/GetPlayerName to RU/getPlayerName&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[RU/getPlayerName]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24041</id>
		<title>RU/getPlayerName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24041"/>
		<updated>2010-07-14T08:37:42Z</updated>

		<summary type="html">&lt;p&gt;KGB: moved RU/GetPlayerName to RU/getPlayerName&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
Функция возвращает строку, содержащую имя указанного игрока.&lt;br /&gt;
&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string getPlayerName ( player thePlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные параметры===&lt;br /&gt;
* '''thePlayer:''' Игрок, имя которого необходимо получить.&lt;br /&gt;
&lt;br /&gt;
===Возвращаемое значение===&lt;br /&gt;
Возвращает строку, содержащую имя указанного игрока, или ''false'', если параметр (игрок), переданный в функцию - неверный.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function(playerSource)&lt;br /&gt;
    outputChatBox(&amp;quot;Your name: &amp;quot;..getPlayerName(playerSource), playerSource)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example outputs the local player name to the chatbox.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function()&lt;br /&gt;
   local localPlayerName = getPlayerName(getLocalPlayer())&lt;br /&gt;
   --and we output it to the chatbox&lt;br /&gt;
   outputChatBox(localPlayerName)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
{{RU/Player functions}}&lt;br /&gt;
[[en:getPlayerName]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:RU/Player_functions&amp;diff=24040</id>
		<title>Template:RU/Player functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:RU/Player_functions&amp;diff=24040"/>
		<updated>2010-07-14T08:36:38Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[canPlayerUseFunction]]{{RU/EN}}&lt;br /&gt;
* [[forcePlayerMap]]{{RU/EN}}&lt;br /&gt;
* [[getAlivePlayers]]{{RU/EN}}&lt;br /&gt;
* [[getDeadPlayers]]{{RU/EN}}&lt;br /&gt;
{{Deprecated feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerAmmoInClip]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
{{New feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerAnnounceValue]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
* [[getPlayerBlurLevel]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerCount]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerMoney]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerNametagColor]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerNametagText]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerPing]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerTeam]]{{RU/EN}}&lt;br /&gt;
{{Deprecated feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerTotalAmmo]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
{{New feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerVersion]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
* [[getPlayerWantedLevel]]{{RU/EN}}&lt;br /&gt;
{{Deprecated feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerWeapon]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
* [[getRandomPlayer]]{{RU/EN}}&lt;br /&gt;
* [[givePlayerMoney]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerMapForced]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerMuted]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerNametagShowing]]{{RU/EN}}&lt;br /&gt;
{{New feature|3.0004|1.0.4|&lt;br /&gt;
* [[setPlayerAnnounceValue]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
* [[setPlayerBlurLevel]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerMoney]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerMuted]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerNametagColor]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerNametagShowing]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerNametagText]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerTeam]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerWantedLevel]]{{RU/EN}}&lt;br /&gt;
* [[showPlayerHudComponent]]{{RU/EN}}&lt;br /&gt;
* {{RUFull}}  [[RU/spawnPlayer|spawnPlayer]]&lt;br /&gt;
* {{RUFull}}  [[RU/takePlayerMoney|takePlayerMoney]]&lt;br /&gt;
* {{RUFull}}  [[RU/getPlayerAccount|getPlayerAccount]]&lt;br /&gt;
* {{RUFull}}  [[RU/getPlayerFromName|getPlayerFromName]]&lt;br /&gt;
* [[getPlayerIP|getPlayerIP]]{{RU/EN}}&lt;br /&gt;
* {{RUFull}}  [[RU/getPlayerName|getPlayerName]]&lt;br /&gt;
* [[redirectPlayer|redirectPlayer]]{{RU/EN}}&lt;br /&gt;
* {{RUFull}}  [[RU/setPlayerName|setPlayerName]]&lt;br /&gt;
{{Deprecated_feature|3|1.0|&lt;br /&gt;
* [[addPlayerClothes]]{{RU/EN}}&lt;br /&gt;
* [[doesPlayerHaveJetPack]]&lt;br /&gt;
* [[getPlayerArmor]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerClothes]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerContactElement]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerFightingStyle]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerFromNick]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerGravity]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerOccupiedVehicle]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerOccupiedVehicleSeat]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerRotation]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerSkin]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerStat]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerTarget]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerWeaponSlot]]{{RU/EN}}&lt;br /&gt;
* [[givePlayerJetPack]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerChoking]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerDead]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerDucked]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerInVehicle]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerInWater]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerOnGround]]{{RU/EN}}&lt;br /&gt;
* [[killPlayer]]{{RU/EN}}&lt;br /&gt;
* [[removePlayerClothes]]{{RU/EN}}&lt;br /&gt;
* [[removePlayerFromVehicle]]{{RU/EN}}&lt;br /&gt;
* [[removePlayerJetPack]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerArmor]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerChoking]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerFightingStyle]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerGravity]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerRotation]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerSkin]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerStat]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerWeaponSlot]]{{RU/EN}}&lt;br /&gt;
* [[warpPlayerIntoVehicle]]{{RU/EN}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:RU/Player_functions&amp;diff=24039</id>
		<title>Template:RU/Player functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:RU/Player_functions&amp;diff=24039"/>
		<updated>2010-07-14T08:36:10Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[canPlayerUseFunction]]{{RU/EN}}&lt;br /&gt;
* [[forcePlayerMap]]{{RU/EN}}&lt;br /&gt;
* [[getAlivePlayers]]{{RU/EN}}&lt;br /&gt;
* [[getDeadPlayers]]{{RU/EN}}&lt;br /&gt;
{{Deprecated feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerAmmoInClip]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
{{New feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerAnnounceValue]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
* [[getPlayerBlurLevel]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerCount]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerMoney]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerNametagColor]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerNametagText]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerPing]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerTeam]]{{RU/EN}}&lt;br /&gt;
{{Deprecated feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerTotalAmmo]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
{{New feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerVersion]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
* [[getPlayerWantedLevel]]{{RU/EN}}&lt;br /&gt;
{{Deprecated feature|3.0004|1.0.4|&lt;br /&gt;
* [[getPlayerWeapon]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
* [[getRandomPlayer]]{{RU/EN}}&lt;br /&gt;
* [[givePlayerMoney]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerMapForced]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerMuted]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerNametagShowing]]{{RU/EN}}&lt;br /&gt;
{{New feature|3.0004|1.0.4|&lt;br /&gt;
* [[setPlayerAnnounceValue]]{{RU/EN}}&lt;br /&gt;
}}&lt;br /&gt;
* [[setPlayerBlurLevel]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerMoney]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerMuted]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerNametagColor]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerNametagShowing]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerNametagText]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerTeam]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerWantedLevel]]{{RU/EN}}&lt;br /&gt;
* [[showPlayerHudComponent]]{{RU/EN}}&lt;br /&gt;
* {{RUFull}}  [[RU/spawnPlayer|spawnPlayer]]&lt;br /&gt;
* {{RUFull}}  [[RU/takePlayerMoney|takePlayerMoney]]&lt;br /&gt;
* {{RUFull}}  [[RU/getPlayerAccount|getPlayerAccount]]&lt;br /&gt;
* {{RUFull}}  [[RU/getPlayerFromName|getPlayerFromName]]&lt;br /&gt;
* [[getPlayerIP|getPlayerIP]]{{RU/EN}}&lt;br /&gt;
* {{RUFull}}  [[getPlayerName|getPlayerName]]&lt;br /&gt;
* [[redirectPlayer|redirectPlayer]]{{RU/EN}}&lt;br /&gt;
* {{RUFull}}  [[RU/setPlayerName|setPlayerName]]&lt;br /&gt;
{{Deprecated_feature|3|1.0|&lt;br /&gt;
* [[addPlayerClothes]]{{RU/EN}}&lt;br /&gt;
* [[doesPlayerHaveJetPack]]&lt;br /&gt;
* [[getPlayerArmor]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerClothes]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerContactElement]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerFightingStyle]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerFromNick]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerGravity]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerOccupiedVehicle]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerOccupiedVehicleSeat]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerRotation]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerSkin]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerStat]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerTarget]]{{RU/EN}}&lt;br /&gt;
* [[getPlayerWeaponSlot]]{{RU/EN}}&lt;br /&gt;
* [[givePlayerJetPack]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerChoking]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerDead]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerDucked]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerInVehicle]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerInWater]]{{RU/EN}}&lt;br /&gt;
* [[isPlayerOnGround]]{{RU/EN}}&lt;br /&gt;
* [[killPlayer]]{{RU/EN}}&lt;br /&gt;
* [[removePlayerClothes]]{{RU/EN}}&lt;br /&gt;
* [[removePlayerFromVehicle]]{{RU/EN}}&lt;br /&gt;
* [[removePlayerJetPack]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerArmor]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerChoking]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerFightingStyle]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerGravity]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerRotation]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerSkin]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerStat]]{{RU/EN}}&lt;br /&gt;
* [[setPlayerWeaponSlot]]{{RU/EN}}&lt;br /&gt;
* [[warpPlayerIntoVehicle]]{{RU/EN}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24038</id>
		<title>RU/getPlayerName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24038"/>
		<updated>2010-07-14T08:33:39Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
Функция возвращает строку, содержащую имя указанного игрока.&lt;br /&gt;
&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string getPlayerName ( player thePlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные параметры===&lt;br /&gt;
* '''thePlayer:''' Игрок, имя которого необходимо получить.&lt;br /&gt;
&lt;br /&gt;
===Возвращаемое значение===&lt;br /&gt;
Возвращает строку, содержащую имя указанного игрока, или ''false'', если параметр (игрок), переданный в функцию - неверный.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function(playerSource)&lt;br /&gt;
    outputChatBox(&amp;quot;Your name: &amp;quot;..getPlayerName(playerSource), playerSource)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example outputs the local player name to the chatbox.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function()&lt;br /&gt;
   local localPlayerName = getPlayerName(getLocalPlayer())&lt;br /&gt;
   --and we output it to the chatbox&lt;br /&gt;
   outputChatBox(localPlayerName)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
{{RU/Player functions}}&lt;br /&gt;
[[en:getPlayerName]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24037</id>
		<title>RU/getPlayerName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24037"/>
		<updated>2010-07-14T08:32:58Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
Функция возвращает строку, содержащую имя указанного игрока.&lt;br /&gt;
&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string getPlayerName ( player thePlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные параметры===&lt;br /&gt;
* '''thePlayer:''' Игрок, имя которого необходимо получить.&lt;br /&gt;
&lt;br /&gt;
===Возвращаемое значение===&lt;br /&gt;
Возвращает строку, содержащую имя указанного игрока, или ''false'', если параметр (игрок), переданный в функцию - неверный.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function(playerSource)&lt;br /&gt;
    outputChatBox(&amp;quot;Your name: &amp;quot;..getPlayerName(playerSource), playerSource)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example outputs the local player name to the chatbox.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function()&lt;br /&gt;
   local localPlayerName = getPlayerName(getLocalPlayer())&lt;br /&gt;
   --and we output it to the chatbox&lt;br /&gt;
   outputChatBox(localPlayerName)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
{{RU/Player functions}}&lt;br /&gt;
[[en:getPlayerName]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24036</id>
		<title>RU/getPlayerName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24036"/>
		<updated>2010-07-14T08:32:11Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
Функция возвращает строку, содержащую имя указанного игрока.&lt;br /&gt;
&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string getPlayerName ( player thePlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные параметры===&lt;br /&gt;
* '''thePlayer:''' Игрок, имя которого необходимо получить.&lt;br /&gt;
&lt;br /&gt;
===Возвращаемое значение===&lt;br /&gt;
Возвращает строку, содержащую имя указанного игрока, или ''false'', если параметр (игрок), переданный в функцию - неверный.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function(playerSource)&lt;br /&gt;
    outputChatBox(&amp;quot;Your name: &amp;quot;..getPlayerName(playerSource), playerSource)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example outputs the local player name to the chatbox.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function()&lt;br /&gt;
   local localPlayerName = getPlayerName(getLocalPlayer())&lt;br /&gt;
   --and we output it to the chatbox&lt;br /&gt;
   outputChatBox(localPlayerName)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
{{RU/Player functions}}&lt;br /&gt;
[[en:setPlayerName]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24035</id>
		<title>RU/getPlayerName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/getPlayerName&amp;diff=24035"/>
		<updated>2010-07-14T08:26:27Z</updated>

		<summary type="html">&lt;p&gt;KGB: Created page with '__NOTOC__ {{Server client function}} Функция возвращает строку, содержащую имя указанного игрока.  ==Синтаксис== &amp;lt;cod…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
Функция возвращает строку, содержащую имя указанного игрока.&lt;br /&gt;
&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string getPlayerName ( player thePlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные параметры===&lt;br /&gt;
* '''thePlayer:''' Игрок, имя которого необходимо получить.&lt;br /&gt;
&lt;br /&gt;
===Возвращаемое значение===&lt;br /&gt;
Возвращает строку, содержащую имя указанного игрока, или ''false'', если параметр (игрок), переданный в функцию - неверный.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function(playerSource)&lt;br /&gt;
    outputChatBox(&amp;quot;Your name: &amp;quot;..getPlayerName(playerSource), playerSource)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example outputs the local player name to the chatbox.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;myname&amp;quot;,&lt;br /&gt;
  function()&lt;br /&gt;
   local localPlayerName = getPlayerName(getLocalPlayer())&lt;br /&gt;
   --and we output it to the chatbox&lt;br /&gt;
   outputChatBox(localPlayerName)&lt;br /&gt;
  end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
{{Client player functions}}&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Category:Changes_in_1.1&amp;diff=24034</id>
		<title>Category:Changes in 1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Category:Changes_in_1.1&amp;diff=24034"/>
		<updated>2010-07-14T08:16:07Z</updated>

		<summary type="html">&lt;p&gt;KGB: Created page with 'These are scripting functions and events or general pages that are affected by MTA:SA 1.1.'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are scripting functions and events or general pages that are affected by MTA:SA 1.1.&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Category:%D0%AD%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82&amp;diff=23851</id>
		<title>Category:Элемент</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Category:%D0%AD%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82&amp;diff=23851"/>
		<updated>2010-07-02T17:16:51Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Element|Элемент]] - общий класс, отражающий почти все внутриигровые [[entity|объекты]]. Встроенными типами элементов являются:&lt;br /&gt;
&lt;br /&gt;
{{RU/Elements}}&lt;br /&gt;
&lt;br /&gt;
Можно создавать любые другие элементы, которые будут абстрактны и не будут относиться к каким-либо конкретным игровым [[entity|объектам]]. Например, элементы '''ресурс''' и '''карта''' создаются когда ресурсы и карты загружают группу объектов, создаваемых ими как дочерние элементы.&lt;br /&gt;
&lt;br /&gt;
Элементы объединяют общие функции, такие как тип и список параметров, операция уничтожения убирает как элемент, так и его игровое представление, с которым он связан (за исключение некоторых элементов, которые не могут быть уничтожены, например, элементы клиентов), хранение и представление [[element data|данных элемента]], и другие общие операции.&lt;br /&gt;
&lt;br /&gt;
Все элементы хранятся в [[Element tree|древовидной структуре]], поэтому все элементы, кроме '''root''' имеют родительский элемент, которым может быть '''root''', '''resource''', '''map''' или другой элемент. Он определяет сферу действия вызываемой функции.&lt;br /&gt;
&lt;br /&gt;
==Связанные функции скриптинга==&lt;br /&gt;
===Клиент===&lt;br /&gt;
{{Client element functions}}&lt;br /&gt;
===Сервер===&lt;br /&gt;
{{Element functions}}&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
&lt;br /&gt;
[[it:Elemento]]&lt;br /&gt;
[[en:Element]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/Debugging&amp;diff=23850</id>
		<title>RU/Debugging</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/Debugging&amp;diff=23850"/>
		<updated>2010-07-02T17:12:29Z</updated>

		<summary type="html">&lt;p&gt;KGB: Translating&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При написании скриптов вы обязательно столкнетесь с проблемами, которые не сможете решить немедленно. Цель этой страницы - показать вам основные способыы нахождения ошибок.&lt;br /&gt;
&lt;br /&gt;
==Консоль отладки==&lt;br /&gt;
MTA включает консоль, которая показывает отладочные сообщения, выводимые функциями MTA и скриптами. Вы можете открыть ее введя ''debugscript x'' в консоли, где ''x'' уровень отладки:&lt;br /&gt;
* '''1:''' только ошибки&lt;br /&gt;
* '''2:''' ошибки и предупреждения&lt;br /&gt;
* '''3:''' ошибки, предупреждения и информационные сообщения&lt;br /&gt;
Так, введя ''debugscript 3'', вы будете видеть все сообщения, этот или 2 уровень рекомендуется в большинстве случаев. Рекомендуем держать debugscript включенным всё время, пока вы тестируете свой скрипт, это поможет вам обнаружить мелкие ошибки и исправить их.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
Этот участок кода содержит две ошибки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;)&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
При попытке запуска скрипта, содержащего этот участо кода, debugscript выведет что-то похожее на:&lt;br /&gt;
{{Debug info|Loading script failed: C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\myResource\script.lua:15: 'then' expected near ´outputChatbox'}}&lt;br /&gt;
Это означает, что скрипт не может быть обработан из-за синтаксической ошибки. Показывается путь к скрипту, поэтому вы можете увидеть, какому ресурсу он принадлежит, ('myResource' в данном случае) и, конечно же, имя скрипта. После имени файла показан номер строки и информация об ошибке. Теперь проблема легко решается, мы просто забыли написать ключевое слово 'then':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Теперь скрипт загрузится нормально и не будет выводить ошибок пока не выполнится для игрока с ником 'Fedor'. Тогда debugscript выведет:&lt;br /&gt;
{{Debug error|C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\d\script.lua:15: attempt to call global 'outputChatbox' (a nil value)}}&lt;br /&gt;
Это значит, вызванная вами функция не существует, оно и понятно, ведь правильное название этой функции ''outputChatBox'' (с заглавной буквы ''B''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatBox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Конечно, это просто пример, есть множество других сообщений и сценариев.&lt;br /&gt;
&lt;br /&gt;
==Ведение лога==&lt;br /&gt;
Можно также включить режим дебаггера, отредактировав ''coreconfig.xml'' в папке GTA\MTA. Найдите в нем следующий тэг:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И впишите туда адрес будущего лог-файла (путь указывайте, начиная с папки GTA):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile&amp;gt;MTA\debugscript.log&amp;lt;/debugfile&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И теперь все сообщения дебаггера будут записываться в этот файл. Если хотите выключить ведение лога, оставьте содержимое тэга пустым:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Стратегии отладки==&lt;br /&gt;
Есть несколько методов, помогающих в поиске ошибок, кроме проверки всего кода. Большинство из них включает вывод различной информации, зависящей от конкретной ситуации.&lt;br /&gt;
&lt;br /&gt;
===Полезные функции===&lt;br /&gt;
Сперва несколько функций, которые можно использовать для отладки.&lt;br /&gt;
* [[outputDebugString]] или [[outputChatBox]] для вывода информации&lt;br /&gt;
* [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] для преобразования значений переменных в строки, к примеру когда они содержат булевы значения&lt;br /&gt;
* [[getElementType]] для определения типа элемента MTA&lt;br /&gt;
&lt;br /&gt;
===Вывод отладочных сообщений для проверки ''как'', ''когда'' или ''как часто'' выполняется та или иная часть кода===&lt;br /&gt;
Простейшим примером является проверка, выполняется ли условие в операторе ''if''. Чтобы выполнить такую проверку, просто добавьте любое сообщение (которое вы сможете узнать впоследствии) внутрь секции, выполняемой при истинном условии в операторе ''if''.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (variable1 == variable2) then&lt;br /&gt;
	outputDebugString(&amp;quot;entered if&amp;quot;)&lt;br /&gt;
	-- do anything&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{translate}}&lt;br /&gt;
Another application would be to check when variable values are modified. First search for all occurences of the variable being edited and add a message just beside i&lt;br /&gt;
&lt;br /&gt;
===Вывод отладочных сообщений для проверки ''значения'' переменной===&lt;br /&gt;
Допустим, вы хотите создать маркер, но он не появляется в ожидаемом месте. Первое, что вы возможно захотите сделать - проверить, выполняется ли функция [[createMarker]].Но одновременно с этим можно также проверить передаваемые а функцию [[createMarker]] параметры.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
outputChatBox(tostring(x)..&amp;quot; &amp;quot;..tostring(y)..&amp;quot; &amp;quot;..tostring(z))&lt;br /&gt;
createMarker(x,y,z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Этот код выведет 3 переменные - координаты маркера. Можно легко сравнить предполагаемые значения со значениями, выведенными при отладке. [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] преобразует переменные в строки, даже если они имеют, например, логический тип.&lt;br /&gt;
&lt;br /&gt;
{{translate}}&lt;br /&gt;
==Пример==&lt;br /&gt;
Imagine you created a colshape (collision shape) somewhere and you want a player to stay 10 seconds in it, then perform some action.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
When a player enters the colshape, debugscript outputs the following message:&lt;br /&gt;
{{Debug error|..[path]: attempt to index global 'colshapeTimer' (a nil value)}}&lt;br /&gt;
This means you tried to index a table that does not exist. In the example above, this is done when storing the timer id in the table. We need to add a check if the table exists and if not create it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we still get a warning when a player enters the colshape, waits for the message and leaves it again:&lt;br /&gt;
&lt;br /&gt;
{{Debug warning|[..]: Bad argument @ 'killTimer' Line: ..}}&lt;br /&gt;
&lt;br /&gt;
Except for that (we will talk about that later) everything seems to work fine. A player enters the colshape, the timer is started, if he stays the message occurs, if he leaves the timer is killed.&lt;br /&gt;
&lt;br /&gt;
===A more inconspicuous error===&lt;br /&gt;
But for some reason the message gets outputted twice when you stay in the colcircle while in a vehicle. Since it would appear some code is executed twice, we add debug messages to check this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a debug message&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit&amp;quot;)&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a debug message&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave&amp;quot;)&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we notice that both handler functions get executed twice when we are in a vehicle, but only once when we are on-foot. It would appear the vehicle triggers the colshape as well. To confirm this theory, we check the ''player'' variable that '''should''' contain a player element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The debug messages tell us that one of the ''player'' variables is a player, the other one a vehicle element. Since we only want to react when a player enters the colshape, we add an ''if'' that will end the execution of the function if it's '''not''' an player element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the script should work as desired, but will still output the warning mentioned above. This happens because the timer we try to kill when a player leaves the colshape will not exist anymore when it reached the 10 seconds and is executed. There are different ways to get rid of that warning (since you know that the timer might not exist anymore and you only want to kill it if it is there). One way would be to check if the timer referenced in the table really exists. To do this, we need a little help function:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function isTimer(timer)&lt;br /&gt;
	local timers = getTimers()&lt;br /&gt;
	for k,v in ipairs(timers) do&lt;br /&gt;
		if (v == timer) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Which we will use when we kill the timer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So the complete working code would be:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
		killTimer(colshapeTimer[player])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&lt;br /&gt;
function isTimer(timer)&lt;br /&gt;
	local timers = getTimers()&lt;br /&gt;
	for k,v in ipairs(timers) do&lt;br /&gt;
		if (v == timer) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[en:Debugging]]&lt;br /&gt;
[[it:Guida al Debug]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/Server_Scripting_Events&amp;diff=23666</id>
		<title>RU/Server Scripting Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/Server_Scripting_Events&amp;diff=23666"/>
		<updated>2010-06-11T11:12:45Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{translate}}&lt;br /&gt;
&amp;lt;pageclass class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
На этой странице перечислены все '''серверные''' скрипты [[RU/Client Scripting Events|события]], которые были реализованы и доступны в Deathmatch моде. Чтобы получить функцию или событие, используйте [[RU/Client Scripting Events|Запрашиваемые функции и события]].&lt;br /&gt;
&lt;br /&gt;
'''События, генерируемые на клиентской стороне, можно найти здесь: [[RU/Client Scripting Events|cобытия, генерируемые на стороне клиента]].&lt;br /&gt;
&lt;br /&gt;
==Клиентские события==&lt;br /&gt;
{{Client_events}}&lt;br /&gt;
&lt;br /&gt;
==Colshape события==&lt;br /&gt;
{{Colshape_events}}&lt;br /&gt;
&lt;br /&gt;
==События элементов==&lt;br /&gt;
{{Element_events}}&lt;br /&gt;
&lt;br /&gt;
==События маркеров==&lt;br /&gt;
{{Marker_events}}&lt;br /&gt;
&lt;br /&gt;
==События пикапов==&lt;br /&gt;
{{Pickup_events}}&lt;br /&gt;
&lt;br /&gt;
==События игрока==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
==События педов==&lt;br /&gt;
{{Ped_events}}&lt;br /&gt;
&lt;br /&gt;
==События ресурсов==&lt;br /&gt;
{{Resource_events}}&lt;br /&gt;
&lt;br /&gt;
==Серверные события==&lt;br /&gt;
{{Server_events}}&lt;br /&gt;
&lt;br /&gt;
==События транспорта==&lt;br /&gt;
{{RU/Vehicle_events}}&lt;br /&gt;
[[en:Server Scripting Events]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Getting_MTA:SA_to_work_with_wine&amp;diff=20648</id>
		<title>Getting MTA:SA to work with wine</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Getting_MTA:SA_to_work_with_wine&amp;diff=20648"/>
		<updated>2009-07-17T15:58:06Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You will need the latest version of Wine to get the installer working.&lt;br /&gt;
&lt;br /&gt;
Install MTA:SA:DM, it does not matter wherever you install MTA, and the GTA:SA path.&lt;br /&gt;
&lt;br /&gt;
You will need the version of Wine greater than 0.9.49 to run MTA:SA:DM.&lt;br /&gt;
&lt;br /&gt;
Once you installed it, download the [http://ijs.bastage.net/mta/mta_unix.zip *nix loader], and extract it to your GTA:SA directory.&lt;br /&gt;
&lt;br /&gt;
Download the fonts [http://www.afosteo.org/Download/Fonts/verdana.ttf verdana], [http://www.bikeparadise.cz/jpgraph/ttf/tahoma.ttf tahoma] and [http://www.bikeparadise.cz/jpgraph/ttf/tahomabd.ttf tahomabd] needed by CEGUI, and place them in $HOME/.wine/drive_c/windows/fonts/&lt;br /&gt;
&lt;br /&gt;
Open &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;winecfg&amp;lt;/syntaxhighlight&amp;gt;, go to the graphics tab, and uncheck &amp;quot;Allow Pixel Shader&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Remove in your GTA:SA directory MTA/data/menu.mkv&lt;br /&gt;
&lt;br /&gt;
Paste [http://pastebin.com/f4c91e22b this] in MTA/coreconfig.xml (menu_options must be always 7).&lt;br /&gt;
&lt;br /&gt;
Run MTA_SA_unix.exe&lt;br /&gt;
&lt;br /&gt;
[[ru:Getting MTASADM to work with wine]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Getting_MTA:SA_to_work_with_wine&amp;diff=20647</id>
		<title>Getting MTA:SA to work with wine</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Getting_MTA:SA_to_work_with_wine&amp;diff=20647"/>
		<updated>2009-07-17T15:56:46Z</updated>

		<summary type="html">&lt;p&gt;KGB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You will need the latest version of Wine to get the installer working.&lt;br /&gt;
&lt;br /&gt;
Install MTA:SA:DM, it does not matter wherever you install MTA, and the GTA:SA path.&lt;br /&gt;
&lt;br /&gt;
You will need the version of Wine greater than 0.9.49 to run MTA:SA:DM.&lt;br /&gt;
&lt;br /&gt;
Once you installed it, download the [http://ijs.bastage.net/mta/mta_unix.zip *nix loader], and extract it to your GTA:SA directory.&lt;br /&gt;
&lt;br /&gt;
Download the fonts [http://www.afosteo.org/Download/Fonts/verdana.ttf verdana], [http://www.bikeparadise.cz/jpgraph/ttf/tahoma.ttf tahoma] and [http://www.bikeparadise.cz/jpgraph/ttf/tahomabd.ttf tahomabd] needed by CEGUI, and place them in $HOME/.wine/drive_c/windows/fonts/&lt;br /&gt;
&lt;br /&gt;
Open &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;winecfg&amp;lt;/syntaxhighlight&amp;gt;, go to the graphics tab, and uncheck &amp;quot;Allow Pixel Shader&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Remove in your GTA:SA directory MTA/data/menu.mkv&lt;br /&gt;
&lt;br /&gt;
Paste [http://pastebin.com/f4c91e22b this] in MTA/coreconfig.xml (menu_options must be always 7).&lt;br /&gt;
&lt;br /&gt;
Run MTA_SA_unix.exe&lt;br /&gt;
&lt;br /&gt;
[[ru:Editing Getting MTASADM to work with wine]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/Getting_MTA:SA_to_work_with_wine&amp;diff=20646</id>
		<title>RU/Getting MTA:SA to work with wine</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/Getting_MTA:SA_to_work_with_wine&amp;diff=20646"/>
		<updated>2009-07-17T15:54:55Z</updated>

		<summary type="html">&lt;p&gt;KGB: New page: Вам понадобится последняя версия Wine.  Установите MTA:SA:DM, абсолютно не важно, какой у Вас путь к MTA и к GTA:SA. ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вам понадобится последняя версия Wine.&lt;br /&gt;
&lt;br /&gt;
Установите MTA:SA:DM, абсолютно не важно, какой у Вас путь к MTA и к GTA:SA.&lt;br /&gt;
&lt;br /&gt;
Вам нужен Wine версии 0.9.49 или более поздней для запуска MTA:SA:DM.&lt;br /&gt;
&lt;br /&gt;
Как только установите его, скачайте [http://ijs.bastage.net/mta/mta_unix.zip Загрузчик для *nix ], и извлеките его в папку с GTA:SA.&lt;br /&gt;
&lt;br /&gt;
Скачайте шрифты [http://www.afosteo.org/Download/Fonts/verdana.ttf verdana], [http://www.bikeparadise.cz/jpgraph/ttf/tahoma.ttf tahoma] и [http://www.bikeparadise.cz/jpgraph/ttf/tahomabd.ttf tahomabd] нужные для CEGUI, и скопируйте их в $HOME/.wine/drive_c/windows/fonts/&lt;br /&gt;
&lt;br /&gt;
Откройте &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;winecfg&amp;lt;/syntaxhighlight&amp;gt;, перейдите на вкладку &amp;quot;Графика&amp;quot;, и снимите флажок &amp;quot;Разрешить Пиксельные Шейдеры&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Удалите из вашей папки с GTA:SA файл MTA/data/menu.mkv&lt;br /&gt;
&lt;br /&gt;
Вставьте [http://pastebin.com/f4c91e22b это] в MTA/coreconfig.xml (menu_options всегда должен быть равен 7).&lt;br /&gt;
&lt;br /&gt;
Запустите MTA_SA_unix.exe&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/Server_Manual&amp;diff=20645</id>
		<title>RU/Server Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/Server_Manual&amp;diff=20645"/>
		<updated>2009-07-17T15:29:04Z</updated>

		<summary type="html">&lt;p&gt;KGB: /* Установка/обвновление файлов ресурсов на вашем сервере */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Начало==&lt;br /&gt;
Установить и запустить ваш собственный сервер для сети интернет или локальной сети намного проще, чем вам могло показаться на первый взгляд. Следуйте указаниям, описанным в этой статье чтоб создать свой собственный MTA:SA DM сервер.&lt;br /&gt;
&lt;br /&gt;
==Установка сервера==&lt;br /&gt;
В зависимости от платформы сервера имеется несколько вариантов серверного приложения MTA:SA DM.&lt;br /&gt;
&lt;br /&gt;
===Установка серверного приложения в операционной системе Linux===&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
Ниже описывается установка серверного приложения в операционной системе(далее ОС) Ubuntu 6.05 LTS. Позже будут добавлены инструкции по установке серверного приложения на другие версии ОС Linux.&lt;br /&gt;
Описываемая установка выполнялась в недавно установленной ОС, поэтому некоторые вещи будут устанавливаться впервые.&lt;br /&gt;
Первоначально все ssh на вашем сервере используют любой клиент, который вы пожелаете.&lt;br /&gt;
Некоторые предпочитают изменить это.&lt;br /&gt;
Начните с ввода '''sudo apt-get upgrade'''. Вам потребуется ваш пароль снова. После выполнения обновления выполните&lt;br /&gt;
'''sudo apt-get install pico'''. Это позволит вам легко выполнить установку, используя pico text editor, который вы будете использовать для редактирования файлов настройки.&lt;br /&gt;
После выполнения установки, вам необходимо получить копию libcurl3 для сервера. Чтобы запустить установку введите '''sudo apt-get install libcurl3'''.&lt;br /&gt;
Вам снова придется ввести ваш пароль. После этого необходимо получить серверное приложение для вашего сервера Linux. Имеется несколько способов сделать это. Вы можете получить установочный дистрибутив с ftp сервера. Вы можете использовать передачу файлов. Если вы знаете какой-либо веб-сайт, вы можете скачать файл с этого веб-сайта, используя команду '''wget http://wwww.websitename.com/file.tar''' Где в качестве адреса веб-сайта используйте адрес известного вам сайта. После получения необходимого tar файла, вам необходимо распаковать его, используя команду '''tar -zxvf filename.tar'''&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
Далее предполагается, что вы используете Gentoo и знаете как получить файлы с веб-сайтов для своего сервера... (в противном случае, читайте предыдущий пункт, посвященный Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ниже описаны действия для DP2:&lt;br /&gt;
&lt;br /&gt;
Обновите вашу версию gcc до 4.2.2:&lt;br /&gt;
* уберите маску gcc в /etc/portage/package.unmask)&lt;br /&gt;
* выйдите из gcc&lt;br /&gt;
* перейдите к gcc 4.2.2: gcc-config i686-pc-linux-gnu-4.2.2&lt;br /&gt;
Обновите вашу версию libstdc++ до 3.3 (если у вас еще не установлено это обновление)&lt;br /&gt;
* выйдите из libstdc++&lt;br /&gt;
Установите libcurl:&lt;br /&gt;
* выйдите из libcurl&lt;br /&gt;
Распакуйте mtasa, и запустите его...&lt;br /&gt;
&lt;br /&gt;
===Установка серверного приложения в операционной системе Windows===&lt;br /&gt;
Установку серверного приложения MTA:SA DM в операционной системе Windows выполнить гораздо легче.&lt;br /&gt;
*Перейдите на [http://mtasa.com/dp.html страницу загрузки] и найдите на странице раздел &amp;quot;Dedicated servers&amp;quot;.&lt;br /&gt;
*Нажмите на ссылку, предназначенную для ОС Windows.&lt;br /&gt;
*После загрузки программы установки запустите её.&lt;br /&gt;
*Выберете директорию, в которую вы хотите установить серверное приложение.&lt;br /&gt;
*Нажмите кнопку Install.&lt;br /&gt;
*На этом установка завершена!&lt;br /&gt;
&lt;br /&gt;
==Настройка сервера==&lt;br /&gt;
Откройте в текстовом редакторе(например, Windows Notepad) файл ''''mtaserver.conf'''', расположенный в директории &amp;lt;SERVER&amp;gt;/mods/deathmatch.&lt;br /&gt;
&lt;br /&gt;
Этот файл удобно редактировать: каждая переменная имеет описание того, что с помощью нее можно изменить и какие значения она может принимать.&lt;br /&gt;
&lt;br /&gt;
===Добавление администраторов===&lt;br /&gt;
''Для получения подробной информации об acl.xml (access control list) читайте: [[Access_Control_List|Access Control List]]''&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Чтобы добавить администраторов ваших игровых серверов выполните следующие шаги:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Посмотрите ваши игровые сервера в директории 'deathmatch', открыв файл Accounts.xml&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Добавьте новую учетную запись в файл, используя синтаксис описанный ниже&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 10px&amp;quot;&amp;gt;&lt;br /&gt;
''''Синтаксис, используемый в файле Accounts.xml''''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;account name=&amp;quot;Username&amp;quot; password=&amp;quot;UserPassword&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Сохраните и закройте файл&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Откройте файл acl.xml&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Выберите один из следующих наборов прав администратора: Moderator, SuperModerator или Admin&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;В выбранную группу добавьте учетную запись, которую вы создали ранее, используя синтаксис описанный ниже&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 10px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;object name=&amp;quot;user.Username&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У вас должно получиться, что-то похожее на:&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 10px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;group name=&amp;quot;Admin&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;object name=&amp;quot;user.Username&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Добавление администратора завершено! Этим способом вы можете добавить необходимое вам количество администраторов, только остерегайтесь создания одинаковых учетных записей и одинаковых ACL прав.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
'''Обратите внимание: 1)''' Изменение этих файлов вступят в силу только после перезапуска игрового сервера&amp;lt;br /&amp;gt;&lt;br /&gt;
'''2)''' Существует также другой способ добавления учетных записей и редактирования прав во время работы игрового сервера. Команда '''addaccount &amp;lt;user&amp;gt; &amp;lt;password&amp;gt;''' является встроенной командой для добавления учетных записей, позволяющей вам посредством веб интерфейса управлять ACL правами во время работы игрового сервера. (Этот способ может быть наилучшим для вас, если первый способ не работает)&lt;br /&gt;
&lt;br /&gt;
=== Настройка внешнего веб-сервера ===&lt;br /&gt;
Из соображений производительности и стабильности работы лучше использовать внешний веб-сервер, вместо встроенного веб-сервера. Внешний веб-сервер должен быть доступен всем, чтобы любой пользователь мог скачать необходимые файлы ресурсов для клиентского приложения, а затем подключиться и играть на вашем игровом сервере.&lt;br /&gt;
&lt;br /&gt;
Чтобы разрешить скачивание ресурсов с внешнего веб-сервера, вы должны настроить теги ''httpdownload'' и ''httpdownloadurl'' в настройках вашего сервера:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 10px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;httpdownload&amp;gt;1&amp;lt;/httpdownload&amp;gt;	&lt;br /&gt;
&amp;lt;httpdownloadurl&amp;gt;http://www.myserver.tld/directory/here&amp;lt;/httpdownloadurl&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того, как все сжатые файлы ресурсов будут загружены со специализированного сервера, они обычно автоматически распаковываются встроенным веб-сервером, теперь вы можете обеспечить способ для закачки клиентскими приложениями на компьютер несжатых файлов. Несжатые файлы обычно доступны в директории '''&amp;lt;SERVER&amp;gt;/mods/deathmatch/resourcecache'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Запустите специализированный сервер и выйдите. После этого сжатые zip файлы распакуются в директорию '''&amp;lt;SERVER&amp;gt;/mods/deathmatch/resourcecache'''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Перейдите в эту директорию и скопируйте ресурсы в доступную для других пользователей директорию вашего внешнего веб сервера. Это можно сделать следующими способами:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Если вы не позаботитесь о том, чтобы '''файлы, размещенные на вашем сервере были доступны''': создайте символьную ссылку(Linux), соединение(Windows) или явную копию содержимого директории '''resourcecache''' в общедоступной директории вашего веб-сервера.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Если вы не хотите, чтобы файлы сервера были доступны остальным пользователям с вашего веб-сервера: перейдите в директорию '''resourcecache''' и вручную скопируйте директорию в директорию вашего сервера, доступную для других пользователей, удалите все файлы, предназначенные для сервера (они '''не''' нужны для скачивания клиентским приложениям) которые вы не хотите, чтобы были доступны с вашего веб-сервера.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Более быстрый способ защиты ваших файлов, предназначенных для сервера в настоящее время недоступен. Инструментальное средство, автоматически копирующее только необходимые для клиентского приложения файлы всех ресурсов с вашего сервера, находится в разработке.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Обратите внимание: 1)''' Пожалуйста избегайте использования любых специальных символов (например ~, !) в ваших адресах URL для скачивания файлов.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''2)''' Пожалуйста не используйте слеш в конце ваших URL для скачивания(например, используйте ''hxxp://www.myserver.tld/directory'' вместо ''hxxp://www.myserver.tld/directory/'')&lt;br /&gt;
&lt;br /&gt;
==Запуск сервера==&lt;br /&gt;
Перед запуском сервера убедитесь в том, что вы завершили все настройки сервера!&lt;br /&gt;
&lt;br /&gt;
Чтоб запустить серверное приложение MTA:SA DM, дважды щелкните указателем мыши по MTA Server.exe. Убедитесь в том, что брандмауэр или антивирус не ограничивают нормальный доступ  MTA:SA DM к сети. Если все прошло удачно, то сервер нормально запущен и функционирует!&lt;br /&gt;
&lt;br /&gt;
==Установка/обновление файлов ресурсов на вашем сервере==&lt;br /&gt;
Файлы ресурсов могут быть в двух форматах, либо в формате ZIP или в обычной директории, содержащей файлы сценариев. Серверное приложение MTA:SA DM поддерживает оба формата.&lt;br /&gt;
&lt;br /&gt;
# Переместите или скопируйте новые ресурсы в директорию &amp;lt;SERVER&amp;gt;\mods\deathmatch\resources.&lt;br /&gt;
# В окне серверного приложения введите команду &amp;quot;refresh&amp;quot; (без выхода из приложения). Это позволит приложению повторно просмотреть директорию с ресурсами и обновить их список при необходимости.&lt;br /&gt;
&lt;br /&gt;
==Удаление ресурсов==&lt;br /&gt;
Ресурсы могут быть легко удалены с вашего сервера, если они вам больше не нужны.&lt;br /&gt;
&lt;br /&gt;
# Удалите ZIP файл или директорию с ресурсами, которые вы хотите удалить&lt;br /&gt;
# В окне серверного приложения введите команду &amp;quot;refresh&amp;quot; (без выхода из приложения). Это позволит приложению повторно просмотреть директорию с ресурсами и обновить их список при необходимости.&lt;br /&gt;
&lt;br /&gt;
==Администрирование сервера==&lt;br /&gt;
Вы можете запустить ресурсы, введя команду &amp;quot;start resourcename&amp;quot; в консоли серверного приложения, или остановить их выполнение введя &amp;quot;stop resourcename&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Также возможно выполнять эти и другие команды администратора в игровой консоле (которую вы можете открыть нажав клавишу ` или F8). Чтобы все это работало, вам сначала необходимо выполнить вход с помощью команды &amp;quot;login username password&amp;quot;. Кроме того, вы можете нажать клавишу p для отображения панели администратора - это графический интерфейс, позволяющий вам легко наказать провинившихся игроков.&lt;br /&gt;
&lt;br /&gt;
Для получения информации о других командах, введите команду &amp;quot;help&amp;quot; в окне консоли.&lt;br /&gt;
&lt;br /&gt;
==Запуск игровой карты/режима игры==&lt;br /&gt;
Смотрите раздел документации [[Resource:Map manager|mapmanager]] для получения более подробной информации.&lt;br /&gt;
&lt;br /&gt;
==Удаленное администрирование сервера==&lt;br /&gt;
В этом разделе предполагается, что вы настроили работу учетной записи с правами пользователя 'Admin', и у вас имеются следующие ресурсы:&lt;br /&gt;
# ResourceBrowser&lt;br /&gt;
# ResourceManager&lt;br /&gt;
# WebAdmin&lt;br /&gt;
# WebMap&lt;br /&gt;
&lt;br /&gt;
Вы можете получить доступ к этим инструментам удаленного администрирования, посетив веб-ресурс &amp;lt;nowiki&amp;gt;http://&amp;lt;yourserverip&amp;gt;:&amp;lt;httpport&amp;gt;/resourcebrowser&amp;lt;/nowiki&amp;gt; в вашем Firefox. &lt;br /&gt;
'''Обратите внимание: Internet Explorer не работает, он не отображает браузер ресурсов, другие веб-браузеры (а именно Opera) будут смешивать результаты'''. Если вы хотите работать в Internet Explorer, то почуствуете неудобство при перекодировании ресурсов:)&lt;br /&gt;
&lt;br /&gt;
==Полезные заметки==&lt;br /&gt;
&lt;br /&gt;
# Вы также можете обновить ресурсы во время игры, введя команду &amp;quot;refresh&amp;quot; в окне консоли клиентского приложения или команду &amp;quot;/refresh&amp;quot; в окне чата. Это может привести к временным неудобствам, если имеется большое число ресурсов.&lt;br /&gt;
# Во всех указаниях, описанных выше под &amp;lt;SERVER&amp;gt; понимался путь к главной директории вашего серверного приложения. В большинстве случаев это C:\Program Files\MTA San Andreas\server&lt;br /&gt;
&lt;br /&gt;
====Нужна дополнительная помощь?====&lt;br /&gt;
Вы можете связаться с командой разработчиков на их [http://forum.mtasa.com/ форумах] или на  [irc://irc.multitheftauto.com/mta IRC] каналах (irc.multitheftauto.com #mta - [http://www.mirc.com MIRC])&lt;br /&gt;
&lt;br /&gt;
[[de:MTA DM Server Anleitung]]&lt;br /&gt;
[[en:Deathmatch Server Manual]]&lt;br /&gt;
[[it:Manuale del Server]]&lt;br /&gt;
[[nl:Deathmatch Server Manual]]&lt;/div&gt;</summary>
		<author><name>KGB</name></author>
	</entry>
</feed>