07:26
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
Модератор форума: Dima-kun  
[УРОК]NPC(Боты)
heufixДата: Четверг, 05.11.2009, 00:28 | Сообщение # 1
Уважаемый человек
Группа: Продвинутые
Сообщений: 995
Награды: 22
Репутация: 231
Замечания: 80%
Статус:
Начнём с самого начала - это server.cfg.
server.cfg

maxnpc - Максимальное количество NPC(ботов)
Соответсвенно если maxnpc 0 то боты не могут подключится к серверу, так что ставим больше 0.
Запись/воспроизведение файлов

Прежде всего, мы должны записать файл воспроизведения для нашего NPC(бота). Запустите сервер с любым модом. Заходим в Ркон аккаунт(Используем: "/rcon login <пароль>") и загружаем фильтрскрипт npc_record (Используем: "/rcon loadfs npc_record").
Есть 3 основных команды для записи в npc_record:

/vrecord <имя файла> - Старт записи машины в указанный файл.
/ofrecord <имя файла> - Старт записи пешком в указанный файл.
/stoprecord - Останавливает запись(Как и на машине так и пешком)

В этом уроке, мы сделаем путь транспортного средства,так что садитесь в машину, и вводите /vrecord mynpc (Должны быть ркон админом) чтобы начать запись.
Немного поездите по городу и когда вы закончите, вводите, /stoprecord
Закройте игру и перейдите в папку scriptfiles, там вы увидите файл с именем mynpc.rec. Перенесите этот файл: "Папка с сервером>npcmodes>recordings"
Готово? Хорошо! Вы имеете запись(путь) для вашего будущего NPC.

Управление NPC

Ты мог заметить, что много pawno скриптов в каталоге npcmodes, это стандартные "мини" скрипты, которые контролируют действия вашего NPC.
Итак, создадим скрипт для вашего записанного пути.
Создаём новый файл в pawno, и заменяем его содержимое на это:
Code
#define RECORDING "mynpc" //Имя вашего файла записи без расширения     
#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

Это может быть выглядит для вас не понятно, но сейчас я опишу каждую строчку!
Code
#define RECORDING "mynpc" - //Имя вашего файла записи без расширения.

Наша запись была названа mynpc, и его расширение было .rec, поэтому мы вводим сюда mynpc
Quote
#define RECORDING_TYPE 1 //1 если путь записан в машине и 2 если путь записан пешком

Code
#include <a_npc>//Задействуем функции инклуда a_npc.

Code
publiс OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

OnRecordingPlaybackEnd Это строка кода делает запись цикла, когда нами записанная запись заканчивается, она начинает вопсроизводится ещё раз.
Code
publicOnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);

Это ещё один стандартный икнклуд в NPC библиотеке.
Это Позволит начать воспроизведение нашей записи когда игрок помещён в автомобиль.
Code
public OnNPCExitVehicle() StopRecordingPlayback();

Это остановит воспроизведение записи если npc выйдет с машины.
Code
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

Этот код значит, Когда NPC Заспавнится начнётся воспроизведение записи.

Как видите это всё очень просто.Теперь сохраните свой NPC "mini" скрипт, с названием "mynpс.pwn" В "Папка с сервером>npcmodes>" и скомпилируйте.
Если он скомпилировался, ты можешь теперь продолжить делать следующие шаги в этом учебнике.И не забудьте обновить sa-mp до последний версии.

Подключение NPC

Так, мы имеем путь к файлу, и "Мини" павн скрипт для контролирования NPC, теперь нам надо загрузить NPC В GameMode Или FilterScript
Закройте "Мини" павн скрипт, и загрузите ваш GameMode или FilterScript в павно.
Настало время чтобы познакомится с функцией ConnectNPC, что предлагает эта функция: подключает вашего NPC на ваш сервер.
Давайте изучим эту функцию, её параметры, и что она означает:
Code
ConnectNPC("Dave","mynpc");

"Dave" - первый параметр, это имя NPC. С помощь этого вы можете искать различных NPC и выполнять с ними различные действия.
"mynpc" - это имя файла(без расширения), "мини" скрипт мы создали раньше.
С помощью новый знаний о функции ConnectNPC, можно попробовать присоединить NPC в ваш gamemode или filterscript.
Code
public OnGameModeInit()     
{     
print("my gamemode");     
ConnectNPC("MyFirstNPC","mynpc");     
return 1;     
}

или, если вы добавляете NPC в FilterScript
Code
public OnFilterScriptInit()     
{     
print("my filterscript");     
ConnectNPC("MyFirstNPC","mynpc");     
return 1;     
}

Сейчас, когда мы создали путь в машине, нам нужно создать машину для NPC.
ПРИМЕЧАНИЕ: Если ваш NPC не находится в машине, вы можете пропустить этот шаг.
Если вы используете NPC в GameMode:
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 в FilterScript:
Code
new MyFirstNPCVehicle; //Глобальная переменная     
public OnFilterScriptInit()     
{     
print("my filterscript");     
ConnectNPC("MyFirstNPC","mynpc");     
MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);     
return 1;     
}

Обратите внимание, что место нахождение машине не имеет значения, так как она будет телепортироваться туда,где начинается путь NPC.
Ещё одна вещь, прежде чем идти в игру и проверять своего первого NPC, мы создали ранее для него автомобиль, теперь мы должны посадить его в автомобиль.
Я сделал это используя public OnPlayerSpawn...
ПРИМЕЧАНИЕ: Если ваш NPC не находится в машине, вы можете пропустить этот шаг.
Code
public OnPlayerSpawn(playerid)     
{     
if(IsPlayerNPC(playerid))      
{     
new npcname[MAX_PLAYER_NAME];     
GetPlayerName(playerid, npcname, sizeof(npcname)); //Получем имя NPC     
if(!strcmp(npcname, "MyFirstNPC", true)) //Проверяем если имя NPC MyFirstNPC     
{     
PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Зажаем его в машину ранее созданную для него     
}     
return 1;     
}     
return 1;     
}

Если вы хотите добавить ещё одного NPC, этот код легко изменить, вот пример для двух NPC:
Code
public OnPlayerSpawn(playerid)
{
             if(IsPlayerNPC(playerid)) //Checks if the player that just spawned is an NPC.
             {
                      new npcname[MAX_PLAYER_NAME];
                      GetPlayerName(playerid, npcname, sizeof(npcname));
                      if(!strcmp(npcname, "MyFirstNPC", true)) //проверяем имя MyFirstNPC
                      {
                       PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); // Зажаем NPC В созданую для него машину
                       return 1;
                      }
                      if(!strcmp(npcname, "MySecondNPC", true))
                      {
                       PutPlayerInVehicle(playerid, AnotherVehicleID, 0);
                       return 1;
                      }
                      return 1;
             }
             return 1;
}

Теперь скомпилируйте Gamemode или Filterscript и идите в игру !
Если повезёт вы увидите NPC разъезжающий по вами заданному пути для него, поздравляем ! Вы сделали своего первого NPC!
Не работает ? Пишите здесь, и если мы сможем, то поможем устранить вашу проблему.
Любые другие вопросы? Опять же, пишите в этой теме.
Trash translate by me(heufix). copypaste from v-web.ru.

Часто задаваемые вопросы:

Quote (feel_on)
как сделать проверку на бота? а то у меня сервер с системой регистрации и ккакбэ он войти то не может.

if(IsPlayerNPC(playerid)) return 1;


Радость
SprunkДата: Суббота, 24.04.2010, 22:49 | Сообщение # 406
Хостинг-провайдер
Группа: Пользователи
Сообщений: 2451
Награды: 125
Город: Волгоград.
Репутация: 774
Замечания: 100%
Статус:
Quote (Fifa4ka)
напиши нормально

тут и так нормально написано ;)



pawn.su - Аренда игровых серверов.

Игровой портал Game Entertainment (Game-Ent.ru)

Fifa4kaДата: Суббота, 24.04.2010, 22:56 | Сообщение # 407
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Quote (J-Sprunk)
тут и так нормально написано ;)

если бы нормально было бы написано то не было коментариев как сделать или у меня ошибки так далее помоги мне сделать!


JaguaRДата: Воскресенье, 25.04.2010, 09:30 | Сообщение # 408
Группа: I'm V.I.P.
Сообщений: 2838
Награды: 90
Город: Ekaterinburg
Репутация: 867
Замечания: 0%
Статус:
Fifa4ka, Написано нормально просто нужно иметь "прямые" ручки
Quote (Fifa4ka)
не написано как вставлять бота в Мод!

Тут всё написано подробно как создать и сделать бота..

Dima-kunДата: Воскресенье, 25.04.2010, 10:15 | Сообщение # 409
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
урок нормальный, ясам по этому уроку читал как ботов ставить.


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
SprunkДата: Воскресенье, 25.04.2010, 10:37 | Сообщение # 410
Хостинг-провайдер
Группа: Пользователи
Сообщений: 2451
Награды: 125
Город: Волгоград.
Репутация: 774
Замечания: 100%
Статус:
Quote (DizeL-ZR)
урок нормальный, ясам по этому уроку читал как ботов ставить.

аналогично



pawn.su - Аренда игровых серверов.

Игровой портал Game Entertainment (Game-Ent.ru)

Fifa4kaДата: Воскресенье, 25.04.2010, 10:46 | Сообщение # 411
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
бред смотри если бы было бы написано правильно то люди бы не задавали вопросы логично yes

вот я сделала по примеру FAQ

[pwn]new Poezd;

ConnectNPC("Poezdok","train1_ls_sf_lv_ls");
Poezd = AddStaticVehicleEx(538,1699.7791,-1953.6511,14.8756,269.8385,-1, -1, 600);

if(IsPlayerNPC(playerid))
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname)); //Получем имя NPC
if(!strcmp(npcname, "Poezdok", true)) //Проверяем если имя NPC MyFirstNPC
{
PutPlayerInVehicle(playerid, Poezd, 0); //Зажаем его в машину ранее созданную для него
}
return 1;
} [/pwn]

и не работает
вот только сто в консоле сам бот не заходит
[10:53:35] Incoming connection: 127.0.0.1:1407




Сообщение отредактировал Fifa4ka - Воскресенье, 25.04.2010, 10:57
SprunkДата: Воскресенье, 25.04.2010, 11:03 | Сообщение # 412
Хостинг-провайдер
Группа: Пользователи
Сообщений: 2451
Награды: 125
Город: Волгоград.
Репутация: 774
Замечания: 100%
Статус:
Quote (Fifa4ka)
[10:53:35] Incoming connection: 127.0.0.1:1407

fun
Open server.cfg
Find maxnpc (0-1000000000000000000000000000) у тебя значение 0 стоит
Quote (Fifa4ka)
бред смотри если бы было бы написано правильно то люди бы не задавали вопросы логично yes

Помоему тут задают вопросы те кто не вдумываясь читал или вообще не читал ;)



pawn.su - Аренда игровых серверов.

Игровой портал Game Entertainment (Game-Ent.ru)

Ghost-XДата: Воскресенье, 25.04.2010, 13:29 | Сообщение # 413
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
Quote (heufix)
copypaste from v-web.ru

Первоначально на v-web мы учились. Потом сюда уже выложили. Если что-то не работает, то перечитайте еще раз пункт за пунктом и проверьте так ли сделано у вас.



Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
Crudus_corvusДата: Понедельник, 24.05.2010, 18:20 | Сообщение # 414
Новенький
Группа: Пользователи
Сообщений: 26
Награды: 1
Город: ~~X_x~~
Репутация: 1
Замечания: 0%
Статус:
в чем трабла? в сервер.конф указал макснпц, в моде проверку сделал, а все равно бот входит и сразу же выходит.
Ghost-XДата: Понедельник, 24.05.2010, 18:45 | Сообщение # 415
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
Crudus_corvus, пингкикер есть?


Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
Crudus_corvusДата: Понедельник, 24.05.2010, 19:06 | Сообщение # 416
Новенький
Группа: Пользователи
Сообщений: 26
Награды: 1
Город: ~~X_x~~
Репутация: 1
Замечания: 0%
Статус:
Quote (Ghost-X)
Crudus_corvus, пингкикер есть?

нету

Добавлено (24.05.2010, 19:06)
---------------------------------------------
все, понял. проверка на регу не срабатывала.

sk47Дата: Суббота, 29.05.2010, 15:56 | Сообщение # 417
Освоившийся
Группа: Пользователи
Сообщений: 86
Награды: 2
Город: Магнитогорск
Репутация: 9
Замечания: 0%
Статус:
У меня пишет тип
npc_record.amx load failed

Добавлено (28.05.2010, 17:34)
---------------------------------------------
[pwn]
#include <a_samp>

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#if defined FILTERSCRIPT

new MashinaAshotika; //Глобальная переменная
public OnGameModeInit()

#else

#endif
new MashinaAshotika; //Глобальная переменная
public OnFilterScriptInit()
{
print("Taksist");
ConnectNPC("Ashotik_Bombila","taksist");
MashinaAshotika = CreateVehicle(420, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
return 1;
}

public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname)); //Получем имя NPC
if(!strcmp(npcname, "Ashotik_Bombila", true)) //Проверяем если имя NPC MyFirstNPC
{
PutPlayerInVehicle(playerid, MashinaAshotika, 0); //Зажаем его в машину ранее созданную для него
}
return 1;
}
return 1;
}
[/pwn]
Так должно получится у меня скоплилось но бота нету!

Добавлено (28.05.2010, 17:43)
---------------------------------------------
Я скоплимировал вот это все и засунул Filterscripts
В конфиге тоже прописал тип Filtersripts Unlited

Добавлено (29.05.2010, 15:56)
---------------------------------------------
Вот он заходит и выходит!

http://s004.radikal.ru/i206/1005/67/b1284754f7c4.jpg <-----ScreenShot

bellДата: Понедельник, 31.05.2010, 18:42 | Сообщение # 418
Уверенный в себе
Группа: Пользователи
Сообщений: 170
Награды: 1
Город: Киев
Репутация: -35
Замечания: 20%
Статус:
А проверка? if(IsPlayerNPC(playerid)) return 1;
Dima-kunДата: Воскресенье, 06.06.2010, 23:03 | Сообщение # 419
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
Quote (eak)
D:\Games\Луганский\Луганский\gamemodes\GTO.pwn(117) : error 021: symbol already defined: "OnGameModeInit" D:\Games\Луганский\Луганский\gamemodes\GTO.pwn(139) : error 021: symbol already defined: "OnGameModeInit" D:\Games\Луганский\Луганский\gamemodes\GTO.pwn(327) : error 021: symbol already defined: "OnPlayerSpawn"

не надо по три ста раз создавать одинаковые паблики.



Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
RacerMTAДата: Вторник, 08.06.2010, 15:27 | Сообщение # 420
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 240
Награды: 60
Город: Ростов-на-дону
Замечания: 100%
Статус:
Quote
if(IsPlayerNPC(playerid)) return 1;

Куда это пехать?)

Подскажите, поставлю + ;)

Поиск:





 


 


 
Хостинг от uCoz samp.at.ua