Участник
Пользователь
- Сообщения
- 321
- Реакции
- 73
- Помог
- 11 раз(а)
Основная информация
Проблема: Не запускается серв
Ошибка:
Amx Mod X: 1.8.2
Билд:
ReGamedll:
Список модулей:
Список плагинов:
Список метамодулей:
Исходник:
Комментарий:
Компилился без ошибок,но сервер не работает с этим плагином
Проблема: Не запускается серв
Ошибка:
Дополнительная информацияВключаю плагин anticheat.amxx и сервер не запускается,ошибок в логах нет,запись обрывается
Amx Mod X: 1.8.2
Билд:
Код:
[18:18:03] Protocol version 48
[18:18:03] Exe version 1.1.2.7/Stdio (cstrike)
[18:18:03] ReHLDS version: 3.0.0.569-dev
[18:18:03] Build date: 20:21:10 Jun 14 2017 (1159)
[18:18:03] Build from: https://github.com/dreamstalker/rehlds/commit/ba2d9e2
ReGamedll:
Код:
[18:18:25] ReGameDLL version: 5.2.0.201-dev
[18:18:25] Build date: 17:42:57 Jun 13 2017
[18:18:25] Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/1dc4849
Список модулей:
PHP:
[18:18:44] [ 1] CStrike 1.8.2-dev- AMX Mod X Dev Team running
[18:18:44] [ 2] CSX 1.8.2 AMX Mod X Dev Team running
[18:18:44] [ 3] Engine 1.8.2 AMX Mod X Dev Team running
[18:18:44] [ 4] FakeMeta 1.8.2 AMX Mod X Dev Team running
[18:18:44] [ 5] Fun 1.8.2 AMX Mod X Dev Team running
[18:18:44] [ 6] GeoIP 1.8.2 AMX Mod X Dev Team running
[18:18:44] [ 7] Ham Sandwich 1.8.2 AMX Mod X Dev Team running
[18:18:44] [ 8] ReAPI 5.0.0.92-d Asmodai & s1lent running
[18:18:44] [ 9] MySQL 1.8.2 AMX Mod X Dev Team running
[18:18:44] [10] RegEx 1.8.2 AMX Mod X Dev Team running
[18:18:44] 10 modules, 10 correct
Список плагинов:
HTML:
[18:19:00] [ 1] Lite Bans 1.2 neugomon lite_bans.amxx debug
[18:19:00] [ 2] Admin Loader 2.6.2 neygomon admin_loader.am debug
[18:19:00] [ 3] Chat Checker 0.1a Subb98 chat_checker.am debug
[18:19:00] [ 4] Chat Logger 2.1a Jim chat_logger.amx debug
[18:19:00] [ 5] Admin Chat 1.8.2 AMXX Dev Team adminchat.amxx debug
[18:19:00] [ 6] Admin Commands 1.8.2 AMXX Dev Team admincmd.amxx debug
[18:19:00] [ 7] Custom Models 1.3.2 neugomon custom_models.a debug
[18:19:00] [ 8] unknown unknown unknown amx_gag.amxx bad load
[18:19:00] [ 9] Slots Reservation 1.8.2 AMXX Dev Team adminslots.amxx debug
[18:19:00] [ 10] Admin Votes 1.8.2 AMXX Dev Team adminvote.amxx debug
[18:19:00] [ 11] Cam Change 1.1 Bl0ck Cam_Change.amxx debug
[18:19:00] [ 12] Chat Manager 1.1.1-11 Mistrick chatmanager.amx debug
[18:19:00] [ 13] Chat Manager: Addon 0.0.4-70 Mistrick chatmanager_add debug
[18:19:00] [ 14] Advert Messages 1.2 neygomon adverts.amxx debug
[18:19:00] [ 15] Ping Control 0.1.5 Freedo.m | neygo Ping_Control.am debug
[18:19:00] [ 16] Auto Join on Connect 0.1 VEN auto_join_on_co debug
[18:19:00] [ 17] Snow menu 0.1 AMXX.Shop snow_menu.amxx debug
[18:19:00] [ 18] Commands Menu 1.8.2 AMXX Dev Team cmdmenu.amxx debug
[18:19:00] [ 19] Map Manager 2.5.60 Mistrick mapmanager.amxx debug
[18:19:00] [ 20] HUD Customizer 0.3 Igoreso hud_customizer. debug
[18:19:00] [ 21] Maps Menu 1.8.2 AMXX Dev Team mapsmenu.amxx debug
[18:19:00] [ 22] Menus Front-End 1.5 untest neugomon menufront_end.a debug
[18:19:00] [ 23] MP Bhops 1.2 Ian Cammarata mpbhops.amxx debug
[18:19:00] [ 24] Multi-Lingual System 1.8.2 AMXX Dev Team multilingual.am debug
[18:19:00] [ 25] Pause Plugins 1.8.2 AMXX Dev Team pausecfg.amxx debug
[18:19:00] [ 26] Players Menu 1.8.2 AMXX Dev Team plmenu.amxx debug
[18:19:00] [ 27] Plugin Menu 1.8.2 AMXX Dev Team pluginmenu.amxx debug
[18:19:00] [ 28] Trail Line 1.3.1 R3g0 plugin_trail.am debug
[18:19:00] [ 29] ProKreedz 2.0y p4ddY & Diggz & prokreedz.amxx debug
[18:19:00] [ 30] Restrict Weapons 1.8.2 AMXX Dev Team restmenu.amxx debug
[18:19:00] [ 31] Ian Cammarata specinfo.amxx debug
[18:19:00] [ 32] Teleport Menu 1.8.2 AMXX Dev Team telemenu.amxx debug
[18:19:00] [ 33] JumpStats 2.33b kzuq#BorJomi uq_jumpstats.am debug
[18:19:00] [ 34] Tops_JumpStats 2.33b kzuq#BorJomi uq_jumpstats_to debug
[18:19:00] [ 35] [All mod] Grab 2.1 Ian Cammarata / grab.amxx debug
[18:19:00] [ 36] unknown unknown unknown gamename_change debug
[18:19:00] [ 37] unknown unknown unknown mute_for_amx_ga bad load
Список метамодулей:
PHP:
[18:19:23] [ 1] SafeNameAndChat RUN - SafeNameAndChat. v1.0 ini ANY ANY
[18:19:23] [ 2] Reunion RUN - reunion_mm_i386. v0.1.75 ini Start Never
[18:19:23] [ 3] ReAuthCheck RUN - reauthcheck_mm_i v0.1.5 ini Start Never
[18:19:23] [ 4] VoiceTranscoder RUN - VoiceTranscoder. v2017RC3 ini ANY ANY
[18:19:23] [ 5] AMX Mod X RUN - amxmodx_mm_i386. v1.8.2 ini Start ANY
[18:19:23] [ 6] Rechecker RUN - rechecker_mm_i38 v2.3 ini Chlvl ANY
[18:19:23] [ 7] ReSemiclip RUN - resemiclip_mm_i3 v2.3.9 ini Chlvl ANY
[18:19:23] [ 8] CStrike RUN - cstrike_amxx_i38 v1.8.2-d pl5 ANY ANY
[18:19:23] [ 9] CSX RUN - csx_amxx_i386.so v1.8.2 pl5 ANY ANY
[18:19:23] [10] Engine RUN - engine_amxx_i386 v1.8.2 pl5 ANY ANY
[18:19:23] [11] FakeMeta RUN - fakemeta_amxx_i3 v1.8.2 pl5 ANY ANY
[18:19:23] [12] Fun RUN - fun_amxx_i386.so v1.8.2 pl5 ANY ANY
[18:19:23] [13] Ham Sandwich RUN - hamsandwich_amxx v1.8.2 pl5 ANY ANY
[18:19:23] [14] ReAPI RUN - reapi_amxx_i386. v5.0.0.9 pl5 ANY Never
[18:19:23] [15] MySQL RUN - mysql_amxx_i386. v1.8.2 pl5 ANY ANY
[18:19:23] 15 plugins, 15 running
Исходник:
Код:
/* Here you can edit main settings */
#define BHOP_DETECTION
#define DUCK_DETECTION
//#define STRAFE_DETECTION
#define FPS_DETECTION
#define CMDS_DETECTION
#define LOGGING
#define g_szPrefix "^1[^4AntiCheat^1]"
#define ADMIN_ACCESS ADMIN_BAN
/* Ban System
*
* 0 - Default (amx_ban <#userid> <minutes> [reason])
* 1 - Custom (*_ban <minutes> <#userid> [reason])
*/
#define BAN_SYSTEM 0
/* Here you stop */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <nvault>
#if AMXX_VERSION_NUM < 183
#include "colorchat"
#define MAX_PLAYERS 32
#define MAX_NAME_LENGTH 32
#else
#define client_disconnect client_disconnected
#endif
#define MAX_PLAYERS_ARR MAX_PLAYERS+1
#pragma semicolon 1
#pragma tabsize 4
#define set_bit(%1,%2) (%1 |= (1<<(%2&31)))
#define get_bit(%1,%2) (%1 & (1<<(%2&31)))
#define clr_bit(%1,%2) (%1 &= ~(1<<(%2&31)))
enum _:AC_FILES
{
Bhop,
Gstrafe,
Commands
}
#if defined LOGGING
new g_szLogFile[AC_FILES][64];
new const AC_FILES_NAME[AC_FILES][] =
{
"Bhop",
"Gstrafe",
"Commands"
};
#endif
new g_iVault;
new g_iFlags[MAX_PLAYERS_ARR], g_iButtons[MAX_PLAYERS_ARR], g_iOldButtons[MAX_PLAYERS_ARR];
new g_bBot, g_bPunished;
#if defined BHOP_DETECTION
#include <anticheat/ac_bhop.inl>
#endif
#if defined DUCK_DETECTION
#include <anticheat/ac_gstrafe.inl>
#endif
#if defined STRAFE_DETECTION
#include <anticheat/ac_strafe.inl>
#endif
#if defined FPS_DETECTION
#include <anticheat/ac_fps.inl>
#endif
#if defined CMDS_DETECTION
#include <anticheat/ac_commands.inl>
#endif
#define PLUGIN "[KZ] Anti Cheat"
#define VERSION "1.0"
#define AUTHOR "deniS & Fame"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("ac_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
set_cvar_string("ac_version", VERSION);
register_forward(FM_CmdStart, "fwdCmdStart");
register_forward(FM_PlayerPreThink, "fwdPlayerPreThink");
register_forward(FM_PlayerPostThink, "fwdPlayerPostThink");
#if defined BHOP_DETECTION
ac_bhop_init();
#endif
#if defined DUCK_DETECTION
ac_gstrafe_init();
#endif
#if defined CMDS_DETECTION
ac_cmds_init();
#endif
}
public plugin_cfg()
{
#if defined LOGGING
new szLogsDir[64];
get_localinfo("amxx_logs", szLogsDir, charsmax(szLogsDir));
add(szLogsDir, charsmax(szLogsDir), "/anticheat");
if (!dir_exists(szLogsDir))
mkdir(szLogsDir);
for (new i = 0; i < AC_FILES; i++)
formatex(g_szLogFile, charsmax(g_szLogFile[]), "%s/%s.log", szLogsDir, AC_FILES_NAME);
#endif
g_iVault = nvault_open("ac_stats");
if (g_iVault == INVALID_HANDLE)
log_amx("anticheat.sma: plugin_cfg:: can't open file ^"ac_stats.vault^"!");
#if defined CMDS_DETECTION
ac_cmds_cfg();
#endif
}
public client_putinserver(id)
{
if (is_user_bot(id))
set_bit(g_bBot, id);
if (!get_bit(g_bBot, id) && g_iVault != INVALID_HANDLE)
{
new szAuthID[32];
get_user_authid(id, szAuthID, charsmax(szAuthID));
new szData[256], iTimeStamp;
if (nvault_lookup(g_iVault, szAuthID, szData, charsmax(szData), iTimeStamp))
{
new szBhops[3], szBhopsFOG[3][3], szGE_BhopsIAR[3][3], szPerfectBhops[3], szDistrBhops[3];
new szGE_BhopsWarns[2], szPerfectBhopsWarns[2], szDistrBhopsWarns[2], szBhopWarns[2];
new szDucks[3], szDucksFOG[3][3], szGE_DucksIAR[3][3], szGE_DucksIAR_Sessions[3][2];
new szNsdWarns[2], szGE_DucksWarns[2], szDuckWarns[2];
parse(szData,
szBhops, charsmax(szBhops),
szBhopsFOG[0], charsmax(szBhopsFOG[]), szGE_BhopsIAR[0], charsmax(szGE_BhopsIAR[]),
szBhopsFOG[1], charsmax(szBhopsFOG[]), szGE_BhopsIAR[1], charsmax(szGE_BhopsIAR[]),
szBhopsFOG[2], charsmax(szBhopsFOG[]), szGE_BhopsIAR[2], charsmax(szGE_BhopsIAR[]),
szPerfectBhops, charsmax(szPerfectBhops),
szDistrBhops, charsmax(szDistrBhops),
szGE_BhopsWarns, charsmax(szGE_BhopsWarns),
szPerfectBhopsWarns, charsmax(szPerfectBhopsWarns),
szDistrBhopsWarns, charsmax(szDistrBhopsWarns),
szBhopWarns, charsmax(szBhopWarns),
szDucks, charsmax(szDucks),
szDucksFOG[0], charsmax(szDucksFOG[]), szGE_DucksIAR[0], charsmax(szGE_DucksIAR[]), szGE_DucksIAR_Sessions[0], charsmax(szGE_DucksIAR_Sessions[]),
szDucksFOG[1], charsmax(szDucksFOG[]), szGE_DucksIAR[1], charsmax(szGE_DucksIAR[]), szGE_DucksIAR_Sessions[1], charsmax(szGE_DucksIAR_Sessions[]),
szDucksFOG[2], charsmax(szDucksFOG[]), szGE_DucksIAR[2], charsmax(szGE_DucksIAR[]), szGE_DucksIAR_Sessions[2], charsmax(szGE_DucksIAR_Sessions[]),
szNsdWarns, charsmax(szNsdWarns),
szGE_DucksWarns, charsmax(szGE_DucksWarns),
szDuckWarns, charsmax(szDuckWarns));
g_iBhops[id] = str_to_num(szBhops);
for (new i = 0; i < 3; i++)
{
g_iBhopsFOG[id] = str_to_num(szBhopsFOG);
g_iGE_BhopsIAR[id] = str_to_num(szGE_BhopsIAR);
g_flGE_BhopsPercent[id] = float(g_iBhopsFOG[id]) / float(g_iBhops[id]) * 100.0;
}
g_iPerfectBhops[id] = str_to_num(szPerfectBhops);
g_flPerfectBhopsPercent[id] = float(g_iPerfectBhops[id]) / float(g_iBhops[id]) * 100.0;
g_iDistrBhops[id] = str_to_num(szDistrBhops);
g_flDistrBhopsPercent[id] = float(g_iDistrBhops[id]) / float(g_iBhops[id]) * 100.0;
g_iDucks[id] = str_to_num(szDucks);
for (new i = 0; i < 3; i++)
{
g_iDucksFOG[id] = str_to_num(szDucksFOG);
g_iGE_DucksIAR[id] = str_to_num(szGE_DucksIAR);
g_iGE_DucksIAR_Sessions[id] = str_to_num(szGE_DucksIAR_Sessions);
g_flGE_DucksPercent[id] = float(g_iDucksFOG[id]) / float(g_iDucks[id]) * 100.0;
}
if ((get_systime() - iTimeStamp) / 86400 < 1)
{
g_iGE_BhopsWarns[id] = str_to_num(szGE_BhopsWarns);
g_iPerfectBhopsWarns[id] = str_to_num(szPerfectBhopsWarns);
g_iDistrBhopsWarns[id] = str_to_num(szDistrBhopsWarns);
g_iBhopWarns[id] = str_to_num(szBhopWarns);
g_iNsdWarns[id] = str_to_num(szNsdWarns);
g_iGE_DucksWarns[id] = str_to_num(szGE_DucksWarns);
g_iDuckWarns[id] = str_to_num(szDuckWarns);
}
nvault_remove(g_iVault, szAuthID);
}
}
}
public client_disconnect(id)
{
if (get_bit(g_bBot, id))
{
clr_bit(g_bBot, id);
return PLUGIN_CONTINUE;
}
if (!get_bit(g_bPunished, id) && g_iVault != INVALID_HANDLE)
{
new szAuthID[32];
get_user_authid(id, szAuthID, charsmax(szAuthID));
new szData[256];
formatex(szData, charsmax(szData),
"^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^"\
^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^" ^"%d^"",
g_iBhops[id],
g_iBhopsFOG[id][0], g_iGE_BhopsIAR[id][0],
g_iBhopsFOG[id][1], g_iGE_BhopsIAR[id][1],
g_iBhopsFOG[id][2], g_iGE_BhopsIAR[id][2],
g_iPerfectBhops[id],
g_iDistrBhops[id],
g_iGE_BhopsWarns[id],
g_iPerfectBhopsWarns[id],
g_iDistrBhopsWarns[id],
g_iBhopWarns[id],
g_iDucks[id],
g_iDucksFOG[id][0], g_iGE_DucksIAR[id][0], g_iGE_DucksIAR_Sessions[id][0],
g_iDucksFOG[id][1], g_iGE_DucksIAR[id][1], g_iGE_DucksIAR_Sessions[id][1],
g_iDucksFOG[id][2], g_iGE_DucksIAR[id][2], g_iGE_DucksIAR_Sessions[id][2],
g_iNsdWarns[id],
g_iGE_DucksWarns[id],
g_iDuckWarns[id]);
nvault_set(g_iVault, szAuthID, szData);
}
#if defined BHOP_DETECTION
ac_bhop_disconnect(id);
#endif
#if defined DUCK_DETECTION
ac_gstrafe_disconnect(id);
#endif
#if defined FPS_DETECTION
ac_fps_disconnected(id);
#endif
if (get_bit(g_bPunished, id))
clr_bit(g_bPunished, id);
return PLUGIN_CONTINUE;
}
public fwdCmdStart(id, uc_handle, seed)
{
if (!is_user_alive(id) || get_bit(g_bBot, id) || get_bit(g_bPunished, id))
return FMRES_IGNORED;
#if defined DUCK_DETECTION
ac_gstrafe_CmdStart(id, uc_handle);
#endif
#if defined STRAFE_DETECTION
ac_strafe_CmdStart(id, uc_handle);
#endif
#if defined FPS_DETECTION
ac_fps_CmdStart(id, uc_handle);
#endif
return FMRES_IGNORED;
}
public fwdPlayerPreThink(id)
{
if (!is_user_alive(id) || get_bit(g_bBot, id) || get_bit(g_bPunished, id))
return FMRES_IGNORED;
g_iFlags[id] = pev(id, pev_flags);
g_iButtons[id] = pev(id, pev_button);
g_iOldButtons[id] = pev(id, pev_oldbuttons);
#if defined BHOP_DETECTION
ac_bhop_PlayerPreThink(id);
#endif
#if defined DUCK_DETECTION
ac_gstrafe_PlayerPreThink(id);
#endif
return FMRES_IGNORED;
}
public fwdPlayerPostThink(id)
{
if (!is_user_alive(id) || get_bit(g_bBot, id) || get_bit(g_bPunished, id))
return FMRES_IGNORED;
#if defined FPS_DETECTION
ac_fps_PlayerPostThink(id);
#endif
return FMRES_IGNORED;
}
stock PunishPlayer(id, szHack[192], iTime = 0)
{
new szName[MAX_NAME_LENGTH];
get_user_name(id, szName, MAX_NAME_LENGTH - 1);
client_print_color(0, id, "%s^3 %s^1 is using^3 %s", g_szPrefix, szName, szHack);
set_bit(g_bPunished, id);
replace_all(szHack, charsmax(szHack), "^1", "");
replace_all(szHack, charsmax(szHack), "^3", "");
replace_all(szHack, charsmax(szHack), "^4", "");
#if defined LOGGING
switch (szHack[0])
{
case 'B':
{
LogPlayer(id, Bhop,
"^n| Bhop Stats(last session) and Warnings:^n^n\
| Bhops: %d^n\
| GroundFrames(1): %d|%d|%.2f%%^n\
| GroundFrames(2): %d|%d|%.2f%%^n\
| GroundFrames(3, 4, 5): %d|%d|%.2f%%^n\
| Perfect Bhops: %d|%.2f%%^n\
| Ideally Distr. Bhops: %d|%.2f%%^n\
| Jump Cmds. Ratio: %.2f^n\
| Max Jump Cmds. IAR: %d^n^n\
| Ground Equal Bhops Warns: %d^n\
| Perfect Bhops Warns: %d^n\
| Ideally Distr. Bhops Warns: %d^n\
| Total Bhop Warnings: %d",
g_iBhops[id],
g_iBhopsFOG[id][0], g_iGE_BhopsIAR[id][0], g_flGE_BhopsPercent[id][0],
g_iBhopsFOG[id][1], g_iGE_BhopsIAR[id][1], g_flGE_BhopsPercent[id][1],
g_iBhopsFOG[id][2], g_iGE_BhopsIAR[id][2], g_flGE_BhopsPercent[id][2],
g_iPerfectBhops[id], g_flPerfectBhopsPercent[id],
g_iDistrBhops[id], g_flDistrBhopsPercent[id],
g_flJumpCmdsRatio[id],
g_iMaxJumpCmdsIAR[id],
g_iGE_BhopsWarns[id],
g_iPerfectBhopsWarns[id],
g_iDistrBhopsWarns[id],
g_iBhopWarns[id]);
}
case 'G':
{
LogPlayer(id, Gstrafe, "^n| Duck Stats(last session) and Warnings:^n^n\
| Ducks: %d^n\
| GroundFrames(1): %d|%d|%d|%.2f%%^n\
| GroundFrames(2): %d|%d|%d|%.2f%%^n\
| GroundFrames(3, 4, 5): %d|%d|%d|%.2f%%^n\
| NSD Warns: %d^n\
| Ground Equal Ducks Warns: %d^n\
| Total Duck Warnings: %d",
g_iDucks[id],
g_iDucksFOG[id][0], g_iGE_DucksIAR[id][0], g_iGE_DucksIAR_Sessions[id][0], g_flGE_DucksPercent[id][0],
g_iDucksFOG[id][1], g_iGE_DucksIAR[id][1], g_iGE_DucksIAR_Sessions[id][1], g_flGE_DucksPercent[id][1],
g_iDucksFOG[id][2], g_iGE_DucksIAR[id][2], g_iGE_DucksIAR_Sessions[id][2], g_flGE_DucksPercent[id][2],
g_iNsdWarns[id],
g_iGE_DucksWarns[id],
g_iDuckWarns[id]);//useless atm
}
case 'c'://Restricted Commands
{
LogPlayer(id, Commands, "^n| Bad %s", szHack);
}
}
#endif
#if defined BAN_SYSTEM 0
server_cmd("amx_ban #%d ^"%d^" ^"%s Detected^"", get_user_userid(id), iTime, szHack);
#else
server_cmd("amx_ban ^"%d^" #%d ^"%s Detected^"", iTime, get_user_userid(id), szHack);
#endif
}
#if defined LOGGING
stock LogPlayer(id, iLogFile, szFmt[], any: ...)
{
new fp = fopen(g_szLogFile[iLogFile], "at");
if (fp)
{
new szTime[22], szName[MAX_NAME_LENGTH], szAuthID[32], szIP[21];
static szMessage[512];
get_time("%m/%d/%Y - %H:%M:%S", szTime, charsmax(szTime));
get_user_name(id, szName, MAX_NAME_LENGTH - 1);
get_user_authid(id, szAuthID, charsmax(szAuthID));
get_user_ip(id, szIP, charsmax(szIP), 1);
vformat(szMessage, charsmax(szMessage), szFmt, 4);
fprintf(fp, "+---^n| L %s: %s<%s><%s> %s^n+---^n^n", szTime, szName, szAuthID, szIP, szMessage);
fclose(fp);
}
else
log_amx("anticheat.sma: LogPlayer():: can't open file ^"%s^"!", g_szLogFile[iLogFile]);
}
#endif
public plugin_end()
{
ac_cmds_end();
if (g_iVault != INVALID_HANDLE)
nvault_close(g_iVault);
}
Комментарий:
Компилился без ошибок,но сервер не работает с этим плагином
В этой теме было размещено решение! Перейти к решению.
Вложения
-
12.1 KB Просмотры: 432