 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
[УРОК]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%
Статус: 
| бред смотри если бы было бы написано правильно то люди бы не задавали вопросы логично вот я сделала по примеру 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 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; Куда это пехать?) Подскажите, поставлю +
|
| |
|
|
|
 |
|
 | |
| |
|