-
Уважаемый пользователь! Вы не представились системе! Для получения полного доступа к форуму войдите <ИЛИ> зарегистрируйтесь!
Спасибо.
-
Wiki:
Plugins-
Стандартные функции PAWN
-
Plugins and includes
-
Tutorials
By DEST
- Создания NPC и подключения его к серверу
- Передвежение NPC по кординатам
- Убийство NPC с огнестрельного оружия или рукопашкой
- Давать оружие NPC
- Учить стрелять нашего NPC
Обсудить / получить поддержку
В данной статье будут публиковаться уроки по работе с плагином FCNPC. Автором этих уроков является модератор портала - MuhammadPawn, автором дополнения FCNPC - ziggi и пр. Скачать дополнение FCNPC вы можете, перейдя по этой ссылке (кликабельно).
Всем привет
В этом уроке я вас научу:Приступим:
В начало мода добавим строку#include <FCNPC>
если вы собрали писать FS то в самое начало добавте
#inclide <a_samp> #include <FCNPC>
#if defined MOVE_SPEED_SPRINT #undef MOVE_SPEED_SPRINT #define MOVE_SPEED_SPRINT (0.896884) #endif #if defined MOVE_SPEED_RUN #undef MOVE_SPEED_RUN #define MOVE_SPEED_RUN (0.53444) #endif #if defined MOVE_SPEED_WALK #undef MOVE_SPEED_WALK #define MOVE_SPEED_WALK (0.1532086) #endif static MyFirstBot; //Создаём переменную в которую будем записывать id NPC
Далее если вы пишите сразу в мод то в OnGameModeInit если в FS то в OnFilterScriptInit добавте
MyFirstBot = FCNPC_Create("Bot_Name"); //FCNPC_Create - подключаем бота к серверу с ником "Bot_Name" и записываем его id в переменную MyFirstBot FCNPC_Spawn(MyFirstBot, 70, -199.3511,248.3464,12.0772);//FCNPC_Spawn Спавним нашего бота которого токо что создали MyFirstBot (70 - это id скина, -199.3511,248.3464,12.0772 кординаты где будем спавнить нашего бота)
Всё мы создали нашего NPC и заспавнили. Теперь он будет просто стоять...
Давайте его при спавне заставим ходить по мосту (мост около фермы)
Создадим массив для бота с нашеми точками куда он будет ходитьnew Float:FCNPC_GoT[][3] = { {-205.4210,252.1659,12.2813}, {-192.7112,299.2160,12.2813}, {-179.6456,296.6065,12.2813}, {-191.8794,249.7988,12.2813} }; static col; //для подчёта точек (потом в коде увидете где используется)
чтобы добавить ещё 1 точку с коридантами куда будет ходить бот то
к последней точке ставим , и создаём новую {кориднаты x,y,z}
Теперь давайте сделаем чтобы после спавна NPC бегал по точкам
за спавн NPC отвечает FCNPC_OnSpawn создадим егоpublic FCNPC_OnSpawn(npcid) { FCNPC_GoTo(MyFirstBot, FCNPC_GoT[col][0], FCNPC_GoT[col][1], FCNPC_GoT[col][2], MOVE_TYPE_RUN, MOVE_SPEED_RUN, true); //Застовляем нашего бота MyFirstBot бежать по точкам из FCNPC_GoT , MOVE_TYPE_RUN стиль как ходит бот MOVE_SPEED_RUN скорость передвижения которую мы указали выше col ++;// Присваиваем переменной +1 для кординат с масива которые пробижал NPC return 1; }
Всё наш игрок бежит на точку и остановится на ней теперь давайте сделаем чтобы он двигался дальше
за это отвечает public FCNPC_OnReachDestination (вызывается когда игрок добежал до позиции указанной в FCNPC_GoTo)
создаём егоpublic FCNPC_OnReachDestination(npcid) { if(col == sizeof(FCNPC_GoT)) col = 0;//если col == строкам из FCNPC_GoT то сбрасываем на 0 чтобы NPC бежал по кругу FCNPC_GoTo(MyFirstBot, FCNPC_GoT[col][0], FCNPC_GoT[col][1], FCNPC_GoT[col][2], MOVE_TYPE_RUN, MOVE_SPEED_RUN, true);//Уже писал что это col ++; //Уже писал что это return 1; }
Вот и всё урок окончен
Автор урока: MuhamadPawn( Мой старый ник Island (Могу подтвердить) )
Копирование данной статьи без разрешение автора запрешено!
Мы создали нашего NPC который будет бегать по заданным кординатамВсем привет
Вот и вышел урок 1.1, ну как сказать урок дополнение к 1 уроку (где я забыл про спавн бота после смерти)
В этом уроке не чего особенного не будет токо спавн NPC после смерти
Ну чтож приступим:
Для начало довайте создадим паблик который вызывается когда умирает NPC тоесть наш (MyFirstBot) мы создовали его во 1 уроке (если кто не читал то прошу читайте уроки с самого начало и наче будет не чего понятно)
Паблик который отвечает эа это FCNPC_OnDeath, создаём егоpublic FCNPC_OnDeath(npcid, killerid, weaponid) { //npcid - какой NPC умер //killerid - Кто убил NPC //weaponid - с коко-го оружия убили NPC FCNPC_Spawn(MyFirstBot, 70, -199.3511,248.3464,12.0772);//если вызвался паблик FCNPC_OnDeath то мы спавним нашего бота (70 - Скин бота, -199.3511,248.3464,12.0772 - кординаты где будет спавнится (это опять ж тот мост)) return 1; }
Всё теперь если наш NPC умер он будет спавнится и выполнять действия которые мы указывали в FCNPC_OnSpawn (Урок 1)
Вот и всёАвтор урока: MuhamadPawn
Копирование данной статьи без разрешение автора запрешено!Всем привет это уже 2 урок по FCNPC))) И в этом уроке я вас научу:
Это давольно легко и запоминается сразу
Для начало давайте выдадим нашему NPC оружие в FCNPC_OnSpawn засуним строчкуFCNPC_SetWeapon(MyFirstBot, 31);//Выдаём нашему NPC оружие с идом 31 - M4
Далее в секундный таймер или в OnPlayerUpdate проверки
static Float:X,Float:Y,Float:Z,weapon; //Переменная для кординат нашего NPC а также проверка стреляет или нет FCNPC_GetPosition(MyFirstBot,X, Y, Z); //Узнаём кординаты нашего NPC (MyFirstBot) по осям X, Y, Z if(IsPlayerInRangeOfPoint(playerid, 10.0, X, Y, Z)) //Если мы в 10 радиусах от кординат нашего NPC то выполняем следующие { if(FCNPC_GetAmmo(MyFirstBot) == 0)//FCNPC_GetAmmo узнаёт скока патронов у NPC, если у нашего NPC 0 патронов то... { FCNPC_StopAim(MyFirstBot); //FCNPC_StopAim отключаем что-бы наш NPC больше не целился в игрока FCNPC_SetAmmo(MyFirstBot,500); //FCNPC_SetAmmo даём нашему NPC 500 патронов } FCNPC_Stop(MyFirstBot); //Останавливаем нашего NPC что-бы он больше не бегал static Float: x, Float: y, Float: z; //Переменная для кординат нашего игрока GetPlayerPos(playerid, x, y, z); //Узнаём кординаты игрока по оси x, y, z FCNPC_AimAt(MyFirstBot, x, y, z, true); //FCNPC_AimAt заставляем нашего NPC стрелять в игрока по кординатам x, y, z weapon = 1;//Ставим значение 1 что наш NPC стреляет } else//если игрока нет в зоне видимости бота (10 метров) то... { if(weapon == 1)//если наш NPC стреля по игроку то { FCNPC_StopAim(MyFirstBot);// Отключаем что-бы наш NPC больше не целился FCNPC_GoTo(MyFirstBot, FCNPC_GoT[col][0], FCNPC_GoT[col][1], FCNPC_GoT[col][2], MOVE_TYPE_RUN, MOVE_SPEED_RUN, true),col ++; //Рассказывал что это такое во 1 уроке weapon = 0;//Обновляем нашу переменную на 0 чтобы небыло ложных срабатываний (как у нас эти ж проверки в секундном таймере и если не поставить проверку то NPC будет кружится как будут задоватся новые корды каждую сек) } }
Вот и всё
Автор урока: MuhamadPawn
Копирование данной статьи без разрешение автора запрешено!
Если что-то не понятно пишите в теме, помогу чем смогу
Также вы можете скачать уже готовый FS и редактировать под себя: FCNPC_FS.pwn
-