WorPlav
Умник
Автор -
Перевод с английского на русский осуществлён мной - WorPlav
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
(оф. форум Sa-Mp)Перевод с английского на русский осуществлён мной - WorPlav
Слова автора:"Я пройдусь по созданию NPC от начала до конца. Всё над чем я работал."
Запись файла воспроизведения
Для начала мы должны записать файл воспроизведения, чтобы задействовать нашего NPC. Запустите сервер с любым модом, затем авторизируйтесь как RCON администратор(Напишите:"/rcon login <ваш rcon пароль>"), не забудьте добавить filterscript npc_record (Напишите:"/rcon loadfs npc_record").
Итак, есть 3 основных команды для записи:
- /vrecord <имя_файла> - Начинает записывать путь транспорта в указанный вами файл.
- /ofrecord <имя_файла> - Начинает записывать пройденый путь пешком в указаный вами файл.
- /stoprecord - Останавливает любую из приведённых выше записей.
В этом мануале мы будем записывать путь на транспорте, для этого возьмем транспорт и напишем /vrecord mynpc (Напоминаю, вы должны быть авторизированы под RCON).
Не много поездите и когда вы закончите напишите - /stoprecord.
Закройте игру и перейдите в папку sciptfiles в папке с вашим модом, там должен быть файл под названием - mynpc.rec. Переместите его <Папка с вашим модом>/npcmodes/recordings/>
Сделали? Молодцы, превосходно! Сейчас вы записали путь для вашего NPC и переместили его в нужную папку.
Управление NPC
В папке npcmods по стандарту у вас множество различных скриптов, это автономные "мини" скрипты для управления вашим NPC.
Что же, давайте создадим еще один но уже своими руками!
Создайте новый .pwn файл и замените всё содержимое следующим..
PHP:
#define RECORDING "mynpc" //This is the filename of your recording without the extension.
#define RECORDING_TYPE 1 //1 for in vehicle and 2 for on foot.
#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
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);
Это очень легко, правда? Сейчас сохраните ваш "mini" скрипт как "mynpc.pwn" в папку <папка с сервером/npcmodes/> и скомпилируйте его.
Если компилирование прошло успешно, то приступайте к следующем шагу. Если нет, то проверьте не компилируйте ли вы старым pawno, ведь функция добавлена в samp 0.3 или же вы пропустили скобку\двоеточие.
Подключаем NPC
Что же, мы имеем файл с записью, наш "мини" скрипт, теперь нам нужно подключить всё это в наш мод.
Открывайте ваш мод, самое время обратится к функции ConnectNPC и судя по названию функция подключает вашего NPC к моду.
Давайте изучим параметры этой функции и их назначение...
PHP:
ConnectNPC("Dave","mynpc");
- "Dave" - Первый параметр это "Ник" бота. С помощью этого вы сможете определить NPC, и применить какие-то действия к нему.
- "mynpc" - Это имя файла (без разрешения) вашего "мини"скрипта созданного ранее
С вашими новыми знаниями функций NPC, давайте попробуем добавить NPC при запуске вашего мода.
PHP:
public OnGameModeInit()
{
ConnectNPC("WorPlav","mynpc");
return 1;
}
Примерно так будет выглядеть OnGameModeInit после добавления NPC...
PHP:
new WorPlavVehicle; //Глобальная переменная! Можно добавить ко всем new
public OnGameModeInit()
{
ConnectNPC("WorPlav","mynpc");
WorPlavVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
return 1;
}
Я сделал это используя OnPlayerSpawn...
Примечание: Если ваш NPC не в транспорте, а пешком, то вы можете пропустить этот шаг.
PHP:
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid)) //Сканируем или это NPC
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname)); //Узнаём имя NPC
if(!strcmp(npcname, "WorPlav", true)) //Проверка на то, что имя NPC это WorPlav
{
PutPlayerInVehicle(playerid, WorPlavVehicle, 0); //Засовываем NPC в транспорт
}
return 1;
}
return 1;
}
Идите на то место, где вы заставили NPC ездить и если он там есть и двигается, то я вас поздравляю - вы создали вашего первого NPC.
Если что-то не работает разместите в этой теме и создатель темы поможет вам.
Так же, если у вас возникли какие-либо вопросы вы так же можете задать их сюда.
[HR][/HR]
Как благодарность за перевод не обидьте меня
Последнее редактирование:
