Уроки моддинга
Основной раздел
Search
K
Links

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