Созданию NPC (бот)

Описание: Уроки по скриптингу
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 22 мая 2013, 10:47

Созданию NPC (бот)
Автор: ^_^

I. Создание бота

Итак, приступим к созданию бота:
1.
a)Открываем server.cfg и добавляем к строчке:

Код: Выделить всё

scriptfiles


термин:

Код: Выделить всё

npc_record


Если у вас отсутствует эта строка добавляем её.
b) В том же server.cfg находим строку:


и вводим максимальное число ботов которые будут на вашем сервере. Так же если у вас отсутствует эта строка добавляем её.

2. Делаем Запись Бота
a)Заходим на сервер и вводим /rcon login **** (где **** - ваш пароль)
Примечание: Если вы не знаете ваш РКОН пароль вы можете искать или поменять его в server.cfg, в строчке:

Код: Выделить всё

rcon_password


b)Пишем /rcon loadfs npc_record. (Это откроет нам доступ к записи NPC )

c)Когда вы уже готовы к записи (Вы в нужном месте и в Нужном Транспорте/ Пешком) и хотите начать запись пишите:

Код: Выделить всё

 /vrecord "Название Файла" если ваша запись состоится в Автомобиле 
 
/ofrecord "Название Файла" если ваша запись состоится Пешком


d)Когда вы хотите закончить запись пишите /stoprecord.

3.
Итак мы закончили запись бота. Теперь нам нужно её скопировать в папку NPCmodes -> Recordings. Для этого открываем папку с модом и находим папку под названием ScriptFiles. Открываем его и находим файл "Название Файла".rec (Название которую вы указали при старте записи), копируем его и вставим в Папку NPCmodes -> Recordings.

4. Чтобы бот выполнял свой действия надо сперва их "дефаинить" . Для это га открываем новый файл PWN и заменяем всё его содержимое на это:

Код: Выделить всё

#define RECORDING "Название Файла"// Название которую вы указали при старте записи
#define RECORDING_TYPE 1// Заменяем на 2 если запись была пешком

#include <a_npc>
main(){}
public 
OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPERECORDING);

#if RECORDING_TYPE == 1
public OnNPCEnterVehicle(vehicleidseatidStartRecordingPlayback(RECORDING_TYPERECORDING);
public 
OnNPCExitVehicle() StopRecordingPlayback();
#else
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPERECORDING); .
#endif  


и компилируем его в папке NPCmodes с названием "Название Записи".

5. Итак основную работу мы выполнили, сейчас нам нужно только сделать возможным конект NPC-а к нашему сервера. Для это га мы будем использовать FS (FilterScripts).

a) Создаём новый PWN и заменяем всё содержимое этим:

Код: Выделить всё

#define FILTERSCRIPT

#include <a_samp>

#if defined FILTERSCRIPT

new Car//Название т.с в котором будет сидеть ваш NPC

public OnFilterScriptInit()
{
    
ConnectNPC("Замеини на Ник твоего NPC","Название записи"); // Ник NPC не будет виден на сервер но будет отображаться в Ркон Панели.
    
Car CreateVehicle(ид кара который вы хотите использовать0.00.05.00.0цвет 1цвет 25000); //Координаты кара в записи - Менять не надо
    
return 1;
}

public 
OnFilterScriptExit()
{
    print(
"Ваш NPC успешно дезактивирован.");
    return 
1;
}

#else
#endif

public OnPlayerSpawn(playerid)
{
    if(
IsPlayerNPC(playerid))
    {
        new 
npcname[MAX_PLAYER_NAME];
        
GetPlayerName(playeridnpcnamesizeof(npcname));
        if(!
strcmp(npcname"Название Вашего NPC - Которую вы указали раньше"true))
        {
            
PutPlayerInVehicle(playeridCar0);
            
SetSpawnInfo(playerid,0,ид скина NPC,0.0,0.0,0.0,0.0,0,0,0,  0,0,0); //Спавн НПС
        
}
        return 
1;
    }
    return 
1;
}  


b) Компилируем файл в Папку FilterScripts под названием "Название записи".

6. Последний шаг

Открываем server.cfg, находим строку:

Код: Выделить всё

filtscripts


и добавляем к ней "Название записи" ( с пробелом ). Многие спросят почему "Название записи". Это потому что FS был скомпилирован под тем же названием как и "Название записи" для простоты и для комфорта.

7. Запускаем сервер. В Ркон панели должно написать:

Код: Выделить всё

"Ник твоего NPC" has joined the server


II. Основные проблемы и их решения

Итак, бот сделан... Но впереди осталось много работы. Основные 3 причины по которым бот не может зайти на сервер или же он не может выполнить свой действия это:

1. Система авторизаций. Исправит можно добавив в public OnPlayerConnect(playerid) и public OnPlayerRequestClass(playerid, classid):

Код: Выделить всё

if(IsPlayerNPC(playerid))return 1


Пример:

Код: Выделить всё

public OnPlayerRequestClass(playeridclassid)
{
    if(
IsPlayerNPC(playerid))return 1//Обрати внимание тут
    
if (RegistrationStep[playerid] == && gPlayerLogged[playerid] != 1)
    {
        if(
gPlayerAccount[playerid] != 0)
        {
            new 
loginmsg[512+1];
            new 
loginname[64];
            new 
playersip[256];
                        
// .... Продолжение скрыто  


2. Анти-Чит на FlyHack. Исправляется тем же:

Код: Выделить всё

 if(IsPlayerNPC(playerid))return 1;  


3. Система прав на автомобиль. Ищем строку "Вы не можете управлять ..." (Текст который выкачивает когда садишься в авто без прав ) в моде и в начале добавляем ту же строку:

Код: Выделить всё

if(IsPlayerNPC(playerid))return 1
[center]i love you [s]mxIni[/s] Mysql[/center]


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 2 гостя