20 posts in this topic

Добрый день, дорогой читатель! Сегодня мы попробуем научиться делать ботов для crmp, впринципе, это актуально и для samp. 

Начнем. 

Для начала скачайте все необходимые файлы. 

А именно: инклуд (a_npc), и скрипт записи маршрута бота (npc_record.pwn and npc_record.amx). 

 

Как установить скрипт: два файла  (npc_record.pwn and npc_record.amx) киньте в папку filterscripts, потом пропишите в server.cfg:


filterscripts npc_record

 

ЭТАП 1/3 : ЗАПИСЬ МАРШРУТА

 

 

Далее, садитесь в машину / или пешком начинайте записывать маршрут. 

В случае, если маршрут записывается пешком, используйте команду /precord, если в авто используйте команду /vrecord. 

После окончания маршрута вводите /screcord и запись движений остановится. 

Записанный файл находится по пути: scriptfiles/namebot.rec

 

ЭТАП 2/3 : СОЗДАНИЕ СКРИПТА-БОТА

 

 

Теперь файл namebot.rec (из scriptfiles) перемещаем в npcmodes/recordings.

Там будет лежать запись бота. 

Переходим в папку /npcmodes.

Создаем скрипт (файл .pwn) следующего содержания: 


#define RECORDING "NameNPC" //Имя вашего записанного файла из scriptfiles без расширения
#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

ВНИМАНИЕ! Название .pwn скрипта НЕ произвольное. Оно должно быть таким же, как и название записи (.rec файла). 

В данном скрипте настройте, согласно указаниям, а после скомпилируйте скрипт (F5).

 

ЭТАП 3/3 : НАСТРОЙКА NPC В МОДЕ

 

Ко всем глобальным переменным (new) в моде добавляем:
 


new VehicleNPC; // транспорт, в который будем садить NPC. Проигнорируйте, если запись пешком

Далее отправляемся в OnGameModeInit и добавляем следующий код:


ConnectNPC("имя бота (произовльное)","название файла из scriptfiles без расширения");
VehicleNPC = CreateVehicle(400,0.0,0.0,5.0,0.0,3,3,5000); // нулевые координаты изменять не нужно, транспорт сам телепортируется к нашему нпс, измените только модель транспорта (по желанию) и цвет транспорта (по желанию)

Далее идем в OnPlayerSpawn, вставляем следующий код (желательно в начало паблика):


if(IsPlayerNPC(playerid))
{
    new npcname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,npcname,sizeof(npcname));
    if(!strcmp(npcname,"имя указанное в ConnectNPC",true))
    {
        PutPlayerInVehicle(playerid,VehicleNPC,0); // сажаем NPC в машину
      	SetPlayerColor(playerid, 0xFFFFFF00); // делаем прозрачный цвет NPC
    }
    return 1;
}

Далее, добавляем это в паблики, которые нежелательны для применения к NPC. Например, если он ездит в машине, добавьте там, где тратится бензин. Обязательно добавьте при регистрации, чтобы она ему не мешала и п. Если у вас возникли трудности, пишите в тему, расскажем куда еще добавить:


if(IsPlayerNPC(playerid)) return true;

Ну и все, npc готов! ВНИМАНИЕ! Если бот подключается, и его, сразу кикает, значит он не может заспавниться в моде. В основном это античит. Рекомендуется и туда добавить проверку, указанную чуть выше.  Автор урока: @steve! Будут проблемы, пишите в тему - поможем. 

Share this post


Link to post
Share on other sites

@Сергей Князев что именно не работает? С таким описанием ничем помочь не сможем. 

Share this post


Link to post
Share on other sites
В 18.02.2018 в 14:29, DEST сказал:

@Сергей Князев что именно не работает? С таким описанием ничем помочь не сможем. 

А где скачать нужные файлы?

 

Share this post


Link to post
Share on other sites

@MaJoR в гугле  (а так всё есть в стандартном моде sa-mp)

Edited by MuhammadPawn

Share this post


