Текущая версия SA-MP: 0.3.7


IP: 77.220.180.96:7777
  Новые сообщения · Поиск
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: KaTacTpOqpa  
Как создать NPC ботов на сервер 0.3a
Polcar Сообщение # 1  | 08:58:17
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
Создание NPC

Запись файла путей

Для начала нам необходимо записать файл путей для нашего 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
Синтаксис:
Quote

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;

Источник: sa-mp.com
Перевод: Kimi
Эксклюзивно для samp-city.ru
Небольшое дополнение: LLama

Оставляйте комментарии или задавайте вопросы по этой теме, я постораюсь ответить!!!




blazer321 Сообщение # 2  | 17:40:31
VIP-пользователи
Сообщений: 641
А можно ли както сделать бота у которого цель "Найти и уничтожить" а точнее для tdm ?

А если у когото есть,то можете мне куда нибудь скинуть?))). а то в скриптах я полнейший нуб


Старший админ сервера Универсал.




Редактировано blazer321 - Вторник, 08 Июн 2010, 17:56:56
Polcar Сообщение # 3  | 18:05:59
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
ну я лично такую информацию незнаю и нигде не видел, вроде в весрии samp 0.3a такого средства нет да и функций чтобы бот убивал игрока



blazer321 Сообщение # 4  | 18:11:10
VIP-пользователи
Сообщений: 641
жаль

Старший админ сервера Универсал.

Demetrius Сообщение # 5  | 18:53:53
VIP-пользователи
Сообщений: 1192
Репутация: 158
Ваще крута спс полкар, буду пользоваться

Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Polcar Сообщение # 6  | 18:55:39
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
ага, незачто)



ANGEL Сообщение # 7  | 22:21:30
Глав. Модераторы
Сообщений: 503
Репутация: 228
кто такой бот? типа как в кс?



Можете задавать вопросы в личку на сайте...
Demetrius Сообщение # 8  | 11:23:10
VIP-пользователи
Сообщений: 1192
Репутация: 158
ну бот, это типа человек, который может двигаться просто так пешком, или на автомашине, ну например маршруты автобусов, такси, вот смысл ботов)

Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
ANGEL Сообщение # 9  | 11:25:18
Глав. Модераторы
Сообщений: 503
Репутация: 228
А бот меня kill может или я его?



Можете задавать вопросы в личку на сайте...
Гость Сообщение # 10  | 12:53:24
Гости
НПК помоему нет...
ANGEL Сообщение # 11  | 14:48:20
Глав. Модераторы
Сообщений: 503
Репутация: 228
[off]Кто такой это?



Можете задавать вопросы в личку на сайте...
Andrey Сообщение # 12  | 17:43:24
Пользователи
Сообщений: 75
Репутация: 5
[off]Красиво написано=)


На сервере,как Cool
blazer321 Сообщение # 13  | 19:07:58
VIP-пользователи
Сообщений: 641
Quote (ANGEL)
А бот меня kill может или я его?

Нет
Он бессмертен и в большей части безобиден)))


Старший админ сервера Универсал.

Polcar Сообщение # 14  | 07:22:30
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
но убить может тебя он легко, безобидны те которые ездиют, а хантеры, танки и те кто стреляют или кидают гранаты очень злые, от них спасаться надо чтобы они вас не убили))



blazer321 Сообщение # 15  | 11:42:57
VIP-пользователи
Сообщений: 641
Хах.подзабыл.особенно в моде Battlefield(2)

Старший админ сервера Универсал.

Гость Сообщение # 16  | 20:31:00
Гости
Присоединение NPC
Итак у нас уже есть готовый файл путей и скрипт управляющий NPC. Теперь нам нужно загрузить NPC в моде или фильтрскрипте. Для этих целей существует функция ConnectNPC
Синтаксис:
Quote

Code...
от этого момента я потеряслся.какой именно нпс файл,какой фомат,в какую папку? и т.д.

Добавлено (15.12.2010, 20:31)
---------------------------------------------
можна ответ сюда: ВК:id28834*** , icq 494017***

Demetrius Сообщение # 17  | 20:44:36
VIP-пользователи
Сообщений: 1192
Репутация: 158
Quote (Гость)
Присоединение NPC
Итак у нас уже есть готовый файл путей и скрипт управляющий NPC. Теперь нам нужно загрузить NPC в моде или фильтрскрипте. Для этих целей существует функция ConnectNPC
Синтаксис:
Quote

Code...
от этого момента я потеряслся.какой именно нпс файл,какой фомат,в какую папку? и т.д.

Добавлено (15.12.2010, 20:31)
---------------------------------------------
можна ответ сюда: ВК:id28834*** , icq 494017***

ну что не понятного), просто запихай файл который в котором записан путь нпк - npcmodes
потом в мод добавляешь функцию:

Quote (Polcar)
"ConnectNPC("Dave","mynpc"); "
где, Dave - имя NPC, благодаря которому можно различать между собой разных NPC и заставлять их выполнять различные действия.
mynpc - имя скрипта (без расширения), управляющего NPC


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Гость Сообщение # 18  | 23:54:31
Гости
Тоисть mynpc.pwn лежит в npsmodes и эго состав таков:
#define RECORDING "mynpc" //
#define RECORDING_TYPE 1 //
#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
ConnectNPC("Dave","mynpc");
return 1;
}
И если всё правильно то дальше я делаю машину.
P.S. если чёто не так то пишите обьяснения с форматами (mynpc.pwn,rec,amx...)

Demetrius Сообщение # 19  | 16:28:21
VIP-пользователи
Сообщений: 1192
Репутация: 158
Quote (Гость)
и эго состав таков

зачем тебе его состав, главное чтобы он в папке npsmodes лежал, а потом в сам мод пихай функцию


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Гость Сообщение # 20  | 21:01:53
Гости
как зайти на серв от админа а о это не работет боты
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: