AdeLn@ToR
Дебютант
Здравствуйте, вот решил выложить урок по пикапам. Урок не мой. Автор - REALman
Уважаемые форумчане, представляю вам вторую версию возможно популярного урока о пикапах. Я перечитал урок и решил его переписать. Давайте начнем.
Что же такое пикапы?
Пикап - это абсолютно любой объект, который не имеет плотных текстур* и будет вращатся над землей. Пикап может быть подобран**, что может вызвать паблик OnPlayerPickUpPickup.
*Т.е будет прозрачен и плотное тело сможет сквозь него пройти.
**В зависимости от типа.
Как сделать пикап?
В нашем распоряжении имеются две функции для создания пикапов: AddStaticPickup и CreatePickup. Чем же они отличаются? Первая функция может использоватся только в паблике OnGameModeInit* и пикап созданный данной функцией нельзя будет удалить (см. далее), вторую функцию вы можете использовать где угодно и созданный потом пикап можете удалять где хотите, достаточно только знать ID пикапа.
Теперь поговорим о функциях подробнее. Первая функция возвращает 1, если пикап успешно создан , вторая же функция возвращает ID созданного пикапа и -1 если произошла ошибка в создании пикапа, а если точнее, то если превышено максимальное число созданных пикапов. Давайте разберемся в синтаксисе обоих функций:
Вы наверняка уже поняли, что функции одинаковы. Различаются только возвращаемые величины и возможность дальнейшей манипуляции пикапами. Давайте разберем аргументы функций подробнее:
*Так говорит официальная вики, но опыты лиц, не связанных с ней, говорят, что использование таких функций как AddStaticVehicle и AddStaticPickup возможно и за пределами паблика OnGameModeInit. Но все таки, если официальная вики говорит что нельзя, наверное надо прислушатся.
**Пикапом может стать любой валидный объект, однако если вы хотите соблюдать этикет, то вам надо обратится к этому списку.
***Вы конечно можете обратится к концу данной страницы, однако я предоставлю вам переведенный мною список типов пикапов:
Как проверить что игрок подобрал пикап?
Для этого существует специальный паблик - OnPlayerPickUpPickup. Он выполняется когда игрок встает на пикап и если тип пикапа позволяет ему быть подобранным. У паблика всего два аргумента: playerid и pickupid. Вот как должен выглядеть паблик:
Всего в паблике, как уже говорилось, два аргумента: playerid и pickupid, соответственно: ид игрока подобравшего пикап и ид подобранного пикапа, что позволяет сделать такую проверку:
Тоесть, если игрок подберает пикап с ид равным нулю, высвечивается сообщение: Вы подобрали самый первый пикап в моде!.
Однако, считать каждый пикап цифрами не очень удобно. Вы наверное помните, что возвращает CreatePickup? А возвращает она ид созданного пикапа, что позволяет использовать переменные для удобства.
Я думаю тут и так все понятно.
Какие же еще есть функции для работы с пикапами?
Ну на самом деле таких функций всего одна - DestroyPickup. Она удаляет пикап, как уже говорилось раннее, созданный функцией CreatePickup. Аргумент у данной функции всего один - ид удаляемого пикапа. Думаю даже примеров приводить не нужно.
Тонкости работы с пикапами
Тонкость, опять же, всего одна. Если вы ставите модель пикапа - оружие, то при подборе такого пикапа вам будет даватся это оружие и патроны к нему. Если броню, то броня, если здоровье, то здоровье. Однако если вы поставите тип пикапа 23, то этого всего можно будет избежать.
Уважаемые форумчане, представляю вам вторую версию возможно популярного урока о пикапах. Я перечитал урок и решил его переписать. Давайте начнем.
Что же такое пикапы?
Пикап - это абсолютно любой объект, который не имеет плотных текстур* и будет вращатся над землей. Пикап может быть подобран**, что может вызвать паблик OnPlayerPickUpPickup.
*Т.е будет прозрачен и плотное тело сможет сквозь него пройти.
**В зависимости от типа.
Как сделать пикап?
В нашем распоряжении имеются две функции для создания пикапов: AddStaticPickup и CreatePickup. Чем же они отличаются? Первая функция может использоватся только в паблике OnGameModeInit* и пикап созданный данной функцией нельзя будет удалить (см. далее), вторую функцию вы можете использовать где угодно и созданный потом пикап можете удалять где хотите, достаточно только знать ID пикапа.
Теперь поговорим о функциях подробнее. Первая функция возвращает 1, если пикап успешно создан , вторая же функция возвращает ID созданного пикапа и -1 если произошла ошибка в создании пикапа, а если точнее, то если превышено максимальное число созданных пикапов. Давайте разберемся в синтаксисе обоих функций:
PHP:
AddStaticPickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld);
CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld);
Код:
model - объект**, который станет пикапом
type - тип*** пикапа
Float: x, Float: y, Float: z - это позиция пикапа по осям: x, y и z. Соответственно: оси x, y и высота.
Virtualworld - виртуальный мир в котором находится пикап, если вы хотите, чтобы пикап отображался в любом виртуальном мире, задайте аргументу значение -1
**Пикапом может стать любой валидный объект, однако если вы хотите соблюдать этикет, то вам надо обратится к этому списку.
***Вы конечно можете обратится к концу данной страницы, однако я предоставлю вам переведенный мною список типов пикапов:
Код:
0 - Пикап не отображается
1 - Пикап не берется, но отображается
2 - Пикап берется, исчезает и появляется через некоторое время
3 - Пикап берется, исчезает и появлется после смерти игрока
4 - Удаляется после некоторого времени после создания. (Может быть использовано для дропа оружия с игроков?)
5 - То же самое что и тип 4
8 - Пикап берется, однако не вызывается паблик OnPlayerPickUpPickup, удаляется автоматически(?!)
11 - Пикап взрывается через некоторое время после создания (бомбы?)
12 - Тоже самое что и тип 12
13 - Медленно опускается к земле(?!)
14 - Подберается, но только если игрок сидит в машине
15 - Тоже самое, что и тип 3
19 - Подберается, но не имеет эффекта (информационные иконки?) (?!)
22 - Тоже самое, что и тип 3
23 - Подберается, но не исчезает
?! - этот символ означает, что я не до конца понял смысл предложения, поэтому перевел буквально. Буду благодарен за ваши дополнения к этим пунктам.
Для этого существует специальный паблик - OnPlayerPickUpPickup. Он выполняется когда игрок встает на пикап и если тип пикапа позволяет ему быть подобранным. У паблика всего два аргумента: playerid и pickupid. Вот как должен выглядеть паблик:
PHP:
public OnPlayerPickUpPickup(playerid, pickupid)
{
//тело паблика (если имеется)
return 1;
}
PHP:
if(pickupid == 0) SendClientMessage(playerid,0xFFFFFFAA,"Вы подобрали самый первый пикап в моде!");
Однако, считать каждый пикап цифрами не очень удобно. Вы наверное помните, что возвращает CreatePickup? А возвращает она ид созданного пикапа, что позволяет использовать переменные для удобства.
PHP:
new FirstPickup;
public OnGameModeInit()
{
FirstPickup = CreatePickup(1212,2,0.0,0.0,0.0,-1);
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == FirstPickup) SendClientMessage(playerid,0xFFFFFFAA,"Вы подобрали деньги!");
return 1;
}
Какие же еще есть функции для работы с пикапами?
Ну на самом деле таких функций всего одна - DestroyPickup. Она удаляет пикап, как уже говорилось раннее, созданный функцией CreatePickup. Аргумент у данной функции всего один - ид удаляемого пикапа. Думаю даже примеров приводить не нужно.
Тонкости работы с пикапами
Тонкость, опять же, всего одна. Если вы ставите модель пикапа - оружие, то при подборе такого пикапа вам будет даватся это оружие и патроны к нему. Если броню, то броня, если здоровье, то здоровье. Однако если вы поставите тип пикапа 23, то этого всего можно будет избежать.
