PDA

Просмотр полной версии : [Plugin] FCNPC - Полностью управляемый NPC



L0ndl3m
03.05.2014, 06:38
FCNPC - Полностью управляемый NPC


Введение:

Да, этот плагин даёт полный контроль на сервере над NPC ботами, он похож на старый CNPC плагин, но этот намного различается с тем.

Особенности:


50+ функций для управления NPC
Обнаружение повреждения NPC
Синхронизация с движением NPC (ходьба, бег, спринт, ...)
Вход и выход NPC бота из транспорта (Не идеально, но всё же)


Функции:



FCNPC_SetUpdateRate


Параметры:
rate: частота обновления (в мс) для каждого NPC (имеется лимит пропускной способности)

Возвращает: Нет




FCNPC_Create



Параметры:
name: нужное для создания NPC имя

Возвращает: ID созданного NPC бота




FCNPC_Destroy



Параметры:
ID: ID уничтоженного NPC бота

Возвращает: Нет




FCNPC_Spawn



Параметры:

ID: ID заспавненного NPC бота
skinid: ID скина для спавна NPC бота
X: Координат спавна по оси X
Y: Координат спавна по оси Y
Z: Координат спавна по оси Z


Возвращает: 1 если NPC бот успешно заспавнился, 0 если нет




FCNPC_Respawn



Параметры:

ID: ID зареспавниваемого NPC бота


Возвращает: 1 если NPC успешно зареспавнен, 0 если нет




FCNPC_Kill



Параметры:

ID: ID убиваемого NPC бота


Возвращает: Нет





FCNPC_IsDead



Параметры:

ID: ID проверямого бота на смертность


Возвращает: 1 если NPC бот мёртв, 0 если нет





FCNPC_SetPosition



Параметры:

ID: ID NPC бота
X: Устанавливаемая координата по оси X
Y: Устанавливаемая координата по оси Y
Z: Устанавливаемая координата по оси Z


Возвращает: Нет




FCNPC_GetPosition



Параметры:

ID: ID NPC бота
X: Получаемая координата по оси X
Y: Получаемая координата по оси Y
Z: Получаемая координата по оси Z


Возвращает: Нет




FCNPC_SetAngle


Параметры:

ID: ID NPC бота
A: Устанавливаемый угол поворота


Возвращает: Нет




FCNPC_GetAngle


Параметры:

ID: ID NPC бота


Возвращает: Угол поворота NPC бота




FCNPC_SetVelocity


Параметры:

ID: ID NPC бота
X: Устанавливаемая координата по оси X
Y: Устанавливаемая координата по оси Y
Z: Устанавливаемая координата по оси Z


Возвращает: Нет




FCNPC_GetVelocity


Параметры:

ID: ID NPC бота
X: Получаемая координата по оси X
Y: Получаемая координата по оси Y
Z: Получаемая координата по оси Z


Возвращает: Нет




FCNPC_SetQuaternion


Параметры:

ID: ID NPC бота
X: Устанавливаемая координата по оси X
Y: Устанавливаемая координата по оси Y
Z: Устанавливаемая координата по оси Z
A: Устанавливаемый поворот


Возвращает: Нет




FCNPC_GetQuaternion


Параметры:

ID: ID NPC бота
X: Получаемая координата по оси X
Y: Получаемая координата по оси Y
Z: Получаемая координата по оси Z
A: Получаемый поворот


Возвращает: Нет




FCNPC_SetInterior



Параметры:

ID: ID NPC бота
Interior: Устанавливаемый интерьер


Возвращает: Нет




FCNPC_GetInterior



Параметры:

ID: ID NPC бота


Возвращает: ID интьерьера NPC бота




FCNPC_SetHealth



Параметры:

ID: ID NPC бота
health: Устанавливаемое здоровье


Возвращает: Нет




FCNPC_GetHealth



Параметры:

ID: ID NPC бота


Возвращает: Здоровье NPC бота




FCNPC_SetArmour



Параметры:

ID: ID NPC бота
armour: Устанавливаемая броня


Возвращает: Нет




FCNPC_GetArmour



Параметры:

ID: ID NPC бота


Возвращает: Броня NPC бота




FCNPC_SetSkin



Параметры:

ID: ID NPC бота
skinid: Устанавливаемый скин


Возвращает: Нет


Примечание: NPC бот должен будет зареспавниться для того, чтобы изменения вступили в силу




FCNPC_GetSkin



Параметры:

ID: ID NPC бота


Возвращает: ID скина NPC бота




FCNPC_SetSpecialAction



Параметры:

ID: ID NPC бота
actionid: Выполняемый ID действия


Возвращает: Нет




FCNPC_GetSpecialAction



Параметры:

ID: ID NPC бота


Возвращает: ID выполняемого действия NPC бота




FCNPC_SetWeapon



Параметры:

ID: ID NPC бота
weaponid: Выдаваемый ID оружия


Возвращает: Нет




FCNPC_GetWeapon



Параметры:

ID: ID NPC бота


Возвращает: ID оружия NPC бота




FCNPC_SetAmmo



Параметры:

ID: ID NPC бота
ammo: Выдаваемые патроны


Возвращает: Выданное количество патронов




FCNPC_GetAmmo



Параметры:

ID: ID NPC бота


Возвращает: Количество патронов NPC бота




FCNPC_SetKeys



Параметры:

ID: ID NPC бота
keys: Устанавливаемые клавиши NPC боту (Нет аналогов)


Возвращает: Выданное количество патронов




FCNPC_GetKeys



Параметры:

ID: ID NPC бота
UDAnalog: Верхнее / Нижнее значение аналога
LRAnalog: Левое / Правое значение аналога


Возвращает: Нет




FCNPC_GoTo



Параметры:

ID: ID NPC бота
X: Устанавливаемая координата по оси X
Y: Устанавливаемая координата по оси Y
Z: Устанавливаемая координата по оси Z
type: Тип направления

MOVE_TYPE_WALK: ходящий NPC бот
MOVE_TYPE_RUN: Бегущий NPC бот
MOVE_TYPE_SPRINT: NPC бот, бегущий спринтом
MOVE_TYPE_DRIVE: NPC бот, который едет в транспорте

Speed: Скорость вождения (Только тогда, когда NPC бот едет в транспорте)
UseZMap: Флаг для указания использования ZMap


Возвращает: Нет




FCNPC_Stop



Параметры:

ID: ID NPC бота


Возвращает: Нет




FCNPC_IsMoving



Параметры:

ID: ID NPC бота


Возвращает: 1 если перемещается, 0 если нет




FCNPC_SetAimAt


Параметры:

ID: ID NPC бота
X: Устанавливаемая координата прицела по оси X
Y: Устанавливаемая координата прицела по оси Y
Z: Устанавливаемая координата прицела по оси Z
shoot: 1 NPC бот будет стрелять, 0 только прицеливаться


Возвращает: Нет




FCNPC_IsAiming



Параметры:

ID: ID NPC бота


Возвращает: 1 если целится, 0 если нет




FCNPC_IsShooting



Параметры:

ID: ID NPC бота


Возвращает: 1 если стреляет, 0 если нет




FCNPC_IsReloading



Параметры:

ID: ID NPC бота


Возвращает: 1 если перезаряжается, 0 если нет




FCNPC_EnterVehicle



Параметры:

ID: ID NPC бота
vehicleid: ID транспорта
seat: Место в транспорте


Возвращает: 1 если успешно вошёл, 0 если нет




FCNPC_ExitVehicle



Параметры:

ID: ID NPC бота


Возвращает: 1 если успешно вышёл, 0 если нет




FCNPC_PutPlayerInVehicle



Параметры:

ID: ID NPC бота
vehicleid: ID транспорта
seat: Место в транспорте


Возвращает: 1 если успешно посажен, 0 если нет




FCNPC_RemoveFromVehicle



Параметры:

ID: ID NPC бота


Возвращает: 1 если успешно выкинут из транспорта, 0 если нет




FCNPC_GetVehicleID



Параметры:

ID: ID NPC бота


Возвращает: ID транспорта NPC бота, если хотя бы в любом транспорте, либо INVALID_VEHICLE_ID если не в транспорте.




FCNPC_GetVehicleSeat



Параметры:

ID: ID NPC бота


Возвращает: Возвращает ID сиденья в транспорте, либо 128 если не в транспорте.




FCNPC_StartRecordingPlayback



Параметры:

ID: ID NPC бота
File: Имя записываемого файла (Должен распологаться в "npcmodes/recordings/")


Возвращает: Возвращает 1, если успешно записано, 0 если нет




FCNPC_StopRecordingPlayback



Параметры:

ID: ID NPC бота


Возвращает: Возвращает 1, если успешно остановлена запись, 0 если нет




FCNPC_PauseRecordingPlayback



Параметры:

ID: ID NPC бота


Возвращает: Нет




FCNPC_ResumeRecordingPlayback



Параметры:

ID: ID NPC бота


Возвращает: Нет




FCNPC_OpenNode



Параметры:

ID: ID узла


Возвращает: 1 если успешно открылся, 0 если нет




FCNPC_CloseNode



Параметры:

ID: ID узла


Возвращает: Нет




FCNPC_IsNodeOpen



Параметры:

ID: ID узла


Возвращает: 1 если узел открыт, 0 если нет




FCNPC_SetNodePoint



Параметры:

ID: ID узла
point: Устанавливаемая точка узла


Возвращает: Нет




FCNPC_GetNodePointPosition



Параметры:

ID: ID узла
X: Получаемая координата узла по оси X
Y: Получаемая координата узла по оси Y
Z: Получаемая координата узла по оси Z


Возвращает: Нет




FCNPC_GetNodePointCount



Параметры:

ID: ID узла


Возвращает: Количество точек в узле




FCNPC_GetNodeInfo



Параметры:

ID: ID узла
vehnodes: количество транспорта в узле
pednodes: количество пешеходов в узле
navinodes: количество навигационных узлов в узле


Возвращает: Нет




FCNPC_PlayNode



Параметры:

npcid: ID NPC бота
nodeid: ID проигрываемого узла
type: Тип узла
types are:

NODE_TYPE_PED: Пешеходный узел
NODE_TYPE_VEHICLE: Транспортный узел
NODE_TYPE_BOAT: Корабельный узел



Возвращает: Нет




FCNPC_StopPlayingNode



Параметры:

ID: ID NPC бота


Возвращает: Нет




FCNPC_GetZGround



Параметры:

ID: ID NPC бота
X: Координата по оси X
Y: Координата по оси Y
Z: Переменная, в которую будет записано значение точки


Возвращает: Нет





Колбэки:



FCNPC_OnCreate



Описание: Вызывается, когда создаётся NPC бот


Параметры:
npcid: ID NPC бота

Возвращает: Нет




FCNPC_OnSpawn



Описание: Вызывается, когда спавнится NPC бот


Параметры:
npcid: ID заспавненного NPC бота

Возвращает: Нет




FCNPC_OnRespawn



Описание: Вызывается, когда респавнится NPC бот


Параметры:
npcid: ID зареспавненного NPC бота

Возвращает: Нет




FCNPC_OnDeath



Описание: Вызывается, когда погибает NPC бот


Параметры:

npcid: ID NPC бота
killerid: ID игрока, который убил NPC бота (INVALID_PLAYER_ID если NPC бот погиб сам)
weaponid: ID оружия, которым убили NPC бота


Возвращает: Нет




FCNPC_OnReachDestination



Описание: Вызывается, когда NPC бот достигает места назначения (FCNPC_GoTo)


Параметры:
npcid: ID NPC бота

Возвращает: Нет




FCNPC_OnVehicleEntryComplete



Описание: Вызывается, когда NPC бот завершил вход в транспорт (FCNPC_EnterVehicle)


Параметры:
npcid: ID NPC бота

Возвращает: Нет




FCNPC_OnVehicleExitComplete



Описание: Вызывается, когда NPC бот завершил выход из транспорта (FCNPC_ExitVehicle)


Параметры:
npcid: ID NPC бота

Возвращает: Нет




FCNPC_OnTakeDamage



Описание: Вызывается, когда NPC бот получает повреждение

Параметры:

npcid: ID NPC бота
damagerid: ID игрока повредившего NPC бота
weaponid: ID оружия, с которого был нанесён урок NPC боту


Возвращает: Нет




FCNPC_OnFinishPlayback



Описание: Вызывается, когда NPC бот завершает плейбэк запись (.rec файл)

Параметры:
npcid: ID NPC бота

Возвращает: Нет




FCNPC_OnFinishNode



Описание: Вызывается, когда NPC бот завершает запись узла

Параметры:
npcid: ID NPC бота

Возвращает: Нет




FCNPC_OnFinishNodePoint



Описание: Вызывается, когда NPC бот завершает запись точки узла

Параметры:

npcid: ID NPC бота
point: Конечная точка

Возвращает: 1, для записи узла, 0 для остановки





Установка:


Закиньте файл "FCNPC.dll" (для windows) или "FCNPC.so" (для linux) в вашу папку с плагинами (plugins)
Закиньте файл "FCNPC.inc" в вашу папку с инклюдами ("pawno/includes")
Добавьте плагин "FCNPC" ко всем плагинам в файл "server.cfg"


Требования:

Последняя версия SA:MP сервера (0.3z или 0.3z R1-2(-2))

Скачать:


