SA-MP Forums Archive
[Plugin] FCNPC - Fully Controllable NPC (Russian Thread) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+----- Forum: Релизы/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=66)
+----- Thread: [Plugin] FCNPC - Fully Controllable NPC (Russian Thread) (/showthread.php?tid=602965)

Pages: 1 2 3 4 5


FCNPC - Fully Controllable NPC (Russian Thread) - ZiGGi - 16.03.2016

FCNPC - Fully Controllable NPC
by OrMisicL
and ZiGGi
Что это?

Этот плагин даёт полный контроль над серверными NPC, он выглядит как старый CNPC плагин, но довольно сильно отличается от него. OrMisicL получил добро на выпуск этого плагина от команды SA-MP.

Возможности Функции

Полный список всех функций, автовызываемых функций и констант доступен в README

Установка
Требования
Скачать Примечания
Список изменений
Видео Благодарности


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Stuntff - 16.03.2016

Можно какие-то примеры?


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Romz - 16.03.2016

Красавиц, отличная работа. Молодец что поддерживаешь плагин за это тебе жирный лойс.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Untonyst - 16.03.2016

Quote:
Originally Posted by Stuntff
View Post
Можно какие-то примеры?
Они таки есть в пункте "скачать"


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Bombo - 21.06.2016

Есть ли возможность скомпилировать версию плагина 1.0.5 под 0.3z?


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Romz - 21.06.2016

Quote:
Originally Posted by Bombo
View Post
Есть ли возможность скомпилировать версию плагина 1.0.5 под 0.3z?
Есть прошлые версии плагина под данную версию.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - ZiGGi - 21.06.2016

Quote:
Originally Posted by Bombo
View Post
Есть ли возможность скомпилировать версию плагина 1.0.5 под 0.3z?
Последнюю нет, слишком много изменений в структурах.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Bombo - 22.06.2016

Позволю себе задать свой вопрос в этой теме.

У меня есть сервер на 0.3z, переход на 0.3.7 не планируется (из-за всем известной вкладки). На сервер нужно добавить NPC на плагине FCNPC (другие совершенно не подходят!). Поскольку текущую версию FCNPC под 0.3z скомпилировать нереально, остаётся два выхода: либо построить всё на 0.1 B15 (или ниже), либо скомпилировать более раннюю версию 1.0.0 ветки. С версией 0.1 B15 под Linux возникла проблема - плагин крашит при создании NPC. Полная информация об этой ошибке - ниже.

Code:
[02:09:05] init_npc_zombies() start
[02:09:05] [debug] Server crashed while executing menu.amx
[02:09:05] [debug] AMX backtrace:
[02:09:05] [debug] #0 native FCNPC_Create () from FCNPC.so
[02:09:05] [debug] #1 000c83b0 in public init_npc_zombies () from menu.amx
[02:09:05] [debug] #2 0006d43c in public OnFilterScriptInit () from menu.amx
[02:09:05] [debug] Native backtrace:
[02:09:05] [debug] #0 b737250b in _ZN10StackTraceC1EPv () from plugins/crashdetect.so
[02:09:05] [debug] #1 b736b20f in _ZN11CrashDetect20PrintNativeBacktraceERSoPv () from plugins/crashdetect.so
[02:09:05] [debug] #2 b736c3fc in _ZN11CrashDetect20PrintNativeBacktraceEPv () from plugins/crashdetect.so
[02:09:05] [debug] #3 b736c866 in _ZN11CrashDetect11OnExceptionEPv () from plugins/crashdetect.so
[02:09:05] [debug] #4 b737215c in ?? () from plugins/crashdetect.so
[02:09:05] [debug] #5 b776cbd0 in ?? ()
[02:09:05] [debug] #6 b534bd2e in _ZN14CSAMPFunctions9NewPlayerEPc () from plugins/FCNPC.so
[02:09:05] [debug] #7 b534b649 in _ZN14CPlayerManager9AddPlayerEPc () from plugins/FCNPC.so
[02:09:05] [debug] #8 b5344b38 in _ZN8CNatives12FCNPC_CreateEP6tagAMXPi () from plugins/FCNPC.so
[02:09:05] [debug] #9 08093d84 in ?? () from ./samp03test
[02:09:05] [debug] #10 b736df7b in _ZN11CrashDetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so
[02:09:05] [debug] #11 b7370f78 in ?? () from plugins/crashdetect.so
[02:09:05] [debug] #12 b7374f96 in amx_Exec () from plugins/crashdetect.so
[02:09:05] [debug] #13 b736d226 in _ZN11CrashDetect9DoAmxExecEPii () from plugins/crashdetect.so
[02:09:05] [debug] #14 b7370cd9 in ?? () from plugins/crashdetect.so
[02:09:05] [debug] #15 b72ded36 in ?? () from plugins/streamer.so
[02:09:05] [debug] #16 0809ff66 in ?? () from ./samp03test
[02:09:05] [debug] #17 0809df8d in ?? () from ./samp03test
[02:09:05] [debug] #18 0809e927 in ?? () from ./samp03test
[02:09:05] [debug] #19 080da68a in ?? () from ./samp03test
[02:09:05] [debug] #20 08093d84 in ?? () from ./samp03test
[02:09:05] [debug] #21 b736df7b in _ZN11CrashDetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so
[02:09:05] [debug] #22 b7370f78 in ?? () from plugins/crashdetect.so
[02:09:05] [debug] #23 b7374f96 in amx_Exec () from plugins/crashdetect.so
[02:09:05] [debug] #24 b736d226 in _ZN11CrashDetect9DoAmxExecEPii () from plugins/crashdetect.so
[02:09:05] [debug] #25 b7370cd9 in ?? () from plugins/crashdetect.so
[02:09:05] [debug] #26 b72ded36 in ?? () from plugins/streamer.so
[02:09:05] [debug] #27 080a36bb in ?? () from ./samp03test
[02:09:05] [debug] #28 080a98bd in ?? () from ./samp03test
[02:09:05] [debug] #29 080a8162 in ?? () from ./samp03test
[02:09:05] [debug] #30 b73ad73e in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
В функции FCNPC_Create() ошибка. Более детально:

