> For the complete documentation index, see [llms.txt](https://lessons.sannybuilder.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lessons.sannybuilder.com/00200/00100/000107.-obzor-klassa-game.md).

# 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>
