Форум

  • Страница 1 из 2
  • 1
  • 2
  • »
Форум | www.SAMP-TEAM.com » Wiki SA-MP » NPC » Урок по созданию NPC в транспорте
Урок по созданию NPC в транспорте
На нашем сайте вы уже наверно скачали много NPC's (ботов), но все же вам наверно хочется научится создавать самому своих ботов... Разве я не прав? Ну вот, в этом уроке я научу вас создавать своего бота который управляет транспортом. Если вы прочитаете этот урок до конца, то полностью поймёте всю простоту создания своего бота. Что же нам понадобиться для его создания?

1. Установленная GTA San Andreas
2. Установленный клиент SA-MP последней версии (Скачать клиент SA-MP 0.3x)
3. Установленный сервер SA-MP последней версии (Скачать сервер SA-MP 0.3x)
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 (Удалить). Сделали? Хорошо... Теперь вставьте туда этот исходный код:

Код
#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) все там удаляем и сейчас будем вставлять несколько исходных кодов по очереди и объяснять их. Сначала вставляем эти три строчки:

Код
#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;
}


В строке "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" - ид транспорта и координаты автомобиля. Не важно какие координаты вы укажете, все равно транспорт будет автоматически перемещен к боту.

Такс, с этим мы разобрались, теперь вставляем еще один код:

Код
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;
}


Строкой "if(!strcmp(npcname, "You_NPC", true));" мы проверяем есть ли в нашем скрипте бот из именем "You_NPC" .
Если такой бот есть, то этой строкой PutPlayerInVehicle(playerid, BotCar, 0);" мы сажаем его в создый для него транспорт, который является переменной "BotCar" .

В итоге у вас должен получиться вот примерно такой скрипт:

Код
#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 .



Подключили? Вот и славно) Можете запускать свой сервер. В консоли сервера вам должно написать, что ваш бот зашёл на сервер.



Если написало то заходим на сервер и ищем нашего бота))



(Можете скачать бота, которого я записал по ходу этого урока)

Вот и все, теперь вы можете создавать своих оригинальных ботов) Буду очень благодарный, если вы будете заливать их в наш файловый архив. Спасибо за внимание.

Автор: BombArDier
Эксклюзивно для: www.SAMP-TEAM.com

© BombArDier Копирование запрещено!
05.08.2011 в 18:54
Помогло!!!Норм!!!
23.11.2011 в 00:16
cool это гениально cool
появилась как раз гениальная идея записать хорошего дрифтера happy
но вот вопрос а как записывались боты для гонок в моде City Life 2.0. траектория движения то понятно а чекпоинты и тд ? smile
08.01.2012 в 05:03
а зачем тебе чекпоинты если бот их всеравно пройдет
08.01.2012 в 13:43
cool а вот еще интересно если в гонке несколько ботов то каждый записывался по отдельности? или можно чтоб несколько РКОН админов одновременно производили запись? smile
P.S. очень хорошая нужная тема smile знаю пару хороших дрифтеров и появилась идея записать дрифт ботов чтоб так сказать остальные учились у них )))
10.01.2012 в 04:06
чесно говоря, про несколько ркон-админов я даже не додумывался но попробывать стоит
10.01.2012 в 16:22
Захожу на сервер и сразу два варнинга, вот скрин
http://s61.radikal.ru/i171/1201/a9/b2e2ed8de50e.jpg
21.01.2012 в 19:19
А про скин забыл?

Код
if(!strcmp(npcname, "You_NPC", true))
         {
          PutPlayerInVehicle(playerid, BotCar, 0);
          SetSpawnInfo(playerid,0,24,0.0,0.0,0.0,0.0,0,0,0,0,0,0);//добавить это
         }

где (24) - это скин.

Без этой строчки, бот возьмёт первый попавшийся скин.
08.03.2013 в 00:12
Как мне их встановить на сервер ? Я уже и выключал и включал сервер и прописовал /gmx на сервере не идет ! maxnpc 30 ! еще одно когда выключаю и включаю сервер то хоть транспорт ботов есть а самих ботов нет ! а когда перезагружаю при помощи /gmx то ни транспорта ни ботов нет =(((( ХЕЛП МИ !!! ПОМОГИТЕ ЛЮДИ ! !!!
28.04.2013 в 14:40
http://www.samp-team.com/forum/50-6616-1

[+] maxnpc найди и прочитай.
28.04.2013 в 15:01
СПС!
03.06.2013 в 12:22
Круто
05.06.2013 в 22:29
не робит dry dry dry
18.03.2014 в 10:50
спс
06.08.2015 в 10:49
Спс
27.09.2015 в 09:37
Форум | www.SAMP-TEAM.com » Wiki SA-MP » NPC » Урок по созданию NPC в транспорте
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: