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

Description: Уроки по скриптингу
Moderator: SJplayer

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Posts: 1611
Joined: 5 Apr 2013
With us: 11 years 5 months

#1by Дим » 22 May 2013, 10:47

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

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

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

Code: Select all

scriptfiles


термин:

Code: Select all

npc_record


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

Code: Select all

maxnpc


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

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

Code: Select all

rcon_password


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

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

Code: Select all

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


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

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

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

Code: Select all

#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 и заменяем всё содержимое этим:

Code: Select all

#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, находим строку:

Code: Select all

filtscripts


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

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

Code: Select all

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


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

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

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

Code: Select all

if(IsPlayerNPC(playerid))return 1


Пример:

Code: Select all

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. Исправляется тем же:

Code: Select all

 if(IsPlayerNPC(playerid))return 1;  


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

Code: Select all

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


  • Similar Topics
    Replies
    Views
    Last post

Return to “Уроки”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest