MAGNAT2645
Участник
- Сообщения
- 63
- Реакции
- 7
У меня появилась проблема, из-за которой я и другие игроки не могут играть на сервере почти месяц.
Сервер крашит при подключении игрока (когда у всех выявляется сообщение о том, что игрок подключён) и при перезагрузке плагина (если игрок на сервере в момент перезагрузки).
Вообще у меня множество ошибок в коде (по моему мнению, но компилятор ошибок и предупреждений не находит).
Также некоторые отрывки я взял из плагина Army Ranks для создания Базы Данных SQLite.
Код загрузки плагина:
Код подключения игрока:
В чём может быть причина? Просто друзья просят, чтобы я включил сервер, а я не могу из-за этой проблемы.
Если надо, я могу добавить ещё отрывки из кода.
Сервер крашит при подключении игрока (когда у всех выявляется сообщение о том, что игрок подключён) и при перезагрузке плагина (если игрок на сервере в момент перезагрузки).
Вообще у меня множество ошибок в коде (по моему мнению, но компилятор ошибок и предупреждений не находит).
Также некоторые отрывки я взял из плагина Army Ranks для создания Базы Данных SQLite.
Код загрузки плагина:
PHP:
#define MAX_PLAYER_SIGN_LENGTH 128
char PlayerSign[MAXPLAYERS + 1][MAX_PLAYER_SIGN_LENGTH],
PlayerSteamID[MAXPLAYERS + 1][24],
sPlayerType[MAXPLAYERS + 1][40],
sPlayerTypeHex[MAXPLAYERS + 1][256],
//sPlayerRank[MAXPLAYERS + 1][36],
//sPlayerRankColor[MAXPLAYERS + 1][256],
LEVEL_UP_SOUND[PLATFORM_MAX_PATH],
LEVEL_DOWN_SOUND[PLATFORM_MAX_PATH],
PlayerTypeConfigPath[PLATFORM_MAX_PATH],
NICKTAG[] = "[NTHN]";
float fHud_FX_Time,
fHud_HoldTime,
fHud_Name_X_Pos,
fHud_Name_Y_Pos,
fHud_Level_X_Pos,
fHud_Level_Y_Pos,
fHud_FadeIn,
fHud_FadeOut,
PlayerEXPProgressPercent[MAXPLAYERS + 1];
bool Naithon_Level_Enabled, PlayerCanDoubleBonus[MAXPLAYERS + 1],
bIsClientLoaded[MAXPLAYERS + 1];
ConVar CVAR_Version,
CVAR_Enabled,
CVAR_TMREXP,
CVAR_DoubleEXP,
CVAR_TripleCash,
CVAR_killEXP,
CVAR_pickUpEXP,
CVAR_CaptureFlagEXP,
CVAR_DefendFlagEXP,
CVAR_BlockerCapEXP,
CVAR_VictimCapEXP,
CVAR_CapturePointEXP,
CVAR_StartCapPointEXP,
CVAR_Hud_Name_Channel,
CVAR_Hud_Level_Channel,
CVAR_Hud_Name_Color_R,
CVAR_Hud_Name_Color_G,
CVAR_Hud_Name_Color_B,
CVAR_Hud_Name_Color_A,
CVAR_Hud_Level_Color_R,
CVAR_Hud_Level_Color_G,
CVAR_Hud_Level_Color_B,
CVAR_Hud_Level_Color_A,
CVAR_Hud_Double_Level_Color_R,
CVAR_Hud_Double_Level_Color_G,
CVAR_Hud_Double_Level_Color_B,
CVAR_Hud_Double_Level_Color_A,
CVAR_Hud_FX_Time,
CVAR_Hud_HoldTime,
CVAR_Hud_Name_X_Pos,
CVAR_Hud_Name_Y_Pos,
CVAR_Hud_Level_X_Pos,
CVAR_Hud_Level_Y_Pos,
CVAR_Hud_FadeIn,
CVAR_Hud_FadeOut,
CVAR_Hud_Refresh,
CVAR_Timer_Cash,
CVAR_Timer_EXP,
CVAR_Timer_Gems,
CVAR_Sound_LvlUp,
CVAR_Sound_LvlDown;
KeyValues kvPlayerType;
public void OnPluginStart()
{
CVAR_Version = CreateConVar("sm_naithon_level_version", PLUGIN_VERSION, "Версия плагина", FCVAR_NOTIFY, false);
CVAR_Enabled = CreateConVar("sm_naithon_level_enabled", "1", "Вкл/откл плагина", _, true, 0.0, true, 1.0);
CVAR_TMREXP = CreateConVar("sm_naithon_level_time_exp", "1", "Дает это количество очков опыта каждые 2 минуты", _, true, 0.0, false);
CVAR_killEXP = CreateConVar("sm_naithon_level_kill_exp", "1", "Дает это количество очков опыта при убийстве", _, true, 0.0, false);
CVAR_pickUpEXP = CreateConVar("sm_naithon_level_pickup_exp", "3", "Дает это количество очков опыта при взятии флага", _, true, 0.0, false);
CVAR_CaptureFlagEXP = CreateConVar("sm_naithon_level_capture_exp", "7", "Дает это количество очков опыта при захвате флага", _, true, 0.0, false);
CVAR_DefendFlagEXP = CreateConVar("sm_naithon_level_defend_exp", "5", "Дает это количество очков опыта при защите флага", _, true, 0.0, false);
CVAR_BlockerCapEXP = CreateConVar("sm_naithon_level_blocker_exp", "5", "Дает это количество очков опыта, тому кто остановил захват точки", _, true, 0.0, false);
CVAR_VictimCapEXP = CreateConVar("sm_naithon_level_victim_exp", "3", "Дает это количество очков опыта, тому кто попытался захватить точку", _, true, 0.0, false);
CVAR_CapturePointEXP = CreateConVar("sm_naithon_level_cap_point_exp", "3", "Дает это количество очков опыта, тем кто захватил точку", _, true, 0.0, false);
CVAR_StartCapPointEXP = CreateConVar("sm_naithon_level_startcap_point_exp", "1", "Дает это количество очков опыта, тому кто начал захват точки", _, true, 0.0, false);
CVAR_DoubleEXP = CreateConVar("sm_naithon_level_double_exp", "2", "Прибавляет получение очков опыта", _, true, 0.0, false);
CVAR_TripleCash = CreateConVar("sm_naithon_level_triple_cash", "3", "Прибавляет получение денег", _, true, 0.0, false);
CVAR_Hud_Name_Channel = CreateConVar("sm_naithon_level_hud_channel_name", "0", "Канал для отображения HUD текста про имя и тип игрока", _, true, -1.0, false);
CVAR_Hud_Level_Channel = CreateConVar("sm_naithon_level_hud_channel_level", "1", "Канал для отображения HUD текста про уровень, ОП и подпись", _, true, -1.0, false);
CVAR_Hud_FX_Time = CreateConVar("sm_naithon_level_hud_fx_time", "1.0", "Длительность FX для HUD текста", _, false);
CVAR_Hud_HoldTime = CreateConVar("sm_naithon_level_hud_hold_time", "0.3", "Длительность показа HUD текста", _, false);
CVAR_Hud_Name_X_Pos = CreateConVar("sm_naithon_level_hud_name_x_pos", "0.005", "Координата X для HUD текста про ник", _, true, -1.0, true, 1.0);
CVAR_Hud_Name_Y_Pos = CreateConVar("sm_naithon_level_hud_name_y_pos", "0.005", "Координата Y для HUD текста про ник", _, true, -1.0, true, 1.0);
CVAR_Hud_Level_X_Pos = CreateConVar("sm_naithon_level_hud_level_x_pos", "0.005", "Координата X для HUD текста про уровень", _, true, -1.0, true, 1.0);
CVAR_Hud_Level_Y_Pos = CreateConVar("sm_naithon_level_hud_level_y_pos", "0.04", "Координата Y для HUD текста про уровень", _, true, -1.0, true, 1.0);
CVAR_Hud_FadeIn = CreateConVar("sm_naithon_level_hud_fadein", "0.5", "Вход для HUD текста", _, false);
CVAR_Hud_FadeOut = CreateConVar("sm_naithon_level_hud_fadeout", "0.5", "Выход для HUD текста", _, false);
CVAR_Hud_Name_Color_R = CreateConVar("sm_naithon_level_hud_color_name_r", "255", "Цвет Red для HUD текста про ник", _, true, 0.0, true, 255.0);
CVAR_Hud_Name_Color_G = CreateConVar("sm_naithon_level_hud_color_name_g", "255", "Цвет Green для HUD текста про ник", _, true, 0.0, true, 255.0);
CVAR_Hud_Name_Color_B = CreateConVar("sm_naithon_level_hud_color_name_b", "255", "Цвет Blue для HUD текста про ник", _, true, 0.0, true, 255.0);
CVAR_Hud_Name_Color_A = CreateConVar("sm_naithon_level_hud_color_name_a", "255", "Цвет Alpha для HUD текста про ник", _, true, 0.0, true, 255.0);
CVAR_Hud_Level_Color_R = CreateConVar("sm_naithon_level_hud_color_level_r", "55", "Цвет Red для HUD текста про уровень", _, true, 0.0, true, 255.0);
CVAR_Hud_Level_Color_G = CreateConVar("sm_naithon_level_hud_color_level_g", "225", "Цвет Green для HUD текста про уровень", _, true, 0.0, true, 255.0);
CVAR_Hud_Level_Color_B = CreateConVar("sm_naithon_level_hud_color_level_b", "220", "Цвет Blue для HUD текста про уровень", _, true, 0.0, true, 255.0);
CVAR_Hud_Level_Color_A = CreateConVar("sm_naithon_level_hud_color_level_a", "255", "Цвет Alpha для HUD текста про уровень", _, true, 0.0, true, 255.0);
CVAR_Hud_Double_Level_Color_R = CreateConVar("sm_naithon_level_hud_color_double_level_r", "165", "Цвет Red для HUD текста про бонусный уровень", _, true, 0.0, true, 255.0);
CVAR_Hud_Double_Level_Color_G = CreateConVar("sm_naithon_level_hud_color_double_level_g", "30", "Цвет Green для HUD текста про бонусный уровень", _, true, 0.0, true, 255.0);
CVAR_Hud_Double_Level_Color_B = CreateConVar("sm_naithon_level_hud_color_double_level_b", "230", "Цвет Blue для HUD текста про бонусный уровень", _, true, 0.0, true, 255.0);
CVAR_Hud_Double_Level_Color_A = CreateConVar("sm_naithon_level_hud_color_double_level_a", "255", "Цвет Alpha для HUD текста про бонусный уровень", _, true, 0.0, true, 255.0);
CVAR_Hud_Refresh = CreateConVar("sm_naithon_level_hud_refresh", "0.49", "Время, через которое таймер будет обновлять HUD текст", _, true, 0.0, false);
CVAR_Timer_Cash = CreateConVar("sm_naithon_level_timer_cash", "300.0", "Время, через которое игрок будет получать кредиты за игру на сервере", _, true, 0.0, false);
CVAR_Timer_EXP = CreateConVar("sm_naithon_level_timer_exp", "120.0", "Время, через которое игрок будет получать ОП за игру на сервере", _, true, 0.0, false);
CVAR_Timer_Gems = CreateConVar("sm_naithon_level_timer_gems", "600.0", "Время, через которое игрок будет получать кристаллы за игру на сервере", _, true, 0.0, false);
CVAR_Sound_LvlUp = CreateConVar("sm_naithon_level_sound_lvl_up", "misc/achievement_earned.wav", _, false);
CVAR_Sound_LvlDown = CreateConVar("sm_naithon_level_sound_lvl_down", "ui/duel_challenge_rejected_with_restriction.wav", _, false);
HookConVarChange(CVAR_Enabled, HookPluginActive);
HookConVarChange(CVAR_Version, HookPluginActive);
HookConVarChange(CVAR_TMREXP, HookPluginActive);
HookConVarChange(CVAR_killEXP, HookPluginActive);
HookConVarChange(CVAR_pickUpEXP, HookPluginActive);
HookConVarChange(CVAR_CaptureFlagEXP, HookPluginActive);
HookConVarChange(CVAR_DefendFlagEXP, HookPluginActive);
HookConVarChange(CVAR_BlockerCapEXP, HookPluginActive);
HookConVarChange(CVAR_VictimCapEXP, HookPluginActive);
HookConVarChange(CVAR_CapturePointEXP, HookPluginActive);
HookConVarChange(CVAR_StartCapPointEXP, HookPluginActive);
HookConVarChange(CVAR_DoubleEXP, HookPluginActive);
HookConVarChange(CVAR_TripleCash, HookPluginActive);
HookConVarChange(CVAR_Hud_Name_Channel, HookPluginActive);
HookConVarChange(CVAR_Hud_Level_Channel, HookPluginActive);
HookConVarChange(CVAR_Hud_FX_Time, HookPluginActive);
HookConVarChange(CVAR_Hud_HoldTime, HookPluginActive);
HookConVarChange(CVAR_Hud_Name_X_Pos, HookPluginActive);
HookConVarChange(CVAR_Hud_Name_Y_Pos, HookPluginActive);
HookConVarChange(CVAR_Hud_Level_X_Pos, HookPluginActive);
HookConVarChange(CVAR_Hud_Level_Y_Pos, HookPluginActive);
HookConVarChange(CVAR_Hud_FadeIn, HookPluginActive);
HookConVarChange(CVAR_Hud_FadeOut, HookPluginActive);
HookConVarChange(CVAR_Hud_Name_Color_R, HookPluginActive);
HookConVarChange(CVAR_Hud_Name_Color_G, HookPluginActive);
HookConVarChange(CVAR_Hud_Name_Color_B, HookPluginActive);
HookConVarChange(CVAR_Hud_Name_Color_A, HookPluginActive);
HookConVarChange(CVAR_Hud_Level_Color_R, HookPluginActive);
HookConVarChange(CVAR_Hud_Level_Color_G, HookPluginActive);
HookConVarChange(CVAR_Hud_Level_Color_B, HookPluginActive);
HookConVarChange(CVAR_Hud_Level_Color_A, HookPluginActive);
HookConVarChange(CVAR_Hud_Double_Level_Color_R, HookPluginActive);
HookConVarChange(CVAR_Hud_Double_Level_Color_G, HookPluginActive);
HookConVarChange(CVAR_Hud_Double_Level_Color_B, HookPluginActive);
HookConVarChange(CVAR_Hud_Double_Level_Color_A, HookPluginActive);
HookConVarChange(CVAR_Hud_Refresh, HookPluginActive);
HookConVarChange(CVAR_Timer_Cash, HookPluginActive);
HookConVarChange(CVAR_Timer_EXP, HookPluginActive);
HookConVarChange(CVAR_Timer_Gems, HookPluginActive);
HookConVarChange(CVAR_Sound_LvlUp, HookPluginActive);
HookConVarChange(CVAR_Sound_LvlDown, HookPluginActive);
Naithon_Level_Enabled = GetConVarBool(CVAR_Enabled);
CVAR_Version.SetString(PLUGIN_VERSION);
AutoExecConfig(true, "naithon_level", "sourcemod/naithon");
if (Naithon_Level_Enabled)
{
#if defined DEBUG
LogToFileEx(DEBUG_LOG_FILE, "-----------------------------------------------------------------");
LogToFileEx(DEBUG_LOG_FILE, "--- Начало отладки ---");
#endif
PrintToServer("***NAITHON'S CORE: NAITHON'S LEVEL SYSTEM LOADED (VERSION: %s)***", PLUGIN_VERSION);
PrintToServer("***NAITHON'S CORE: NAITHON'S LEVEL SYSTEM NOW WATCHING FOR MODULES...***");
#if defined DEBUG
LogToFileEx(DEBUG_LOG_FILE, "Система уровней версии %s загружена!", PLUGIN_VERSION);
#endif
HookEvent("player_death", EVENT_PlayerDeath);
HookEvent("teamplay_flag_event", EVENT_TeamPlay_Flag);
HookEvent("teamplay_capture_blocked", EVENT_TeamPlay_Cap_Blocked);
HookEvent("teamplay_point_captured", EVENT_TeamPlay_Point_Captured);
HookEvent("teamplay_point_startcapture", EVENT_TeamPlay_Point_StartCap);
RegConsoleCmd("sm_creditstoexp", CMD_CreditsToEXP, "Обменивает кредиты на опыт.");
RegConsoleCmd("sm_exptocredits", CMD_EXPToCredits, "Обменивает опыт на кредиты.");
RegConsoleCmd("sm_removelvl", CMD_RemoveLVL, "Обнуляет ваш уровень и очки опыта.");
RegConsoleCmd("sm_removecash", CMD_RemoveCash, "Обнуляет ваши кредиты.");
RegConsoleCmd("sm_setsign", CMD_SetSign, "Меняет вашу подпись.");
RegConsoleCmd("sm_mycredits", CMD_MyCredits, "Показывает информацию о ваших кредитах.");
RegConsoleCmd("sm_mygems", CMD_MyGems, "Показывает информацию о ваших кристаллах.");
RegConsoleCmd("sm_myexp", CMD_MyEXP, "Показывает информацию о вашем опыте.");
RegConsoleCmd("sm_pay", CMD_PayCash, "Отдаёт ваши кредиты другому игроку.");
RegAdminCmd("sm_giveexp", ACMD_GiveEXP, ADMFLAG_CONFIG, "Даёт/забирает/устанавливает у игрока определённое количество очков опыта.");
RegAdminCmd("sm_givelvl", ACMD_GiveLvl, ADMFLAG_CONFIG, "Даёт/забирает/устанавливает у игрока определённый уровень.");
RegAdminCmd("sm_givecash", ACMD_GiveCash, ADMFLAG_CONFIG, "Даёт/забирает/устанавливает у игрока определённое количество кредитов.");
RegAdminCmd("sm_givegems", ACMD_GiveGems, ADMFLAG_CONFIG, "Даёт/забирает/устанавливает у игрока определённое количество кристаллов.");
RegAdminCmd("sm_asetsign", ACMD_SetSign, ADMFLAG_CONFIG, "Позволяет менять подпись у игрока (подпись указывать в \"ковычках\").");
RegAdminCmd("sm_settype", ACMD_SetType, ADMFLAG_CONFIG, "Позволяет менять тип игрока.");
RegAdminCmd("sm_saveclient", ACMD_SaveClient, ADMFLAG_GENERIC, "Сохраняет данные игрока (Уровень, ОП, тип и т.п.) в БД. Используйте это, если автосохранение не работает!");
RegAdminCmd("sm_slvlup", ACMD_SmplIncreaseLvl, ADMFLAG_CONFIG, "Повышает игрока на +1 уровень.");
RegAdminCmd("sm_alvlup", ACMD_AdvIncreaseLvl, ADMFLAG_CONFIG, "Повышает игрока на несколько уровней (нужно указать количество).");
RegAdminCmd("sm_slvldown", ACMD_SmplReduceLvl, ADMFLAG_CONFIG, "Понижает на -1 уровень игрока.");
RegAdminCmd("sm_alvldown", ACMD_AdvReduceLvl, ADMFLAG_CONFIG, "Понижает на несколько уровней игрока (нужно указать количество).");
ConnectToDB();
CVAR_Sound_LvlUp.GetString(LEVEL_UP_SOUND, sizeof(LEVEL_UP_SOUND));
CVAR_Sound_LvlDown.GetString(LEVEL_DOWN_SOUND, sizeof(LEVEL_DOWN_SOUND));
BuildPath(Path_SM, PlayerTypeConfigPath, sizeof(PlayerTypeConfigPath), "configs/naithon/level/player_type.cfg");
kvPlayerType = CreateKeyValues("PlayerType");
FileToKeyValues(kvPlayerType, PlayerTypeConfigPath);
DoubleEXP = GetConVarInt(CVAR_DoubleEXP);
TripleCash = GetConVarInt(CVAR_TripleCash);
TMREXP = GetConVarInt(CVAR_TMREXP);
TMRDEXP = TMREXP + DoubleEXP;
killEXP = GetConVarInt(CVAR_killEXP);
DEXP = killEXP + DoubleEXP;
pickUp_Flag_EXP = GetConVarInt(CVAR_pickUpEXP);
pickUp_Flag_EXP_D = pickUp_Flag_EXP + DoubleEXP;
Capture_Flag_EXP = GetConVarInt(CVAR_CaptureFlagEXP);
Capture_Flag_EXP_D = Capture_Flag_EXP + DoubleEXP;
Defend_Flag_EXP = GetConVarInt(CVAR_DefendFlagEXP);
Defend_Flag_EXP_D = Defend_Flag_EXP + DoubleEXP;
Cap_Blocker_EXP = GetConVarInt(CVAR_BlockerCapEXP);
Cap_Blocker_EXP_D = Cap_Blocker_EXP + DoubleEXP;
Cap_Victim_EXP = GetConVarInt(CVAR_VictimCapEXP);
Cap_Victim_EXP_D = Cap_Victim_EXP + DoubleEXP;
Cap_Point_EXP = GetConVarInt(CVAR_CapturePointEXP);
Cap_Point_EXP_D = Cap_Point_EXP + DoubleEXP;
Start_Cap_Point_EXP = GetConVarInt(CVAR_StartCapPointEXP);
Start_Cap_Point_EXP_D = Start_Cap_Point_EXP + DoubleEXP;
iHud_Name_Channel = GetConVarInt(CVAR_Hud_Name_Channel);
iHud_Level_Channel = GetConVarInt(CVAR_Hud_Level_Channel);
iHud_Name_Color_R = GetConVarInt(CVAR_Hud_Name_Color_R);
iHud_Name_Color_G = GetConVarInt(CVAR_Hud_Name_Color_G);
iHud_Name_Color_B = GetConVarInt(CVAR_Hud_Name_Color_B);
iHud_Name_Color_A = GetConVarInt(CVAR_Hud_Name_Color_A);
iHud_Level_Color_R = GetConVarInt(CVAR_Hud_Level_Color_R);
iHud_Level_Color_G = GetConVarInt(CVAR_Hud_Level_Color_G);
iHud_Level_Color_B = GetConVarInt(CVAR_Hud_Level_Color_B);
iHud_Level_Color_A = GetConVarInt(CVAR_Hud_Level_Color_A);
iHud_Double_Level_Color_R = GetConVarInt(CVAR_Hud_Double_Level_Color_R);
iHud_Double_Level_Color_G = GetConVarInt(CVAR_Hud_Double_Level_Color_G);
iHud_Double_Level_Color_B = GetConVarInt(CVAR_Hud_Double_Level_Color_B);
iHud_Double_Level_Color_A = GetConVarInt(CVAR_Hud_Double_Level_Color_A);
fHud_FX_Time = GetConVarFloat(CVAR_Hud_FX_Time);
fHud_HoldTime = GetConVarFloat(CVAR_Hud_HoldTime);
fHud_Name_X_Pos = GetConVarFloat(CVAR_Hud_Name_X_Pos);
fHud_Name_Y_Pos = GetConVarFloat(CVAR_Hud_Name_Y_Pos);
fHud_Level_X_Pos = GetConVarFloat(CVAR_Hud_Level_X_Pos);
fHud_Level_Y_Pos = GetConVarFloat(CVAR_Hud_Level_Y_Pos);
fHud_FadeIn = GetConVarFloat(CVAR_Hud_FadeIn);
fHud_FadeOut = GetConVarFloat(CVAR_Hud_FadeOut);
for (int i = 1; i <= MaxClients; i++)
{
if (IsValidClient(i))
{
ShowHUD(i);
TIMER_HudRefresh[i] = CreateTimer(GetConVarFloat(CVAR_Hud_Refresh), RefreshPlayerHUD, GetClientUserId(i), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
TIMER_Cash[i] = CreateTimer(GetConVarFloat(CVAR_Timer_Cash), TMR_AddCash, GetClientUserId(i), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
TIMER_EXP[i] = CreateTimer(GetConVarFloat(CVAR_Timer_EXP), TMR_AddEXP, GetClientUserId(i), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
TIMER_Gems[i] = CreateTimer(GetConVarFloat(CVAR_Timer_Gems), TMR_AddGems, GetClientUserId(i), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
GetPlayerTypeData(i, "string", sPlayerType[i], sizeof(sPlayerType[]));
GetPlayerTypeData(i, "chat", sPlayerTypeHex[i], sizeof(sPlayerTypeHex[]));
//Army_GetStringRank(i, sPlayerRank[i]);
char buffer[MAX_NAME_LENGTH];
GetClientName(i, buffer, sizeof(buffer));
PlayerCanDoubleBonus[i] = !strncmp(buffer, NICKTAG, sizeof(NICKTAG) - 1);
}
}
}
else
{
PrintToServer("***NAITHON'S CORE: NAITHON'S LEVEL SYSTEM DISABLED BY CVARS!***");
}
}
Код подключения игрока:
PHP:
public void OnClientPostAdminCheck(int iClient)
{
if (Naithon_Level_Enabled && IsValidClient(iClient))
{
DataPack pack = new DataPack();
DATATIMER_Connect[iClient] = CreateDataTimer(0.1, TMR_Connected, pack);
pack.WriteCell(iClient);
char buffer[MAX_NAME_LENGTH];
GetClientName(iClient, buffer, sizeof(buffer));
PlayerCanDoubleBonus[iClient] = !strncmp(buffer, NICKTAG, sizeof(NICKTAG) - 1);
}
}
public Action TMR_Connected(Handle timer, DataPack pack)
{
int iClient;
pack.Reset();
iClient = pack.ReadCell();
DATATIMER_Connect[iClient] = INVALID_HANDLE;
if (IsValidClient(iClient))
{
//Army_GetStringRank(iClient, sPlayerRank[iClient]);
//Army_GetStringAtributes(iClient, "PrefixColor", "{green}", sPlayerRankColor[iClient], sizeof(sPlayerRankColor[]));
GetPlayerTypeData(iClient, "string", sPlayerType[iClient], sizeof(sPlayerType[]));
GetPlayerTypeData(iClient, "chat", sPlayerTypeHex[iClient], sizeof(sPlayerTypeHex[]));
CPrintToChatAll("{lime}[+] {gold}%N {default}- \x07%s%s %i уровня {default}подключился{lime}!", iClient, /*sPlayerRankColor[iClient], sPlayerRank[iClient],*/sPlayerTypeHex[iClient], sPlayerType[iClient], PlayerLevel[iClient]);
#if defined DEBUG
LogToFileEx(DEBUG_LOG_FILE, "[+] %N - %s %i уровня подключился!", iClient, sPlayerType[iClient], PlayerLevel[iClient]);
#endif
PlayerEXPProgressPercent[iClient] = GetPlayerEXPProgressPercent(iClient);
PlayerEXPUpNeeded[iClient] = GetPlayerEXPUpNeeded(iClient);
#if defined DEBUG
LogToFileEx(DEBUG_LOG_FILE, "%N: Получены данные об ОП: %i / %i ОП, осталось собрать %i ОП, общий прогресс %.0f%%", iClient, PlayerEXP[iClient], PlayerEXPUp[iClient], PlayerEXPUpNeeded[iClient], PlayerEXPProgressPercent[iClient]);
#endif
ShowHUD(iClient);
PrintEdictsToChat(iClient);
CPrintToChat(iClient, "{yellowgreen}Добро пожаловать на сервер! {greenyellow}Вам осталось собрать {yellow}%i {greenyellow}ОП, общий прогресс: {yellow}%.0f%%", PlayerEXPUpNeeded[iClient], PlayerEXPProgressPercent[iClient]);
TIMER_HudRefresh[iClient] = CreateTimer(GetConVarFloat(CVAR_Hud_Refresh), RefreshPlayerHUD, GetClientUserId(iClient), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
TIMER_Cash[iClient] = CreateTimer(GetConVarFloat(CVAR_Timer_Cash), TMR_AddCash, GetClientUserId(iClient), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
TIMER_EXP[iClient] = CreateTimer(GetConVarFloat(CVAR_Timer_EXP), TMR_AddEXP, GetClientUserId(iClient), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
TIMER_Gems[iClient] = CreateTimer(GetConVarFloat(CVAR_Timer_Gems), TMR_AddGems, GetClientUserId(iClient), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
}
return Plugin_Continue;
}
В чём может быть причина? Просто друзья просят, чтобы я включил сервер, а я не могу из-за этой проблемы.
Если надо, я могу добавить ещё отрывки из кода.