На нашем сайте вы уже наверно скачали много NPC's (ботов), но все же вам наверно хочется научится создавать самому своих ботов... Разве я не прав? Ну вот, в этом уроке я научу вас создавать своего бота который управляет транспортом. Если вы прочитаете этот урок до конца, то полностью поймёте всю простоту создания своего бота. Что же нам понадобиться для его создания?
1. Установленная GTA San Andreas
2. Установленный клиент SA-MP последней версии (Скачать клиент SA-MP 0.3c)
3. Установленный сервер SA-MP последней версии (Скачать сервер SA-MP 0.3c)
4. Руки и чуть мозгов =) Кучерявые руки не подходят!)))
1 шаг (Запись файла движений бота)
Для начала настроим сервер и подберём оптимальный мод для него. Я взял простой мод FreeRoam. Вы же можете использовать любой мод. Так, дальше запускаем сервер и заходим на него через клиент. Используйте для этого IP адрес - 127.0.0.1:ваш порт . Зашли на сервер, выбрали любой скин игрока... И что же дальше? - спросите вы) А дальше мы будем записывать файл, который будет иметь в себе полную запись движений нашего бота.
Такс, входим под rcon админа сервера используя команду - /rcon login пароль .
Затем нам нужно подгрузить скрипт npc_record.amx , который дает возможность записывать движения бота в файл (этот скрипт также можно прописать в файле конфигурации "server.cfg", чтобы не подгружать его в игре). Вводим в окно чата команду, которая подгрузит наш скрипт - /rcon loadfs npc_record .
Вам должно написать - "Filterscript 'npc_record.amx' loaded". Написало? Если да - то продолжаем дальше. В случае если не подгружает, проверьте в папке filterscript наличие файла npc_record.amx .
После того, как мы подгрузили наш скрипт, для нас открываются три новых команды:
/vrecord "имя файла" - начать запись игрока в файл, который управляет любым транспортом (имя файла вводить без кавычек!).
/ofrecord "имя файла" - начать запись игрока в файл пешком (имя файла вводить без кавычек!).
/stoprecord - остановить запись.
Для нас сейчас главные две команды - /vrecord "имя файла" и /stoprecord .
На сервере вы должны найти транспорт, запись движений которого вы хотите сделать. Затем определитесь из стартом, т.е. из местом где вы введёте команду записи и начнёте своё движение. Рекомендую вам и заканчивать свой путь на старте, т.е. делать круг, ну это не обязательно.
Сейчас стаём на старт и вводим команду - /vrecord "имя файла" . После ввода можете начинать движение. В примере, я выбрал у качестве транспорта - автомобиль Elegy и начал запись в файл "mynpc" . Теперь нужно поездить где вам угодно. Не забывайте, все ваши движения на транспорте записуются.
По окончанию нужно ввести в окно чата команду - /stoprecord , запись остановится.
Все, мы закончили запись движений нашего бота в транспорте, можете выходить из игры и выключать сервер.
2 шаг (Подключение записанного файла)
Мы с вами уже записали файл движений бота. А где же он? - спросите вы. А я отвечу, - В папочке "scriptfiles" в директории вашей игры (если же ваш сервер установлен в эту директорию). Проверьте, он должен быть под расширением .rec , т.е. если вы вводили, когда начинали запись, имя mynpc то файл будет mynpc.rec .
Это ключевой файл бата, без него никуда.
Теперь вам нужно вырезать этот файл, зайти в папку "npcmodes" затем в "recordings" и вставить туда файл.
Ну а теперь начинается самое тяжелое для многих людей, но я постараюсь объяснить все доходчиво.
Откройте Pawno, создайте там новый документ (File >> New), нажмите Ctrl+A (т.е. выделить все) и затем Delete (Удалить). Сделали? Хорошо... Теперь вставьте туда этот исходный код:
Code
#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"" , "mynpc" - на имя файла движений вашего бота. В меня он называется "mynpc". Остальные строки вам пока не нужны, я их опишу в следующих уроках.
Теперь нам нужно сохранить этот файл (File >> Save as) в папке npcmodes под любым именем. Я сохранил под именем "younpc".
Файл сохранится с расширением .pwn , но нам он нужен в расширении .amx т.е. уже скомпилировам. По-этому нажимаем на синий трикутник в pawno и файл скомпилируется.
Все, первый скрипт готов. Но остался еще один, который мы потом подключим к серверу. Так что не торопитесь закрывать pawno). Опять же создаем новый документ (File >> New) все там удаляем и сейчас будем вставлять несколько исходных кодов по очереди и объяснять их. Сначала вставляем эти три строчки:
Code
#include <a_samp>
#define FILTERSCRIPT
#if defined FILTERSCRIPT
Затем вставляем этой код, которым мы присоединим нашего бота к скрипту:
Code
new BotCar;
public OnFilterScriptInit()
{
ConnectNPC("You_NPC","younpc");
BotCar = CreateVehicle(562,0,0,0,0,0,0,0);
return 1;
}
В строке "new BotCar" , "BotCar" - глобальная переменная, которая будет использоваться для создании транспорта для бота. Можете придумать любое название.
Дальше, строкой "ConnectNPC("You_NPC","younpc");" мы присоединяем нашего бота. Здесь "You_NPC" - любое название вашего бота, которое будет отображаться над ним (в дальнейшем мы сможет творить с ним много разных вещей); "younpc" - название скрипта, который мы создали перед этим и поместили в папку npcmodes.
Этой строкой мы создаём транспорт для нашего бота "BotCar = CreateVehicle(562,0,0,0,0,0,0,0);" , где "BotCar" - глобальная переменная; "449,0,0,0,0,0,0,0" - ид транспорта и координаты автомобиля. Не важно какие координаты вы укажете, все равно транспорт будет автоматически перемещен к боту.
Такс, с этим мы разобрались, теперь вставляем еще один код:
Code
public OnFilterScriptExit()
{
return 1;
}
#else
#endif
Сразу после этого кода вставляем вот этот, которым мы посадим нашего бота в транспорт созданый ранее:
Code
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname));
if(!strcmp(npcname, "You_NPC", true))
{
PutPlayerInVehicle(playerid, BotCar, 0);
}
return 1;
}
return 1;
}
Строкой "if(!strcmp(npcname, "You_NPC", true));" мы проверяем есть ли в нашем скрипте бот из именем "You_NPC" .
Если такой бот есть, то этой строкой PutPlayerInVehicle(playerid, BotCar, 0);" мы сажаем его в создый для него транспорт, который является переменной "BotCar" .
В итоге у вас должен получиться вот примерно такой скрипт:
Code
#include <a_samp>
#define FILTERSCRIPT
#if defined FILTERSCRIPT
new BotCar;
public OnFilterScriptInit()
{
ConnectNPC("You_NPC","younpc");
BotCar = CreateVehicle(562,0,0,0,0,0,0,0);
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
#endif
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname));
if(!strcmp(npcname, "You_NPC", true))
{
PutPlayerInVehicle(playerid, BotCar, 0);
}
return 1;
}
return 1;
}
Теперь сохраняем этот скрипт в папке filterscripts под любым именем и скомпилируем его. Я сохранил и скомпилировал под именем youfirstnpc .
В нас получился filterscript, который присоединит нашего бота к серверу. Остается только подключить этот скрипт к файлу конфигурации server.cfg .
Подключили? Вот и славно) Можете запускать свой сервер. В консоли сервера вам должно написать, что ваш бот зашёл на сервер.
Если написало то заходим на сервер и ищем нашего бота))
(Можете скачать бота, которого я записал по ходу этого урока)
Вот и все, теперь вы можете создавать своих оригинальных ботов) Буду очень благодарный, если вы будете заливать их в наш файловый архив. Спасибо за внимание