Link to post
Share on other sites
В 18.02.2018 в 15:29, DEST сказал:

@Сергей Князев что именно не работает? С таким описанием ничем помочь не сможем. 

Не работает в том смысле что все сделано как описано в уроке но бот так и не появляется

Share this post


Link to post
Share on other sites

@Андрей Лазарев не появляться он может по целой куче причин. Одна из самых распространенных - бот не прошел через авторизацию, или его выкинуло античитом. Скидывайте логи. 

Share this post


Link to post
Share on other sites
8 минут назад, DEST сказал:

@Андрей Лазарев не появляться он может по целой куче причин. Одна из самых распространенных - бот не прошел через авторизацию, или его выкинуло античитом. Скидывайте логи. 

скинуть логи загрузки сервера?

SA-MP Dedicated Server
----------------------
v0.3e, (C)2005-2012 SA-MP Team

[16:16:20] weburl = "www.sa-mp.com"  (string)
[16:16:20] 
[16:16:20] Server Plugins
[16:16:20] --------------
[16:16:20]  Loading plugin: crashdetect
[16:16:21]   CrashDetect plugin 4.19.4
[16:16:21]   Loaded.
[16:16:21]  Loading plugin: mysql
[16:16:21]  >> plugin.mysql: R39-6 successfully loaded.
[16:16:21]   Loaded.
[16:16:21]  Loading plugin: sscanf
[16:16:21] 

[16:16:21]  ===============================

[16:16:21]       sscanf plugin loaded.     

[16:16:21]          Version:  2.8.3        

[16:16:21]   (c) 2018 Alex "Y_Less" Cole  

[16:16:21]  ===============================

[16:16:21]   Loaded.
[16:16:21]  Loading plugin: streamer
[16:16:22] 

*** Streamer Plugin v2.9.4 by Incognito loaded ***

[16:16:22]   Loaded.
[16:16:22]  Loading plugin: pawncmd
[16:16:22] Pawn.CMD plugin v3.2.0 by urShadow has been loaded
[16:16:22]   Loaded.
[16:16:22]  Loading plugin: iTD
[16:16:22] 
* iTD Plugin loaded. (Support for textdraw editor mouse/keyboard)

[16:16:22]   Loaded.
[16:16:22]  Loading plugin: FileManager
[16:16:22] ******************
[16:16:22] ** FILE MANAGER **
[16:16:22] **    Loaded    **
[16:16:22] ** Version 1.1 **
[16:16:22] ******************
[16:16:22]   Loaded.
[16:16:22]  Loaded 7 plugins.

[16:16:22] 
[16:16:22] Filterscripts
[16:16:22] ---------------
[16:16:22]   Loading filterscript 'npc_record.amx'...
[16:16:22]   Unable to load filterscript 'npc_record.amx'.
[16:16:22]   Loaded 0 filterscripts.

[16:16:22]  
[16:16:22]  
[16:16:22]  
[16:16:22]  ======================================= 
[16:16:22]  |                                     | 
[16:16:22]  |        YSI version 3.09.0684        | 
[16:16:22]  |        By Alex "Y_Less" Cole        | 
[16:16:22]  |                                     | 
[16:16:22]  ======================================= 
[16:16:22]  
[16:16:23] 

