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.
Это ещё один стандартный икнклуд в 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:
Обратите внимание, что место нахождение машине не имеет значения, так как она будет телепортироваться туда,где начинается путь 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)
как сделать проверку на бота? а то у меня сервер с системой регистрации и ккакбэ он войти то не может.
Мужики помогите !!! У меня мод GF ,поставил на него бота приписал все исключения бот нормально заходит ему даже в игре пм писать можно но на месте его стоит только его машина сам он неизвестно где
+1 то же самое он там в небе над ЛВ телепортнись к нему увидишь!Я тоже везде сувал исключения парни помогите нам!
помогите мне разобраться с ошибкой при создании ботов. зашол под rcon login, вёл /rcon loadfs npc_record. потом /vrecord mynpc и мне выдаёт вот такую надпись Code filter script 'npc_record.amx' load failed.
и дальше не чо несохраняет. В чом может быть моя проблема? может нехватает скрита кагонить? делал вот по этому уроку http://www.samp-rus.com/forum/42-11167-6 плиз отзовитесь в чом моя ошибка?
Автору спасибо. Возник один вопрос - античит начинает ругаться что бот имеет броню, хоть и не коп. И каждую секунду выводит сообщение об этом. Скажите как исправить?
KPECTok, в код, где дается игроку броня - поставить проверку на бота IsPlayerNPC(playerid), если true тогда return 1;
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
У меня ошибка при компилировании вылетает. ht tp://img19.imageshack.us/img19/5028/errorsrh.jpg
Добавлено (07.04.2010, 12:22) --------------------------------------------- Та ошибка в GF выскакивает. А вот в grandlarc:
Code
C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(74) : error 017: undefined symbol "MyFirstNPCVehicle" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(78) : warning 225: unreachable code C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(80) : error 055: start of function body without function header C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(81) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(85) : error 021: symbol already defined: "SetPlayerInterior" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(92) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(94) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(102) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(110) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(121) : error 021: symbol already defined: "SetPlayerSkillLevel" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(133) : error 021: symbol already defined: "GivePlayerWeapon" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(137) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(351) : error 055: start of function body without function header C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(362) : error 021: symbol already defined: "ClassSel_InitTextDraws" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(365) : error 021: symbol already defined: "AddPlayerClass" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(412) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(416) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(421) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(426) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(432) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(438) : error 021: symbol already defined: "printf" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(440) : error 010: invalid function or declaration C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "ClassSel_InitCityNameText" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "ClassSel_InitTextDraws" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "gArmySpawns" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "gMedicalSpawns" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "gPoliceSpawns" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "gRandomSpawns_LasVenturas" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "gRandomSpawns_LosSantos" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "gRandomSpawns_SanFierro" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "randSpawn" C:\Documents and Settings\_TeraN_\Рабочий стол\Для САМП\на сейв мест\gamemodes\grandlarc.pwn(478) : warning 203: symbol is never used: "total_vehicles_from_files" Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
У кого проблема на GodFather'e с тем что боты на транспорте появляются в игре но висят в воздухе, найдите в pwn мода строчки: [pwn]if(PlayerInfo[playerid][pFlyLic] < 1) { if(TakingLesson[playerid] == 1) { }[/pwn] замените на [pwn]if(PlayerInfo[playerid][pFlyLic] < 1) { if(TakingLesson[playerid] == 1 && IsPlayerNPC(playerid)) { }[/pwn]
И так господа , спустя 4 месяца с того момента когда решил поставить бота ( автобус ) в мод GF ничего так и не получилось . Тут все умные , а сказать толком не могут как всетаки его поставить . Уже было бы проще написать толком ПОЛНУЮ инструкцию по добавлению ботов в мод GF , и без таких фраз типо - " если не робит , то кидайте кости и гадайте в какие паблиги еще добавлять проверку на бота " .
Такой вопрос ребят. Добавляю бота на ГФ, он норм робит, добавляю любого другого, будь то пешеход, или водитель, он коннектится всё норм. Но он не работает, ибо стоит как вкопанный как мне исправить данную проблемку? Заранее спасибо
DizeL-ZR я видел , тебе конешн респект , но у меня и там не получается , мне там сказали - ищи еще паблики , полного списка пабликов на проверку нету ...
Такой вопрос ребят. Добавляю бота на ГФ, он норм робит, добавляю любого другого, будь то пешеход, или водитель, он коннектится всё норм. Но он не работает, ибо стоит как вкопанный как мне исправить данную проблемку? Заранее спасибо
а ты путь ( RECORD ) то написал для другого бота ?