Инклюд (http://www.solidfiles.com/d/096c374a99/FCNPC.inc)
Плагин (http://www.solidfiles.com/d/fd01cc8603/FCNPC.rar)
Исходный код (https://code.google.com/p/fcnpc/)
Последнюю версию всегда можно скачать с GitHub: https://github.com/Open-GTO/FCNPC/releases


Видео:


http://www.youtube.com/watch?feature=player_embedded&v=VlqtKWgRO10

"Разработчики":


Команда SA:MP
OrMisicL: Разработка
Admigo: Тестирование
kurta999: Тестирование на Linux сервере
iJumbo: Тестирование на Linux сервере
Lorenc_: Помощник


Перевод: L0ndl3m (https://pro-pawn.ru/member.php?2057-L0ndl3m)
Оригинал: http://forum.sa-mp.com/showthread.php?t=428066 (http://forum.sa-mp.com/showthread.php?t=428066)

Специально для: Pro-Pawn.Ru (http://pro-pawn.ru)

Копирование данной статьи без разрешения автора запрещено!

Salvacore
03.05.2014, 23:58
Отлично, спасибо.

Osetin
04.05.2014, 17:51
Хороший плагин.

Pe4en9
19.08.2014, 23:00
[21:59:15] [debug] Run time error 19: "File or function is not found"
[21:59:15] [debug] FCNPC_ProcessDamage
[21:59:15] [debug] FCNPC_Create
[21:59:15] [debug] FCNPC_Spawn
[21:59:15] [debug] Run time error 19: "File or function is not found"
[21:59:15] [debug] FCNPC_ProcessDamage
[21:59:15] [debug] FCNPC_Create
[21:59:15] [debug] FCNPC_Spawn
[21:59:15] Script[gamemodes/RP.amx]: Run time error 19: "File or function is not found"
Уот собсна
Если у кого будет:
Windows (http://www.solidfiles.com/d/49a4e4274a/FCNPC.dll)
Linux (http://www.solidfiles.com/d/55418d3439/FCNPC.so)

L0ndl3m
19.08.2014, 23:14
[21:59:15] [debug] Run time error 19: "File or function is not found"
[21:59:15] [debug] FCNPC_ProcessDamage
[21:59:15] [debug] FCNPC_Create
[21:59:15] [debug] FCNPC_Spawn
[21:59:15] [debug] Run time error 19: "File or function is not found"
[21:59:15] [debug] FCNPC_ProcessDamage
[21:59:15] [debug] FCNPC_Create
[21:59:15] [debug] FCNPC_Spawn
[21:59:15] Script[gamemodes/RP.amx]: Run time error 19: "File or function is not found"
Уот собсна
Плагин последней версии качайте.
Если плагин последней версии, проверьте, положили ли вы плагин в папку plugins, и добавили в файл server.cfg название плагина к строке plugins.

Pe4en9
19.08.2014, 23:27
Плагин последней версии качайте.
Если плагин последней версии, проверьте, положили ли вы плагин в папку plugins, и добавили в файл server.cfg название плагина к строке plugins.

Бот подклюается, но не спавнится, в чем может быть проблема?

L0ndl3m
19.08.2014, 23:39
Бот подклюается, но не спавнится, в чем может быть проблема?
Код показывайте.

Pe4en9
19.08.2014, 23:42
Код показывайте.

OnGameModeInit

npcsit = FCNPC_Create("Alexey_Kozenko");
FCNPC_Spawn(npcsit,MaleSkin[random(10)][0],2154.7273,128.1166,1006.7903);

L0ndl3m
20.08.2014, 00:08
Попробуйте его спавнить допустим, при вводе команды.

Pe4en9
20.08.2014, 00:11
Попробуйте его спавнить допустим, при вводе команды.

Нет, все равно.
Сделал debug спавна - он спавнится, но на координатах которые установлены - не появляется!

HDD
20.08.2014, 21:31
Нет, все равно.
Сделал debug спавна - он спавнится, но на координатах которые установлены - не появляется!

Попробуйте к нему телепортироватся, если после телепортации вы увидите его на верных координатах значит он помещен в неверный виртуальный мир/интерьер!

Pe4en9
20.08.2014, 23:26
2)И не работает FCNPC_SetSpecialAction.
Сделав дебаг, ставиться ему 12 SpecialAction, но он не садится.
3) Как допустим сделать бот дошел до точки( GoTO) и сделать ему обратно чтобы шел?

ziggi
14.02.2016, 17:01
Готовится новая версия, есть какие-нибудь предложения?

ziggi
22.02.2016, 01:10
Вышла версия 1.0.0.

Новое
- NPC теперь могут быть убиты в транспорте.
- Транспорт теперь получает урон, если на водительском сидении сидит NPC (чтобы отключить это, возвратите 0 в FCNPC_OnVehicleTakeDamage).
- OnPlayerStreamIn/Out теперь не вызываются для FCNPC (используйте FCNPC_OnStreamIn/Out).
- NPC теперь можно прикрепить к транспорту, объекту или объекту игрока (доступно изменение смещение).
- Контроль сирены транспорта NPC.
- Контроль здоровья транспорта NPC.
- Теперь можно контролировать урон, размер магазина, скорость стрельбы и скорость перезарядки оружия для всех или для каждого NPC.
- Контроль WeaponSkill для оружия (с изменением уроня для двойного оружия).
- Теперь можно контролировать силу броска гранаты, с помощью параметра shoot_delay в FCNPC_AimAt.
- Добавлен параметр UseFightstyle в FCNPC_MeleeAttack, с помощью которого NPC могут бить с использованием Fightstyle.
- Добавлено значение delay по умолчанию в FCNPC_MeleeAttack.
- В функции FCNPC_GoTo теперь можно отключить автоматическую установку угла поворота (полезно для использования совместно с FCNPC_SetQuaternion).
- Функция FCNPC_SetSkin теперь не респавнит, а рестримит NPC.
- Новые функции для контроля угла поворота NPC (FCNPC_SetAngleToPos, FCNPC_SetAngleToPlayer).
- Функции неуязвимости (FCNPC_SetInvulnerable, FCNPC_IsInvulnerable).
- Добавлен MOVE_TYPE_AUTO для FCNPC_GoTo (автоматически проверят NPC на нахождение в транспорте).
- Добавлен параметр radius для FCNPC_GoTo (NPC пойдёт к случайным координатам в пределах этого радиуса от точки назначения).

Исправления
- NPC не наносят урона при стрельбе.
- Угол поворота транспорта меняется при посадке в него NPC.
- NPC атакуют после спавна.
- NPC не стреляют после первой перезарядки.
- Валидация скинов из SA-MP 0.3.7.

Внутренние изменения
- Поддержка Windows и Linux SA-MP серверов версии 0.3.7 и 0.3.7 R2-1.
- Добавлена корректная валидация пассажирского места при посадке в транспорт.
- Заместо ZMap встроен MapAndreas 1.2.1 (http://forum.sa-mp.com/showpost.php?p=3130004&postcount=153).
- Множество изменений в коде (замена Detours на subhook, переход на CMake, внедрение YSF Structs.h, замена небезопасных функций, оптимизация и другое).

Список новых функций


native FCNPC_InitMapAndreas(address);
native FCNPC_IsValid(npcid);
native FCNPC_IsStreamedIn(npcid, forplayerid);

native FCNPC_SetAngleToPos(npcid, Float:X, Float:Y);
native FCNPC_SetAngleToPlayer(npcid, playerid);

native FCNPC_SetInvulnerable(npcid, bool:invulnerable = true);
native FCNPC_IsInvulnerable(npcid);

native FCNPC_SetWeaponSkillLevel(npcid, skill, level);
native FCNPC_GetWeaponSkillLevel(npcid, skill);

native FCNPC_SetWeaponState(npcid, weaponstate);
native FCNPC_GetWeaponState(npcid);

native FCNPC_SetWeaponDamage(npcid, weaponid, Float:damage);
native Float:FCNPC_GetWeaponDamage(npcid, weaponid);

native FCNPC_SetWeaponReloadTime(npcid, weaponid, time);
native FCNPC_GetWeaponReloadTime(npcid, weaponid);
native FCNPC_SetWeaponShootTime(npcid, weaponid, time);
native FCNPC_GetWeaponShootTime(npcid, weaponid);
native FCNPC_SetWeaponClipSize(npcid, weaponid, size);
native FCNPC_GetWeaponClipSize(npcid, weaponid);
native FCNPC_SetWeaponInfo(npcid, weaponid, Float:damage = -1.0, reload_time = -1, shoot_time = -1, clip_size = -1);
native FCNPC_GetWeaponInfo(npcid, weaponid, &Float:damage = -1.0, &reload_time = -1, &shoot_time = -1, &clip_size = -1);

native FCNPC_SetWeaponDefaultInfo(weaponid, Float:damage = -1.0, reload_time = -1, shoot_time = -1, clip_size = -1);
native FCNPC_GetWeaponDefaultInfo(weaponid, &Float:damage = -1.0, &reload_time = -1, &shoot_time = -1, &clip_size = -1);

native FCNPC_SetAnimation(npcid, animationid, Float:fDelta = 4.1, loop = 0, lockx = 1, locky = 1, freeze = 0, time = 1);
native FCNPC_GetAnimation(npcid, &animationid = 0, &Float:fDelta = 4.1, &loop = 0, &lockx = 1, &locky = 1, &freeze = 0, &time = 1);

native FCNPC_SetFightingStyle(npcid, style);
native FCNPC_GetFightingStyle(npcid);

native FCNPC_GoTo(npcid, Float:X, Float:Y, Float:Z, type = MOVE_TYPE_AUTO, Float:speed = 0.5, bool:UseMapAndreas = false, Float:radius = 0.0, bool:getangle = true); // updated
native FCNPC_GoToPlayer(npcid, playerid, type = MOVE_TYPE_AUTO, Float:speed = 0.5, bool:UseMapAndreas = false, Float:radius = 0.0, bool:getangle = true);

native FCNPC_AimAt(npcid, Float:X, Float:Y, Float:Z, bool:shoot = false, shoot_delay = 0); // updated
native FCNPC_AimAtPlayer(npcid, playerid, bool:shoot = false, shoot_delay = 0);

native FCNPC_MeleeAttack(npcid, delay = -1, bool:fightstyle = false); // updated

native FCNPC_EnterVehicle(npcid, vehicleid, seatid, type = MOVE_TYPE_WALK); // updated

native FCNPC_SetVehicleSiren(npcid, bool:status);
native FCNPC_IsVehicleSiren(npcid);

native FCNPC_SetVehicleHealth(npcid, Float:health);
native Float:FCNPC_GetVehicleHealth(npcid);

native FCNPC_SetSurfingOffsets(npcid, Float:fX, Float:fY, Float:fZ);
native FCNPC_GetSurfingOffsets(npcid, &Float:fX, &Float:fY, &Float:fZ);
native FCNPC_SetSurfingVehicle(npcid, vehicleid);
native FCNPC_GetSurfingVehicle(npcid);
native FCNPC_SetSurfingObject(npcid, objectid);
native FCNPC_GetSurfingObject(npcid);
native FCNPC_SetSurfingPlayerObject(npcid, objectid);
native FCNPC_GetSurfingPlayerObject(npcid);


Список новых автовызываемых функций


forward FCNPC_OnVehicleTakeDamage(npcid, damagerid, vehicleid, weaponid, Float:fX, Float:fY, Float:fZ);
forward FCNPC_OnStreamIn(npcid, forplayerid);
forward FCNPC_OnStreamOut(npcid, forplayerid);


Скачать
- Последнюю версию всегда можно скачать с GitHub: https://github.com/Open-GTO/FCNPC/releases

Salik_Davince
22.02.2016, 11:27
А я даже и нечего и не менял, включал и выключал MapAndreas, тоже самое...

SA-MP Dedicated Server
----------------------
v0.3.7, (C)2005-2015 SA-MP Team

[12:25:41] filterscripts = "" (string)
[12:25:41]
[12:25:41] Server Plugins
[12:25:41] --------------
[12:25:41] Loading plugin: FCNPC
[12:25:41]
[12:25:41] -------------------------------------------------
[12:25:41] FCNPC - Fully Controllable NPC v1.0.0
[12:25:41]
[12:25:41] - Author: OrMisicL
[12:25:41] - Contributors: ziggi, Neutralneu
[12:25:41] - Server version: 0.3.7
[12:25:41] - Build: Feb 21 2016 at 20:54:30
[12:25:41] -------------------------------------------------
[12:25:41]
[12:25:41] Loading...
[12:25:41] Loaded.
[12:25:41] Loading plugin: MapAndreas
[12:25:41] Loaded.
[12:25:41] Loaded 2 plugins.

[12:25:41]
[12:25:41] Filterscripts
[12:25:41] ---------------
[12:25:41] Loaded 0 filterscripts.

[12:25:41] Script[gamemodes/bg.amx]: Run time error 20: "Invalid index parameter (bad entry point)"
[12:25:41] Number of vehicle models: 0

----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3.7, (C)2005-2015 SA-MP Team

[12:25:55] filterscripts = "" (string)
[12:25:55]
[12:25:55] Server Plugins
[12:25:55] --------------
[12:25:55] Loading plugin: FCNPC
[12:25:55]
[12:25:55] -------------------------------------------------
[12:25:55] FCNPC - Fully Controllable NPC v1.0.0
[12:25:55]
[12:25:55] - Author: OrMisicL
[12:25:55] - Contributors: ziggi, Neutralneu
[12:25:55] - Server version: 0.3.7
[12:25:55] - Build: Feb 21 2016 at 20:54:30
[12:25:55] -------------------------------------------------
[12:25:55]
[12:25:55] Loading...
[12:25:55] Loaded.
[12:25:55] Loading plugin: MapAndreas
[12:25:55] Loaded.
[12:25:55] Loaded 2 plugins.

[12:25:55]
[12:25:55] Filterscripts
[12:25:55] ---------------
[12:25:55] Loaded 0 filterscripts.

[12:25:55] Script[gamemodes/FCNPC.amx]: Run time error 20: "Invalid index parameter (bad entry point)"
[12:25:55] Number of vehicle models: 0

Daniel_Cortez
22.02.2016, 11:47
- Заместо ZMap встроен MapAndreas 1.2.1 (http://forum.sa-mp.com/showpost.php?p=3130004&postcount=153).
Разве нельзя было просто сделать взаимодействие с MapAndreas, как с отдельным плагином, или это бы сильно отразилось на производительности?
Теперь же, если хочешь пользоваться и MapAndreas и FCNPC, серверу придётся держать в памяти сразу два экземпляра карты высот.
Выглядит не совсем кошерно, тем более, что хостеры могут ограничивать макс. объём памяти для сервера.

ziggi
22.02.2016, 14:00
Разве нельзя было просто сделать взаимодействие с MapAndreas, как с отдельным плагином, или это бы сильно отразилось на производительности?
Теперь же, если хочешь пользоваться и MapAndreas и FCNPC, серверу придётся держать в памяти сразу два экземпляра карты высот.
Выглядит не совсем кошерно, тем более, что хостеры могут ограничивать макс. объём памяти для сервера.

Как раз по этой ссылке об этом написано. То есть теперь наоборот, в памяти нужно держать лишь одни экземпляр.
Теперь подключение карты выглядит таким образом:


MapAndreas_Init(MAP_ANDREAS_MODE_FULL);
FCNPC_InitMapAndreas(MapAndreas_GetAddress());



А я даже и нечего и не менял, включал и выключал MapAndreas, тоже самое...

Все примеры скриптов являются Filterscript и запускать их нужно как Filterscript.

Salik_Davince
22.02.2016, 15:14
Упс тупо поступил, температура, голова не соброжает в данные дни, извеняюсь незнаю что сомной такое :boredom:

ziggi
10.07.2016, 13:40
FCNPC 1.0.6

О версии
- Добавлены аналоговые UD и LR в FCNPC_SetKeys

Исправления
- Исправлено получение урона в скрипте Bodyguard
- Исправлено воскрешение NPC после рестрима
- Установлены корректные клавиши при передвижении игрока
- Исправлен крэш после отключения NPC
- Исправлена причина и killerid при убийстве NPC

Изменённые функции


native FCNPC_SetKeys(npcid, ud_analog, lr_analog, keys);



FCNPC 1.0.7

Изменения
- Исправлены кнопки передвижения (были некоторые проблемы с анимацией передвижения)
- Исправлено исчезновение тела (#15 (https://github.com/Open-GTO/FCNPC/issues/15))
- Добавлена проверка на передаваемый адрес MapAndreas (больше не будет крашить, если адрес недействителен)
- Добавлены некоторые проверки на вводимые параметры
- Удалён сброс данных прицеливания из MeleeAttack (теперь вы можете использовать FCNPC_AimAtPlayer совместно с FCNPC_MeleeAttack)
- FCNPC_AimAt(Player) останавливает прицеливание перед началом нового
- Исправлен и оптимизирован перехват автовызываемых функций (теперь это отлично работает с filterscript)
- Исправлено действие по возвращаемому значению из автовызываемой функции (теперь это работает)
- Оптимизация (совсем чуть-чуть)

Скачать
- Скачать со страницы релизов GitHub: https://github.com/Open-GTO/FCNPC/releases

ziggi
28.07.2016, 01:38
FCNPC 1.1.0

О версии
- Улучшено определение цели в функции FCNPC_AimAt
- Теперь NPC могут наносить урон другому игроку (для предотвращения этого вы можете возвратить 0 в FCNPC_OnTakeDamage)
- Добавлена проверка версии инклуд файла
- Теперь функция FCNPC_GoToPlayer обновляет точку назначения NPC пока игрок двигается
- Добавлены функции для контроля тяги в Hydra
- Добавлены функции для контроля шасси
- shoot_delay по умолчанию изменён на -1 (не важно)
- Оптимизация процесса прицеливания
- Небольшой рефакторинг исходного кода

Исправления
- Исправлен крэш для недействительного транспорта во время проигрывания записи
- Исправлена синхронизация позиции NPC при сёрфинге (прицеплении к транспорту)
- Исправлена стрельба при сёрфинге
- Исправлена работа аргумента speed в функциях FCNPC_GoTo[Player] (теперь он работает для пеших NPC тоже)
- Исправлено направление прицеливания по оси Z
- Сброс клавиш NPC после смерти (исправляет некоторые ошибки с анимациями)
- Исправлена проверка на параметры в функциях информации об оружии

Новые функции


native FCNPC_StopSurfing(npcid);
native FCNPC_IsAttacking(npcid);
native FCNPC_IsAimingAtPlayer(npcid, playerid);
native FCNPC_IsMovingAtPlayer(npcid, playerid);
native FCNPC_SetVehicleHydraThrusters(npcid, direction);
native FCNPC_GetVehicleHydraThrusters(npcid);
native FCNPC_SetVehicleGearState(npcid, gear_state);
native FCNPC_GetVehicleGearState(npcid);


Скачать
- Скачать с GitHub: https://github.com/Open-GTO/FCNPC/releases

_lizard
01.08.2016, 14:32
Подключаю плагин (на хостинге), создаётся файл в директории с таким логом:

=========================== FCNPC Exception Handler ============================
Signal 11 (Segmentation fault), address is 0xd49ee080 from 0xf72375ae

Backtrace:
#0 in plugins/FCNPC.so(_ZN17CExceptionHandler24ExceptionHandlerCallbackEiP7siginfoPv+0x164) [0xf69fcbf4]
#1 in linux-gate.so.1(__kernel_rt_sigreturn+0) [0xf7751ce0]
#2 in plugins/mysql.so(_ZN12CMySQLHandleD1Ev+0x19e) [0xf72375ae]
#3 in plugins/mysql.so(_ZN12CMySQLHandle7DestroyEv+0x45) [0xf7237875]
#4 in plugins/mysql.so(_ZN12CMySQLHandle8ClearAllEv+0x53) [0xf72378e3]
#5 in plugins/mysql.so(Unload+0x152) [0xf7251262]
#6 in ./samp03svr() [0x80d210b]
#7 in ./samp03svr() [0x80aa237]
#8 in /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf7) [0xf7393517]
#9 in ./samp03svr() [0x804b4e1]

Information:
System: GNU/Linux
SA-MP: 0.3.7 R2-1
FCNPC: 1.0.3

Functions:
FUNC_CPlayerPool__DeletePlayer: 0x80d0a90
FUNC_CPlayer__Kill: 0x80cb220
FUNC_CPlayer__EnterVehicle: 0x80cc1c0
FUNC_CPlayer__ExitVehicle: 0x80cc340
FUNC_CPlayer__SpawnForWorld: 0x80ccfc0
FUNC_GetVehicleModelInfo: 0x80d5d30
FUNC_CConsole__GetIntVariable: 0x80a0070
FUNC_ClientJoin_RPC: 0x80b0030

Pointers:
VAR_ServerAuthentication: 0x81aa8a8
VAR_NetVersion: 0xfd9

Offsets:
OFFSET_RemoteSystemManager: 0x334
OFFSET_RemoteSystemSize: 0xc69
OFFSET_RemoteSystem__ConnectMode: 0xc62
OFFSET_RemoteSystem__Unknown: 0xc67
=========================== FCNPC Exception Handler ============================
В чём проблема?

ziggi
01.08.2016, 16:04
В чём проблема?

Как минимум в том, что используется слишком старая версия. Но скорее всего в том, бинарная версия плагина для Linux компилируется в Ubuntu 12.04, работа этого бинарного файла на других дистрибутивах не гарантируется, лучше пересобрать плагин на собственной машине.

ziggi
03.08.2016, 11:08
FCNPC 1.1.1

О версии
- Сёрфинг теперь поддерживает прикреплённые объекты
- Оптимизация
- Добавлены константы скорости в инклуд файл
- Обновлено загрузочное сообщение

Исправления
- Исправлена валидация объектов и транспорта (меньше крэшей)
- Исправлена проверка версии инклуд файла (спасибо плагину Streamer от Incognito за пример)
- Исправлен радиус движения для функции FCNPC_GoToPlayer
- Исправлены типы переменных и их конвертация
- Исправлена работа скорости и типа в функции GoTo
- Исправлена ошибка со сбросом скорости поезда
- Исправлена синхронизация двигателей тяги в Hydra и скорости поезда при проигрывании записи
- Исправлены некоторые крэши при удалении транспорта NPC

Новые директивы


#define MOVE_SPEED_AUTO (-1.0)
#define MOVE_SPEED_WALK (0.1552086)
#define MOVE_SPEED_RUN (0.56444)
#define MOVE_SPEED_SPRINT (0.926784)




FCNPC 1.1.2
- Исправлена работа на Linux



FCNPC 1.1.3

О версии
- Переписан скрипт-пример Bodyguard
- Оптимизация

Исправления
- Исправление FCNPC_IsStreamedForAnyone
- Теперь FCNPC_PutInVehicle работает для NPC находящихся в транспорте
- Исправлена работа изменения времени стрельбы и задержки
- Исправлено много предупреждений при компиляции
- Добавлено много проверок на валидность (меньше крэшей)

Новые автовызываемые функции


forward FCNPC_OnGiveDamage(npcid, issuerid, weaponid, bodypart, Float:health_loss);




FCNPC 1.2.0

О версии
- Улучшены параметры оружия по умолчанию (deagle, m4, ak47)
- Добавлено много FCNPC_Give* функций
- Чистка кода

Исправления
- Исправлена работа параметра delay в функции FCNPC_AimAt
- Исправлено проигрывание node файлов

Новые функции


native FCNPC_GivePosition(npcid, Float:x, Float:y, Float:z);
native Float:FCNPC_GiveAngle(npcid, Float:angle);
native FCNPC_GiveQuaternion(npcid, Float:w, Float:x, Float:y, Float:z);
native FCNPC_GiveVelocity(npcid, Float:x, Float:y, Float:z);
native Float:FCNPC_GiveHealth(npcid, Float:health);
native Float:FCNPC_GiveArmour(npcid, Float:armour);
native FCNPC_GiveAmmo(npcid, ammo);
native FCNPC_GiveWeaponSkillLevel(npcid, skill, level);
native FCNPC_GiveSurfingOffsets(npcid, Float:x, Float:y, Float:z);


Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases

Amy
04.09.2016, 22:52
Есть ли мануал по данному плагину? Создание и использование каких-либо функции.

Sp1ke
04.09.2016, 23:02
Есть ли мануал по данному плагину? Создание и использование каких-либо функции.

Все расписано на первой странице, в первом посте. Все понятно и доступно для каждого, все функции

ziggi
05.09.2016, 03:07
Все расписано на первой странице, в первом посте. Все понятно и доступно для каждого, все функции

Более того, есть скрипты - примеры.

ziggi
19.10.2016, 12:52
FCNPC 1.3.0

О версии
- Точность стрельбы (#23 (https://github.com/ziggi/FCNPC/issues/23))
- Автовызываемая функция FCNPC_OnUpdate

Исправления
- Больше проверок на подключение игрока (меньше крашей)
- Исправление FCNPC_GetWeaponInfo

Новые функции


native FCNPC_SetWeaponAccuracy(npcid, weaponid, Float:accuracy);
native Float:FCNPC_GetWeaponAccuracy(npcid, weaponid);


Обновлённые функции


native FCNPC_SetWeaponInfo(npcid, weaponid, reload_time = -1, shoot_time = -1, clip_size = -1, Float:accuracy = 1.0);
native FCNPC_GetWeaponInfo(npcid, weaponid, &reload_time = -1, &shoot_time = -1, &clip_size = -1, &Float:accuracy = 1.0);
native FCNPC_SetWeaponDefaultInfo(weaponid, reload_time = -1, shoot_time = -1, clip_size = -1, Float:accuracy = 1.0);
native FCNPC_GetWeaponDefaultInfo(weaponid, &reload_time = -1, &shoot_time = -1, &clip_size = -1, &Float:accuracy = 1.0);


Новые автовызываемые функции


forward FCNPC_OnUpdate(npcid);



FCNPC 1.3.1

Исправления
- Исправлена точка начала стрельбы для NPC
- Исправлен урон в скрипте-примере bodyguard
- Исправлена корректность работы без объявленных необходимых автовызываемых функций (но их объявление по-прежнему необходимо для работы всех функций)


FCNPC 1.4.0

О версии
- Добавлен опциональный параметр bool:update_pos = false в функции ускорения (FCNPC_Set/GiveVelocity)
- return 0 в FCNPC_OnUpdate работает так же, как return 0 в OnPlayerUpdate
- Оптимизация циклов обработки
- #6 (https://github.com/ziggi/FCNPC/issues/6): Реализована система путей движения
- #9 (https://github.com/ziggi/FCNPC/issues/9): Улучшена система проигрывания записей
- #12 (https://github.com/ziggi/FCNPC/issues/12): Оповещение о выходе новой версии

Новые функции


native FCNPC_LoadPlayingPlayback(file[]);
native FCNPC_UnloadPlayingPlayback(recordid);
native FCNPC_SetPlayingPlaybackPath(npcid, path[]);
native FCNPC_GetPlayingPlaybackPath(npcid, path[], const size = sizeof(path));

native FCNPC_CreateMovePath();
native FCNPC_DestroyMovePath(pathid);
native FCNPC_IsValidMovePath(pathid);
native FCNPC_AddPointToPath(pathid, Float:x, Float:y, Float:z);
native FCNPC_AddPointsToPath(pathid, Float:points[][3], const size = sizeof(points));
native FCNPC_RemovePointFromPath(pathid, pointid);
native FCNPC_IsValidMovePoint(pathid, pointid);
native FCNPC_GetMovePoint(pathid, pointid, &Float:x, &Float:y, &Float:z);
native FCNPC_GetNumberMovePoint(pathid);
native FCNPC_GoByMovePath(npcid, pathid, type = MOVE_TYPE_AUTO, Float:speed = MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true);


Обновлённые функции


native FCNPC_SetVelocity(npcid, Float:x, Float:y, Float:z, bool:update_pos = false);
native FCNPC_GiveVelocity(npcid, Float:x, Float:y, Float:z, bool:update_pos = false);
native FCNPC_StartPlayingPlayback(npcid, file[] = "", recordid = INVALID_RECORD_ID, bool:auto_unload = false);


Новые автовызываемые функции


forward FCNPC_OnFinishMovePath(npcid, pathid);
forward FCNPC_OnFinishMovePathPoint(npcid, pathid, pointid);


Новые константы


#define INVALID_MOVEPATH_ID (-1)
#define INVALID_RECORD_ID (-1)


Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases

Salik_Davince
02.04.2017, 21:15
Стоило-бы дописать об новых обновлениях плагина.

ziggi
02.04.2017, 21:53
FCNPC 1.4.1

О версии
- Добавлен foreach итератор FCNPC

Исправления
- Исправлены функции FCNPC_GetMovePoint и FCNPC_GetNumberMovePoint
- Исправлена автовызываемая функция FCNPC_OnFinishMovePath

Новые автовызываемые функции


forward FCNPC_OnDestroy(npcid);




FCNPC 1.4.2

Исправления
- Исправлено повреждение памяти в менеджере проигрывания записей
- Исправлена инициализация foreach итератора в Filterscript



FCNPC 1.5.0

О версии
- Поддержка CR-MP 0.3.7
- Удалены ограничения на максимальное количество здоровья и брони

Исправления
- Исправлен pathid в OnFinishMovePath
- Исправлены скрипты-примеры
- Исправления для компиляции из-под VS 2015

Новые функции


native FCNPC_TriggerWeaponShot(npcid, weaponid, hittype, hitid, Float:x, Float:y, Float:z, bool:ishit = true);


Новые автовызываемые функции


forward FCNPC_OnWeaponShot(npcid, weaponid, hittype, hitid, Float:x, Float:y, Float:z);




FCNPC v1.6.0

О версии
- Добавлена функция FCNPC_GetAimingPlayer
- Добавлены функции FCNPC_PausePlayingNode и FCNPC_ResumePlayingNode
- Добавлена автовызываемая функция FCNPC_OnWeaponStateChange
- #28 (https://github.com/ziggi/FCNPC/issues/28): Добавлено смещение для FCNPC_AimAtPlayer
- Удалены макросы с типами нодов
- Дополнительные параметры для FCNPC_PlayNode (как в функции FCNPC_GoTo)
- Обновлён скрипт citiziens

Исправления
- Исправления в коде
- Исправлена высота (Z) для нодов
- Исправлена последняя перезарядка у NPC
- Исправлена FCNPC_GetNodeType

Новые и изменённые функции


native FCNPC_AimAtPlayer(npcid, playerid, bool:shoot = false, shoot_delay = -1, bool:setangle = true, Float:offset_x = 0.0, Float:offset_y = 0.0, Float:offset_z = 0.0);
native FCNPC_GetAimingPlayer(npcid);
native FCNPC_PlayNode(npcid, nodeid, move_type = MOVE_TYPE_AUTO, Float:speed = MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true);
native FCNPC_PausePlayingNode(npcid);
native FCNPC_ResumePlayingNode(npcid);


Новые автовызываемые функции


forward FCNPC_OnWeaponStateChange(npcid, weapon_state);




FCNPC v1.6.1

О версии
- #33 (https://github.com/ziggi/FCNPC/issues/33): Добавлены параметры смещения для функций прицеливания
- #31 (https://github.com/ziggi/FCNPC/issues/31): Добавлена функция FCNPC_IsPlayingNodePaused
- Добавлена функция FCNPC_IsPlayingNode

Исправления
- Нет учёта регистра для GetIndexByName
- #32 (https://github.com/ziggi/FCNPC/issues/32): Исправлены аргументы FCNPC_SetAnimationByName
- #30 (https://github.com/ziggi/FCNPC/issues/30): Пауза проигрывания нодов теперь не прекращает их обновления
- Добавлены проверки на деление на ноль в функциях GoTo
- Исправлена пауза для нодов
- Исправлены примеры скриптов

Новые и изменённые функции


native FCNPC_AimAt(npcid, Float:x, Float:y, Float:z, bool:shoot = false, shoot_delay = -1, bool:setangle = true, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0);
native FCNPC_AimAtPlayer(npcid, playerid, bool:shoot = false, shoot_delay = -1, bool:setangle = true, Float:offset_x = 0.0, Float:offset_y = 0.0, Float:offset_z = 0.0, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0);
native FCNPC_TriggerWeaponShot(npcid, weaponid, hittype, hitid, Float:x, Float:y, Float:z, bool:ishit = true, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0);
native FCNPC_IsPlayingNode(npcid);
native FCNPC_IsPlayingNodePaused(npcid);




FCNPC v1.7.0

О версии
- Отключен поиск Z координаты через MapAndreas для позиций ниже 0.0
- #36 (https://github.com/ziggi/FCNPC/issues/36): Добавлена FCNPC_ToggleMapAndreasUsage и FCNPC_IsMapAndreasUsed
- #39 (https://github.com/ziggi/FCNPC/issues/39): Добавлена функция FCNPC_GetDestinationPoint
- Добавлена функция FCNPC_AddPointsToPath2
- #35 (https://github.com/ziggi/FCNPC/issues/35): Добавлен параметр Float:dist_offset в функции GoTo[Player]
- #56 (https://github.com/ziggi/FCNPC/issues/56): Добавлена автовызываемая функция FCNPC_OnChangeHeightPos (отключена по умолчанию, для включения используйте FCNPC_SetMinHeightPosCall)
- samples/bg: NPC теперь имеют бесконечные патроны

Исправления
- Исправлены аргументы npcid и damagedid в автовызываемой функции FCNPC_OnGiveDamage
- #40 (https://github.com/ziggi/FCNPC/issues/40): Исправлена оружие причины смерти при drive by
- Исправлена система сообщения об ошибках инициализации
- #45 (https://github.com/ziggi/FCNPC/issues/45): Исправлены перехваченные функции stream
- Исправлена настройка типа движения
- #59 (https://github.com/ziggi/FCNPC/issues/59): Установка угла после респавна
- #48 (https://github.com/ziggi/FCNPC/issues/48): Исправлена конечная позиция после передвижения
- samples/missions: вызов FreeCamera после EndMission
- samples/bg: Исправлено кручение NPC при следовании
- samples/bg: Прекращение следования при посадке в транспорт

Новые и изменённые функции


native FCNPC_GoTo(npcid, Float:x, Float:y, Float:z, type = MOVE_TYPE_AUTO, Float:speed = MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true, Float:dist_offset = 0.0);
native FCNPC_GoToPlayer(npcid, playerid, type = MOVE_TYPE_AUTO, Float:speed = MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true, Float:dist_offset = 0.0, Float:dist_check = 1.5);
native FCNPC_GoByMovePath(npcid, pathid, type = MOVE_TYPE_AUTO, Float:speed = MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true, Float:dist_offset = 0.0);
native FCNPC_GetDestinationPoint(npcid, &Float:x, &Float:y, &Float:z);
native FCNPC_AddPointsToPath2(pathid, Float:points_x[], Float:points_y[], Float:points_z[], const size = sizeof(points_x));
native FCNPC_ToggleMapAndreasUsage(npcid, bool:enabled);
native FCNPC_IsMapAndreasUsed(npcid);
native FCNPC_SetMinHeightPosCall(npcid, Float:height);
native Float:FCNPC_GetMinHeightPosCall(npcid);


Новые и изменённые автовызываемые функции


forward FCNPC_OnGiveDamage(npcid, damagedid, weaponid, bodypart, Float:health_loss);
forward FCNPC_OnChangeHeightPos(npcid, Float:new_z, Float:old_z); // disabled by default, see FCNPC_SetMinHeightPosCall


Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases

Salik_Davince
21.05.2017, 15:42
Может обновите? Кстати можно-ли добавить функцию -
//У AbbysMorgan'a уже реализована функция, только не все просто захотят ставить только ради нее YSF.

ShowNPCInTabList(npcid);
HideNPCInTabList(npcid);

ziggi
21.05.2017, 17:01
Может обновите? Кстати можно-ли добавить функцию -
//У AbbysMorgan'a уже реализована функция, только не все просто захотят ставить только ради нее YSF.

ShowNPCInTabList(npcid);
HideNPCInTabList(npcid);

В прошлый раз, когда adamix сделал это для CNPC, тему с плагином удалили. Просто отображение NPC в TAB и отображение HP с ником реализуется с помощью определения NPC как игрока, а не NPC. Что ведёт не только ко всем этим результатам, но и к заниманию слотов в качестве игрока, что даёт возможность накрутки онлайна.

UPD. Хотя я пересмотрел реализацию, там каждый NPC пересоздаётся только для конкретного игрока, поэтому сервер будет считать их NPC, так что всё нормально, можно реализовать.

Fallen A.
21.05.2017, 23:11
В прошлый раз, когда adamix сделал это для CNPC, тему с плагином удалили. Просто отображение NPC в TAB и отображение HP с ником реализуется с помощью определения NPC как игрока, а не NPC. Что ведёт не только ко всем этим результатам, но и к заниманию слотов в качестве игрока, что даёт возможность накрутки онлайна.

UPD. Хотя я пересмотрел реализацию, там каждый NPC пересоздаётся только для конкретного игрока, поэтому сервер будет считать их NPC, так что всё нормально, можно реализовать.

А что по поводу движения npc за рулет авто рывками?

ziggi
21.05.2017, 23:39
А что по поводу движения npc за рулет авто рывками?

Не наблюдал подобного, покажи код, с которым я смогу это увидеть.

Fallen A.
21.05.2017, 23:46
Не наблюдал подобного, покажи код, с которым я смогу это увидеть.

Сегодня допишу и завтра скину.

Fallen A.
24.05.2017, 14:55
Заметил, что если использовать функцию:


FCNPC_GoTo(id, x, y, z, MOVE_TYPE_WALK, 0.5, false, 0.0, true);

и NPC идет пешком, то, в данном случае 0.5 помогает ему двигаться просто нереально быстро для шага. Так и должно быть? Ибо насколько я понял, это параметр для движения в автомобиле.

ziggi
24.05.2017, 15:33
Заметил, что если использовать функцию:


FCNPC_GoTo(id, x, y, z, MOVE_TYPE_WALK, 0.5, false, 0.0, true);

и NPC идет пешком, то, в данном случае 0.5 помогает ему двигаться просто нереально быстро для шага. Так и должно быть? Ибо насколько я понял, это параметр для движения в автомобиле.

Так и должно быть, можешь не указывать скорость, чтобы использовать значение по умолчанию.

Fallen A.
24.05.2017, 15:51
Так и должно быть, можешь не указывать скорость, чтобы использовать значение по умолчанию.

Ах, вот оно что. Благодарю.

ziggi
24.05.2017, 16:31
Ах, вот оно что. Благодарю.

Просто кому-то не понравились стандартные значения, поэтому пришлось добавить поддержку установки скорости и для пешеходов.

Fallen A.
24.05.2017, 16:34
Просто кому-то не понравились стандартные значения, поэтому пришлось добавить поддержку установки скорости и для пешеходов.

Искав в документации, не нашел, что скорость от авто действует и на пешехода. Не мешало бы указать, если такового не имеется.

ziggi
24.05.2017, 18:25
Искав в документации, не нашел, что скорость от авто действует и на пешехода. Не мешало бы указать, если такового не имеется.

Документации нет, указывать негде)

Fallen A.
24.05.2017, 20:15
Документации нет, указывать негде)

Ну, я про то, что, хотя бы, есть на форуме.

ziggi
24.05.2017, 21:49
Ну, я про то, что, хотя бы, есть на форуме.

Дак тема не моя и эта документация давным-давно устарела. Она даже была удалена из темы на офф форуме.

Fallen A.
24.05.2017, 23:41
Дак тема не моя и эта документация давным-давно устарела. Она даже была удалена из темы на офф форуме.

Тогда все не есть гуд.

Fallen A.
30.05.2017, 19:21
Почему не вызывается по окончанию пути
FCNPC_OnReachDestinationпри поиске пути через
PathFinder_FindWay?

ziggi
30.05.2017, 20:19
Почему не вызывается по окончанию пути
FCNPC_OnReachDestinationпри поиске пути через
PathFinder_FindWay?

Не понял, как это связано. FCNPC_OnReachDestination должен вызываться при окончании перемещения бота.

Fallen A.
30.05.2017, 20:35
Не понял, как это связано. FCNPC_OnReachDestination должен вызываться при окончании перемещения бота.

FCNPC_OnReachDestination вызывается после окончания пути по FCNPC_GoTo, но не вызывается при окончании пути через FCNPC_GoByMovePath.

ziggi
30.05.2017, 20:59
FCNPC_OnReachDestination вызывается после окончания пути по FCNPC_GoTo, но не вызывается при окончании пути через FCNPC_GoByMovePath.

Для путей есть отдельные события:


forward FCNPC_OnFinishMovePath(npcid, pathid);
forward FCNPC_OnFinishMovePathPoint(npcid, pathid, pointid);

Fallen A.
30.05.2017, 21:03
Для путей есть отдельные события:


forward FCNPC_OnFinishMovePath(npcid, pathid);
forward FCNPC_OnFinishMovePathPoint(npcid, pathid, pointid);


Жаль. Было бы неплохо так, как я написал.

ziggi
30.05.2017, 23:51
Жаль. Было бы неплохо так, как я написал.

Для нодов, например, тоже собственные каллбеки и для записей, чьим аналогом пути и являются. В любом случае, ты можешь его вызывать скриптово.

Fallen A.
31.05.2017, 00:51
Для нодов, например, тоже собственные каллбеки и для записей, чьим аналогом пути и являются. В любом случае, ты можешь его вызывать скриптово.

Да, спасибо. Я уже проверил инклуд.

semen7907
31.05.2017, 18:13
пытаюсь разобраться с FCNPC.pwn, но что то не получается сделать чтобы бот шел за игроком.. Можете подсказать как сделать чтобы npc бежал за игроком и стрелял в него?

ziggi
31.05.2017, 19:21
В скрипте-примере bg.pwn (https://github.com/ziggi/FCNPC/blob/master/sampsvr_files/filterscripts/bg.pwn) есть функция следования (https://github.com/ziggi/FCNPC/blob/master/sampsvr_files/filterscripts/bg.pwn#L501). Для стрельбы можно воспользоваться функцией FCNPC_AimAtPlayer.

semen7907
31.05.2017, 22:51
Можешь еще подсказать, как сделать чтобы бот ходил за игроком только если он допустим в радиусе 20 метров ковырялся в BG_SetFollowPosition но что то не получается, он стоит на месте и начинает идти только когда я к нему подойду, и идет без остановки, не зависимо от радиуса..

DeimoS
31.05.2017, 22:59
Можешь еще подсказать, как сделать чтобы бот ходил за игроком только если он допустим в радиусе 20 метров ковырялся в BG_SetFollowPosition но что то не получается, он стоит на месте и начинает идти только когда я к нему подойду, и идет без остановки, не зависимо от радиуса..

http://pro-pawn.ru/showthread.php?14847-AI_BOTS-%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82

ziggi
31.05.2017, 23:10
Можешь еще подсказать, как сделать чтобы бот ходил за игроком только если он допустим в радиусе 20 метров ковырялся в BG_SetFollowPosition но что то не получается, он стоит на месте и начинает идти только когда я к нему подойду, и идет без остановки, не зависимо от радиуса..

Установи нужное тебе значение dist_offset (для игроков и для транспорта) в BG_SetFollowPosition, в твоём случае это -20.0

semen7907
02.06.2017, 13:06
Можете еще подсказать, как можно сделать чтобы боты на машинах "не слипались", если допустим за мной едут 2 бота, то они начинают толкать друг друга, т.к. находятся впритык друг к другу..

Fallen A.
02.06.2017, 13:30
Можете еще подсказать, как можно сделать чтобы боты на машинах "не слипались", если допустим за мной едут 2 бота, то они начинают толкать друг друга, т.к. находятся впритык друг к другу..

Вот здесь уже нужно делать своеобразное "зрение" для npc. Не знаю, занимался ли кто-то этим, но лично я - нет.

ziggi
03.06.2017, 09:16
Документации нет, указывать негде)

Один хороший человек (http://forum.sa-mp.com/showpost.php?p=3886715&postcount=3248) начал делать документацию. Если есть возможность, то помогите, пожалуйста: https://github.com/ziggi/FCNPC/wiki

Fallen A.
04.06.2017, 00:49
Один хороший человек (http://forum.sa-mp.com/showpost.php?p=3886715&postcount=3248) начал делать документацию. Если есть возможность, то помогите, пожалуйста: https://github.com/ziggi/FCNPC/wiki

Я так понимаю, что атака NPC по игроку с военного вертолета пока не реализована?

ziggi
04.06.2017, 07:31
Я так понимаю, что атака NPC по игроку с военного вертолета пока не реализована?

Не знаю, можно попробовать установить для NPC нужные кнопки.

Fallen A.
04.06.2017, 13:42
Не знаю, можно попробовать установить для NPC нужные кнопки.

Ну, скажу честно, что FCNPC_AimAtPlayer работает частично: один раз устанавливает угол поворота к игроку вертолета NPC и на этом пока все.
Будешь что-то делать в этом направлении?

ziggi
04.06.2017, 15:32
Ну, скажу честно, что FCNPC_AimAtPlayer работает частично: один раз устанавливает угол поворота к игроку вертолета NPC и на этом пока все.
Будешь что-то делать в этом направлении?

FCNPC_AimAtPlayer и стрельба из вертолёта не связаны. Установи нужные кнопки.

Fallen A.
04.06.2017, 16:17
FCNPC_AimAtPlayer и стрельба из вертолёта не связаны. Установи нужные кнопки.

Как бы был не в курсе про это. Спасибо.

pawnoholic
27.03.2018, 12:20
В CR-MP не будет работать?

ziggi
27.03.2018, 16:29
В CR-MP не будет работать?

Эта версия работает только с CR-MP 0.3.7, адаптация на CR-MP 0.3e требует дополнительной работы (реверс-инжиниринг всех структур и адресов функций).

motor
22.10.2018, 20:11
Как я могу избавиться от таких уведомлений? Содержимое инклуда не помогло.
https://i.imgur.com/m9wMr6m.png

ziggi
22.10.2018, 20:24
Как я могу избавиться от таких уведомлений? Содержимое инклуда не помогло.
https://i.imgur.com/m9wMr6m.png

Нужно закомментировать строку #define DEBUG в bodyguards.pwn и скомпилировать его.

motor
22.10.2018, 20:40
Спасип!!! Боже, это ж просто из bg исходило))))):wacko:

danger1979
09.08.2022, 21:58
Ни как не могу понять почему бот, когда едет на тачке (FCNPC_StartPlayingPlayback) по заранее записанному треку дергается, и его скорость меньше чем у такой же машины во время записи.

Думал проблема в записи трека ф-ией StartRecordingPlayerData. Но проверил, обычные самповские боты прекрасно ездят и не дёргаются.
Перекинул данную часть кода в почти пустой мод, чтобы проверить гонки с ботами на облегчённой версии мода, и там тоже самое: бот дёргается.

В чем проблема? Я вижу что большинство используют ботов как пешеходов, но я вообще не сильно много смысла вижу в ботах пешеходах, когда есть актёры.

Nexius_Tailer
10.08.2022, 05:58
На первый вопрос не отвечу, но актёров уместно использовать в основном для статичных ролей без особых передвижений куда-либо и с полноценным ИИ из-за того, что их случайные передвижения между игроками не синхрятся и каждый видит их там, где решит его локальная физика игры. Упади он под карту или преодолей какое-то препятствие, которое при разной успешности преодоления по-разному определит его конечную позицию - и два игрока будут видеть его в разных местах, что вообще не ок. NPC таким не страдают, как известно.

danger1979
10.08.2022, 22:16
В шапке на первой странице есть такие ф-ии
FCNPC_StartRecordingPlayback
FCNPC_StopRecordingPlayback
но их нет в инклюде, и не помню что в ранних версиях они вообще были.

для запуска и остановки ботов по треку есть
FCNPC_StartPlayingPlayback
FCNPC_StopPlayingPlayback

а для записи трека используются обычные
StartRecordingPlayerData
StopRecordingPlayerData