MuhammadPawn

FCNPC - Сборник уроков

В теме 7 сообщений

Всем привет 
Решил заняться изучением плагина FCNPC и делится своим опытом с вами  
Все уроки будут опубликоваться в этой теме 
Список уроков:

 

Урок 1. Создания NPC и его передвижение

Урок 1.1. Спавним NPC после смерти

Урок 2. Учим NPC стрелять из огнестрельного оружия

 

Также пишите в коменты какие вы хотите видеть уроки по FCNPC 

 

Отредактировано пользователем MuhammadPawn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

FCNPC - Урок 1. Создания NPC и его передвижение

 

Всем привет 
В этом уроке я вас научу:

  1. Создания NPC и подключения его к серверу
  2. Передвежение NPC по кординатам
  3. Убийство NPC с огнестрельного оружия или рукопашкой

 

Приступим:
В начало мода добавим строку 

#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 который будет бегать по заданным кординатам 
Если у вас появились вопросы или ошибки задовайте в теме отвечу 

Отредактировано пользователем MuhammadPawn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

FCNPC - Урок 1.1. Спавним 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
Копирование данной статьи без разрешение автора запрешено!

Отредактировано пользователем MuhammadPawn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

FCNPC - Урок 2. Учим NPC стрелять из огнестрельного оружия

 

Всем привет это уже 2 урок по FCNPC))) И в этом уроке я вас научу:

  1. Давать оружие NPC
  2. Учить стрелять нашего NPC

Это давольно легко и запоминается сразу 
Для начало давайте выдадим нашему 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скоро думаю добавим что-то типо Wikipedia, наброски уже есть, тогда туда перенесем ) https://pawno-rus.ru/wiki

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

АВТОМАТИЧЕСКИ СФОРМИРОВАННОЕ СООБЩЕНИЕ:

Данная тема была перемещена модерацией или администрацией портала PAWNO-RUS.RU! 

Перемещена из: "Скриптинг PAWN > Уроки и готовые решения"

Перемещена в: "Прочее > Архив"

 

С уважением, ваш Бот! 

Если вы НЕ согласны с переносом данной темы в раздел "Прочее > Архив", пожалуйтесь на это сообщение в жалобе указав причины вашего недовольства. Спасибо. 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите 
       
    • nazpol9
      От nazpol9
      Привет всем.

      У меня имеется мод для самп сервера и VPS с Ubuntu, на котором я пытаюсь его запустить.

      В чем суть проблемы: при запуске samp03svr, сервер запускается, но на версии 0.3.DL R-1. Когда я пытаюсь запустить этот же мод локально на Windows, сервер работает на версии 0.3.7 и я могу зайти на него без клиента 0.3.DL.

      Для решения этой проблемы я уже пробовал заменять инклуды и исполнительные файлы теми, что есть в архивах на официальном сайте сампа, перекомпилировал мод, и ничего не изменилось.
       
      #include <a_samp> #include <a_mysql> #include <foreach> #include <Pawn.RakNet> #include <streamer> #include <sscanf2> #include <float2> #include <crashdetect> #include <fmt> #include <a_http> #include <Pawn.CMD> #include <Pawn.Regex> #include <requests> #include <callbacks> #include <MD5> #include <mxdate> #include <TOTP> #include <gvar> #include <md-sort> #include <nex-ac> #include <weapon-config> #include <discord-connector> #include <3DTryg> #include <textdraw-streamer>  
      plugins crashdetect.so streamer.so textdraw-streamer.so sscanf.so pawnraknet.so pawncmd.so mysql.so requests.so profiler.so pawnregex.so TOTP.so gvar.so discord-connector.so

      Если у кого-то будут какие-либо догадки, прошу ими поделиться, если понадобится больше информации - я постараюсь её предоставить.