Bob_Marley
Компетентный
Доброго времени суток "www.Pawno-Info.ru"
Запись бота в файл.
В первую очередь для использования NPC в игре необходимо записать его схему перемещения в файл.
Запустите сервер с любым гейм модом и с подключенным фильтрскриптом
npc_record, теперь залогинтесь как администратор [/rcon login ****]. Для записи бота используются три команды:
/vrecord <filename> Начинает запись пути транспорта в указанный файл.
/ofrecord <filename> Начинает запись пути пешехода в указанный файл.
/stoprecord - Остонавливает запущенную запись.
В этом уроке мы сделаем запись транспорта.
И так доберитесь до любово транспорта, залезте в него, и наберите команду для записи
/vrecord mynpc (где mynpc мы указываем имя файла с записью).
Теперь покатайтесь по городу после чего остановите запись командой /stoprecord.
Закройте игру и идите в папку scriptfiles, там должен появится файл mynpc.rec
Теперь переместите этот файл в <папка sa-mp сервера>/npcmodes/recordings/
Сделали? Отлично!!! мы только что записали путь NPC и поместили запись в необходимую папку.
Подключение NPC
Вы возможно обратили внимание на скрипты в папке npcmodes это "mini" скрипты они управляют поведением NPC.
Теперь мы зделаем "mini" скрипт для управления нашим NPC.
Откройте Pawno создайте новый файл, очистите все что там есть и вставьте этот код:
PHP:
#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
PHP:
#define RECORDING "mynpc" //Имя файла с записью без расширения.
PHP:
#define RECORDING_TYPE 1 //Тип записи: 1 на транспорте, и 2 пишком
PHP:
#include <a_npc>
PHP:
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Эта строка повторяет воспроизведения, записанного файла (mynpc)
PHP:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
PHP:
public OnNPCExitVehicle() StopRecordingPlayback();
PHP:
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Теперь сохраните ваш скрипт как mynpc.pwn в папку <папка sa-mp сервера>/npcmodes/ и скомпилируйте.
Если компилирование прошло успешно переходите к следующему шагу, если нет то убедитесь что вы не компилируете программой pawno старой версии.
Подключение вашего NPC
После предидущих шагов мы получили файл с записью NPC (mynpc.rec) и mini скрипт управляющий NPC(mynpc.amx).
Теперь нам необходимо подключить всё это в наш гейммод или фильтр скрипт, для этого необходимо пользоватся функцией ConnectNPC
ConnectNPC("Dave","mynpc");
Функция имеет 2 параметра:
"Dave" - этот параметр позволяет дать нашему NPC имя.
"mynpc" - это имя нашего mini скрипта (mynpc.amx) который мы зделали раньше.
Теперь вы знаете новую функцию ConnectNPC которая подключает NPC к игре из гейммода или фильтрскрипта.
PHP:
public OnGameModeInit()
{
print("my gamemode");
ConnectNPC("MyFirstNPC","mynpc");
return 1;
}
PHP:
public OnFilterScriptInit()
{
print("my filterscript");
ConnectNPC("MyFirstNPC","mynpc");
return 1;
}
Если ваш NPC не использует транспорт то вы можете пропустить этот шаг!
PHP:
new MyFirstNPCVehicle; //Global variable!
public OnGameModeInit()
{
print("my gamemode");
ConnectNPC("MyFirstNPC","mynpc");
MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
return 1;
}
PHP:
new MyFirstNPCVehicle; //Global variable!
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, нам нужно поместить его в транспорт для этого используем OnPlayerSpawn...
Если ваш NPC не использует транспорт то вы можете пропустить этот шаг!
PHP:
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid)) //Проверяет: существует ли игрок(NPC).
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname)); //Получает имя игрока (NPC).
if(!strcmp(npcname, "MyFirstNPC", true)) //Проверяет если имя MyFirstNPC.
{
PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Помещает NPC в транспорт, который мы создали выше.
}
return 1;
}
//Место функциям для остольных игроков.
return 1;
}
Перевод:maxim polipovich
Автор:wiki.pawno-info.ru (Не реклама)
