Разбор скрипта «NPC боксёр в SAMP» (Часть 1)

26 ноября 2015 | Рубрика: Статьи

Дабы не было много флуда будем писать скрипт построчно. И объяснять почти всё, вдруг кто-то только учиться скриптить

#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)