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

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

cs
Model MyModel;

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

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

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

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

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

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

```

cs /* Проверка: "Модель является для мотоциклов?": / MyModel.isBike / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Проверка: "Модель является для лодок?": / MyModel.isBoat / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder:

081E: model 0@ boat

</td></tr>

<tr><td>

cs /* Проверка: "Модель является для автомобилей?": / MyModel.isCar / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder:

0A01: model 0@ car

</td></tr>

<tr><td>

cs /* Проверка: "Модель является для вертолётов?": / MyModel.isHelicopter / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder:

0820: model 0@ heli

</td></tr>

<tr><td>

cs /* Проверка: "Модель загружена?" или "Модель в памяти игры?": / MyModel.isInMemory / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder:

0820: model 0@ heli

</td></tr>

<tr><td>

cs /* Проверка: "Модель является для пешеходов?": / MyModel.isPed / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Проверка: "Модель является для самолётов?": / MyModel.isPlane / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder:

081F: model 0@ plane

</td></tr>

<tr><td>

cs /* Проверка: "Модель является для поездов?: / MyModel.isTrain / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Проверка: "Модель является для транспорта?": / MyModel.isVehicle / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Проверка: "Модель действительная?" или "Модель существует?": / MyModel.isValid / Здесь: возвращаемый параметр: bool */

Пример в Sanny Builder:

0488: model 0@ exists // versionA 07DE: model 0@ exists // versionB

</td></tr>

</tbody></table>

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

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

<tr><td>

cs /* Получить модель оружия: / Model.GetWeaponModel(WeapMod) / Здесь: "Admiral" - название модели (string)

Возвращает: объект класса Model */

Пример в Sanny Builder:

0781: get_weapon_with_ID 31 model_to $TEMP_MODEL

</td></tr>

<tr><td>

cs /* Получает модель, указав её имя: / Model.FromString("Admiral") / Здесь: "Admiral" - модель (string)

Возвращает: объект класса Model */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Получает базовую модель копов: / Model.BasicCopModel / Здесь: Возвращает: объект класса Model */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Получает базовую модель машины копов: / Model.BasicPoliceCarModel / Здесь: Возвращает: объект класса Model */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Получает текущую модель копов: / Model.CurrentCopModel / Здесь: Возвращает: объект класса Model */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Получает текущую модель машины копов: / Model.CurrentPoliceCarModel / Здесь: Возвращает: объект класса Model */

Пример в Sanny Builder: нет</td></tr>

<tr><td>

cs /* Скорее всего это модель игрока (???): / Model.Null / Здесь: Возвращает: объект класса Model */

Пример в Sanny Builder: 

/* Возможно: */ 0@ = #NULL

</td></tr>

<tr><td>

cs /* Получить модель машины такси: / Model.TaxiCarModel / Здесь: Возвращает: объект класса Model */

Пример в Sanny Builder: нет</td></tr>

</tbody></table>

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

cs World.CreateVehicle(new Model("Admiral"), MyVec);



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

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

<table class="table table-bordered"><tbody>
<tr><th>C#</th><th>Sanny Builder</th></tr>
<tr><td>

cs using System; using System.Windows.Forms; using GTA;

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); } } } }

</td><td>

{$CLEO} 0000: thread 'TestScript' model.Load(#ADMIRAL) 038B: load_requested_models

while not model.Available(#ADMIRAL) wait 0 end

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

</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</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">Википедия</a><br />
- <a href="http://vbbook.ru/visual-c.net/peregryzka-metodov-c/">vbbook</a>
|589|1|0|12407798`png`400`338

\|68072620png29551

`\|88770923`png`390`52

`||obzor_klassa_model|1554385340

Last updated