Для начала нам необходимо записать файл путей для нашего npc. Для этого заходим на сервер, логинимся как ркон админ. Загружаем фильтрскрипт
Code
npc_record ("/rcon loadfs npc_record" )
(если он не был загружен до этого). Скрипт
Code
npc_record
содержит три основные команды:
Code
/vrecord <filename>
- Начинает запись путей транспорта в указанный файл
Code
/ofrecord <filename>
- Начинает запись путей пешехода в указанный файл
Code
/stoprecord
- Останавливает запись файла В этом уроке мы будем делать бота управляющего транспортом. Поэтому садимся в тачку и пишем
Code
/vrecord mynpc
Далее катаемся по пути где будет ездить наш будущий бот Когда закончим останавливаем запись файла
Code
/stoprecord
Выходим из игры и идем в папку
Code
scriptfiles,
там нас должен ожидать файл
Code
mynpc.rec.
Перемещаем его в папку
Code
/npcmodes/recordings/
Все запись путей для 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); publicOnNPCExitVehicle() 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
publicOnNPCExitVehicle() StopRecordingPlayback();
Эта строка останавливает воспроизведение, если по какой то причине NPC покинет транспорт. Как видите все просто! Теперь компилируем скрипт
Code
mynpc.pwn
и отправляем его в папку
Code
/npcmodes
Присоединение NPC Итак у нас уже есть готовый файл путей и скрипт управляющий NPC. Теперь нам нужно загрузить NPC в моде или фильтр скрипте. Для этих целей существует функция
Code
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, нужно создать ему транспорт на котором он будет кататься:
Положение транспорта не имеет значение, поскольку он будет телепортирован к 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; }
E:\[RRP]Rus\stalker.pwn(10) : error 017: undefined symbol "main" E:\[RRP]Rus\stalker.pwn(12) : error 029: invalid expression, assumed zero E:\[RRP]Rus\stalker.pwn(12) : error 017: undefined symbol "OnRecordingPlaybackEnd" E:\[RRP]Rus\stalker.pwn(12) : error 017: undefined symbol "StartRecordingPlayback" E:\[RRP]Rus\stalker.pwn(12) : fatal error 107: too many error messages on one line
Знаю такие ошибки но в е*том случае не знаю как их исправить, помогите плз
Code
error 021: symbol already defined: "___OnGameModeInit" error 021: symbol already defined: "___OnGameModeInit" error 021: symbol already defined: "OnPlayerSpawn"
1. Вы сейчас в интернете. 2. Вы на сайте www.forum-pawno.net.ru. 3. Вы читаете это. 5. Вы не заметили что отсутствует пункт 4. 6. Вы сейчас это проверили. 7. Вы улыбаетесь.
Если ты про OnGameModeInt и OnPlayerSpawn то да, и не раз 1. Вы сейчас в интернете. 2. Вы на сайте www.forum-pawno.net.ru. 3. Вы читаете это. 5. Вы не заметили что отсутствует пункт 4. 6. Вы сейчас это проверили. 7. Вы улыбаетесь.
У меня проблема, сделал ботов, а когда запускаю сервер они заходят и сразуже выходят я даже зайти неуспеваю, пробывал делать рестарты не помогает, в server.cfg max кол-во ботов настроенно, никак немогу понять почему они выходят 1. Вы сейчас в интернете. 2. Вы на сайте www.forum-pawno.net.ru. 3. Вы читаете это. 5. Вы не заметили что отсутствует пункт 4. 6. Вы сейчас это проверили. 7. Вы улыбаетесь.
Сообщение отредактировал danik_rok - Воскресенье, 12.06.2011, 14:44:24
Ну вроде все правильно, попробывал даже два бот пака скачать, тоже самое со всеми
Добавлено (13.06.2011, 18:58) --------------------------------------------- А может чтото быть изза того что у меня в сервер паке сначало небыло npcmodes папки?
1. Вы сейчас в интернете. 2. Вы на сайте www.forum-pawno.net.ru. 3. Вы читаете это. 5. Вы не заметили что отсутствует пункт 4. 6. Вы сейчас это проверили. 7. Вы улыбаетесь.
danik_rok, прошу тебя не флудить по 2 раза так же сделай чтоб все папки были у тебя на сервере и файлы в том же числа а вот моды фс стандартные можешь удалить а другое не в коем случие не удаляй!