Всем привет,пытаюсь написать небольшой скрипт статистики,который будет при вводе команды !week выводить топ 10 игроков из бд(топ игроков уже отсортирован в бд)
но знанинй мало,поэтому прошу помощи у вас)
всё что смог наковырять(
но знанинй мало,поэтому прошу помощи у вас)
PHP:
#include <sourcemod>
public Plugin:myinfo =
{
name = "Wins Stat",
author = "User",
description = "",
version = "1" ,
url = ""
};
new Handle:g_SQL = INVALID_HANDLE, bool:MYSQL;
public OnPluginStart()
{
RegConsoleCmd("week", week);
if (!SQL_CheckConfig("wins_stats"))
{
SetFailState("Секция \"wins_stats\" не найдена в databases.cfg");
return;
}
decl String:error[256];
g_SQL = SQL_Connect("wins_stats", true, error, 256);
if (g_SQL == INVALID_HANDLE)
{
LogError(error);
SetFailState("Не удалось установить SQL соединение");
return;
}
// тип соединения (mysql или sqlite)
new String:driver[15]; SQL_ReadDriver(g_SQL, driver, 15);
MYSQL = StrEqual(driver, "mysql", false);
LogMessage("Установлено %s соединение", MYSQL ? "MYSQL" : "SQLite");
// Забираем данные
if (!MYSQL)
{
SQL_TQuery(g_SQL, SQL_DefCallback, "SELECT id, week, name, steam_id, place, week_wins FROM wins ORDER BY place LIMIT 0, 10");
}
}
public SQL_DefCallback(Handle:owner, Handle:hndl, const String:error[], any:data)
{
if (hndl == INVALID_HANDLE) LogError(error);
}
public Action:week(client,args){
new String:arg1[5];
GetCmdArg(1,arg1,sizeof(arg1));
if(!StrEqual(arg1,"") && StringToInt(arg1) != 0){
ShowWeek(client,StringToInt(arg1));
} else {
ShowWeek(client,0);
}
return Plugin_Handled;
}
ShowWeek(client,at){
if(client == 0 || !IsClientInGame(client))
return;
new Handle:Datapack= CreateDataPack();
WritePackCell(Datapack,client);
if(at>0){
WritePackCell(Datapack,at-1);
} else {
WritePackCell(Datapack,0);
at = 1; // For not needing to build twice the query. (for at > 0 and at <= 0)
}
new String:query[300];
MakeSelectQuery(query,sizeof(query));
if(!MYSQL)
Format(query,sizeof(query),"SELECT id, week, name, steam_id, place, week_wins FROM wins ORDER BY place LIMIT 0, 10);
}
SQL_TQuery(g_hStatsDb,SQL_TopCallback,query,Datapack);
}