# 000107. Обзор класса GAME

Обзор класса GAME|Всем привет! 8 уроков мы изучали некоторые возможности и особенности C#. Теперь мы будем их применять, используя библиотеку ScriptHookDotNet.|wmysterio|wmysterio||||Сегодня мы рассмотрим класс этой библиотеки -**GAME**. Содержит он функции, которые связаны с игровым процессом и я рассказу вам о тех, которые понял сам. Некоторые из них требуют подключить ссылку на библиотеку**System.Windows.Forms**. Сделаем это:

![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/1/43771574.png)

B добавим ссылку в коде скрипта:

```
cs
using System.Windows.Forms;
```

Теперь мы можем пользоваться функциями класса "GAME". Начнём наш обзор с функций:

<table data-header-hidden><thead><tr><th></th></tr></thead><tbody><tr><td><p>```</p><p>cs /* делает затемнение экрана: <em>/ Game.FadeScreenOut(1000, true); /</em> Здесь: 1000 - время, за которое нужно затемнить экран true - указывает, что нужно подождать пока экран не затемниться окончательно ( параметр не обязательный ) */</p><pre><code>Пример в Sanny Builder:
</code></pre><p>fade 0 1000 repeat wait 0 until fading</p><pre><code>&#x3C;/td>&#x3C;/tr>

\<tr>\<td> </code></pre><p>cs /\* делает осветление экрана: <em>/ Game.FadeScreenIn(1000, true); /</em> Здесь: 1000 - время, за которое нужно осветлить экран true - указывает, что нужно подождать пока экран не осветлиться окончательно ( параметр не обязательный ) \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>fade 1 1000 repeat wait 0 until fading</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Выводит сообщение (TEXTBOX) на экране: <em>/ Game.DisplayText("This is my text"); /</em> Здесь: "This is my text" - необходимый нам текст \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>03E5: 'GXTNAME' // This is my text 0ACE: "This is my text"</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Включает или отключает максимальный лимит патронов: <em>/ Game.DisableMaxAmmoLimit = true; /</em> Здесь: false - включает лимит true - отключает лимит \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Записывает в переменную текущий FPS: <em>/ Game.FPS; /</em> Здесь: Возвращаемый тип: float \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Делает автосохранение игры. Если это делается в первый раз, то игра предоставит список слотов с сохранениями, куда нужно сохранить игру: \*/ Game.DoAutoSave();</p><pre><code>Пример в Sanny Builder: </code></pre><p>03D8: show\_save\_screen</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает статистику игрока с типом int: <em>/ Game.GetIntegerStatistic(IntegerStatistic.ARMED\_KILLS); /</em> Здесь: IntegerStatistic.ARMED\_KILLS - объект коллекции IntegerStatistic</p><p>Возвращаемый тип: int \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0652: 1@ = integer\_stat 181</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает статистику игрока с типом float: <em>/ Game.GetFloatStatistic(FloatStatistic.MILES\_BY\_CAR); /</em> Здесь: FloatStatistic.MILES\_BY\_CAR - объект коллекции FloatStatistic</p><p>Возвращаемый тип: float \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0653: 0@ = float\_stat 21</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* делает затемнение экрана: <em>/ Game.FadeScreenOut(1000, true); Game.FadeScreenOut(1000); /</em> Здесь: 1000 - время, за которое нужно затемнить экран true - указывает, что нужно подождать пока экран не затемниться окончательно(параметр не обязательный, но рекомендуемый)</p><p>\*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>fade 0 1000</p><p>repeat wait 0 until fading</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* делает осветление экрана: <em>/ Game.FadeScreenIn(1000, true); Game.FadeScreenIn(1000); /</em> Здесь: 1000 - время, за которое нужно осветлить экран true - указывает, что нужно подождать пока экран не осветлиться окончательно(параметр не обязательный, но рекомендуемый) \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>fade 1 1000</p><p>repeat wait 0 until fading</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Выводит сообщение (TEXTBOX) на экране: <em>/ Game.DisplayText("This is my text"); /</em> Здесь: "This is my text" - необходимый нам текст \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>03E5: 'GXTNAME' // This is my text 0ACE: "This is my text"</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Включает/отключает максимальный лимит патронов: <em>/ Game.DisableMaxAmmoLimit = true; /</em> Здесь: false - включает лимит true - отключает лимит \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Записывает в переменную текущий FPS: <em>/ Game.FPS; /</em> Здесь: Возвращаемый тип: float \*/</p><pre><code>Пример в Sanny Builder:нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Делает автосохранение игры. При первом использовании игра предоставит выбор слота для сохранения: \*/ Game.DoAutoSave();</p><pre><code>Пример в Sanny Builder: </code></pre><p>03D8: show\_save\_screen</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает статистику игрока с типом int: <em>/ Game.GetIntegerStatistic(IntegerStatistic.ARMED\_KILLS); /</em> Здесь: IntegerStatistic.ARMED\_KILLS - объект коллекции IntegerStatistic</p><p>Возвращаемый тип: int \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0652: 1@ = integer\_stat 181</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает статистику игрока с типом float: <em>/ Game.GetFloatStatistic(FloatStatistic.MILES\_BY\_CAR); /</em> Здесь: FloatStatistic.MILES\_BY\_CAR - объект коллекции FloatStatistic</p><p>Возвращаемый тип: float \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0653: 0@ = float\_stat 21</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Возвращает директорию, куда установлена игра: <em>/ Game.InstallFolder; /</em> Здесь: Возвращаемый тип: string \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "игра запущена в полный экран?": <em>/ Game.isFullscreen /</em> Здесь: Возвращаемый тип: bool \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Нажал ли игрок игровую клавишу - Атаковать": <em>/ Game.isGameKeyPressed(GameKey.Attack) /</em> Здесь: GameKey.Attack - элемент коллекции GameKey</p><p>Возвращаемый тип: bool \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>00E1: player 0 pressed\_key 17</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Нажал ли игрок конкретную клавишу - F4": <em>/ Game.isKeyPressed(Keys.F4) /</em> Здесь: Keys.F4 - элемент коллекции Keys</p><p>Возвращаемый тип: bool \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0AB0: key\_pressed 115 // F4</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Режим игры - мультиплеер?": <em>/ Game.isMultiplayer /</em> Здесь: Возвращаемый тип: bool \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Узнать текущего локального игрока: <em>/ GTA.Player MyPlayer = Game.LocalPlayer; /</em> Здесь: MyPlayer - экземпляр класса GTA.Player \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>$PLAYER\_CHAR</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Останавливает игру: <em>/ Game.Pause(); /</em> Важно! Как и SannyBuilder, можно остановить игру. Как её продолжить я пока не знаю. \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>015D: set\_gamespeed 0.0</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Игра остановлена?": <em>/ Game.Paused /</em> Здесь: Возвращаемый тип: bool \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проигрывает мелодию события: <em>/ Game.PlayAudioEvent("EventName"); /</em> Здесь: EventName - Имя события(string) \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>018C: play\_sound 1052 at 0.0 0.0 0.0</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* запускает главную мелодию GTA 4 ( при загрузке слышно ): \*/ Game.PlayCreditsMusic();</p><pre><code>Пример в Sanny Builder: </code></pre><p>0952: load\_soundtrack 1 0954: start\_playing\_loaded\_soundtrack</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Количество игроков ( в мультиплеере, наверное ): <em>/ Game.PlayerCount; /</em> Здесь: Возвращаемый тип: int \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получить список игроков ( в мультиплеере наверное ): <em>/ Game.PlayerList; /</em> Здесь: Возвращаемый тип: массив класса Player \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проигрывает определённый звук: <em>/ Game.PlayFrontendSound("FrontedSoud"); /</em> Здесь: FrontedSoud - имя звука( string ) \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>03D1: play\_wav 1</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проигрывает игровой звук: <em>/ Game.PlayGameSound("GameSound"); /</em> Здесь: GameSound - имя звука(string) \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0394: play\_music 2</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Задать тон нажатия клавиш телефона Нико: <em>/ Game.PlayPhoneKeypadTone(2); /</em> Здесь: 2 - номер тона(int) \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Заставляет телефон Нико звонить: <em>/ Game.PreviewRingtone(2); /</em> Здесь: 2 - ID мелодии звонка(int) \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Устанавливает и считывает масштаб радара: <em>/ Game.RadarZoom = 16; /</em> Здесь: 16 - зум(в процентах) (int) \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>075B: zoom\_radar 16</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Задать/узнать текущую радиостанцию: <em>/ Game.RadioStation = RadioStation.Vladivostok; RadioStation MyRadio = Game.RadioStation; /</em> Здесь: RadioStation.Vladivostok и MyRadio - элемент коллекции RadioStation \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>041E: set\_radio\_station 12 051E: 0@ = get\_current\_radio\_station</p><pre><code>\</td>\</tr>

\</tbody>\</table>

Это не полный список функций класса**GAME**. Я предоставил те, которые сам понял или рассмотрел. Если узнаю как работают и для чего остальные - немедленно напишу.

Получив эти данные мы можем написать простой пример использования их. Давайте напишем скрипт, что бы при нажатии кнопки \<kbd>F4\` нам появлялось окно с сохранением:

\<table class="table table-bordered">\</thead>
\<tr>\<th>C#\</th>\<th>Аналог в SannyBuilder\</th>\</tr>
\<tr>\<td> </code></pre><p>cs using System; using System.Windows.Forms; using GTA;</p><p>namespace TestScript { public class Thread : Script {</p><p>public Thread() {</p><p>while (true) {</p><p>if ( Game.isKeyPressed(Keys.F4) ) { Game.DoAutoSave(); }</p><p>Wait(0); }</p><p>} } }</p><pre><code>\</td>\<td> </code></pre><p>{$CLEO} 0000:</p><p>thread 'Thread'</p><p>while true</p><p>if 0AB0: key\_pressed 115 // F4 then 03D8: show\_save\_screen end</p><p>wait 0 end</p><pre><code>\</td>\</tr>
\</tbody>\</table>

Теперь в GTA 4 можно сохраняться в любом месте, нажав клавишу \<kbd>F4\`! Как видите, зная функции GTA 4, мы можем делать скрипты не хуже GTA SA, а то и лучше!

На этом урок окончен! Надеюсь, эта информация была для вас полезной! ;)|1335|1|0|43771574`png`482`400`400\`331\`\`||obzor\_klassa\_game|1552382469 </code></pre></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lessons.sannybuilder.com/00200/00100/000107.-obzor-klassa-game.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
