Дабы не было много флуда будем писать скрипт построчно. И объяснять почти всё, вдруг кто-то только учиться скриптить
#include <a_samp>
#include <fcnpc>
В самом начале скрипта как всегда пишутся include’ы. Include переводится как включение/вложение. Стандартным include, необходимым для работы какого-либо скрипта, является include <a_samp>, который и содержит базовые функции. Так как стандартных функций нам недостаточно пишем, что, помимо основного include, у нас будет ещё некий include <fcnpc>, который отвечает за NPC плагина FCNPC. Все include должны находится в папке yourserver\pawno\include. Идем далее.
#define COLOR_GREEN 0x16BC37AA
Осталось с каких-то тестовых скриптов, но раз уж используется в скрипте, то опишем, что же это за зверь) Итак, define переводится как определять/обозначать/устанавливать, то есть эта функция в данном примере устанавливает для зеленого цвета обозначение COLOR_GREEN. Дело в том, что ни один цвет, где бы то ни было не записывается как color_red, color_blue и прочее, все цвета (в SA:MP) имеют формат 0x16BC37AA, в данном случае такое выражение описывает оттенок зеленого цвета ну или как-то так, дизайнеры могут уточнить, ведь каждый цвет имеет очень много оттенков и описать все их словами было бы проблематично, да и кто бы это смог запомнить, поэтому цвета имеют такой формат. Чтобы не писать, например, в SendClientMessage(playerid, 0x16BC37AA, “Привет”) , мы заменяем 0x16BC37AA на простое и понятное для нас COLOR_GREEN, если Вы пишете большой мод, то наверняка у Вас там будет много дефайнов как для цветов, так и для чего-то иного, поэтому определения очень важны, чтобы самому не затеряться в коде.
new boxertimer;
new pickupkase;
new ringused;
Обозначим, что у нас будут некие переменные для всего скрипта, переменные бывают локальные, внутри цикла, например, и вот как здесь – для всего скрипта, мы ставим их вначале скрипта и они одни для всего сервера boxertimer – таймер, по которому вызывается ведения боя боксера;
Pickupkase – используем для обозначения пикапа, чтобы его потом удалить, а то баги будут, если вкратце, ringused используем для обозначения есть ли кто на ринге сейчас или нет.
enum npcInfo {
npc_Name[MAX_PLAYER_NAME],
npc_Skin,
npc_FightStyle,
npc_Interior,
Float:npc_X,
Float:npc_Y,
Float:npc_Z,
Float:npc_A,
npc_ID,
}
new npc[][npcInfo] = {
{«Master_of_Boxing», 81, FIGHT_STYLE_BOXING, 5, 758.4869,-1.7879,1001.5942,313.0229}
};
Продолжение: Разбор скрипта «NPC боксёр в SAMP» (Часть 2)