код самого плагина с отладочной информацией:
PHP Code:
class CSAMPRakPeer
{
        
// +0xA = wMaxPlayers
        
public:
                
CSAMPRemoteSystem *GetRemoteSystem(unsigned short usIndex)
                {
fprintf(stderr"ok:SAMPRakPeer.h GetRemoteSystem(), this=0x%x\n",this);
fprintf(stderr"ok:SAMPRakPeer.h GetRemoteSystem(), CAddress::OFFSET_RemoteSystemManager=0x%x\n",CAddress::OFFSET_RemoteSystemManager);
fprintf(stderr"ok:SAMPRakPeer.h GetRemoteSystem(), SYSTEM_MANAGER_OFFSET=0x%x\n",SYSTEM_MANAGER_OFFSET);
                        
// Get the remote system manager
                        
CSAMPRemoteSystemManager *pRemoteSystemManager = *(CSAMPRemoteSystemManager **)(this CAddress::OFFSET_RemoteSystemManager SYSTEM_MANAGER_OFFSET);
fprintf(stderr"ok1:SAMPRakPeer.h GetRemoteSystem()\n");
                        
// Get the remote system
                        
return (CSAMPRemoteSystem *)(pRemoteSystemManager CAddress::OFFSET_RemoteSystemSize usIndex);
                }
... 
результат:
Code:
ok:SAMPRakPeer.h SetConnectedPlayer()
ok:SAMPRakPeer.h GetRemoteSystem(), this=0x937a320
ok:SAMPRakPeer.h GetRemoteSystem(), CAddress::OFFSET_RemoteSystemManager=0xe6740003
ok:SAMPRakPeer.h GetRemoteSystem(), SYSTEM_MANAGER_OFFSET=0x4
Segmentation fault (core dumped)
ОС: Ubuntu 16.04

Как мне кажется, дело в этом адресе: CAddress::OFFSET_RemoteSystemManager, который, судя по всему, выше определяется направильно. Хотелось бы знать, что это за адрес, и как допилить плагин до рабочего состояния. Обращаюсь к знатокам FCNPC, в частности, к ZiGGi


Re: FCNPC - Fully Controllable NPC (Russian Thread) - ZiGGi - 22.06.2016

На сколько мне известно, версия B15 работает только под 0.3.7. Тебе нужно использовать версию Beta 12 R2.
В принципе, последнюю версию можно попытаться адаптировать для 0.3z, для этого нужно использовать старые структуры (можно взять из YSF) и, наверное, отключить пару функций. Может быть попробую реализовать в отдельной ветке.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Bombo - 23.06.2016

Quote:
Originally Posted by ZiGGi
View Post
На сколько мне известно, версия B15 работает только под 0.3.7. Тебе нужно использовать версию Beta 12 R2.
В принципе, последнюю версию можно попытаться адаптировать для 0.3z, для этого нужно использовать старые структуры (можно взять из YSF) и, наверное, отключить пару функций. Может быть попробую реализовать в отдельной ветке.
Спасибо, помог.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - ZiGGi - 10.07.2016

FCNPC 1.0.6

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

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

Изменённые функции
PHP Code:
native FCNPC_SetKeys(npcidud_analoglr_analogkeys); 
Скачать
- Скачать со страницы релизов GitHub: https://github.com/Open-GTO/FCNPC/releases

------------------------------------------
Quote:
Originally Posted by Bombo
View Post
Спасибо, помог.
@Bombo, открыл ветку 03zR4, но пока подключить NPC не удаётся. Точнее удаётся, но по непонятной мне причине NPC сразу отключается.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - ZiGGi - 12.07.2016

FCNPC 1.0.7

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


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Bombo - 12.07.2016

Quote:
Originally Posted by ZiGGi
View Post
@Bombo, открыл ветку 03zR4, но пока подключить NPC не удаётся. Точнее удаётся, но по непонятной мне причине NPC сразу отключается.
Хорошо, если проект захватит и предыдущую версию SA:MP. Во-первых, не понадобится переписывать код NPC в моде при переходе на 0.3.7 (и обратно, такое тоже бывает), и, во-вторых, исправлены довольно серьёзные ошибки в плагине.

UPD: Если найду время, попробую запустить своими силами


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Romz - 13.07.2016

Quote:
Originally Posted by Bombo
View Post
Хорошо, если проект захватит и предыдущую версию SA:MP.
Вы хотите что бы данный плагин вшили в samp сервер? Это было бы круто!


Re: FCNPC - Fully Controllable NPC (Russian Thread) - ZiGGi - 13.07.2016

Quote:
Originally Posted by Kolstin
View Post
Вы хотите что бы данный плагин вшили в samp сервер? Это было бы круто!
Это вряд ли случится. Он имеет ввиду то, что если этот плагин будет поддерживать SA-MP 0.3z, то это будет хорошо.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - Romz - 13.07.2016

Quote:
Originally Posted by ZiGGi
View Post
Это вряд ли случится. Он имеет ввиду то, что если этот плагин будет поддерживать SA-MP 0.3z, то это будет хорошо.
Как по мне, это бесполезно. Не нужно зацикливаться на старых версиях самп.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - OmegaKiller72 - 20.07.2016

ZIGGI ни в одном из модов нет этих пабликов, функций, стоков
- OnPlayerGiveDamage
- OnPlayerWeaponShot
- OnPlayerStreamIn
- OnPlayerStreamOut
но в одном моде бот смертный, в другом безсмертный понятия не имею что делает его безсмертным


Re: FCNPC - Fully Controllable NPC (Russian Thread) - ZiGGi - 20.07.2016

Quote:
Originally Posted by OmegaKiller72
View Post
ZIGGI ни в одном из модов нет этих пабликов, функций, стоков
- OnPlayerGiveDamage
- OnPlayerWeaponShot
- OnPlayerStreamIn
- OnPlayerStreamOut
но в одном моде бот смертный, в другом безсмертный понятия не имею что делает его безсмертным
Без OnPlayerGiveDamage хотябы в одном из загруженных скриптов (это может быть как gamemode так и filterscript), система урона работать не будет. Ещё NPC может быть бессмертным из-за неуязвимости, задать которую можно с помощью функции FCNPC_SetInvulnerable. И также, урон не проходит при возврате 0 в FCNPC_OnTakeDamage.


Re: FCNPC - Fully Controllable NPC (Russian Thread) - OmegaKiller72 - 20.07.2016

Quote:
Originally Posted by ZiGGi
View Post
Без OnPlayerGiveDamage хотябы в одном из загруженных скриптов (это может быть как gamemode так и filterscript), система урона работать не будет. Ещё NPC может быть бессмертным из-за неуязвимости, задать которую можно с помощью функции FCNPC_SetInvulnerable. И также, урон не проходит при возврате 0 в FCNPC_OnTakeDamage.
так в том то и дело что OnPlayerGiveDamage нигде нету, но в некоторых модах без этой функции бот умирает!, FCNPC_SetInvulnerable стоит в одном месте с false, FCNPC_OnTakeDamage тоже нигде нет, но опять же, в некотрых модах бот смертный


Re: FCNPC - Fully Controllable NPC (Russian Thread) - ZiGGi - 20.07.2016

Quote:
Originally Posted by OmegaKiller72
View Post
так в том то и дело что OnPlayerGiveDamage нигде нету, но в некоторых модах без этой функции бот умирает!, FCNPC_SetInvulnerable стоит в одном месте с false, FCNPC_OnTakeDamage тоже нигде нет, но опять же, в некотрых модах бот смертный
Не обязательно наличие OnPlayerGiveDamage в моде, может быть в загружаемых FS это есть. В любом случае, если они не умирают, то этот callback стоит объявить.