Создание и удаление объектов в SA:MP

29 октября 2012
TheDuke

В этом уроке мы изучим: CreateObject, CreatePickup, DestroyPickup, CreateExplosion, CreateVehicle, AddStaticVehicle(Ex) и AddPlayerClass(Ex).

Описание:

CreateObject – Создает объект на карте сервера в определённом месте.

CreatePickup – Создает на сервер в определённом месте динамический пикап, который можно подобрать.

DestroyPickup – Удаляет созданный пикап.

CreateExplosion – Создает на сервере в определённом месте взрыв

CreateVehicle – Создает на сервере в определённом месте транспортное средство.

AddStaticVehicle – То же самое, что и CreateVehicle, но при этом транспортное средство не может быть удалено.

AddStaticVehicleEx – То же самое, что и AddStaticVehicle, но добавлена функция спавна транспортного средства.

AddPlayerClass – Добавляет новый SkinID (ID скина) при выборе персонажа перед спавном (обычно несколько раз используется на DM/Drift)

AddPlayerClassEx – То же самое, что и AddPlayerClass, только присутствует ещё и выбор команды (банды).

Начну как по содержанию - с CreateObject. Эта команда создаёт объект на карте, который будет виден всем игрокам в определённом мире. Используются только ID объектов.

Вид:

CreateObject(objid, pX, pY, pZ, rX, rY,rZ, VD);

Функции:

objid – ID объекта. Как можно узнать ID объекта, написано в этом учебнике.

pX – позиция X, например pX=186.82 – наземное движение влево/вправо по отношению севера (N) игры.

pY – позиция Y, например pY=296.25 – наземное движение вперёд/назад по отношению к N игры

pZ – позиция Z, например pZ=12.78 – высота

rX – поворот модели на «x» градусов вниз или вверх относительно северу влево или вправо.

rY – поворот модели на «x» градусов вниз или вверх относительно северу вперёд или назад.

rZ – поворот модели влево или вправо на «x» градусов.

VD – дистанция вида, можно её в коде не использовать

Использование:

в public OnGameModeInit() создам два объекта:
{
    CreateObject(2587, 2001.195679, 1547.113892, 14.283400, 0.0, 0.0, 96.0); //Объект будет отображаться стандартно
    CreateObject(2587, 2001.195679, 1547.113892, 14.283400, 0.0, 0.0, 96.0, 250.0); //Объект будет виден на расстоянии 250 игровых метра
    return 1;
}

Следующее по содержанию – CreatePickup. Эта команда создает пикап, который умеет вращаться. Его можно подобрать.

Вид:

CreatePickup(objid, type, pX, pY, pZ, VW);

Описание:

objid – ID модели для пикапа (может быть любая модель)

type – тип пикапа:

Так как я знаю не все типы пикапов, я процитирую их из википедии:

0 - Пикап не отображается.
1 - Не берется, существует все время.
2 - Берется, через некоторое время появляется заново.
3 - Берется, появляется снова после смерти
4 - Исчезает через некоторое время после создания (используется для выпадающего оружия?)
5 - Исчезает через некоторое время после создания (используется для выпадающего оружия?)
8 - Берется, но не производит эффекта. Исчезает автоматически.
11 - Взрывается через несколько секунд после создания (бомбы?)
12 - Взрывается через несколько секунд после создания.
13 - Медленно опускается к земле.
14 - Берется, но только в машине. Падает сквозь объекты, созданные по CreateObject, и т.п.
15 - Берется, появляется снова после смерти.
19 - Берется, но не производит эффекта (иконки информации?)
22 - Берется, появляется снова после смерти.
23 - Берется, но не исчезает.

pX – позиция X

pY – позиция Y

pZ – высота

VW – номер виртуального мира (-1 – объект отображается во всех 12 мирах)

Использование:

Создаю пикап с названием PU
new PU;

Далее:
в public OnGameModeInit() записываю:
{
    pickup = CreatePickup(1248, 2, 15.7, 125.105, 11.13, -1);
    return 1;
}

Здесь был создан пикап «не понять где» со значком «GTA 3» (id 1248)

Следом за CreatePickup пойдёт команда DestroyPickup, которая удаляет созданный пикап.

Вид:

На основе созданного пикапа с название PU, мы получаем:

DestroyPickup(PU);

Описание:

PU – название созданного пикапа (записано в new и в CreatePickup)

Использование:


в public OnPlayerPickUpPickup(playerid, pickupid) записываю:
{
    if (pickupid == PU) DestroyPickup(PU);
}

Команда CreateExplosion создаёт любой существующий взрыв в определённом месте на карте.

Вид:

CreateExplosion( pX, pY, pZ, type, R );

Описание:

pX – позиция X

pY – позиция Y

pZ - высота

type – тип

Типы:

R – Радиус взрыва в метрах

Использование:

в public OnGameModeInit() записываю:
{
        CreateExplosion(12,74.1,23,2,10.0);
    return 1;
}

Здесь создаётся большой взрыв (expID 2), видимый, без взрывной волны, создающий огонь и наносящий физический урон, созданный опять же на «не понять каком месте».

Команда CreateVehicle создаёт транспортное средство, которое можно удалить и задержать перед респавном.

Вид:

CreateVehicle(vehid, pX, pY, pZ, rZ, c1, c2, res);

Описание:

vehid – ID транспортного средства (ТС)

pX – позиция X

pY – позиция Y

pZ - высота

rZ – поворот ТС

c1 – цвет 1

c2 – цвет 2

