> 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/000117.-obzor-klassa-model.md).

# 000117. Обзор класса Model

Обзор класса Model|Сегодня мы рассмотрим ещё один небольшой класс - Model. Мы узнаем как загружать модели и как их использовать!|wmysterio|wmysterio||||Начнём с конструктора. Что бы объявить модель нам нужно написать:

```
cs
Model MyModel;
```

Мы объявляем нашу модель и она ждёт указания имени нашей модели и дальнейшего использования. Но более удобно использовать именно конструктор, когда модель мы уже знаем и хотим явно присвоить переменной. Для этого нужно использовать следующий код:

```
cs
Model MyModel = new Model("Admiral");
```

Само слово**new** значит "новый", то есть мы создаём очередной экземпляр класса. Такая запись является вызовом конструктором класса. Хочу обратить ваше внимание, на следующую картинку:

![](https://github.com/wmysterio/scm-scripting-lessons/blob/main/_pu/1/68072620.png)

Такое выпадающее меню указывает, что конструктор или функция может иметь несколько вариантов выполнения. Такой процесс называется перегрузкой функций. Детальнее о перегрузках вы можете узнать со ссылок в конце урока. Если мы во время этого списка мы начнём нажимать на клавиатуре стрелками ↑ `или <kbd>&#8595;`, вы увидите какие параметры может принимать функции. В моём случаи устраивает следующий вариант:

![](https://github.com/wmysterio/scm-scripting-lessons/blob/main/_pu/1/88770923.png)

Мы явно указали, какую модель мы должны записать в переменную MyModel, как показано выше.

Рассмотрим, что у нас есть с самим объектом класса. А содержит он только условия. Вот их список:

<table data-header-hidden><thead><tr><th></th></tr></thead><tbody><tr><td><p>```</p><p>cs /* Проверка: "Модель является для мотоциклов?": <em>/ MyModel.isBike /</em> Здесь: возвращаемый параметр: bool */</p><pre><code>Пример в Sanny Builder: нет&#x3C;/td>&#x3C;/tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Модель является для лодок?": <em>/ MyModel.isBoat /</em> Здесь: возвращаемый параметр: bool \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>081E: model 0@ boat</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Модель является для автомобилей?": <em>/ MyModel.isCar /</em> Здесь: возвращаемый параметр: bool \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0A01: model 0@ car</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Модель является для вертолётов?": <em>/ MyModel.isHelicopter /</em> Здесь: возвращаемый параметр: bool \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0820: model 0@ heli</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Модель загружена?" или "Модель в памяти игры?": <em>/ MyModel.isInMemory /</em> Здесь: возвращаемый параметр: bool \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0820: model 0@ heli</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Модель является для пешеходов?": <em>/ MyModel.isPed /</em> Здесь: возвращаемый параметр: bool \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Модель является для самолётов?": <em>/ MyModel.isPlane /</em> Здесь: возвращаемый параметр: bool \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>081F: model 0@ plane</p><pre><code>\</td>\</tr>

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

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

\<tr>\<td> </code></pre><p>cs /\* Проверка: "Модель действительная?" или "Модель существует?": <em>/ MyModel.isValid /</em> Здесь: возвращаемый параметр: bool \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0488: model 0@ exists // versionA 07DE: model 0@ exists // versionB</p><pre><code>\</td>\</tr>

\</tbody>\</table>

Также класс имеет ряд статических свойств. Рассмотрим их:

\<table class="table table-bordered">\<tbody>

\<tr>\<td> </code></pre><p>cs /\* Получить модель оружия: <em>/ Model.GetWeaponModel(WeapMod) /</em> Здесь: "Admiral" - название модели (string)</p><p>Возвращает: объект класса Model \*/</p><pre><code>Пример в Sanny Builder: </code></pre><p>0781: get\_weapon\_with\_ID 31 model\_to $TEMP\_MODEL</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает модель, указав её имя: <em>/ Model.FromString("Admiral") /</em> Здесь: "Admiral" - модель (string)</p><p>Возвращает: объект класса Model \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает базовую модель копов: <em>/ Model.BasicCopModel /</em> Здесь: Возвращает: объект класса Model \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает базовую модель машины копов: <em>/ Model.BasicPoliceCarModel /</em> Здесь: Возвращает: объект класса Model \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает текущую модель копов: <em>/ Model.CurrentCopModel /</em> Здесь: Возвращает: объект класса Model \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получает текущую модель машины копов: <em>/ Model.CurrentPoliceCarModel /</em> Здесь: Возвращает: объект класса Model \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Скорее всего это модель игрока (???): <em>/ Model.Null /</em> Здесь: Возвращает: объект класса Model */</p><pre><code>Пример в Sanny Builder: </code></pre><p>/* Возможно: \*/ 0@ = #NULL</p><pre><code>\</td>\</tr>

\<tr>\<td> </code></pre><p>cs /\* Получить модель машины такси: <em>/ Model.TaxiCarModel /</em> Здесь: Возвращает: объект класса Model \*/</p><pre><code>Пример в Sanny Builder: нет\</td>\</tr>

\</tbody>\</table>

Ещё хотел бы добавить о конструкторах. Создавать объекты классов можно непосредственно в методах. Хорошим примером будет следующий код:

</code></pre><p>cs World.CreateVehicle(new Model("Admiral"), MyVec);</p><pre><code>

Функция CreateVehicle имеет перегрузку. Если в Ваших планах стоит только создать автомобиль и никаких дальнейших действий мы с ним не планируем делать, то команда позволяем это сделать: создать машину, не указывая переменную.

Давайте напишем скрипт, чтобы при нажатии кнопки TAB, на наше место спавнилась тачка:

\<table class="table table-bordered">\<tbody>
\<tr>\<th>C#\</th>\<th>Sanny Builder\</th>\</tr>
\<tr>\<td> </code></pre><p>cs using System; using System.Windows.Forms; using GTA;</p><p>namespace TestScript { public class Thread : Script { public Thread() { Vector3 MyVec; while (true) { MyVec = Player.Character.Position; if (Game.isKeyPressed(Keys.Tab)) { Wait(5000); World.CreateVehicle(new Model("Admiral"), MyVec); Game.DisplayText("Car Created!"); } Wait(0); } } } }</p><pre><code>\</td>\<td> </code></pre><p>{$CLEO} 0000: thread 'TestScript' model.Load(#ADMIRAL) 038B: load\_requested\_models</p><p>while not model.Available(#ADMIRAL) wait 0 end</p><p>while true Actor.StorePos($PLAYER\_ACTOR, 0@, 1@, 2@) wait 5000 if 0AB0: key\_pressed 9 // Tab then 00A5: 3@ = create\_car #ADMIRAL at 0@ 1@ 2@ end wait 0 end</p><pre><code>\</td>\</tr>
\</tbody>\</table>

Проверим скрипт:

\<!--IMG1-->\<img src="/\_pu/1/12407798.png" />\<!--IMG1-->

Надеюсь, урок вам понравился :)

\<hr>
Ссылки на перегрузку функций:

* \<a href="[http://professorweb.ru/my/csharp/charp\_theory/level6/6\_1.php">ProfessorWeb\&#x3C;/a>](http://professorweb.ru/my/csharp/charp_theory/level6/6_1.php">ProfessorWeb\&#x3C;/a>)
* \<a href="[http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0\_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80\_%D0%B8\_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9">Википедия\&#x3C;/a>\&#x3C;br](http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80_%D0%B8_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9">Википедия\&#x3C;/a>\&#x3C;br) />
* \<a href="[http://vbbook.ru/visual-c.net/peregryzka-metodov-c/">vbbook\&#x3C;/a>](http://vbbook.ru/visual-c.net/peregryzka-metodov-c/">vbbook\&#x3C;/a>)
  |589|1|0|12407798`png`400`338 </code></pre><p><code>\|68072620</code>png<code>295</code>51</p><pre><code>`|88770923`png`390`52 </code></pre><p>`||obzor\_klassa\_model|1554385340</p></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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/000117.-obzor-klassa-model.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.
