Пошаговое руководство: запись пути, mini-скрипт и подключение бота к гейммоду
Шаг 1. Запись пути NPC в файл
Прежде чем использовать NPC в игре, нужно записать его маршрут передвижения в файл.
Запустите сервер с любым гейммодом и подключённым фильтрскриптом npc_record, затем залогиньтесь как администратор:
/rcon login ****
Для записи бота используются три команды:
- /vrecord <filename> — начинает запись пути транспорта в указанный файл.
- /ofrecord <filename> — начинает запись пути пешехода в указанный файл.
- /stoprecord — останавливает запущенную запись.
В этом уроке мы запишем путь транспорта.
1. Сядьте в любой транспорт и наберите команду записи:
/vrecord mynpc
(где mynpc — имя файла записи)
2. Покатайтесь по городу, после чего остановите запись:
/stoprecord
3. Закройте игру и зайдите в папку scriptfiles — там должен появиться файл mynpc.rec.
4. Переместите этот файл в:
<папка sa-mp сервера>/npcmodes/recordings/
Цитата
Готово! Вы записали путь NPC и поместили запись в нужную папку.
Шаг 2. Подключение NPC (mini-скрипт)
В папке npcmodes находятся "mini"-скрипты — они управляют поведением NPC. Теперь создадим такой скрипт для нашего бота.
Откройте Pawno, создайте новый файл, очистите его и вставьте этот код:
#define RECORDING "mynpc" //Имя файла с записью без расширения.
#define RECORDING_TYPE 1 //Тип записи: 1 на транспорте, 2 пешком
#include <a_npc>
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#if RECORDING_TYPE == 1
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
public OnNPCExitVehicle() StopRecordingPlayback();
#else
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#endif
Разбор кода построчно:
- #define RECORDING "mynpc" — имя записанного файла, без расширения .rec
- #define RECORDING_TYPE 1 — тип записи: 1 — на транспорте, 2 — пешком
- #include <a_npc> — инклюд с функциями для работы с NPC
- OnRecordingPlaybackEnd() — колбэк библиотеки NPC; эта строка зацикливает воспроизведение записи (mynpc)
- OnNPCEnterVehicle(...) — запускает воспроизведение записи, когда NPC оказывается в транспорте
- OnNPCExitVehicle() — останавливает воспроизведение, если NPC покидает транспорт
- OnNPCSpawn() — запускает воспроизведение записи после спавна NPC (для пешеходного типа)
Сохраните скрипт как mynpc.pwn в папку:
<папка sa-mp сервера>/npcmodes/
...и скомпилируйте его.
Важно: если компиляция не проходит — убедитесь, что вы не используете старую версию Pawno.
Шаг 3. Подключение NPC к гейммоду
После предыдущих шагов у нас есть:
- файл записи пути — mynpc.rec
- mini-скрипт управления NPC — mynpc.amx
Теперь подключим всё это в гейммод или фильтрскрипт с помощью функции ConnectNPC:
ConnectNPC("Dave", "mynpc");
Параметры функции:
- "Dave" — имя нашего NPC
- "mynpc" — имя mini-скрипта (mynpc.amx)
Пример для гейммода:
public OnGameModeInit()
{
print("my gamemode");
ConnectNPC("MyFirstNPC", "mynpc");
return 1;
}
Пример для фильтрскрипта:
public OnFilterScriptInit()
{
print("my filterscript");
ConnectNPC("MyFirstNPC", "mynpc");
return 1;
}
Создание транспорта для NPC
Если ваш NPC передвигается пешком — этот шаг можно пропустить.
Гейммод:
new MyFirstNPCVehicle; //Глобальная переменная!
public OnGameModeInit()
{
print("my gamemode");
ConnectNPC("MyFirstNPC", "mynpc");
MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
return 1;
}
Фильтрскрипт:
new MyFirstNPCVehicle; //Глобальная переменная!
public OnFilterScriptInit()
{
print("my filterscript");
ConnectNPC("MyFirstNPC", "mynpc");
MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
return 1;
}
Цитата
Фактическое положение транспорта не имеет значения — он будет телепортирован к точке начала записанного пути!
Посадка NPC в транспорт
Если ваш NPC передвигается пешком — этот шаг можно пропустить.
Перед запуском нужно поместить NPC в транспорт через OnPlayerSpawn:
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid)) //Проверяет, является ли игрок NPC.
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname)); //Получаем имя NPC.
if(!strcmp(npcname, "MyFirstNPC", true)) //Проверяем имя.
{
PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Сажаем NPC в транспорт.
}
return 1;
}
//Код для остальных игроков.
return 1;
}
Готово!
Скомпилируйте гейммод или фильтрскрипт и запустите игру. Отправляйтесь туда, где вы записывали путь NPC, и наслаждайтесь своим первым ботом!
Сообщение отредактировал Romzes: 19 июня 2026 - 14:04
Вход
Регистрация
Помощь










