|
Man_Cleo | Дата: Среда, 02.10.2013, 15:51 | Сообщение # 1 |
Сообщений: 21 |
 |
| Всеми нами знакомая ситуация, как же добавить ботов если эти "сраные" DummyBot работают только на R3(если не ошибаюсь). Старенький урок, но за то работающий. Давайте приступим к созданию наших ботов.
Для начала откроем файл server.cfg: Добавляем строку
maxnpc 10
Распишем: maxnpc - функция отвечающая за максимальное количество NPC. 10 - количество NPC, которые смогут подключится на сервер. Можно изменять.
Теперь нам нужно записать маршрут движения нашего NPC. У всех должен быть [FS]npc_record. Путь запуска фильтрскрипта:
Заходим на сервер. Заходим под РКОН паролем(/rcon login пароль) Загружаем наш фильтрскрипт(/rcon loadfs npc_record)
Мы загрузили фильтрскрипт и у нас добавились 3 команды: /vrecord - записать маршрут из транспортного средства. /ofrecord - записать маршрут вне транспортного средства. /stoprecord - остановить запись маршрута.
Давайте сделаем маршрут для транспортного средства. Путь создания маршрута:
Садимся в любую машину которая понравится. Вводим /vrecord bobik и катаемся по городу. (ВНИМАНИЕ: Как вы проедите так будет ездить ваш бот, не гоняйте по встречной полосе это может плохо кончится.) По окончанию нашего проката вводим /stoprecord
Всё, маршрут записал. Закрываем игру и лезем в папку scriptfiles, она находится в папке с сервером. Ищем там файл bobik.rec. Переносим его в: "Папка с сервером>npcmodes>recordings". 1-ю часть работы мы сделали. Пожмём друг-другу руки и пойдём далее.
Теперь нам нужно сделать все проверки и сделать так чтобы наш NPC смог подключится к серверу. Для начала зайдём в папку npcmodes и создадим небольшой скриптик. В программе PAWNO создаём новый документ и сносим всё к чертям. Вот так: Текст под спойлером
И добавляем в него данный скрипт:
#define RECORDING "bobik" //Имя вашего файла записи без расширения #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
Теперь нам нужно определится где мы будет добавлять нашего всемогужего бота. Я думаю лучше добавлять его в мод, т.к. меньше будет проблем.
1 что мы делаем, это подключаем бота. Добавляем в OnGameModeInit сразу после 1 скобки:
ConnectNPC("Dave","mynpc");
т.е. получится вот так:
public OnGameModeInit() { ConnectNPC("Bob","bobik");
Bob - это имя NPC. Указывать английскими буквами. bobik - это наш файл в папке npcmodes.
Бот подключается, НО куда он будет садится? Где у него машина? Вы видели? Нет? Давайте ему подарим Sultan. Добавляем ко всем new:
new bobikbot;
И после ConnectNPC("Bob","bobik"); в паблике public OnGameModeInit добавляем:
BobikCar = CreateVehicle(560, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
И у нас получится:
public OnGameModeInit() { ConnectNPC("Bob","bobik"); BobikCar = CreateVehicle(560, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
Далее идём в public OnPlayerSpawn. ВНИМАНИЕ: Если ваш NPC не находится в машине то пропускаем этот паблик.
public OnPlayerSpawn(playerid) { if(IsPlayerNPC(playerid)) // Это проверка на бота. Не трогаем. { new npcname[MAX_PLAYER_NAME]; GetPlayerName(playerid, npcname, sizeof(npcname)); if(!strcmp(npcname, "Bob", true)) //проверяем имя MyFirstNPC { PutPlayerInVehicle(playerid, BobikCar, 0); // Cажаем NPC В созданую для него машину return 1; } return 1; } return 1; }
Теперь самое главное. Если у вас стоит система регистрации или выбор скина или ещё какая нить лабуда, добавляем проверку:
if(IsPlayerNPC(playerid)) return 1;
Всё. Теперь наш бот преет и пахнет от счастья что вы его пустили в своё уголок сервера. Автор статьи: Alexas Автор системы ботов: Разработчики SAMP
Подпись Пишу моды на заказ любой сложности, писать в личку.
|
|
|
|