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

01 июня 2016 | Рубрика: Статьи

Читайте предыдущую часть статьи по ссылкеРазбор скрипта «NPC боксёр в SAMP» (Часть 3)

ringused=1; — в принципе необязательно это использовать было, можно было бы как-то по-другому сделать, но пусть будет так. Мы сделаем так, что при ringused=1 ринг будет занят, а при ringused=0 ринг свободен, опять же говорю, здесь можно было продумать и по-другому, но когда я создавал какие-то арены, для всех пользователей это было критично, потому что вход туда производился через команду рядом с NPC, которая проверяла, есть ли кто сейчас на арене или нет, чтобы не писать проверки по всем игрокам или какие-то Pvar’ы сканировать, просто одна переменная и проблема решена.

for (new npcid = 0; npcid < 1; npcid++) {

открываем наш цикл, для самого первого нашего NPC имеющего идентификатор в цикле 0 (да-да всё тут начинается на с единички, а с нуля), и говорим, что же от него хотим.

npc[npcid][npc_ID] = FCNPC_Create(npc[npcid][npc_Name]);

Об этом написано в прошлом уроке, вместо имени для каждого NPC из enum’а берем его.

FCNPC_Spawn(npc[npcid][npc_ID], npc[npcid][npc_Skin], npc[npcid][npc_X], npc[npcid][npc_Y], npc[npcid][npc_Z]); — спавним NPC на ринге с такими-то координатами и скином, указанном в enum’е.

FCNPC_SetAngle(npc[npcid][npc_ID], npc[npcid][npc_A]); — угол поворота задаем из enum’а.

FCNPC_SetInterior(npc[npcid][npc_ID], npc[npcid][npc_Interior]); — задаем интерьер, я написал в комментариях, но напишу и тут, извиняюсь, пока не делал этот скрипт, забыл, что виртуальные миры и интерьеры разные вещи, интерьер – это место где находится наш зал, который тоже в данном случае берется из enum’а, а виртульных миров может быть очень и очень много, но в данном случае нам не нужны виртуальные миры, а вот интерьер, для зала бокса в ЛС нужен.

SetPlayerFightingStyle(npc[npcid][npc_ID], npc[npcid][npc_FightStyle]); — зададим для NPC стиль боя, указанный в enum’е.

SetPVarInt(npc[npcid][npc_ID], «Condition»,0); — задаем для NPC состояние равном нулю, про смену Pvar’ов и их наглядное действие вы увидите позже в цикле самого боя для NPC.

boxertimer = SetTimer(«boxerfight», 250, 1); — чтобы действия не выполнялись разово мы говорим, что каждые 250 миллисекунд (1/4 секунды) выполнять таймер, который мы обозначили как boxertimer. Таймеры работают и без обозначений, но имея обозначения таймера, позже его можно удалить, это важно, чтобы не было нагрузок, да и багов, чтобы не было, а то по 100 раз будете один и тот же таймер вызывать, даже не знаю, что будет, он ведь не разовый, а постоянный о чём свидетельствует цифра 1, а “boxerfight” – это тот паблик, куда нам надо перейти, то есть тот паблик, который выполнять каждые 250 миллисекунд.

}

Далее закрываем цикл для данного NPC, больше нам от него здесь ничего не надо.

Читаем далее: Разбор скрипта «NPC боксёр в SAMP» (Часть 5)