msl1
Участник
- Сообщения
- 162
- Реакции
- 20
После двух месяцев использования плагина ARMY в базе данных более 70000 тысяч записей ,большая часть не активных игроков . Появилось желание удалить не нужных игроков . Вручную долго поэтому хочу добавить cvar удаление с базы после 30 дней . Часть сделал но не получается удалять где то ошибка ,подскажите . Здесь были мой дополнения.
Здесь весь плагин
--- Добавлено позже ---
public OnPluginStart()
{
g_hArray_sRanks = CreateArray(ByteCountToCells(64));
g_hArray_iKills = CreateArray();
g_hArraySortMenu = CreateArray(ByteCountToCells(64));
HookEvent("player_death", Ev_PlayerDeath);
HookEvent("player_spawn", Ev_PlayerSpawn);
RegAdminCmd("army_deaths", SetDeaths, ADMFLAG_ROOT);
RegAdminCmd("army_kills", SetKills, ADMFLAG_ROOT);
RegAdminCmd("army_setrank", Army_SetRank, ADMFLAG_ROOT);
AddCommandListener(Command_Say, "say");
AddCommandListener(Command_Say, "say_team");
LoadTranslations("army_ranks/chat.phrases.txt");
LoadTranslations("army_ranks/adminmenu.phrases.txt");
LoadTranslations("army_ranks/menu.phrases.txt");
if (LibraryExists("adminmenu")) OnAdminMenuReady(GetAdminTopMenu());
g_cvarAutopurge = CreateConVar("g_cvarAutopurge","30","Auto-Purge inactive players? X = Days 0 = Off",_,true,0.0);
}
{
g_hArray_sRanks = CreateArray(ByteCountToCells(64));
g_hArray_iKills = CreateArray();
g_hArraySortMenu = CreateArray(ByteCountToCells(64));
HookEvent("player_death", Ev_PlayerDeath);
HookEvent("player_spawn", Ev_PlayerSpawn);
RegAdminCmd("army_deaths", SetDeaths, ADMFLAG_ROOT);
RegAdminCmd("army_kills", SetKills, ADMFLAG_ROOT);
RegAdminCmd("army_setrank", Army_SetRank, ADMFLAG_ROOT);
AddCommandListener(Command_Say, "say");
AddCommandListener(Command_Say, "say_team");
LoadTranslations("army_ranks/chat.phrases.txt");
LoadTranslations("army_ranks/adminmenu.phrases.txt");
LoadTranslations("army_ranks/menu.phrases.txt");
if (LibraryExists("adminmenu")) OnAdminMenuReady(GetAdminTopMenu());
g_cvarAutopurge = CreateConVar("g_cvarAutopurge","30","Auto-Purge inactive players? X = Days 0 = Off",_,true,0.0);
}
SaveClient(iClient)
{
if ( g_bLoaded[iClient] )
{
decl String:sQuery[256], String:sName[MAX_NAME_LENGTH*2+1];
GetClientName(iClient, sQuery, sizeof(sQuery));
SQL_EscapeString(g_hSQLdb, sQuery, sName, sizeof(sName));
Format(sQuery, sizeof(sQuery), "UPDATE `army_ranks` SET `kills` = %d, `deaths` = %d, `name` = '%s', `irank` = '%d', `timestamp` = '%i' WHERE `auth` = '%s'", g_iKills[iClient], g_iDeaths[iClient], sName, (g_iRank[iClient]< GetArraySize(g_hArray_iKills))?g_iRank[iClient]:g_iRank[iClient]-1, GetTime(), g_sAuth[iClient]);
SQL_TQuery(g_hSQLdb, SQLT_OnClientDisconnect, sQuery);
}
}
{
if ( g_bLoaded[iClient] )
{
decl String:sQuery[256], String:sName[MAX_NAME_LENGTH*2+1];
GetClientName(iClient, sQuery, sizeof(sQuery));
SQL_EscapeString(g_hSQLdb, sQuery, sName, sizeof(sName));
Format(sQuery, sizeof(sQuery), "UPDATE `army_ranks` SET `kills` = %d, `deaths` = %d, `name` = '%s', `irank` = '%d', `timestamp` = '%i' WHERE `auth` = '%s'", g_iKills[iClient], g_iDeaths[iClient], sName, (g_iRank[iClient]< GetArraySize(g_hArray_iKills))?g_iRank[iClient]:g_iRank[iClient]-1, GetTime(), g_sAuth[iClient]);
SQL_TQuery(g_hSQLdb, SQLT_OnClientDisconnect, sQuery);
}
}
CreateTables()
{
SQL_LockDatabase(g_hSQLdb);
SQL_FastQuery(g_hSQLdb, "CREATE TABLE IF NOT EXISTS `army_ranks` (`auth` TEXT(32), `name` TEXT(32), `kills` INT, `deaths` INT, `irank` INT, `timestamp` INTEGER);");
SQL_UnlockDatabase(g_hSQLdb);
g_iTotalPlayers = 0;
//decl String:sQuery[256];
//Format(sQuery, sizeof(sQuery), "SELECT COUNT(*) FROM `army_ranks`");
SQL_TQuery(g_hSQLdb, SQLT_OnGetTotal, "SELECT COUNT(*) FROM `army_ranks`");
new AutoPurge = GetConVarInt(g_cvarAutopurge);
new String:sQuery[500];
if(AutoPurge > 0){
new DeleteBefore = GetTime() - (AutoPurge*86400);
Format(sQuery,sizeof(sQuery),"DELETE FROM army_ranks WHERE timestamp < '%d'",g_hSQLdb,DeleteBefore);
SQL_TQuery(g_hSQLdb,SQL_OnDelete,sQuery);
}
for ( new i = 1; i <= MaxClients; ++i )
{
if ( IsClientInGame(i) )
{
OnClientPutInServer(i);
}
}
}
public SQL_OnDelete(Handle:owner, Handle:hndl, const String:error[], any:client)
{
if(hndl == INVALID_HANDLE)
{
LogError("[Army] Query Fail: %s", error);
return;
}
PrintToServer("[Army]: %d players purged by inactivity",SQL_GetAffectedRows(owner));
}
{
SQL_LockDatabase(g_hSQLdb);
SQL_FastQuery(g_hSQLdb, "CREATE TABLE IF NOT EXISTS `army_ranks` (`auth` TEXT(32), `name` TEXT(32), `kills` INT, `deaths` INT, `irank` INT, `timestamp` INTEGER);");
SQL_UnlockDatabase(g_hSQLdb);
g_iTotalPlayers = 0;
//decl String:sQuery[256];
//Format(sQuery, sizeof(sQuery), "SELECT COUNT(*) FROM `army_ranks`");
SQL_TQuery(g_hSQLdb, SQLT_OnGetTotal, "SELECT COUNT(*) FROM `army_ranks`");
new AutoPurge = GetConVarInt(g_cvarAutopurge);
new String:sQuery[500];
if(AutoPurge > 0){
new DeleteBefore = GetTime() - (AutoPurge*86400);
Format(sQuery,sizeof(sQuery),"DELETE FROM army_ranks WHERE timestamp < '%d'",g_hSQLdb,DeleteBefore);
SQL_TQuery(g_hSQLdb,SQL_OnDelete,sQuery);
}
for ( new i = 1; i <= MaxClients; ++i )
{
if ( IsClientInGame(i) )
{
OnClientPutInServer(i);
}
}
}
public SQL_OnDelete(Handle:owner, Handle:hndl, const String:error[], any:client)
{
if(hndl == INVALID_HANDLE)
{
LogError("[Army] Query Fail: %s", error);
return;
}
PrintToServer("[Army]: %d players purged by inactivity",SQL_GetAffectedRows(owner));
}
public OnClientPutInServer(iClient)
{
if (iClient && IsFakeClient(iClient) || IsClientSourceTV(iClient))
{
return;
}
decl String:sQuery[256];
#if SOURCEMOD_V_MINOR >= 7
GetClientAuthId(iClient, AuthId_Steam2, g_sAuth[iClient], sizeof(g_sAuth[]));
#endif
#if SOURCEMOD_V_MINOR < 7
GetClientAuthString(iClient, g_sAuth[iClient], sizeof(g_sAuth[]));
#endif
Format(sQuery, sizeof(sQuery), "SELECT `kills`, `deaths`,`irank` ,`timestamp` FROM `army_ranks` WHERE `auth` = '%s' LIMIT 1;", g_sAuth[iClient]);
SQL_TQuery(g_hSQLdb, SQLT_OnClientPutInServer, sQuery, GetClientUserId(iClient));
}
public SQLT_OnClientPutInServer(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if (!iClient)
{
return;
}
if (!hQuery)
{
LogError("SQLT_OnClientPutInServer: %s", sError);
g_bLoaded[iClient] = false;
}
decl String:sBuffer[255], String:sName[32], String:sName2[32];
GetClientName(iClient, sName, sizeof(sName));
if (SQL_FetchRow(hQuery))
{
// if(g_iRankType==0)
// {
g_iKills[iClient] = SQL_FetchInt(hQuery, 0);
g_iDeaths[iClient] = SQL_FetchInt(hQuery, 1);
// }
// else if(g_iRankType==1)
// {
// new stats[STATS_NAMES];
// RankMe_GetStats(iClient,stats);
// g_iKills[iClient] = stats[KILLS];
// g_iDeaths[iClient] = stats[DEATHS];
// }
g_iRank[iClient] = SQL_FetchInt(hQuery, 2);
g_bLoaded[iClient] = true;
}
else
{
decl String:sQuery[256];
SQL_EscapeString(g_hSQLdb, sName, sName2, sizeof(sName2));
Format(sQuery, sizeof(sQuery), "INSERT INTO `army_ranks` (`auth`, `name`, `kills`, `deaths`,`irank`,`timestamp`) VALUES ('%s', '%s', 0, 0, 0, 0)", g_sAuth[iClient], sName2);
SQL_TQuery(g_hSQLdb, SQLT_OnInsertClient, sQuery, GetClientUserId(iClient));
// if(g_iRankType==0)
// {
g_iKills[iClient] = 0;
g_iDeaths[iClient] = 0;
g_iRank[iClient] = 0;
// }
// else if(g_iRankType==1)
// {
// new stats[STATS_NAMES];
// RankMe_GetStats(iClient,stats);
// g_iKills[iClient] = stats[KILLS];
// g_iDeaths[iClient] = stats[DEATHS];
// }
}
if (g_iRank[iClient] < GetArraySize(g_hArray_iKills))
GetArrayString(g_hArray_sRanks, g_iRank[iClient], g_sRank[iClient], sizeof(g_sRank[]));
else
GetArrayString(g_hArray_sRanks, g_iRank[iClient] - 1, g_sRank[iClient], sizeof(g_sRank[]));
if (g_iRank[iClient] < GetArraySize(g_hArray_iKills) - 1)
g_iNextRankKills[iClient] = GetArrayCell(g_hArray_iKills, g_iRank[iClient] + 1);
/*Начало приветствия*/
// KvRewind(hKv);
if (g_bWelcomePanel)
{
new Handle:hWelcomePanel = CreatePanel();
Format(sBuffer, sizeof(sBuffer), "%T\n ", "welcome_title", iClient);
SetPanelTitle(hWelcomePanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "%T", "welcome_menu", iClient, sName, g_sRank[iClient], g_iKills[iClient], g_iDeaths[iClient]);
iParts = ReplaceString(sBuffer, sizeof(sBuffer), "\\n", "\n-");
if (iParts > 0)
{
decl String:sParts[iParts + 1][1000], i;
iParts = ExplodeString(sBuffer, "\n-", sParts, iParts + 1, 1000);
for (i = 0; i < iParts; ++i)
{
DrawPanelText(hWelcomePanel, sParts);
}
}
else
{
DrawPanelText(hWelcomePanel, sBuffer);
}
DrawPanelText(hWelcomePanel, "");
SetPanelCurrentKey(hWelcomePanel, 10);
DrawPanelItem(hWelcomePanel, "Выход");
SendPanelToClient(hWelcomePanel, iClient, Handle_WelcomePanel, g_WelcomePanelTime);
CloseHandle(hWelcomePanel);
/*Конец кода приветствия*/
}
g_hArrayInfoMenu[iClient] = CreateTrie();
ClearTrie(g_hArrayInfoMenu[iClient]);
Call_StartForward(OnPlayerConnect);
Call_PushCell(iClient);
Call_PushString(g_sRank[iClient]);
Call_PushCell(g_iKills[iClient]);
Call_PushCell(g_iDeaths[iClient]);
Call_Finish();
{
if (iClient && IsFakeClient(iClient) || IsClientSourceTV(iClient))
{
return;
}
decl String:sQuery[256];
#if SOURCEMOD_V_MINOR >= 7
GetClientAuthId(iClient, AuthId_Steam2, g_sAuth[iClient], sizeof(g_sAuth[]));
#endif
#if SOURCEMOD_V_MINOR < 7
GetClientAuthString(iClient, g_sAuth[iClient], sizeof(g_sAuth[]));
#endif
Format(sQuery, sizeof(sQuery), "SELECT `kills`, `deaths`,`irank` ,`timestamp` FROM `army_ranks` WHERE `auth` = '%s' LIMIT 1;", g_sAuth[iClient]);
SQL_TQuery(g_hSQLdb, SQLT_OnClientPutInServer, sQuery, GetClientUserId(iClient));
}
public SQLT_OnClientPutInServer(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if (!iClient)
{
return;
}
if (!hQuery)
{
LogError("SQLT_OnClientPutInServer: %s", sError);
g_bLoaded[iClient] = false;
}
decl String:sBuffer[255], String:sName[32], String:sName2[32];
GetClientName(iClient, sName, sizeof(sName));
if (SQL_FetchRow(hQuery))
{
// if(g_iRankType==0)
// {
g_iKills[iClient] = SQL_FetchInt(hQuery, 0);
g_iDeaths[iClient] = SQL_FetchInt(hQuery, 1);
// }
// else if(g_iRankType==1)
// {
// new stats[STATS_NAMES];
// RankMe_GetStats(iClient,stats);
// g_iKills[iClient] = stats[KILLS];
// g_iDeaths[iClient] = stats[DEATHS];
// }
g_iRank[iClient] = SQL_FetchInt(hQuery, 2);
g_bLoaded[iClient] = true;
}
else
{
decl String:sQuery[256];
SQL_EscapeString(g_hSQLdb, sName, sName2, sizeof(sName2));
Format(sQuery, sizeof(sQuery), "INSERT INTO `army_ranks` (`auth`, `name`, `kills`, `deaths`,`irank`,`timestamp`) VALUES ('%s', '%s', 0, 0, 0, 0)", g_sAuth[iClient], sName2);
SQL_TQuery(g_hSQLdb, SQLT_OnInsertClient, sQuery, GetClientUserId(iClient));
// if(g_iRankType==0)
// {
g_iKills[iClient] = 0;
g_iDeaths[iClient] = 0;
g_iRank[iClient] = 0;
// }
// else if(g_iRankType==1)
// {
// new stats[STATS_NAMES];
// RankMe_GetStats(iClient,stats);
// g_iKills[iClient] = stats[KILLS];
// g_iDeaths[iClient] = stats[DEATHS];
// }
}
if (g_iRank[iClient] < GetArraySize(g_hArray_iKills))
GetArrayString(g_hArray_sRanks, g_iRank[iClient], g_sRank[iClient], sizeof(g_sRank[]));
else
GetArrayString(g_hArray_sRanks, g_iRank[iClient] - 1, g_sRank[iClient], sizeof(g_sRank[]));
if (g_iRank[iClient] < GetArraySize(g_hArray_iKills) - 1)
g_iNextRankKills[iClient] = GetArrayCell(g_hArray_iKills, g_iRank[iClient] + 1);
/*Начало приветствия*/
// KvRewind(hKv);
if (g_bWelcomePanel)
{
new Handle:hWelcomePanel = CreatePanel();
Format(sBuffer, sizeof(sBuffer), "%T\n ", "welcome_title", iClient);
SetPanelTitle(hWelcomePanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "%T", "welcome_menu", iClient, sName, g_sRank[iClient], g_iKills[iClient], g_iDeaths[iClient]);
iParts = ReplaceString(sBuffer, sizeof(sBuffer), "\\n", "\n-");
if (iParts > 0)
{
decl String:sParts[iParts + 1][1000], i;
iParts = ExplodeString(sBuffer, "\n-", sParts, iParts + 1, 1000);
for (i = 0; i < iParts; ++i)
{
DrawPanelText(hWelcomePanel, sParts);
}
}
else
{
DrawPanelText(hWelcomePanel, sBuffer);
}
DrawPanelText(hWelcomePanel, "");
SetPanelCurrentKey(hWelcomePanel, 10);
DrawPanelItem(hWelcomePanel, "Выход");
SendPanelToClient(hWelcomePanel, iClient, Handle_WelcomePanel, g_WelcomePanelTime);
CloseHandle(hWelcomePanel);
/*Конец кода приветствия*/
}
g_hArrayInfoMenu[iClient] = CreateTrie();
ClearTrie(g_hArrayInfoMenu[iClient]);
Call_StartForward(OnPlayerConnect);
Call_PushCell(iClient);
Call_PushString(g_sRank[iClient]);
Call_PushCell(g_iKills[iClient]);
Call_PushCell(g_iDeaths[iClient]);
Call_Finish();
--- Добавлено позже ---
Все нашел ошибку .После двух месяцев использования плагина ARMY в базе данных более 70000 тысяч записей ,большая часть не активных игроков . Появилось желание удалить не нужных игроков . Вручную долго поэтому хочу добавить cvar удаление с базы после 30 дней . Часть сделал но не получается удалять где то ошибка ,подскажите . Здесь были мой дополнения.public OnPluginStart()
{
g_hArray_sRanks = CreateArray(ByteCountToCells(64));
g_hArray_iKills = CreateArray();
g_hArraySortMenu = CreateArray(ByteCountToCells(64));
HookEvent("player_death", Ev_PlayerDeath);
HookEvent("player_spawn", Ev_PlayerSpawn);
RegAdminCmd("army_deaths", SetDeaths, ADMFLAG_ROOT);
RegAdminCmd("army_kills", SetKills, ADMFLAG_ROOT);
RegAdminCmd("army_setrank", Army_SetRank, ADMFLAG_ROOT);
AddCommandListener(Command_Say, "say");
AddCommandListener(Command_Say, "say_team");
LoadTranslations("army_ranks/chat.phrases.txt");
LoadTranslations("army_ranks/adminmenu.phrases.txt");
LoadTranslations("army_ranks/menu.phrases.txt");
if (LibraryExists("adminmenu")) OnAdminMenuReady(GetAdminTopMenu());
g_cvarAutopurge = CreateConVar("g_cvarAutopurge","30","Auto-Purge inactive players? X = Days 0 = Off",_,true,0.0);
}SaveClient(iClient)
{
if ( g_bLoaded[iClient] )
{
decl String:sQuery[256], String:sName[MAX_NAME_LENGTH*2+1];
GetClientName(iClient, sQuery, sizeof(sQuery));
SQL_EscapeString(g_hSQLdb, sQuery, sName, sizeof(sName));
Format(sQuery, sizeof(sQuery), "UPDATE `army_ranks` SET `kills` = %d, `deaths` = %d, `name` = '%s', `irank` = '%d', `timestamp` = '%i' WHERE `auth` = '%s'", g_iKills[iClient], g_iDeaths[iClient], sName, (g_iRank[iClient]< GetArraySize(g_hArray_iKills))?g_iRank[iClient]:g_iRank[iClient]-1, GetTime(), g_sAuth[iClient]);
SQL_TQuery(g_hSQLdb, SQLT_OnClientDisconnect, sQuery);
}
}CreateTables()
{
SQL_LockDatabase(g_hSQLdb);
SQL_FastQuery(g_hSQLdb, "CREATE TABLE IF NOT EXISTS `army_ranks` (`auth` TEXT(32), `name` TEXT(32), `kills` INT, `deaths` INT, `irank` INT, `timestamp` INTEGER);");
SQL_UnlockDatabase(g_hSQLdb);
g_iTotalPlayers = 0;
//decl String:sQuery[256];
//Format(sQuery, sizeof(sQuery), "SELECT COUNT(*) FROM `army_ranks`");
SQL_TQuery(g_hSQLdb, SQLT_OnGetTotal, "SELECT COUNT(*) FROM `army_ranks`");
new AutoPurge = GetConVarInt(g_cvarAutopurge);
new String:sQuery[500];
if(AutoPurge > 0){
new DeleteBefore = GetTime() - (AutoPurge*86400);
Format(sQuery,sizeof(sQuery),"DELETE FROM army_ranks WHERE timestamp < '%d'",DeleteBefore);
SQL_TQuery(g_hSQLdb,SQL_OnDelete,sQuery);
}
for ( new i = 1; i <= MaxClients; ++i )
{
if ( IsClientInGame(i) )
{
OnClientPutInServer(i);
}
}
}
public SQL_OnDelete(Handle:owner, Handle:hndl, const String:error[], any:client)
{
if(hndl == INVALID_HANDLE)
{
LogError("[Army] Query Fail: %s", error);
return;
}
PrintToServer("[Army]: %d players purged by inactivity",SQL_GetAffectedRows(owner));
}Здесь весь плагинpublic OnClientPutInServer(iClient)
{
if (iClient && IsFakeClient(iClient) || IsClientSourceTV(iClient))
{
return;
}
decl String:sQuery[256];
#if SOURCEMOD_V_MINOR >= 7
GetClientAuthId(iClient, AuthId_Steam2, g_sAuth[iClient], sizeof(g_sAuth[]));
#endif
#if SOURCEMOD_V_MINOR < 7
GetClientAuthString(iClient, g_sAuth[iClient], sizeof(g_sAuth[]));
#endif
Format(sQuery, sizeof(sQuery), "SELECT `kills`, `deaths`,`irank` ,`timestamp` FROM `army_ranks` WHERE `auth` = '%s' LIMIT 1;", g_sAuth[iClient]);
SQL_TQuery(g_hSQLdb, SQLT_OnClientPutInServer, sQuery, GetClientUserId(iClient));
}
public SQLT_OnClientPutInServer(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if (!iClient)
{
return;
}
if (!hQuery)
{
LogError("SQLT_OnClientPutInServer: %s", sError);
g_bLoaded[iClient] = false;
}
decl String:sBuffer[255], String:sName[32], String:sName2[32];
GetClientName(iClient, sName, sizeof(sName));
if (SQL_FetchRow(hQuery))
{
// if(g_iRankType==0)
// {
g_iKills[iClient] = SQL_FetchInt(hQuery, 0);
g_iDeaths[iClient] = SQL_FetchInt(hQuery, 1);
// }
// else if(g_iRankType==1)
// {
// new stats[STATS_NAMES];
// RankMe_GetStats(iClient,stats);
// g_iKills[iClient] = stats[KILLS];
// g_iDeaths[iClient] = stats[DEATHS];
// }
g_iRank[iClient] = SQL_FetchInt(hQuery, 2);
g_bLoaded[iClient] = true;
}
else
{
decl String:sQuery[256];
SQL_EscapeString(g_hSQLdb, sName, sName2, sizeof(sName2));
Format(sQuery, sizeof(sQuery), "INSERT INTO `army_ranks` (`auth`, `name`, `kills`, `deaths`,`irank`,`timestamp`) VALUES ('%s', '%s', 0, 0, 0, 0)", g_sAuth[iClient], sName2);
SQL_TQuery(g_hSQLdb, SQLT_OnInsertClient, sQuery, GetClientUserId(iClient));
// if(g_iRankType==0)
// {
g_iKills[iClient] = 0;
g_iDeaths[iClient] = 0;
g_iRank[iClient] = 0;
// }
// else if(g_iRankType==1)
// {
// new stats[STATS_NAMES];
// RankMe_GetStats(iClient,stats);
// g_iKills[iClient] = stats[KILLS];
// g_iDeaths[iClient] = stats[DEATHS];
// }
}
if (g_iRank[iClient] < GetArraySize(g_hArray_iKills))
GetArrayString(g_hArray_sRanks, g_iRank[iClient], g_sRank[iClient], sizeof(g_sRank[]));
else
GetArrayString(g_hArray_sRanks, g_iRank[iClient] - 1, g_sRank[iClient], sizeof(g_sRank[]));
if (g_iRank[iClient] < GetArraySize(g_hArray_iKills) - 1)
g_iNextRankKills[iClient] = GetArrayCell(g_hArray_iKills, g_iRank[iClient] + 1);
/*Начало приветствия*/
// KvRewind(hKv);
if (g_bWelcomePanel)
{
new Handle:hWelcomePanel = CreatePanel();
Format(sBuffer, sizeof(sBuffer), "%T\n ", "welcome_title", iClient);
SetPanelTitle(hWelcomePanel, sBuffer);
Format(sBuffer, sizeof(sBuffer), "%T", "welcome_menu", iClient, sName, g_sRank[iClient], g_iKills[iClient], g_iDeaths[iClient]);
iParts = ReplaceString(sBuffer, sizeof(sBuffer), "\\n", "\n-");
if (iParts > 0)
{
decl String:sParts[iParts + 1][1000], i;
iParts = ExplodeString(sBuffer, "\n-", sParts, iParts + 1, 1000);
for (i = 0; i < iParts; ++i)
{
DrawPanelText(hWelcomePanel, sParts);
}
}
else
{
DrawPanelText(hWelcomePanel, sBuffer);
}
DrawPanelText(hWelcomePanel, "");
SetPanelCurrentKey(hWelcomePanel, 10);
DrawPanelItem(hWelcomePanel, "Выход");
SendPanelToClient(hWelcomePanel, iClient, Handle_WelcomePanel, g_WelcomePanelTime);
CloseHandle(hWelcomePanel);
/*Конец кода приветствия*/
}
g_hArrayInfoMenu[iClient] = CreateTrie();
ClearTrie(g_hArrayInfoMenu[iClient]);
Call_StartForward(OnPlayerConnect);
Call_PushCell(iClient);
Call_PushString(g_sRank[iClient]);
Call_PushCell(g_iKills[iClient]);
Call_PushCell(g_iDeaths[iClient]);
Call_Finish();
Вложения
Последнее редактирование: