Наша Кнопка



Мини профиль
Наши партнеры
Онлайн лист
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Пользователи
Гости сайта
Главная » Статьи » GTA SAMP

Как создать ботов на сервер GTA SAMP

Добавил: Гость » Дата: 01.11.2024
Категория: GTA SAMP
Запись файла путей

Для начала нам необходимо записать файл путей для нашего npc. Для этого заходим на сервер, логинимся как ркон админ. Загружем фильтрскрипт npc_record ("/rcon loadfs npc_record" ) (если он не был загружен до этого). Скрипт npc_record содержит три основные команды:
/vrecord - Начинает запись путей транспорта в указанный файл
/ofrecord - Начинает запись путей пешехода в указанный файл
/stoprecord - Останавливает запись файла
В этом уроке мы будем делать NPC управляющего транспортом. Поэтому садимся в тачку и пишем /vrecord mynpc
Далее катаемся по пути где будет ездить наш будущий npc
Когда закончим останавливаем запись файла /stoprecord

Выходим из игры и идем в папку scriptfiles, там нас должен ожидать файл mynpc.rec. Перемещаем его в папку /npcmodes/recordings/
Все запись путей для NPC закончена!

Управление NPC

Как вы наверно заметили в папке npcmodes много маленьких pwn скриптов. Они управляют поведением NPC. Теперь создадим скрипт который будет управлять нашим NPC. Скрипт будет следующего содержания:
Code

#define RECORDING "mynpc" //Это имя файла путей, который мы только что записали  
#define RECORDING_TYPE 1//1 для водителя 2 для пешехода  
#include <a_npc>  
main(){}  
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);  
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);  
public OnNPCExitVehicle() StopRecordingPlayback();

Рассмотрим каждую строчку подробнее:
Code

#define RECORDING "mynpc" //Это имя файла путей, который мы только что записали



Как говорит комментарий - это имя файла путей который мы записали. Имя указывается без расширения!

Code

#define RECORDING_TYPE 1//1 для водителя 2 для пешехода



Это тип записи. Для NPC водителя указываем 1, для NPC пешехода 2

Code

#include <a_npc>



Подключаем инклуд содержащий функции для работы с NPC

Code

public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);



Благодаря этой строчке, когда npc проедет весь свой путь, прописанный в его файле, воспроизведение начнется сначало.

Code

public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);



Эта строка начинает воспроизведение файла пути когда NPC садиться в транспорт

Code

public OnNPCExitVehicle() StopRecordingPlayback();



Эта строка останавливает воспроизведение, если по какой то причине NPC покинет транспорт.
Как видите все просто! Теперь компилируем скрипт mynpc.pwn и отправляем его в папку /npcmodes

Присоединение NPC
Итак у нас уже есть готовый файл путей и скрипт управляющий NPC. Теперь нам нужно загрузить NPC в моде или фильтрскрипте. Для этих целей существует функция ConnectNPC
Синтаксис:
Code

ConnectNPC("Dave","mynpc");



де, Dave - имя NPC, благодаря которому можно различать между собой разных NPC и заставлять их выполнять различные действия.
mynpc - имя скрипта (без расширения), управляющего NPC
Итак, используя эту функцию загрузим NPC в моде:

Code

public OnGameModeInit()  
{  
print("my gamemode");  
ConnectNPC("MyFirstNPC","mynpc");  
return 1;  
}


или в фс

Code

public OnFilterScriptInit()  
{  
print("my filterscript");  
ConnectNPC("MyFirstNPC","mynpc");  
return 1;  
}


Теперь когда у нас есть маршрут по которому будет кататься NPC, нужно создать ему транспорт на котором он будет кататься:

Code

new MyFirstNPCVehicle;  
public OnGameModeInit()  
{  
print("my gamemode");  
ConnectNPC("MyFirstNPC","mynpc");  
MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);  
return 1;  
}


Положение транспорта не имеет значение, поскольку он будет телепортирован к NPC, когда начнется воспроизведение файла пути.
Еще одна вещь, которую нужно сделать - это посадить NPC в транспорт. Это можно реализовать так:

Code

public OnPlayerSpawn(playerid)  
{  
if(IsPlayerNPC(playerid)) //Если игрок - NPC.  
{  
new npcname[MAX_PLAYER_NAME];  
GetPlayerName(playerid, npcname, sizeof(npcname)); //Получаем имя NPC  
if(!strcmp(npcname, "MyFirstNPC", true)) //Проверяем если имя NPC - MyFirstNPC  
{  
PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Сажаем NPC в созданный для него транспорт  
}  
return 1;  
}  
//Остальной код для обычных игроков  
return 1;  
}


Дополнение специально для GF

Чтобы боты работали стабильно и их не выкидывало с сервера/из авто и т.д
Ищем в моде данные паблики:
Code

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)  
public OnPlayerConnect(playerid)  
public SetPlayerSpawn(playerid)  
public OnPlayerSpawn(playerid)  
public OnPlayerStateChange(playerid, newstate, oldstate)  
public OnPlayerExitVehicle(playerid, vehicleid)  
public OnPlayerRequestClass(playerid, classid)  
public OnPlayerUpdate(playerid)


И добавляем следующие:

Code

if(IsPlayerNPC(playerid))return 1;

Просмотров: 13620 |

Не забудь поделится с Друзьями

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]