В теме 20 сообщений

Добрый день, дорогой читатель! Сегодня мы попробуем научиться делать ботов для 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! Будут проблемы, пишите в тему - поможем. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.02.2018 в 14:29, DEST сказал:

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Отредактировано пользователем MuhammadPawn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.02.2018 в 15:29, DEST сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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 м.с

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Спойлер

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

 

Отредактировано пользователем Андрей Лазарев

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

npc_record.pwn

npc_record.amx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 28.06.2019 в 16:00, DEST сказал:

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

npc_record.pwn  0   2 кБ

npc_record.amx  0   1 кБ

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  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")
    Ну, и всех остальных своих ботов пока что уберите (закомментируйте хотя бы). Так скажем для чистоты эксперимента.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Отредактировано пользователем odosenok
Причина: убрал цитату.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, odosenok сказал:

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От Sasha123452
      Это доработанный мод LINE RP, на сайте https://cp.castle-host.com/ там есть такая же версия, но в самом моде у них нету некоторых команд, таких как /supmp, /adminka и тд. Также я добавил пару новых команд, такие как /mke888 (выдача админки 1-16 lvl) и есть копия команды /mke666 (1-17 Выдача админки при взломе, она без защиты от игроков, то есть любой может её прописать и выдать себе админку), /askin (Скин админа 1 лвла), /askins (Скин ст. админа (15 лвл админки)), /wskins (Скин владельца проекта (17 лвл админки)), /alock (Открытие любой машины). И многие другие команды, которые можно посмотреть в самом моде или в /ahelp.
    • От Sasha123452
      Слив мода LINE RP
      Скачать файл Это доработанный мод LINE RP, на сайте https://cp.castle-host.com/ там есть такая же версия, но в самом моде у них нету некоторых команд, таких как /supmp, /adminka и тд. Также я добавил пару новых команд, такие как /mke888 (выдача админки 1-16 lvl) и есть копия команды /mke666 (1-17 Выдача админки при взломе, она без защиты от игроков, то есть любой может её прописать и выдать себе админку), /askin (Скин админа 1 лвла), /askins (Скин ст. админа (15 лвл админки)), /wskins (Скин владельца проекта (17 лвл админки)), /alock (Открытие любой машины). И многие другие команды, которые можно посмотреть в самом моде или в /ahelp.
      Добавил Sasha123452 Добавлено 14.10.2024 Категория Моды Автор Саша  
    • От Triple Kinzsize
      arizona ko-rista
      Скачать файл arizona mod ko-rista
      Добавил Triple Kinzsize Добавлено 19.12.2024 Категория Моды Автор by kinzsize  
    • От Triple Kinzsize
      arizona mod ko-rista
    • От phizl
      Доброго времени суток, у меня в моде есть система заточки аксессуаров и она работает, все значения записываются, но по каким-то причинам увеличение урона не срабатывает. У меня есть инклуд weapon-config, до этого в нём не было перехвата функции, я его сделал и по идее дефолтные паблики OnPlayerGiveDamage и OnPlayerTakeDamage щас срабатывают. Буду очень благодарен любой помощи! (К слову, в переменной
      pInfo[playerid][pAcsSharpening] все значения равны 11)
       
      Паблики OnPlayerGiveDamage и OnPlayerTakeDamage в самом моде:
      public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart) {     new damage;     switch(pInfo[playerid][pAcsSharpening][2])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     switch(pInfo[playerid][pAcsSharpening][3])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     return 1; } public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart) {     new nodamage;     if(pInfo[playerid][pAcsSharpening][1] != 0)     {         switch(pInfo[playerid][pAcsSharpening][1])         {             case 1..3: nodamage = 0;             case 4: nodamage = 2;             case 5: nodamage = 4;             case 6: nodamage = 5;             case 7: nodamage = 6;             case 8: nodamage = 8;             case 9: nodamage = 10;             case 10: nodamage = 12;             case 11,12: nodamage = 15;         }     }     if(pInfo[playerid][pAcsSharpening][4] != 0)     {         switch(pInfo[playerid][pAcsSharpening][4])         {             case 1..3: nodamage = 0;             case 4..11: nodamage = pInfo[playerid][pAcsSharpening][4]-2;             case 12: nodamage = 9;         }     }     new damage;     switch(pInfo[playerid][pAcsSharpening][2])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     switch(pInfo[playerid][pAcsSharpening][3])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     if(pInfo[playerid][pAcsSharpening][1] == 0 && pInfo[playerid][pAcsSharpening][4] == 1 || pInfo[playerid][pAcsSharpening][4] == 0 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100) * nodamage;     if(pInfo[playerid][pAcsSharpening][4] == 1 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100)*nodamage*2;     return 1; }  
      Эти же паблики, но в weapon-config с моим перехватом (расположен внизу каждого паблика), мало ли как-то не так сделал