Подключение к MySQL: OK
[16:16:23] ==============================================
[16:16:23] Server is Loading...
[16:16:23] ==============================================
[16:16:23] Number of vehicle models: 42
[16:16:25] [SMSG]: Успешная загрузка 'LoadVehicle' - загружено 89 за 1523 м.с
[16:16:25] [SMSG]: Успешная загрузка 'LoadBizz' - загружено 15 за 1 м.с
[16:16:25] [SMSG]: Успешная загрузка 'LoadHouses' - загружено 31 за 1 м.с
[16:16:25] [SMSG]: Успешная загрузка 'LoadFrac' - загружено 17 за 1 м.с
[16:16:25] [SMSG]: Успешная загрузка 'LoadEnters' - загружено 55 пикапов за 2 м.с
[16:16:25] [SMSG]: Успешная загрузка 'LoadPodezd' - загружено 192 подьездов за 8 м.с
[16:16:26] [SMSG]: Успешная загрузка 'LoadRooms' - загружено 2137 квартир за 109 м.с
[16:16:26] [SMSG]: Успешная загрузка 'LoadATM' - загружено 6 банкоматов за 0 м.с
[16:16:26] [SMSG]: Успешная загрузка 'LoadMayor' за 0 м.с
[16:16:26] [SMSG]: Успешная загрузка 'LoadOther' за 23 м.с
[16:16:26] [SMSG]: Успешная загрузка 'LoadKazino' - загружено 8  за 0 м.с
[16:16:26] [SMSG]: Успешная загрузка 'LoadRadar' - загружено 2 за 0 м.с

 

Share this post


Link to post
Share on other sites

@Андрей Лазарев NPC даже и не пытается коннектиться, скиньте server.cfg

Share this post


Link to post
Share on other sites
Спойлер

echo Executing Server Config...
lanmode 0
rcon_password 396593
rcon 0
maxplayers 500
hostname Severe Russia RolePlay | Loading...
gamemode0 mrpv1
filterscripts npc_record
announce 1
query 1
weburl 
maxnpc 20
onfoot_rate 40 
incar_rate 40 
weapon_rate 40 
stream_distance 400.0 
stream_rate 500
mapname Criminal Russia
plugins crashdetect mysql sscanf streamer pawncmd iTD FileManager
port 8904

echo Executing Server Config...
lanmode 0
rcon_password 396593
rcon 0
maxplayers 500
hostname Severe Russia RolePlay | Loading...
gamemode0 mrpv1
filterscripts npc_record
announce 1
query 1
weburl 
maxnpc 20
onfoot_rate 40 
incar_rate 40 
weapon_rate 40 
stream_distance 400.0 
stream_rate 500
mapname Criminal Russia
plugins crashdetect mysql sscanf streamer pawncmd iTD FileManager
port 8904

 

Edited by Андрей Лазарев

Share this post


Link to post
Share on other sites

каково содержимое папки npcmodes? Скиньте весь итоговый код, который вы добавили в свой мод. 

Share this post


Link to post
Share on other sites

Можно ссылку на скачивание данного скрипта. В интернете один шлак. Нету нормальных сайтов...

Share this post


Link to post
Share on other sites

Это от сампа, но в CRMP тоже должен работать. 

npc_record.pwn

npc_record.amx

Share this post


Link to post
Share on other sites
В 28.06.2019 в 16:00, DEST сказал:

Это от сампа, но в CRMP тоже должен работать. 

npc_record.pwn  0   2 кБ

npc_record.amx  0   1 кБ

Вы конечно извените но вы сами пишите что в крмп ДОЛЖНО РАБОБАТЬ сколько я не облазил форумов по данной теме и не одного не увидел у кого он заработал

Share this post


Link to post
Share on other sites

@Андрей Лазарев Для записи маршрутов используйте стандартный simple-мод, чтобы в нем обрабатывались команды с помощью OnPlayerCommandText. Команда для начала записи /vrecord. Этот скрипт полностью рабочий, скачан из официального архива на sa-mp.com. Если что-то не работает, это означает лишь то, что вы не умеете этим пользоваться. 

Share this post


Link to post
Share on other sites

@Андрей Лазарев, в моде CSR используются NPC-боты. Все работает прекрасно.

Share this post


Link to post
Share on other sites

