22.06.2016, 22:13
Позволю себе задать свой вопрос в этой теме.
У меня есть сервер на 0.3z, переход на 0.3.7 не планируется (из-за всем известной вкладки). На сервер нужно добавить NPC на плагине FCNPC (другие совершенно не подходят!). Поскольку текущую версию FCNPC под 0.3z скомпилировать нереально, остаётся два выхода: либо построить всё на 0.1 B15 (или ниже), либо скомпилировать более раннюю версию 1.0.0 ветки. С версией 0.1 B15 под Linux возникла проблема - плагин крашит при создании NPC. Полная информация об этой ошибке - ниже.
В функции FCNPC_Create() ошибка. Более детально:
код самого плагина с отладочной информацией:
результат:
ОС: Ubuntu 16.04
Как мне кажется, дело в этом адресе: CAddress::OFFSET_RemoteSystemManager, который, судя по всему, выше определяется направильно. Хотелось бы знать, что это за адрес, и как допилить плагин до рабочего состояния. Обращаюсь к знатокам FCNPC, в частности, к ZiGGi
У меня есть сервер на 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
код самого плагина с отладочной информацией:
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)
Как мне кажется, дело в этом адресе: CAddress::OFFSET_RemoteSystemManager, который, судя по всему, выше определяется направильно. Хотелось бы знать, что это за адрес, и как допилить плагин до рабочего состояния. Обращаюсь к знатокам FCNPC, в частности, к ZiGGi