Junior Member
Join Date: Mar 2019
Location: On PC
|
03-08-2019
, 03:26
[Help] SRank
|
#1
|
Hello, I have such a problem, I use the SRank plugin and there is such a problem that when a new player joins the server, it will give him basically random points, kills, deaths, headshot, etc ... would you help me to make it random kills deaths etc ... but to create a mysql new account completely empty?
I apologize for my English: D
SRank.sp
PHP Code:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <cstrike>
#include "ShadowLibs/srank_mysql.sp"
new Handle:g_PointsPerKill;
new Handle:g_PointsPlant;
new Handle:g_PointsBonus;
int kd;
public OnPluginStart()
{
RunDataBaseSetUp();
RegConsoleCmd("sm_stats",Cmd_Stats);
RegConsoleCmd("sm_top",Cmd_Top);
HookEvent("player_death", OnPlayerDeath);
HookEvent("bomb_planted", OnBombPlant);
HookEvent("player_spawn", OnPlayerSpawn);
g_PointsPerKill = CreateConVar("srank_PointsPerKill","3","Amount of points given to a player per kill.");
g_PointsPlant = CreateConVar("srank_PointsForBombPlant","5","Amount of points given to a when they plant the bomb.");
g_PointsBonus = CreateConVar("srank_PointsBonus","3","Amount of points to be given on top of 'PointsPerKill' when player has done a special event etc 'Headshots'.");
AutoExecConfig(true,"Srank");
}
public Action:Cmd_Stats(client,args)
{
if(IsClientInGame(client))
{
SrankStatsMenu(client);
}
return Plugin_Handled;
}
public Action:Cmd_Top(client,args)
{
if(IsClientInGame(client))
{
//SrankTopMenu(client);
PrintToChat(client," \x02\x0C[AIM] \x02 Tento příkaz není dostupný.")
}
return Plugin_Handled;
}
SrankStatsMenu(client)
{
new Handle:panel = CreatePanel(INVALID_HANDLE);
new String:KillsFormat[512];
new String:DeathsFormat[512];
new String:PointsFormat[512];
new String:HeadshotsFormat[150];
new String:NameFormat[150];
new String:BombPlantFormat[150];
kd = PlayerKills[client] / PlayerDeaths[client];
new String:kdFormat[512];
Format(KillsFormat,sizeof(KillsFormat),"[%i]", PlayerKills[client]);
Format(HeadshotsFormat,sizeof(HeadshotsFormat),"[%i]", PlayerHeadShots[client]);
Format(DeathsFormat,sizeof(DeathsFormat),"[%i]", PlayerDeaths[client]);
Format(PointsFormat,sizeof(PointsFormat),"[%i]", PlayerPoints[client]);
Format(kdFormat,sizeof(kdFormat),"[%i]", kd);
Format(NameFormat,sizeof(NameFormat),"%s - [Stats]", PlayerName[client]);
PrintToChat(client, " \x04 ________________________________________________________");
PrintToChat(client, " Vaše zabití: %i Vaše umrtí: %i Vaše HeadShots: %i",PlayerKills[client],PlayerDeaths[client],PlayerHeadShots[client]);
PrintToChat(client, " Vaše pointy: %i Vaše K/D: %i", PlayerPoints[client], kd);
if(PlayerPoints[client] >= 10000)
{
PrintToChat(client, " Váš rank: LEGENDA!");
}
else if(PlayerPoints[client] >= 5000)
{
PrintToChat(client, " Váš rank: The Global Elite");
}
if(PlayerPoints[client] >= 4000)
{
PrintToChat(client, " Váš rank: Supreme Master First Class");
}
else if(PlayerPoints[client] >= 3500)
{
PrintToChat(client, " Váš rank: Legendary Eagle Master");
}
else if(PlayerPoints[client] >= 2800)
{
PrintToChat(client, " Váš rank: Distinguished Master Guardian");
}
else if(PlayerPoints[client] >= 2450)
{
PrintToChat(client, " Váš rank: Master Guardian Elite");
}
else if(PlayerPoints[client] >= 2250)
{
PrintToChat(client, " Váš rank: Master Guardian II");
}
else if(PlayerPoints[client] >= 2000)
{
PrintToChat(client, " Váš rank: Master Guardian I");
}
else if(PlayerPoints[client] >= 1500)
{
PrintToChat(client, " Váš rank: Gold Nova Master");
}
else if(PlayerPoints[client] >= 1100)
{
PrintToChat(client, " Váš rank: Gold Nova III");
}
else if(PlayerPoints[client] >= 950)
{
PrintToChat(client, " Váš rank: Gold Nova II");
}
else if(PlayerPoints[client] >= 800)
{
PrintToChat(client, " Váš rank: Gold Nova I");
}
else if(PlayerPoints[client] >= 650)
{
PrintToChat(client, " Váš rank: Silver Elite Master");
}
else if(PlayerPoints[client] >= 500)
{
PrintToChat(client, " Váš rank: Silver Elite");
}
else if(PlayerPoints[client] >= 300)
{
PrintToChat(client, " Váš rank: Silver IV");
}
else if(PlayerPoints[client] >= 250)
{
PrintToChat(client, " Váš rank: Silver III");
}
else if(PlayerPoints[client] >= 200)
{
PrintToChat(client, " Váš rank: Silver II");
}
else if(PlayerPoints[client] >= 0)
{
PrintToChat(client, " Váš rank: Silver I");
}
PrintToChat(client, " \x04 ________________________________________________________");
}
public OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new client_id = GetEventInt(event, "userid");
new client = GetClientOfUserId(client_id);
new String:KillsFormat[512];
new String:DeathsFormat[512];
new String:PointsFormat[512];
new String:HeadshotsFormat[150];
new String:NameFormat[150];
new String:BombPlantFormat[150];
kd = PlayerKills[client] / PlayerDeaths[client];
new String:kdFormat[512];
Format(KillsFormat,sizeof(KillsFormat),"[%i]", PlayerKills[client]);
Format(HeadshotsFormat,sizeof(HeadshotsFormat),"[%i]", PlayerHeadShots[client]);
Format(DeathsFormat,sizeof(DeathsFormat),"[%i]", PlayerDeaths[client]);
Format(PointsFormat,sizeof(PointsFormat),"[%i]", PlayerPoints[client]);
Format(kdFormat,sizeof(kdFormat),"[%i]", kd);
Format(NameFormat,sizeof(NameFormat),"%s - [Stats]", PlayerName[client]);
if(PlayerPoints[client] >= 10000)
{
CS_SetClientClanTag(client, "LEGENDA!");
}
else if(PlayerPoints[client] >= 5000)
{
CS_SetClientClanTag(client, "The Global Elite");
}
if(PlayerPoints[client] >= 4000)
{
CS_SetClientClanTag(client, "Supreme");
}
else if(PlayerPoints[client] >= 3500)
{
CS_SetClientClanTag(client, "Legendary Eagle Master");
}
else if(PlayerPoints[client] >= 2800)
{
CS_SetClientClanTag(client, "DMG");
}
else if(PlayerPoints[client] >= 2450)
{
CS_SetClientClanTag(client, "Master Guardian E.");
}
else if(PlayerPoints[client] >= 2250)
{
CS_SetClientClanTag(client, "Master Guardian II");
}
else if(PlayerPoints[client] >= 2000)
{
CS_SetClientClanTag(client, "Master Guardian I");
}
else if(PlayerPoints[client] >= 1500)
{
CS_SetClientClanTag(client, "Gold N. M.");
}
else if(PlayerPoints[client] >= 1100)
{
CS_SetClientClanTag(client, "Gold III");
}
else if(PlayerPoints[client] >= 950)
{
CS_SetClientClanTag(client, "Gold II");
}
else if(PlayerPoints[client] >= 800)
{
CS_SetClientClanTag(client, "Gold I");
}
else if(PlayerPoints[client] >= 650)
{
CS_SetClientClanTag(client, "Silver E. M.");
}
else if(PlayerPoints[client] >= 500)
{
CS_SetClientClanTag(client, "Silver Elite");
}
else if(PlayerPoints[client] >= 300)
{
CS_SetClientClanTag(client, "Silver IV");
}
else if(PlayerPoints[client] >= 250)
{
CS_SetClientClanTag(client, "Silver III");
}
else if(PlayerPoints[client] >= 200)
{
CS_SetClientClanTag(client, "Silver II");
}
else if(PlayerPoints[client] >= 0)
{
CS_SetClientClanTag(client, "Silver I");
}
}
public StatsHandle(Handle:menu, MenuAction:action, param1, param2)
{
switch(action)
{
case MenuAction_Select:
{
decl String:info[32];
GetMenuItem(menu, param2, info, sizeof(info));
if (StrEqual(info, "Close"))
{
PrintToChat(param1,"\x02\x0C[AIM] \x02 Panel statistik byl uzavřen.")
}
}
}
}
public OnClientPutInServer(client)
{
SrankLoad(client);
}
public OnClientDisconnect(client)
{
SrankSave(client);
}
public SrankSave(client)
{
if (!IsClientInGame(client))
return;
new String:query[400], String:auth[400];
GetClientAuthString(client, auth, sizeof(auth));
GetClientName(client, PlayerName[client],sizeof(PlayerName));
Format(query, sizeof(query), "UPDATE srank2 SET name = %d,kills = %d,deaths = %d,headshots = %d, points = %d WHERE steamid = '%s'",PlayerName[client],PlayerKills[client],PlayerDeaths[client],PlayerHeadShots[client],PlayerPoints[client],auth);
SQL_TQuery(hDatabase, Srank_Save, query, client);
}
public SrankLoad(client)
{
new String:query[400], String:auth[400];
GetClientAuthString(client, auth, sizeof(auth));
Format(query, sizeof(query), "SELECT * FROM srank2 WHERE steamid = '%s'", auth);
SQL_TQuery(hDatabase, Srank_Load, query, client);
}
public OnPlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
new victimId = GetEventInt(event, "userid")
new attackerId = GetEventInt(event, "attacker")
new bool:headshot = GetEventBool(event, "headshot")
new victim = GetClientOfUserId(victimId)
new attacker = GetClientOfUserId(attackerId)
new String:VictimName[100]
new String:AttackerName[100]
GetClientName(victim, VictimName,sizeof(VictimName));
GetClientName(attacker, AttackerName,sizeof(AttackerName));
PlayerDeaths[victim]++;
PrintToChat(victim,"\x02\x0C[AIM] \x07 %s \x02 byl jsi zabit \x07 %s",VictimName,AttackerName);
PrintToChat(victim,"\x02\x0C[AIM] \x07 %s \x02 ztratil jsi \x07 3 Points za smrt",VictimName);
PlayerPoints[victim] -= 6 - GetConVarInt(g_PointsBonus);
if(headshot)
{
PlayerHeadShots[attacker]++;
PlayerPoints[attacker] += GetConVarInt(g_PointsPerKill) + GetConVarInt(g_PointsBonus);
PrintToChat(attacker,"\x02\x0C[AIM] \x02 Získal jsi \x07 %i \x02 pointu za headshot!",GetConVarInt(g_PointsPerKill) + GetConVarInt(g_PointsBonus));
}
else
{
PlayerKills[attacker]++;
PlayerPoints[attacker] += GetConVarInt(g_PointsPerKill);
PrintToChat(attacker,"\x02\x0C[AIM] \x02 Získal jsi \x07%i \x02 pointu za kill!",GetConVarInt(g_PointsPerKill));
}
SrankSave(attacker);
SrankSave(victim);
}
public OnBombPlant(Handle:event, const String:name[], bool:dontBroadcast)
{
new clientID = GetEventInt(event, "userid")
new client = GetClientOfUserId(clientID)
if(GetClientTeam(client) == CS_TEAM_T)
{
PlayerPoints[client] += GetConVarInt(g_PointsPlant);
PlayerBombPlant[client] += 1;
PrintToChat(client,"\x02\x0C[AIM] \x02 Získal jsi \x07%i \x02 za plant bomby!",GetConVarInt(g_PointsPlant));
SrankSave(client);
}
}
srank_mysql.sp
PHP Code:
///////////////////////////////////////////////
new Handle:hDatabase = INVALID_HANDLE;
static String:DBERROR[600];
////////////////////////////////////////////////
new String:PlayerName[MAXPLAYERS+1];
new PlayerKills[MAXPLAYERS+1];
new PlayerDeaths[MAXPLAYERS+1];
new PlayerHeadShots[MAXPLAYERS+1];
new PlayerPoints[MAXPLAYERS+1];
new PlayerBombPlant[MAXPLAYERS+1];
public RunDataBaseSetUp()
{
hDatabase = SQL_Connect("SRank", true, DBERROR, sizeof(DBERROR));
if(hDatabase == INVALID_HANDLE)
{
SQL_GetError(hDatabase, DBERROR, sizeof(DBERROR));
SetFailState("\n\n[ERROR:1-a] Connection to the database has failed-: %s\n\n", DBERROR);
}
SQL_Query(hDatabase, "CREATE TABLE IF NOT EXISTS srank2(steamid VARCHAR(255) NOT NULL PRIMARY KEY, name VARCHAR(255) NOT NULL, kills INT(255) NOT NULL, deaths INT(255) NOT NULL, headshots INT(255) NOT NULL, points INT(255) NOT NULL, bombplant INT(255) NOT NULL);");
//CloseHandle(db);
}
public Srank_Load(Handle:owner, Handle:hndl, const String:error[], any:client)
{
if (!IsClientInGame(client))
return;
if (hndl == INVALID_HANDLE)
{
PrintToServer("SQL Load failed.");
return;
}
if (SQL_GetRowCount(hndl) == 0)
{
new String:query[300], String:auth[400];
GetClientAuthString(client, auth, sizeof(auth));
Format(query, sizeof(query), "INSERT IGNORE INTO srank2 (steamid) VALUES ('%s')", auth);
SQL_TQuery(hDatabase, Srank_CreateAccount, query, client);
}
else
{
SQL_FetchRow(hndl);
PlayerName[client] = SQL_FetchString(hndl, 1, PlayerName[client], sizeof(PlayerName));
PlayerKills[client] = SQL_FetchInt(hndl, 2);
PlayerDeaths[client] = SQL_FetchInt(hndl, 3);
PlayerHeadShots[client] = SQL_FetchInt(hndl, 4);
PlayerPoints[client] = SQL_FetchInt(hndl, 5);
PlayerBombPlant[client] = SQL_FetchInt(hndl, 6);
}
PrintToChat(client, "\x02\x0C[Deathmatch] \x06Váš profil byl načten.");
}
public Srank_CreateAccount(Handle:owner, Handle:hndl, const String:error[], any:client)
{
if (!IsClientConnected(client))
{
return;
}
if (!IsClientInGame(client))
{
return;
}
PrintToChat(client, "\x02\x0C[Deathmatch] \x06Váš profil byl načten.");
}
public Srank_Save(Handle:owner, Handle:hndl, const String:error[], any:client)
{
}
|
|