Обычно проблемы возникают по следующим причинам:

  1. Отсутствует папка npcmodes/отсутствуют файлы (например, забыли их скопировать, неправильно назвали).
  2. Отсутствует файл adap-npc (либо поврежден).
  3. Не указано количество подключаемых NPC-ботов в файле конфигураций сервера (server.cfg). Необходимо вписать "maxnpc <количество>". Например, 
    maxnpc 10

    Ибо по умолчанию значение maxnpc стоит 0. Более подробно о параметрах сервера, настраиваемых в файле конфигурации, можете прочитать здесь.

  4. Неправильно оформлен файл.

  5. Боты подключаются "разово": идет последовательный вызов нескольких функций подключения ботов (ConnectNPC). Здесь сработает система безопасности сервера (параметр называется как-то вроде минимальная частота входящих запросов к серверу). Решение: запускать ботов с некоторым интервалом. Например: 

    Спойлер

     

    
    const MAX_NPC = 3;
    
    public OnGameModeInit() {
    	SetTimerEx("ConnectNPCBots", 1000*1, false, "i", 1); // ID первого бота
    	return 1;
    }
    
    forward ConnectNPCBots(npcid);
    public ConnectNPCBots(npcid) {
    	static g_npcid = 0;
    	g_npcid = npcid;
    	
    	switch(npcid) {
    		case 1: ConnectNPC("BotName1","file1");
    		case 2: ConnectNPC("BotName2","file2");
    		case 3: ConnectNPC("BotName3","file3");
    	}
    	
    	if(++g_npcid <= MAX_NPC) {
    		SetTimerEx("ConnectNPCBots", 1000*1, false, "i", g_npcid);
    	}
    	
    	return 1;
    }

     

 

Если хотите, можете попробовать подключить бота, который есть в моде CSR. Коль уж там работает, у вас тоже должен работать. Для этого поэтапно сделайте следующее:

  1. Скачайте папку npcmodes со всем ее содержимым (скачать).
  2. В OnGameModeInit впишите: 
    ConnectNPC("Karinka","cas1")
    Ну, и всех остальных своих ботов пока что уберите (закомментируйте хотя бы). Так скажем для чистоты эксперимента.

Share this post


Link to post
Share on other sites

@odosenok, можете скинуть сам мод csr что бы от туда брать ботов

Edited by odosenok
Причина: убрал цитату.

Share this post


Link to post
Share on other sites

@sorex, версия 7.4.0 есть в открытом доступе.

Share this post


Link to post
Share on other sites
9 минут назад, odosenok сказал:

@sorex, версия 7.4.0 есть в открытом доступе.

а ссылку можно не могу найти

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Владислав2
      By Владислав2
      Здравствуйте, при компиляции появляется ошибка,

      Ошибка:
      error 017: undefined symbol "REP_KUZIA_TD"

      Строки:
       
          REP_KUZIA_TD[0] = TextDrawCreate(7.499990, 314.444396, "REP: 1");
          TextDrawLetterSize(REP_KUZIA_TD[0], 0.400000, 1.600000);
          TextDrawAlignment(REP_KUZIA_TD[0], 1);
          TextDrawColor(REP_KUZIA_TD[0], -1);
          TextDrawSetShadow(REP_KUZIA_TD[0], 0);
          TextDrawSetOutline(REP_KUZIA_TD[0], 1);
          TextDrawBackgroundColor(REP_KUZIA_TD[0], 255);
          TextDrawFont(REP_KUZIA_TD[0], 1);
          TextDrawSetProportional(REP_KUZIA_TD[0], 1);
          TextDrawSetShadow(REP_KUZIA_TD[0], 0);
          REP_KUZIA_TD[1] = TextDrawCreate(6.249957, 330.518493, "ASK: 0");
          TextDrawLetterSize(REP_KUZIA_TD[1], 0.400000, 1.600000);
          TextDrawAlignment(REP_KUZIA_TD[1], 1);
          TextDrawColor(REP_KUZIA_TD[1], -1);
          TextDrawSetShadow(REP_KUZIA_TD[1], 0);
          TextDrawSetOutline(REP_KUZIA_TD[1], 1);
          TextDrawBackgroundColor(REP_KUZIA_TD[1], 255);
          TextDrawFont(REP_KUZIA_TD[1], 1);
          TextDrawSetProportional(REP_KUZIA_TD[1], 1);
          TextDrawSetShadow(REP_KUZIA_TD[1], 0);
          return 1;
      }

      Буду рад если кто-то поможет