res – время до респавна (через «x» секунд после выхода из ТС, оно респавнится)

ID цветов (Colors):

Использование:

в public OnGameModeInit( ) записываю:
{
    CreateVehicle(555, 128.6, 642.1,  54.4, 90, 3, 0, 60);
    return 1;
}

Здесь создан Виндзор (vehid 555), на неопределённой позиции, повернутый на 90 градусов с внешним цветом – красным, и внутренним – чёрным, который зареспавнится через 60 секунд (aka 1 минута).

Следующая команда – AddStaticVehicle — добавляет на карту ТС, которое нельзя удалить и нельзя задержать перед респавном.

Вид:

AddStaticVehicle(vehid, pX, pY, pZ, rZ, c1, c2);

Описание:

vehid – ID транспортного средства (ТС)

pX – позиция X

pY – позиция Y

pZ - высота

rZ – поворот ТС

c1 – цвет 1

c2 – цвет 2

Использование:

в public OnGameModeInit( ) записываю:
{
    AddStaticVehicle(555, 128.6, 642.1,  54.4, 90, 3, 0);
    return 1;
}

Команда AddStaticVehicleEx - это то же самое, что и CreateVehicle, но удалить это ТС нельзя.

Вид:

AddStaticVehicleEx(vehid, pX, pY, pZ, rZ, c1, c2);

Описание:

vehid – ID транспортного средства (ТС)

pX – позиция X

pY – позиция Y

pZ - высота

rZ – поворот ТС

c1 – цвет 1

c2 – цвет 2

Использование:

в public OnGameModeInit( ) записываю:
{
    AddStaticVehicleEx(555, 128.6, 642.1,  54.4, 90, 3, 0, 60);
    return 1;
}

Следующая команда – это AddPlayerClass. При входе на сервер (если это не РП режим) игрок может себе выбрать персонажа, которым будет играть. Чтобы игрок выбрал персонажа, нужно его добавить в мод.

Вид:

AddPlayerClass(SkinID, pX, pY, pZ, rZ, w1, wa1, w2, wa2, w3, wa3);

Описание:

SkinID – ID скина персонажа

pX – позиция X

pY – позиция Y

pZ - высота

rZ – поворот скина персонажа

w1 – оружие 1

wa1 – патроны к оружию 1

w2 – оружие 2

wa2 – патроны к оружию 2

w3 – оружие 3

wa3 – патроны к оружию 3

Использование

в public OnGameModeInit() записываю:
{
    AddPlayerClass(299, -1689.6,1346.38,7.17, 75, 26, 30, 28, 150, 0, 0);
    return 1;
}

Создает Клода (SkinID 299) с оружием:

SawnOff (двуствольный пистолет-дробовик) с 30 патронами

Micro SMG (Микро УЗИ) с 150 патронами

3й слот не используется

Заспавнить должно где-то на Pier 69

И последняя команда - это AddPlayerClassEx. При входе на сервер (если это не РП режим) игрок может себе выбрать персонажа и команду (банду), которым будет играть. Чтобы игрок выбрал персонажа, нужно его добавить в мод.

Вид:

AddPlayerClass(BD, SkinID, pX, pY, pZ, rZ, w1, wa1, w2, wa2, w3, wa3);

Описание:

BD - банда

SkinID – ID скина персонажа

pX – позиция X

pY – позиция Y

pZ - высота

rZ – поворот скина персонажа

w1 – оружие 1

wa1 – патроны к оружию 1

w2 – оружие 2

wa2 – патроны к оружию 2

w3 – оружие 3

wa3 – патроны к оружию 3

Использование:

в public OnGameModeInit() записываю:
{
    AddPlayerClassEx(1, 298, -1689.6,1346.38,7.17, 75, 22, 100, 25, 150, 33, 5);
    return 1;
}

Создает Каталину(SkinID 298) в первой команде с оружием:

Colt (Кольт 9мм) с 100 патронами

Shotgun (Дробовик) с 150 патронами

Contry Rifle (Винтовка без прицела) с 5 патронами

Заспавнить должно где-то на Pier 69

ID оружия:

ID 0 = Кулак
ID 1 = Кастет
ID 2 = Клюшка
ID 3 = Дубинка копов
ID 4 = Нож
ID 5 = Бита
ID 6 = Лопата
ID 7 = Кий
ID 8 = Kатана
ID 9 = Пила
ID 10 = Вибратор розовый
ID 11 = Маленький белый вибратор
ID 12 = Длинный белый вибратор
ID 13 = Серебристый вибратор
ID 14 = Цветы  
ID 15 = Трость
ID 16 = Граната
ID 17 = Газовая
ID 18 = Коктейль молотова
ID 22 = Кольт 9мм
ID 23 = Тихий 9мм
ID 24 = Дигл
ID 25 = Шотган
ID 26 = СавнОфф
ID 27 = Шотган-Повторитель
ID 28 = Микро СМГ
ID 29 = МП5
ID 30 = AK47
ID 31 = M4
ID 32 = Tек9
ID 33 = Винтовка
ID 34 = Снайперка
ID 35 = Ракетница
ID 36 = Самонаводитель
ID 37 = Огнемёт
ID 38 = Миниган
ID 39 = Мина
ID 40 = Детонатор
ID 41 = Баллончик
ID 42 = Огнетушитель
ID 43 = Кaмера
ID 44 = Очки ночного видения
ID 45 = Тепловизор
ID 46 = Парашют

Егор - Октябрь 2012, специально для LibertyCity.Ru

Рекомендуемые файлы