Senior Member
Join Date: Feb 2019
Location: Iran
|
09-23-2023
, 16:54
Re: Remove the registration system
|
#3
|
Wrong translation :/
The whole plugin is huge and divided into different sections
Sections related to registration
sqlFile
PHP Code:
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fun >
#include < fakemeta >
#include < fakemeta_util >
#include < engine >
#include < csx >
#include < fvault >
#include < http2 >
#include < xs >
#include < sockets >
#include < sqlx >
public plugin_init_sql(){
register_clcmd("clearData", "clearDataMenu");
new host[64], user[64], pass[64], db[64], error[128], errorNum;
get_cvar_string("bb_sql_host", host, sizeof(host) - 1);
get_cvar_string("bb_sql_user", user, sizeof(user) - 1);
get_cvar_string("bb_sql_pass", pass, sizeof(pass) - 1);
get_cvar_string("bb_sql_db", db, sizeof(db) - 1);
sql = SQL_MakeDbTuple(host, user, pass, db);
connection = SQL_Connect(sql, errorNum, error, sizeof(error));
if (errorNum) {
log_amx("[SQL-LOG] Blad zapytania.[%d] %s", errorNum, error);
sql = Empty_Handle;
set_task(5.0, "plugin_init_sql");
return;
}
log_amx("Polaczono z baza danych");
new queryData[1536];
new Handle:query;
static const endLine[] = "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;";
format(queryData, sizeof(queryData),
"CREATE TABLE IF NOT EXISTS `players`( \
`idplayer` INT NOT NULL AUTO_INCREMENT, \
`name` varchar(33) NOT NULL, \
`pass` varchar(12) NOT NULL DEFAULT '_', \
`kills` INT NOT NULL DEFAULT 0, \
`deaths` INT NOT NULL DEFAULT 0, \
`points` INT NOT NULL DEFAULT 0, \
`timePlay` INT NOT NULL DEFAULT 0, \
`firstlogin` DATETIME DEFAULT NOW(), \
`lastlogin` DATETIME DEFAULT NOW(), \
`maxDamage` INT NOT NULL DEFAULT 0, \
`clan` INT NOT NULL DEFAULT 0, \
`flag` INT NOT NULL DEFAULT 0, \
`clannugget` INT NOT NULL DEFAULT 0, \
`ipLogin` varchar(32) NOT NULL DEFAULT '_', \
`sidLogin` varchar(35) NOT NULL DEFAULT '_', \
`nuggets` INT NOT NULL DEFAULT 45, \
`bones` INT NOT NULL DEFAULT 10, \
`level` INT NOT NULL DEFAULT 1, \
`xp` FLOAT NOT NULL DEFAULT '0.00', \
`reset` INT NOT NULL DEFAULT 0, \
PRIMARY KEY (`idplayer`)) %s", endLine
);
query = SQL_PrepareQuery(connection, queryData);
SQL_Execute(query);
format(queryData, sizeof(queryData),
"CREATE TABLE IF NOT EXISTS `clans` ( \
`idclans` INT NOT NULL AUTO_INCREMENT, \
`createDate` DATETIME DEFAULT NOW(), \
`name` varchar(64) NOT NULL, \
`info` varchar(42) NOT NULL DEFAULT 'Brak Ogloszenia', \
`members` INT NOT NULL DEFAULT 0, \
`nugget` INT NOT NULL DEFAULT 0, \
`kills` INT NOT NULL DEFAULT 0, \
`level` INT NOT NULL DEFAULT 0, \
`points` INT NOT NULL DEFAULT 0, \
`health` INT NOT NULL DEFAULT 0, \
`expDrop` INT NOT NULL DEFAULT 0, \
`nuggetDrop` INT NOT NULL DEFAULT 0, \
`critic` INT NOT NULL DEFAULT 0, \
`damagePlayer` INT NOT NULL DEFAULT 0, \
`damageClass` INT NOT NULL DEFAULT 0, \
`cooldown` INT NOT NULL DEFAULT 0, \
`idmotd` varchar(20) NOT NULL DEFAULT '_', \
`upgradetime` INT NOT NULL DEFAULT 0, \
PRIMARY KEY (`idclans`)) %s", endLine
);
query = SQL_PrepareQuery(connection, queryData);
SQL_Execute(query);
format(queryData, sizeof(queryData),
"CREATE TABLE IF NOT EXISTS `warnings`( \
`idwarning` INT NOT NULL AUTO_INCREMENT, \
`desc` varchar(64) NOT NULL, \
`idplayer` INT NOT NULL, \
`idadmin` INT NOT NULL, \
`time` varchar(33) NOT NULL,\
`map` varchar(33) NOT NULL, \
PRIMARY KEY (`idwarning`)) %s", endLine
);
query = SQL_PrepareQuery(connection, queryData);
SQL_Execute(query);
format(queryData, sizeof(queryData),
"CREATE TABLE IF NOT EXISTS `classzombies`( \
`idplayer` INT NOT NULL, \
`idclass` INT NOT NULL, \
`heatlh` INT UNSIGNED NOT NULL DEFAULT 0, \
`speed` INT UNSIGNED NOT NULL DEFAULT 0, \
`reduction` INT UNSIGNED NOT NULL DEFAULT 0, \
PRIMARY KEY (`idplayer`, `idclass`)) %s", endLine
);
query = SQL_PrepareQuery(connection, queryData);
SQL_Execute(query);
format(queryData, sizeof(queryData),
"CREATE TABLE IF NOT EXISTS `classhumans`( \
`idplayer` INT NOT NULL, \
`idclass` INT NOT NULL, \
`level` INT NOT NULL DEFAULT 1, \
`xp` FLOAT NOT NULL, \
PRIMARY KEY (`idplayer`, `idclass`)) %s", endLine
);
query = SQL_PrepareQuery(connection, queryData);
SQL_Execute(query);
format(queryData, sizeof(queryData),
"CREATE TABLE IF NOT EXISTS `weapons`( \
`idplayer` INT NOT NULL, \
`idweapon` INT NOT NULL, \
`nameweapon` varchar(64) NOT NULL, \
`kills` INT NOT NULL DEFAULT 0, \
`hs` INT NOT NULL DEFAULT 0, \
`level` INT NOT NULL DEFAULT 0, \
`damage` FLOAT NOT NULL DEFAULT '0.00', \
PRIMARY KEY (`idplayer`, `idweapon`)) %s", endLine
);
query = SQL_PrepareQuery(connection, queryData);
SQL_Execute(query);
format(queryData, sizeof(queryData),
"CREATE TABLE IF NOT EXISTS `mutedplayers`( \
`idmute` INT(11) AUTO_INCREMENT, \
`nameplayer` VARCHAR(33) NOT NULL, \
`mutedplayer` VARCHAR(33) NOT NULL, \
PRIMARY KEY (`idmute`)) %s", endLine
);
query = SQL_PrepareQuery(connection, queryData);
SQL_Execute(query);
SQL_FreeHandle(query);
sqlConnected = true;
}
public loadStatsSql(id, typeLoad){
if(is_user_hltv(id)) return PLUGIN_CONTINUE;
if (!sqlConnected) {
log_amx("[SQL-LOG] Brak polaczenia");
return PLUGIN_CONTINUE;
}
new queryData[256];
new tempId[2];
tempId[0] = id;
tempId[1] = typeLoad;
switch(typeLoad){
case 0:{
if(!isPlayer(id)) return PLUGIN_CONTINUE;
format( queryData, sizeof(queryData), "\
SELECT * \
FROM `players` \
WHERE `name`='%s'", userName[id]);
}
case 1: format(queryData, sizeof(queryData), "\
SELECT `name`, `kills`, `deaths`, `points` \
FROM `players` \
WHERE 1 \
ORDER BY `points` \
DESC LIMIT 10");
case 2: format(queryData, sizeof(queryData), "\
SELECT rank, count \
FROM (SELECT COUNT(*) as count \
FROM `players`) a \
CROSS JOIN (SELECT COUNT(*) as rank \
FROM `players` \
WHERE `points` > '%d' \
ORDER BY `points` DESC) b", userPoints[id]);
case 3: format(queryData, sizeof(queryData), "\
SELECT `name`, `timePlay` \
FROM `players` \
WHERE 1 \
ORDER BY `timePlay` \
DESC LIMIT 10");
case 4: format(queryData, sizeof(queryData), "\
SELECT a.flag, b.*\
FROM `players` a \
JOIN `clans` b \
ON a.clan = b.idclans \
WHERE a.name = '%s'", userName[id]);
case 5: format(queryData, sizeof(queryData), "\
SELECT name, members, kills, level, createDate \
FROM `clans` \
ORDER BY kills \
DESC LIMIT 10");
case 6: format(queryData, sizeof(queryData), "\
SELECT name, clannugget \
FROM `players` \
WHERE clan = '%d' \
AND clannugget > 0 \
ORDER BY clannugget DESC", clan[id]);
case 7: format(queryData, sizeof(queryData), "\
SELECT a.idclans AS 'idclan', a.name AS 'clan', b.name \
FROM `clans` a \
JOIN `players` b \
ON a.idclans = b.clan \
WHERE flag = '%d' \
ORDER BY a.kills DESC", STATUS_LEADER);
case 8: format(queryData, sizeof(queryData), "\
SELECT *\
FROM `players` \
WHERE clan = '%d' \
ORDER BY flag DESC", clan[id]);
case 9: format(queryData, sizeof(queryData), "\
SELECT COUNT(*) \
FROM `warnings` \
WHERE `idplayer`='%d';", userSqlId[id]);
case 10: format(queryData, sizeof(queryData), "\
SELECT `idwarning`, `desc`, `time` \
FROM `warnings` \
WHERE `idplayer`='%d' \
ORDER BY `idwarning` ASC", userSqlId[userWarningInfo[id]]);
case 11: format( queryData, sizeof(queryData), "\
SELECT * \
FROM `classzombies` \
WHERE `idplayer`='%d'", userSqlId[id]);
case 12: format( queryData, sizeof(queryData), "\
SELECT * \
FROM `classhumans` \
WHERE `idplayer`='%d'", userSqlId[id]);
case 13: format(queryData, sizeof(queryData), "\
SELECT `name`, `level`, `xp`, `reset` \
FROM `players` \
WHERE 1 \
ORDER BY `level` DESC, `xp` \
DESC LIMIT 10");
case 14: format(queryData, sizeof(queryData), "\
SELECT `classhumans`.*, `playerName`.`name` AS `gracz` \
FROM `classhumans` \
LEFT JOIN `players` AS `playerName` ON `classhumans`.`idplayer` = `playerName`.`idplayer` \
WHERE 1 \
ORDER BY `level` DESC, `xp` \
DESC LIMIT 10");
case 15: format(queryData, sizeof(queryData), "\
SELECT `name`, `maxDamage` \
FROM `players` \
WHERE 1 \
ORDER BY `maxDamage` \
DESC LIMIT 10");
case 16: format(queryData, sizeof(queryData), "\
SELECT rank, count \
FROM (SELECT COUNT(*) as count FROM `players`) a \
CROSS JOIN (SELECT COUNT(*) as rank \
FROM `players` \
WHERE `points` > '%d' \
ORDER BY `points` DESC) b", userPoints[id]);
case 17: format( queryData, sizeof(queryData), "\
SELECT * \
FROM `weapons` \
WHERE `idplayer`='%d'", userSqlId[id]);
case 18: format(queryData, sizeof(queryData), "\
SELECT `weapons`.*, `playerName`.`name` AS `gracz` \
FROM `weapons` \
LEFT JOIN `players` AS `playerName` ON `weapons`.`idplayer` = `playerName`.`idplayer` \
WHERE 1 \
ORDER BY `kills` \
DESC LIMIT 10");
case 19: format(queryData, sizeof(queryData), "\
SELECT \
* FROM `mutedplayers` \
WHERE nameplayer = ^"%s^"", userName[id]);
}
SQL_ThreadQuery(sql, "loadStatsHandlerSql", queryData, tempId, sizeof(tempId));
return PLUGIN_CONTINUE;
}
public loadStatsHandlerSql(failState, Handle:query, error[], errorNum, tempId[], dataSize){
new id = tempId[0];
new typeLoad = tempId[1];
if (failState){
if (failState == TQUERY_CONNECT_FAILED) log_amx("[SQL-LOG] Nie mozna polaczyc si********* z baz********* danych SQL. Blad: %s (%d)", error, errorNum);
else if (failState == TQUERY_QUERY_FAILED)log_amx("[SQL-LOG] Zapytanie watkowe nie powiodlo sie. Blad: %s (%d)", error, errorNum);
return PLUGIN_HANDLED;
}
switch(typeLoad){
case 0:{
if( !SQL_MoreResults(query) ){
new queryData[128], tempId[2];
format(queryData, sizeof(queryData), "INSERT INTO `players` (`name`, `pass`,`firstlogin`) VALUES ('%s', '_', NOW())",userName[id]);
SQL_ThreadQuery(sql, "saveStatsHandlerSql", queryData, tempId, sizeof(tempId));
loadStatsSql(id, 0);
} else {
userTime[id] = playedTime(id);
new szPassword[12];
new szDate[33];
userSqlId[id] = SQL_ReadResult(query, 0);
SQL_ReadResult(query, 2, szPassword, sizeof(szPassword)-1);
replace_all(szPassword, sizeof(szPassword), " ", "");
new szIp[MAXBITIP], szSid[MAXBITAUTHID];
SQL_ReadResult(query, 13, szIp, sizeof(szIp)-1);
SQL_ReadResult(query, 14, szSid, sizeof(szSid)-1);
userIp[id] = szIp;
userSid[id] = szSid;
if( strlen(szPassword) > 1 ){
copy( userPassword[id], sizeof(userPassword[])-1, szPassword);
new szSavedIP[MAXBITIP], szSavedSID[MAXBITAUTHID];
get_user_ip(id, szSavedIP, sizeof(szSavedIP)-1, 1);
get_user_authid(id, szSavedSID, sizeof(szSavedSID)-1);
if( equal(szSavedIP, szIp ) && equal(szSavedSID, szSid ) ){
userLogged[id]=true;
chatPrint(id, PREFIX_NORMAL, "Zostales zalogowany automatycznie!");
}else{
userLogged[id]=false;
}
}else{
userLogged[id]=false;
}
userKills[id] = SQL_ReadResult(query, 3);
userDeaths[id] = SQL_ReadResult(query, 4);
userPoints[id] = SQL_ReadResult(query, 5);
userTime[id] = SQL_ReadResult(query, 6);
SQL_ReadResult(query, 7, szDate, sizeof(szDate)-1);
userFirstLogin[id] = szDate;
userMaxDmg[id] = SQL_ReadResult(query, 9);
userNugget[id] = SQL_ReadResult(query, 15);
userBone[id] = SQL_ReadResult(query, 16);
userLevel[id] = SQL_ReadResult(query, 17);
new Float:XP;
SQL_ReadResult(query, 18, XP);
userReset[id] = SQL_ReadResult(query, 19);
userExp[id] = XP;
refreshStats(id);
userLoaded[id] = true;
saveStatsSql(id, 0);
fVaultLoad(id);
loadStatsSql(id, 4); // KLANY
loadStatsSql(id, 9); // OSTRZEZENIA
loadStatsSql(id, 11); // KLASY ZOMBIE
loadStatsSql(id, 12); // KLASY LUDZI
loadStatsSql(id, 17); // BRONIE
loadStatsSql(id, 19); // MUTE
}
}
case 1:{
static iStats[3], szName[33];
static gText[2048], iLen, top;
top=0;
iLen = format(gText[iLen], sizeof(gText)-iLen-1, "<head><link href=^"https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700^" rel=^"stylesheet^"></head>");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<style type=^"text/css^">\
*{ font-size: 15px; font-family: Montserrat; color: white; text-align: center; padding: 0; margin: 0;}\
body{border: 1px solid %s; background: #111}\
b{color:%s; text-shadow: 0 0 5px %s;}\
</style>",accentMotdColor,accentMotdColor,accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<p>TOP 10 graczy!</p><hr size=1 color=%s>",accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<table style=^"margin-top: 20px;margin-left: auto;margin-right: auto;width:710%^">");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<tr><td><b>#</b></td><td><b>Nazwa</b></td><td><b>Zabici</b></td><td><b>Zgony</b></td><td><b>Punkty</b></td><td><b>Stosunek</b></td></tr></br>");
while(SQL_MoreResults(query)){
top ++;
SQL_ReadResult(query, 0, szName, sizeof(szName));
replace_all(szName, sizeof(szName), "<", "");
replace_all(szName, sizeof(szName), ">", "");
replace_all(szName, sizeof(szName), "%", "%%");
for( new i = 0; i < 3; i++) iStats[i]=SQL_ReadResult(query, i+1);
static Float:deathToKills;
deathToKills=float(iStats[0])/float(iStats[1]);
if(iStats[2] > 0 )
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<tr><td>%d</td><td>%s</td><td>%d</td><td>%d</td><td>%d</td><td>%0.2f</td></tr>",top, szName,iStats[0],iStats[1],iStats[2], deathToKills);
SQL_NextRow(query);
}
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "</table>");
show_motd(id, gText, "Top 10 Graczy");
}
case 2:{
static rank, count;
rank = SQL_ReadResult(query, SQL_FieldNameToNum(query, "rank")) + 1;
count = SQL_ReadResult(query, SQL_FieldNameToNum(query, "count"));
chatPrint(id, PREFIX_LINE, "Twoj ranking:^3 %d/%d^4 |^1 Twoje punkty:^3 %d^4 |^1 Kile:^3 %d^4 /^1 Dedy:^3 %d",rank,count, userPoints[id] ,userKills[id], userDeaths[id] );
}
case 3:{
static szTime, szName[33];
static gText[2048], iLen, top;
top=0;
iLen = format(gText[iLen], sizeof(gText)-iLen-1, "<head><link href=^"https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700^" rel=^"stylesheet^"></head>");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<style type=^"text/css^">\
*{ font-size: 15px; font-family: Montserrat; color: white; text-align: center; padding: 0; margin: 0;}\
body{border: 1px solid %s; background: #111}\
b{color:%s; text-shadow: 0 0 5px %s;}\
</style>",accentMotdColor,accentMotdColor,accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<p>Twoj laczny czas na serwerze</p>");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<p><b>%d</b> godz <b>%s%d</b> min<b> %s%d</b> sek</p>",playedTime(id)/HOUR, (playedTime(id)/MINUTE)<10?"0":"",playedTime(id)/MINUTE%MINUTE, playedTime(id)%MINUTE<10?"0":"", playedTime(id)%MINUTE);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<hr size=1 color=%s>", accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<p>TOP 10 graczy!</p><hr size=1 color=%s>", accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<table style=^"margin-top: 20px;margin-left: auto;margin-right: auto;width:710%^">");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<tr><td><b>#</b></td><td><b>Nazwa</b></td><td><b>Czas</b></td></tr></br>");
while(SQL_MoreResults(query)){
top ++;
SQL_ReadResult(query, 0, szName, sizeof(szName));
szTime = SQL_ReadResult(query, 1);
replace_all(szName, sizeof(szName), "<", "");
replace_all(szName, sizeof(szName), ">", "");
replace_all(szName, sizeof(szName), "%", "%%");
if(szTime > 0)
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<tr><td>%d</td><td>%s</td><td>%d<b> godz</b> %s%d<b> min</b> %s%d<b> sek</b></td></tr>",top, szName,szTime/HOUR, (szTime/MINUTE)<10?"0":"",szTime/MINUTE%MINUTE,szTime%MINUTE<10?"0":"", szTime%MINUTE);
SQL_NextRow(query);
}
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "</table>");
show_motd(id, gText, "Info Czasu");
}
case 4:{
if (SQL_MoreResults(query)) {
new bbClan[clanInfo];
bbClan[CLAN_ID] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "idclans"));
if (!check_clan_loaded(bbClan[CLAN_ID]))
{
SQL_ReadResult(query, SQL_FieldNameToNum(query, "name"), bbClan[CLAN_NAME], sizeof(bbClan[CLAN_NAME]));
SQL_ReadResult(query, SQL_FieldNameToNum(query, "info"), bbClan[CLAN_INFO], sizeof(bbClan[CLAN_INFO]));
SQL_ReadResult(query, SQL_FieldNameToNum(query, "idmotd"), bbClan[CLAN_MOTD], sizeof(bbClan[CLAN_MOTD]));
bbClan[CLAN_UPGRADETIME] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "upgradetime"));
bbClan[CLAN_LEVEL] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "level"));
bbClan[CLAN_POINTS] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "points"));
bbClan[CLAN_NUGGET] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "nugget"));
bbClan[CLAN_HEALTH] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "health"));
bbClan[CLAN_DAMAGECLASS] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "damageClass"));
bbClan[CLAN_DAMAGEPLAYER] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "damagePlayer"));
bbClan[CLAN_CRITIC] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "critic"));
bbClan[CLAN_KILLS] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "kills"));
bbClan[CLAN_EXPDROP] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "expDrop"));
bbClan[CLAN_NUGGETDROP] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "nuggetDrop"));
bbClan[CLAN_COOLDOWN] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "cooldown"));
bbClan[CLAN_MEMBERS] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "members"));
bbClan[CLAN_STATUS] = _:TrieCreate();
ArrayPushArray(bbClans, bbClan);
}
clan[id] = bbClan[CLAN_ID];
new status = SQL_ReadResult(query, SQL_FieldNameToNum(query, "flag"));
TrieSetCell(Trie:get_clan_info(clan[id], CLAN_STATUS), userName[id], status);
}
}
case 5:{
static clanName[64], members, kills, level, dateCreate[64];
static gText[2048], iLen, top;
clanName = "", dateCreate = "";
top=0;
iLen = format(gText[iLen], sizeof(gText)-iLen-1, "<head><link href=^"https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700^" rel=^"stylesheet^"></head>");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "\
<style>\
*{ font-size: 16px; font-family: Montserrat; color: white; text-align: center; padding: 0; margin: 0;}\
body{border: 1px solid %s; background: #111}\
b{color:%s; text-shadow: 0 0 5px %s;}\
</style>",accentMotdColor,accentMotdColor,accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<p>Top 10 Klanow!</p><hr size=1 color=%s>",accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<table style=^"margin-top: 20px;margin-left: auto;margin-right: auto;width:710%^">");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<tr><td><b>#</b></td><td><b>Nazwa</b></td><td><b>Czlonkowie</b></td><td><b>Poziom</b></td><td><b>Zabojstwa</b></td><td><b>Data Zalozenia</b></td></tr></br>");
while(SQL_MoreResults(query)){
top ++;
SQL_ReadResult(query, 0, clanName, sizeof(clanName));
members = SQL_ReadResult(query, 1);
kills = SQL_ReadResult(query, 2);
level = SQL_ReadResult(query, 3);
SQL_ReadResult(query, 4, dateCreate, sizeof(dateCreate));
replace_all(clanName, sizeof(clanName), "<", "");
replace_all(clanName, sizeof(clanName), ">", "");
replace_all(clanName, sizeof(clanName), "%", "%%");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<tr><td>%d</td><td>%s</td><td>%d</td><td>%d</td><td>%d</td><td>%s</td></tr>",top, clanName, members, level, kills, dateCreate);
SQL_NextRow(query);
}
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "</table>");
show_motd(id, gText, "Top 10 Klanow");
}
case 6:{
static nugget, szName[33];
static gText[2048], iLen, top;
top=0;
iLen = format(gText[iLen], sizeof(gText)-iLen-1, "<head><link href=^"https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700^" rel=^"stylesheet^"></head>");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "\
<style>\
*{ font-size: 16px; font-family: Montserrat; color: white; text-align: center; padding: 0; margin: 0;}\
body{border: 1px solid %s; background: #111}\
b{color:%s; text-shadow: 0 0 5px %s;}\
</style>",accentMotdColor,accentMotdColor,accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<p>Lista Wplacajacych!</p><hr size=1 color=%s>",accentMotdColor);
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<table style=^"margin-top: 20px;margin-left: auto;margin-right: auto;width:710%^">");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<tr><td><b>#</b></td><td><b>Nazwa</b></td><td><b>Brylki</b></td></tr></br>");
while(SQL_MoreResults(query)){
top ++;
SQL_ReadResult(query, 0, szName, sizeof(szName));
nugget = SQL_ReadResult(query, 1);
replace_all(szName, sizeof(szName), "<", "");
replace_all(szName, sizeof(szName), ">", "");
replace_all(szName, sizeof(szName), "%", "%%");
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "<tr><td>%d</td><td>%s</td><td>%s</td></tr>",top, szName,formatNumber(nugget));
SQL_NextRow(query);
}
iLen += format(gText[iLen], sizeof(gText)-iLen-1, "</table>");
show_motd(id, gText, "Lista Wplacajacych");
}
case 7:{
static gText[128], clanName[33], szName[33], count;
clanName = "", count = 0;
format(gText, sizeof(gText), "\r[BaseBuilder]\y Lista Klanow!\d ");
new menu = menu_create(gText, "listClanMenu_2");
while (SQL_MoreResults(query)) {
SQL_ReadResult(query, SQL_FieldNameToNum(query, "clan"), clanName, sizeof(clanName));
SQL_ReadResult(query, SQL_FieldNameToNum(query, "name"), szName, sizeof(szName));
format(gText, sizeof(gText), "\d%s \w |\y Przywodca:\r %s", clanName, szName);
menu_additem(menu, gText );
userViewClan[id][count++] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "idclan"));
SQL_NextRow(query);
}
menu_setprop(menu, MPROP_BACKNAME, "Poprzednie");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepne");
menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
if (!count) {
menu_destroy(menu);
chatPrint(id, PREFIX_NORMAL,"Nie ma zadnego klanu!");
} else menu_display(id, menu, 0);
}
case 8:{
new itemData[64], szName[33], status, menu = menu_create("\r[BaseBuilder]\y Zarzadzaj Czlonkami", "memberMenu_2");
while (SQL_MoreResults(query)) {
SQL_ReadResult(query, SQL_FieldNameToNum(query, "name"), szName, sizeof(szName));
status = SQL_ReadResult(query, SQL_FieldNameToNum(query, "flag"));
format(itemData, sizeof(itemData), "%s#%d", szName, status);
switch (status) {
case STATUS_MEMBER: add(szName, sizeof(szName), " \d[Czlonek]");
case STATUS_DEPUTY: add(szName, sizeof(szName), " \y[Zastepca]");
case STATUS_LEADER: add(szName, sizeof(szName), " \r[Przywodca]");
}
menu_additem(menu, szName, itemData);
SQL_NextRow(query);
}
menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednie");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepne");
menu_display(id, menu, 0);
}
case 9:{
userWarningAmount[id] = SQL_ReadResult(query, 0);
}
case 10:{
new target = userWarningInfo[id];
new szName[11];
new count = 0;
new menu = menu_create( formatm("\r[BaseBuilder]\y Ostrzezenia Gracza:\r %s\d [\w%d\d/\w%d\d]", userName[target], userWarningAmount[id], MAXWAR), "warningList_2" );
new szInfo[2][MAXLEN];
while (SQL_MoreResults(query)) {
SQL_ReadResult(query, SQL_FieldNameToNum(query, "desc"), szInfo[0], sizeof(szInfo[]));
SQL_ReadResult(query, SQL_FieldNameToNum(query, "time"), szInfo[1], sizeof(szInfo[]));
copy(szName, sizeof(szName)-1, szInfo[0]);
if(strlen(szInfo[0]) > 10)
menu_additem(menu, formatm("\d%s...\w |\y %s", szName, szInfo[1]));
else menu_additem(menu, formatm("\d%s\w |\y %s", szInfo[0], szInfo[1]));
userWarningMenu[id][count++] = SQL_ReadResult(query, 0);
SQL_NextRow(query);
}
menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednie");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepne");
if(!count) {
menu_destroy(menu);
warningInfo(id);
chatPrint(id, PREFIX_LINE, "Gracz nie posiada rzadnych ostrzezen!");
} else menu_display(id, menu, 0 );
}
case 11:{
while (SQL_MoreResults(query)){
new class = SQL_ReadResult(query, 1);
for(new type = 0; type < UM_ZM_TOTAL; type++){
userZombie[id][class][type] = SQL_ReadResult(query, type + 2);
}
SQL_NextRow(query);
}
}
case 12:{
new Float:XP;
while (SQL_MoreResults(query)){
new class = SQL_ReadResult(query, 1);
userHumanLevel[id][class] = SQL_ReadResult(query, 2);
SQL_ReadResult(query, 3, XP);
userExpClass[id][class] = XP;
SQL_NextRow(query);
}
}
case 13:{
new level, Float:exp, reset, szName[33];
new gText[2048], iLen=0, top=0;
new sizeText = sizeof(gText)-iLen-1;
iLen += format(gText[iLen], sizeText, "<head><link href=^"https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700^" rel=^"stylesheet^"></head>");
iLen += format(gText[iLen], sizeText, "\
<style>\
*{ font-size: 16px; font-family: Montserrat; color: white; text-align: center; padding: 0; margin: 0;}\
body{border: 1px solid %s; background: #111}\
b{color:%s; text-shadow: 0 0 5px %s;}\
</style>",accentMotdColor,accentMotdColor,accentMotdColor);
iLen += format(gText[iLen], sizeText, "<p>TOP 10 najwiekszych poziomow Postaci!</p><hr size=1 color=%s>",accentMotdColor);
iLen += format(gText[iLen], sizeText, "<table style=^"margin-top: 20px;margin-left: auto;margin-right: auto;width:710%^">");
iLen += format(gText[iLen], sizeText, "<tr><td><b>#</b></td><td><b>Nazwa</b></td><td><b>Poziom</b></td><td><b>XP</b></td></tr></br>");
while(SQL_MoreResults(query)){
top ++;
SQL_ReadResult(query, 0, szName, sizeof(szName));
level = SQL_ReadResult(query, 1);
SQL_ReadResult(query, 2, exp);
reset = SQL_ReadResult(query, 3);
replace_all(szName, sizeof(szName), "<", "");
replace_all(szName, sizeof(szName), ">", "");
replace_all(szName, sizeof(szName), "%", "%%");
iLen += format(gText[iLen], sizeText, "<tr><td>%d</td><td>%s</td><td>%d</td><td>%0.2f %%</td></tr>",top, szName,level, (exp*100.0/float(level * 45 + 45 * reset)));
SQL_NextRow(query);
}
iLen += format(gText[iLen], sizeText, "</table>");
show_motd(id, gText, "Top 10 Postaci");
}
case 14:{
new level, Float:exp, idclass, szName[33];
new gText[2048], iLen=0, top=0;
new sizeText = sizeof(gText)-iLen-1;
iLen += format(gText[iLen], sizeText, "<head><link href=^"https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700^" rel=^"stylesheet^"></head>");
iLen += format(gText[iLen], sizeText, "\
<style>\
*{ font-size: 16px; font-family: Montserrat; color: white; text-align: center; padding: 0; margin: 0;}\
body{border: 1px solid %s; background: #111}\
b{color:%s; text-shadow: 0 0 5px %s;}\
</style>",accentMotdColor,accentMotdColor,accentMotdColor);
iLen += format(gText[iLen], sizeText, "<p>TOP 10 najwiekszych poziomow Klas!</p><hr size=1 color=%s>",accentMotdColor);
iLen += format(gText[iLen], sizeText, "<table style=^"margin-top: 20px;margin-left: auto;margin-right: auto;width:710%^">");
iLen += format(gText[iLen], sizeText, "<tr><td><b>#</b></td><td><b>Nazwa</b></td><td><b>Klasa</b></td><td><b>Poziom</b></td><td><b>XP</b></td></tr></br>");
while(SQL_MoreResults(query)){
top ++;
SQL_ReadResult(query, SQL_FieldNameToNum(query, "gracz"), szName, sizeof(szName));
SQL_ReadResult(query, SQL_FieldNameToNum(query, "xp"), exp);
idclass = SQL_ReadResult(query, SQL_FieldNameToNum(query, "idclass"));
level = SQL_ReadResult(query, SQL_FieldNameToNum(query, "level"));
replace_all(szName, sizeof(szName), "<", "");
replace_all(szName, sizeof(szName), ">", "");
replace_all(szName, sizeof(szName), "%", "%%");
iLen += format(gText[iLen], sizeText, "<tr><td>%d</td><td>%s</td><td>%s</td><td>%d</td><td>%0.2f %%</td></tr>",top, szName,classesHuman[idclass][0],level, (exp*100.0/float(level * 45)));
SQL_NextRow(query);
}
iLen += format(gText[iLen], sizeText, "</table>");
show_motd(id, gText, "Top 10 Klas");
}
case 15:{
new maxdmg, szName[33];
new gText[2048], iLen=0, top=0;
new sizeText = sizeof(gText)-iLen-1;
iLen += format(gText[iLen], sizeText, "<head><link href=^"https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700^" rel=^"stylesheet^"></head>");
iLen += format(gText[iLen], sizeText, "\
<style>\
*{ font-size: 16px; font-family: Montserrat; color: white; text-align: center; padding: 0; margin: 0;}\
body{border: 1px solid %s; background: #111}\
b{color:%s; text-shadow: 0 0 5px %s;}\
</style>",accentMotdColor,accentMotdColor,accentMotdColor);
iLen += format(gText[iLen], sizeText, "<p>TOP 10 najwiekszych Obrazen!</p><hr size=1 color=%s>",accentMotdColor);
iLen += format(gText[iLen], sizeText, "<table style=^"margin-top: 20px;margin-left: auto;margin-right: auto;width:710%^">");
iLen += format(gText[iLen], sizeText, "<tr><td><b>#</b></td><td><b>Nazwa</b></td><td><b>Obrazenia</b></td></tr></br>");
while(SQL_MoreResults(query)){
top ++;
SQL_ReadResult(query, 0, szName, sizeof(szName));
maxdmg = SQL_ReadResult(query, 1);
replace_all(szName, sizeof(szName), "<", "");
replace_all(szName, sizeof(szName), ">", "");
replace_all(szName, sizeof(szName), "%", "%%");
iLen += format(gText[iLen], sizeText, "<tr><td>%d</td><td>%s</td><td>%d</td></tr>",top, szName,maxdmg);
SQL_NextRow(query);
}
iLen += format(gText[iLen], sizeText, "</table>");
show_motd(id, gText, "Top 10 Obrazen");
}
case 16:{
new rank = SQL_ReadResult(query, SQL_FieldNameToNum(query, "rank")) + 1;
new count = SQL_ReadResult(query, SQL_FieldNameToNum(query, "count"));
new menu = menu_create(formatm("\r[BaseBuilder]\y Topka Serwerowa"), "topMenu_2");
menu_additem(menu, formatm("Twoj Rank\d [\r %d\y /\r %d\d ]", rank, count));
menu_additem(menu, "Top 10 Punktow");
menu_additem(menu, "Top 10 Czasu");
menu_additem(menu, "Top 10 Postaci");
menu_additem(menu, "Top 10 Klas");
menu_additem(menu, "Top 10 Obrazen");
menu_additem(menu, "Top 10 Klanow");
menu_additem(menu, "Top 10 Zabojst Bronia");
menu_display(id, menu, 0);
menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednie");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepne");
}
case 17:{
new Float:DAMAGE;
while (SQL_MoreResults(query)){
new weapon = SQL_ReadResult(query, 1);
userWeaponKill[id][weapon] = SQL_ReadResult(query, 3);
userWeaponHs[id][weapon] = SQL_ReadResult(query, 4);
userWeaponLevel[id][weapon] = SQL_ReadResult(query, 5);
SQL_ReadResult(query, 6, DAMAGE);
userWeaponDamage[id][weapon] = DAMAGE;
SQL_NextRow(query);
}
}
case 18:{
new szWeapon[33], szName[33], kills, hs;
new gText[2048], iLen=0, top=0;
new sizeText = sizeof(gText)-iLen-1;
iLen += format(gText[iLen], sizeText, "<head><link href=^"https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700^" rel=^"stylesheet^"></head>");
iLen += format(gText[iLen], sizeText, "\
<style>\
*{ font-size: 16px; font-family: Montserrat; color: white; text-align: center; padding: 0; margin: 0;}\
body{border: 1px solid %s; background: #111}\
b{color:%s; text-shadow: 0 0 5px %s;}\
</style>",accentMotdColor,accentMotdColor,accentMotdColor);
iLen += format(gText[iLen], sizeText, "<p>TOP 10 Zabojst Bronia!</p><hr size=1 color=%s>",accentMotdColor);
iLen += format(gText[iLen], sizeText, "<table style=^"margin-top: 20px;margin-left: auto;margin-right: auto;width:710%^">");
iLen += format(gText[iLen], sizeText, "<tr><td><b>#</b></td><td><b>Nazwa</b></td><td><b>Bron</b></td><td><b>Zabojstwa</b></td><td><b>Hs</b></td></tr></br>");
while(SQL_MoreResults(query)){
top ++;
SQL_ReadResult(query, SQL_FieldNameToNum(query, "gracz"), szName, sizeof(szName));
SQL_ReadResult(query, SQL_FieldNameToNum(query, "nameweapon"), szWeapon, sizeof(szWeapon));
kills = SQL_ReadResult(query, SQL_FieldNameToNum(query, "kills"));
hs = SQL_ReadResult(query, SQL_FieldNameToNum(query, "hs"));
new Float:hsToKills;
hsToKills=float(hs)/float(kills);
replace_all(szName, sizeof(szName), "<", "");
replace_all(szName, sizeof(szName), ">", "");
replace_all(szName, sizeof(szName), "%", "%%");
iLen += format(gText[iLen], sizeText, "<tr><td>%d</td><td>%s</td><td>%s</td><td>%d</td><td>%0.1f%%</td></tr>",top, szName,szWeapon, kills, (hsToKills * 100.0));
SQL_NextRow(query);
}
iLen += format(gText[iLen], sizeText, "</table>");
show_motd(id, gText, "TOP 10 Zabojst Bronia");
}
case 19:{
new muteName[33];
while (SQL_MoreResults(query)) {
SQL_ReadResult(query, 2, muteName, sizeof(muteName) - 1);
TrieSetCell(userMutes[id], muteName, 1);
SQL_NextRow(query);
}
}
default:{ }
}
return PLUGIN_HANDLED;
}
public topMenu_2(id, menu, item){
if(item == MENU_EXIT){
menu_destroy(menu);
return;
}
switch(item){
case 0: loadStatsSql(id, 2);
case 1: loadStatsSql(id, 1);
case 2: loadStatsSql(id, 3);
case 3: loadStatsSql(id, 13);
case 4: loadStatsSql(id, 14);
case 5: loadStatsSql(id, 15);
case 6: loadStatsSql(id,5);
case 7: loadStatsSql(id,18);
}
loadStatsSql(id, 16);
}
public saveStatsSql(id, typeSave){
if(is_user_hltv(id)) return PLUGIN_CONTINUE;
if(!sqlConnected) return PLUGIN_CONTINUE;
if(!userLoaded[id]) return PLUGIN_CONTINUE;
new queryData[256], tempId[2];
tempId[0] = id;
switch(typeSave){
case 0:{
format(queryData, sizeof(queryData), "\
UPDATE `players`\
SET `kills`='%d', `deaths`='%d', `points`='%d', `maxDamage`='%d'\
WHERE `name` ='%s'", userKills[id], userDeaths[id], userPoints[id], userMaxDmg[id], userName[id]);
}
case 1:{
format(queryData, sizeof(queryData), "\
UPDATE `players`\
SET `pass`='%s', `ipLogin`='%s', `sidLogin`='%s'\
WHERE `name` ='%s'", strlen(userPassword[id])>1?userPassword[id]:"_", strlen(userIp[id])>1?userIp[id]:"_", strlen(userSid[id])>1?userSid[id]:"_", userName[id]);
}
case 2:{
format(queryData, sizeof(queryData), "\
UPDATE `players`\
SET `timePlay`='%d', `lastlogin`= NOW()\
WHERE `name` ='%s'", (floatround(userTime[id] += get_gametime()-userTimeConnectServer[id])), userName[id]);
}
case 3:{
format(queryData, sizeof(queryData), "\
UPDATE `players`\
SET `level`='%d', `xp`='%0.2f'\
WHERE `name` ='%s'", userLevel[id],userExp[id], userName[id]);
}
case 4:{
format(queryData, sizeof(queryData), "\
UPDATE `players`\
SET `nuggets`='%d', `bones`='%d'\
WHERE `name` ='%s'", userNugget[id], userBone[id], userName[id]);
}
default:{}
}
SQL_ThreadQuery(sql, "saveStatsHandlerSql", queryData, tempId, sizeof(tempId));
return PLUGIN_CONTINUE;
}
public saveInsert(id, typeSave, typeSlot){
if(is_user_hltv(id)) return PLUGIN_CONTINUE;
if(!sqlConnected) return PLUGIN_CONTINUE;
if(!userLoaded[id]) return PLUGIN_CONTINUE;
new queryData[256], tempId[3];
tempId[0] = id;
tempId[1] = typeSave;
tempId[2] = typeSlot;
switch(typeSave){
case 0:{
for(new i = 0; i < human_TOTAL; i ++){
if(!hasClassHuman(id, i)) continue;
format(queryData, sizeof(queryData), "\
INSERT INTO `classhumans` (`idplayer`, `idclass`, `level`, `xp`)\
VALUES ('%d','%d','%d','%0.2f')\
ON DUPLICATE KEY UPDATE `level`='%d', `xp`='%0.2f'", userSqlId[id], i, userHumanLevel[id][i], userExpClass[id][i], userHumanLevel[id][i], userExpClass[id][i]);
SQL_ThreadQuery(sql, "saveStatsHandlerSql", queryData, tempId, sizeof(tempId));
}
}
case 1:{
format(queryData, sizeof(queryData), "\
INSERT INTO `classzombies` (`idplayer`, `idclass`, `heatlh`, `speed`, `reduction`)\
VALUES ('%d','%d','%d','%d','%d')\
ON DUPLICATE KEY UPDATE `heatlh`='%d', `speed`='%d', `reduction`='%d'", userSqlId[id], userVarMenu[id], userZombie[id][userVarMenu[id]][UP_ZM_HEALTH], userZombie[id][userVarMenu[id]][UP_ZM_SPEED], userZombie[id][userVarMenu[id]][UP_ZM_REDUCTION], userZombie[id][userVarMenu[id]][UP_ZM_HEALTH], userZombie[id][userVarMenu[id]][UP_ZM_SPEED], userZombie[id][userVarMenu[id]][UP_ZM_REDUCTION]);
SQL_ThreadQuery(sql, "saveStatsHandlerSql", queryData, tempId, sizeof(tempId));
}
case 2:{
if(!userWeaponKill[id][typeSlot] && !userWeaponDamage[id][typeSlot]) return PLUGIN_CONTINUE;
format(queryData, sizeof(queryData), "\
INSERT INTO `weapons` (`idplayer`, `idweapon`, `nameweapon`, `kills`,`hs`, `level`, `damage`)\
VALUES ('%d','%d','%s', '%d','%d','%d','%0.2f')\
ON DUPLICATE KEY UPDATE `kills`='%d',`hs`='%d', `level`='%d', `damage`='%0.2f'", userSqlId[id], typeSlot, allGuns[typeSlot][1], userWeaponKill[id][typeSlot], userWeaponHs[id][typeSlot], userWeaponLevel[id][typeSlot], userWeaponDamage[id][typeSlot], userWeaponKill[id][typeSlot],userWeaponHs[id][typeSlot], userWeaponLevel[id][typeSlot], userWeaponDamage[id][typeSlot]);
SQL_ThreadQuery(sql, "saveStatsHandlerSql", queryData, tempId, sizeof(tempId));
}
default:{ return PLUGIN_CONTINUE; }
}
return PLUGIN_CONTINUE;
}
public saveStatsHandlerSql(failState, Handle:query, error[], errorNum, data[], dataSize){
if (failState){
if (failState == TQUERY_CONNECT_FAILED) log_amx("[SQL-LOG] Nie mozna polaczyc si********* z baz********* danych SQL. Blad: %s (%d)", error, errorNum);
else if (failState == TQUERY_QUERY_FAILED) log_amx("[SQL-LOG] Zapytanie watkowe nie powiodlo sie. Blad: %s (%d)", error, errorNum);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public save_clan(clan){
static queryData[512], safeClanName[64],safeClanInfo[43], safeClanMotd[22], bbClan[clanInfo];
ArrayGetArray(bbClans, clan, bbClan);
replace_all_string(bbClan[CLAN_NAME], safeClanName, sizeof(safeClanName));
replace_all_string(bbClan[CLAN_INFO], safeClanInfo, sizeof(safeClanInfo));
replace_all_string(bbClan[CLAN_MOTD], safeClanMotd, sizeof(safeClanMotd));
format(queryData, sizeof(queryData), "\
UPDATE `clans`\
SET name = '%s', info = '%s', level = '%d', points = '%d', nugget = '%d', kills = '%d', members = '%d', health = '%d', damagePlayer = '%d', damageClass = '%d', critic = '%d', expDrop = '%d', nuggetDrop = '%d', cooldown = '%d', idmotd='%s', upgradetime='%d' \
WHERE name = '%s'", safeClanName,safeClanInfo, bbClan[CLAN_LEVEL], bbClan[CLAN_POINTS], bbClan[CLAN_NUGGET], bbClan[CLAN_KILLS], bbClan[CLAN_MEMBERS], bbClan[CLAN_HEALTH], bbClan[CLAN_DAMAGEPLAYER], bbClan[CLAN_DAMAGECLASS], bbClan[CLAN_CRITIC], bbClan[CLAN_EXPDROP],bbClan[CLAN_NUGGETDROP],bbClan[CLAN_COOLDOWN],safeClanMotd,bbClan[CLAN_UPGRADETIME] , safeClanName);
SQL_ThreadQuery(sql, "saveStatsHandlerSql", queryData);
}
public mysqlSave(id){
if(is_user_hltv(id)) return PLUGIN_CONTINUE;
if(!sqlConnected) return PLUGIN_CONTINUE;
if(!userLoaded[id]) return PLUGIN_CONTINUE;
for(new i = 0; i < 5; i++) saveStatsSql(id, i);
saveInsert(id, 0, 0);
saveInsert(id, 2, userWeaponSelect[id]);
userLoaded[id] = false;
userLogged[id] = false;
return PLUGIN_CONTINUE;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
saveLoad
PHP Code:
#include <amxmisc>
#include <fvault>
public loadInt(id){
userLogged[id] = false;
userLoaded[id] = false;
userLoadVault[id] = false;
loadStatsSql(id, 0);
// loadData(id) /* Jest juz w loadStatsSql */
}
public fVaultLoad(id){
new day;
date(_,_, day);
new szData[756];
if( fvault_get_data(fVAULTFILE, userName[id], szData, sizeof(szData) - 1) ){
new szOption[5];
new szAllNugget[11];
new szTimeVip[11];
new szTimeSVip[11];
new szLuzCoin[11];
new szClassHuman[10];
new szMission[mission_TOTAL*7];
new szMissionOne[mission_TOTAL][7];
new szMissionSecret[mission_secret_TOTAL*7];
new szMissionSecretOne[mission_secret_TOTAL][7];
new szPro[TOTAL_PRO*5];
new szProOne[TOTAL_PRO][5];
new szProSelected[3];
new szHumanSelectNew1[3];
new szHumanSelectNew2[3];
new szZombieSelectNew1[3];
new szZombieSelectNew2[3];
new szExpGiveClass[5];
new szDayFreeNugger[3];
new szJetpackSpeed[7];
new szColorRendering[3];
new szColorRed[4], szColorGreen[4], szColorBlue[4];
new szTimeStamina[10];
new szStaminaDayRefresh[10];
new szUpgradeMine[up_TOTAL*7];
new szUpgradeMineOne[up_TOTAL][7];
new szDigging[mine_TOTAL*7];
new szDiggingOne[mine_TOTAL][7];
new szTypeMine[10];
new szMineNugget[10];
new szPayDayGoblin[10];
new szLastUpgradeTime[7];
new szUnlockCave[3];
new szStartUpgrade[3];
new szAwardTime[7];
new szAllAward[7];
new szAllDmg[11];
new szFov[4];
new szScrollExp[10];
new szScrollNugget[10];
new szBoostMine[10];
new szMute[11];
new szMaxHelp[3];
new szHelpDay[3];
new szHelpPointAdmin[5];
new szPointSecret[7];
new szLastAwardGot[11];
new szLastAwardFree[11];
new szLastAwardRow[7];
new szChristmasStart[5];
new szChristmasMission[5];
new szChristmasType[5];
new szHat[4][11];
new szSelectHat[2][3];
parse(szData,
szLuzCoin, sizeof(szLuzCoin),
szTimeVip, sizeof(szTimeVip),
szTimeSVip, sizeof(szTimeSVip),
szOption, sizeof(szOption),
szAllNugget, sizeof(szAllNugget),
szClassHuman, sizeof(szClassHuman),
szMission, sizeof(szMission),
szMissionSecret, sizeof(szMissionSecret),
szPro, sizeof(szPro),
szProSelected, sizeof(szProSelected),
szHumanSelectNew1, sizeof(szHumanSelectNew1),
szHumanSelectNew2, sizeof(szHumanSelectNew2),
szZombieSelectNew1, sizeof(szZombieSelectNew1),
szZombieSelectNew2, sizeof(szZombieSelectNew2),
szExpGiveClass, sizeof(szExpGiveClass),
szDayFreeNugger, sizeof(szDayFreeNugger),
szColorRed, sizeof(szColorRed),
szColorGreen, sizeof(szColorGreen),
szColorBlue, sizeof(szColorBlue),
szJetpackSpeed, sizeof(szJetpackSpeed),
szColorRendering, sizeof(szColorRendering),
szTimeStamina, sizeof(szTimeStamina),
szStaminaDayRefresh, sizeof(szStaminaDayRefresh),
szUpgradeMine, sizeof(szUpgradeMine),
szDigging, sizeof(szDigging),
szTypeMine, sizeof(szTypeMine),
szMineNugget, sizeof(szMineNugget),
szPayDayGoblin, sizeof(szPayDayGoblin),
szLastUpgradeTime, sizeof(szLastUpgradeTime),
szUnlockCave, sizeof(szUnlockCave),
szStartUpgrade, sizeof(szStartUpgrade),
szAwardTime, sizeof(szAwardTime),
szAllAward, sizeof(szAllAward),
szAllDmg, sizeof(szAllDmg),
szFov, sizeof(szFov),
szScrollExp, sizeof(szScrollExp),
szScrollNugget, sizeof(szScrollNugget),
szBoostMine, sizeof(szBoostMine),
szMute, sizeof(szMute),
szMaxHelp, sizeof(szMaxHelp),
szHelpDay, sizeof(szHelpDay),
szHelpPointAdmin, sizeof(szHelpPointAdmin),
szPointSecret, sizeof(szPointSecret),
szLastAwardGot, sizeof(szLastAwardGot),
szLastAwardFree, sizeof(szLastAwardFree),
szLastAwardRow, sizeof(szLastAwardRow),
szChristmasStart, sizeof(szChristmasStart),
szChristmasMission, sizeof(szChristmasMission),
szChristmasType, sizeof(szChristmasType),
szHat[0], sizeof(szHat[]),
szHat[1], sizeof(szHat[]),
szHat[2], sizeof(szHat[]),
szHat[3], sizeof(szHat[]),
szSelectHat[0], sizeof(szSelectHat[]),
szSelectHat[1], sizeof(szSelectHat[])
);
timeVip[id] = str_to_num(szTimeVip);
timeSVip[id] = str_to_num(szTimeSVip);
userSaveOption[id] = str_to_num(szOption);
userNuggetAll[id] = str_to_num(szAllNugget);
if(timeVip[id] > get_systime()) userVip[id] = true;
if(timeSVip[id] > get_systime()) userSVip[id] = true;
userLuzCoin[id] = str_to_num(szLuzCoin);
userHuman[id] = str_to_num(szClassHuman);
explode(szMission ,'_' ,szMissionOne ,sizeof(szMissionOne) ,sizeof(szMissionOne[]));
for(new i = 0 ; i < sizeof(szMissionOne); i ++ ) userMission[id][i] = str_to_num(szMissionOne[i]);
explode(szMissionSecret ,'_' ,szMissionSecretOne ,sizeof(szMissionSecretOne) ,sizeof(szMissionSecretOne[]));
for(new i = 0 ; i < sizeof(szMissionSecretOne); i ++ ) userMissionSecret[id][i] = str_to_num(szMissionSecretOne[i]);
userProSelected[id] = str_to_num(szProSelected);
userClassHuman[id] = str_to_num(szHumanSelectNew1);
userNewClassHuman[id] = str_to_num(szHumanSelectNew2);
userNewClass[id] = str_to_num(szZombieSelectNew1);
userClass[id] = str_to_num(szZombieSelectNew2);
userGiveClassExp[id] = str_to_num(szExpGiveClass);
userLastDay[id] = str_to_num(szDayFreeNugger);
userHud[id][PLAYER_HUD_RED] = str_to_num(szColorRed);
userHud[id][PLAYER_HUD_GREEN] = str_to_num(szColorGreen);
userHud[id][PLAYER_HUD_BLUE] = str_to_num(szColorBlue);
userJetpackSpeed[id] = str_to_num(szJetpackSpeed);
userMoverBlockColor[id] = str_to_num(szColorRendering);
if(str_to_num(szHelpDay) != day){
userMaxHelp[id] = bbCvar[cvarHelpMaxCount];
userDayHelp[id] = day;
} else {
userMaxHelp[id] = str_to_num(szMaxHelp);
userDayHelp[id] = str_to_num(szHelpDay);
}
if( str_to_num(szStaminaDayRefresh) != day ){
userLastStaminaTime[id] = playedTime(id);
userStaminaDayRefresh[id] = day;
userMinePayGoblin[id] = true;
}else{
userLastStaminaTime[id] = str_to_num(szTimeStamina);
userStaminaDayRefresh[id] = str_to_num(szStaminaDayRefresh);
userMinePayGoblin[id] = false;
}
explode(szPro ,'_' ,szProOne ,sizeof(szProOne) ,sizeof(szProOne[]));
for(new i = 0 ; i < sizeof(szProOne); i ++ ) userPro[id][i] = str_to_num(szProOne[i]);
explode(szUpgradeMine ,'_' ,szUpgradeMineOne ,sizeof(szUpgradeMineOne) ,sizeof(szUpgradeMineOne[]));
for(new i = 0 ; i < sizeof(szUpgradeMineOne); i ++ ) userUpgradeMine[id][i] = str_to_num(szUpgradeMineOne[i]);
explode(szDigging ,'_' ,szDiggingOne ,sizeof(szDiggingOne) ,sizeof(szDiggingOne[]));
for(new i = 0 ; i < sizeof(szDiggingOne); i ++ ) userDigging[id][i] = str_to_num(szDiggingOne[i]);
userTypeMine[id] = str_to_num(szTypeMine);
userMineNugget[id] = str_to_num(szMineNugget);
userLastUpgradeTime[id] = str_to_num(szLastUpgradeTime);
unlockCave[id] = str_to_num(szUnlockCave);
startUpgrade[id] = str_to_num(szStartUpgrade);
userLastAwardTime[id] = str_to_num(szAwardTime);
userAllAward[id] = str_to_num(szAllAward);
userAllDmg[id] = str_to_num(szAllDmg);
userFov[id] = str_to_num(szFov);
userScrollExp[id] = str_to_num(szScrollExp);
userScrollNugget[id] = str_to_num(szScrollNugget);
userBoostMine[id] = str_to_num(szBoostMine);
userMute[id] = str_to_num(szMute);
userHelpPoint[id] = str_to_num(szHelpPointAdmin);
userSecretPoint[id] = str_to_num(szPointSecret);
userLastAwardGot[id] = str_to_num(szLastAwardGot);
userLastAwardFree[id] = str_to_num(szLastAwardFree);
userLastAwardRow[id] = str_to_num(szLastAwardRow);
userChristmasStart[id] = str_to_num(szChristmasStart);
userChristmasMission[id] = str_to_num(szChristmasMission);
userChristmasType[id] = str_to_num(szChristmasType);
for(new i = 0; i < 4; i ++) userHat[id][i] = str_to_num(szHat[i]);
userSelectHat[id] = str_to_num(szSelectHat[0]);
userSelectNewHat[id] = str_to_num(szSelectHat[1]);
if(userSelectHat[id] == 0 || userSelectNewHat[id] == 0){
userSelectHat[id] = -1;
userSelectNewHat[id] = -1;
}
userLoadVault[id] = true;
}else{
userNuggetAll[id] = 0;
timeVip[id] = 0;
timeSVip[id] = 0;
userLuzCoin[id] = 0;
userClassHuman[id] = 0;
userNewClassHuman[id] = 0;
userNewClass[id] = 0;
userClass[id] = 0;
userGiveClassExp[id] = 0;
userHuman[id] = 0;
for(new i = 0 ; i < sizeof(userHuman[]); i ++ ){
if(str_to_num(classesHuman[human_FREE][2]) == 0 )
userHuman[id] |= (1<<i);
}
for(new i = 0 ; i < sizeof(userMission[]); i ++ ) userMission[id][i] = 0;
for(new i = 0 ; i < sizeof(userMissionSecret[]); i ++ ) userMissionSecret[id][i] = 0;
for(new i = 0 ; i < sizeof(userPro[]); i ++ ) userPro[id][i] = 0;
userProSelected[id] = -1;
userLastDay[id] = day;
userHud[id][PLAYER_HUD_RED] = 255;//120;
userHud[id][PLAYER_HUD_GREEN] = 0;//255;
userHud[id][PLAYER_HUD_BLUE] = 60;
userJetpackSpeed[id] = 500;
userMoverBlockColor[id] = 0;
userLastStaminaTime[id] = playedTime(id);
userStaminaDayRefresh[id] = day;
userMinePayGoblin[id] = true;
for(new i = 0 ; i < sizeof(userUpgradeMine[]); i ++ ) userUpgradeMine[id][i] = 0;
for(new i = 0 ; i < sizeof(userDigging[]); i ++ ) userDigging[id][i] = 0;
userTypeMine[id] = 0;
userMineNugget[id] = 0;
userLastUpgradeTime[id] = 0;
unlockCave[id] = 0;
startUpgrade[id] = 0;
userLastAwardTime[id] = playedTime(id);
addOption(userSaveOption[id], save_MODELS);
addOption(userSaveOption[id], save_CAVE);
userAllAward[id] = 0;
userAllDmg[id] = 0;
userFov[id] = 90;
userScrollExp[id] = playedTime(id);
userScrollNugget[id] = playedTime(id);
userBoostMine[id] = playedTime(id);
userMute[id] = 0;
userHelpPoint[id] = 0;
userSecretPoint[id] = 0;
userLastAwardGot[id] = playedTime(id);
userLastAwardFree[id] = get_systime();
userLastAwardRow[id] = 0;
userLoadVault[id] = true;
userChristmasStart[id] = 0;
userChristmasMission[id] = 0;
userChristmasType[id] = 0;
for(new i = 0; i < 4; i ++) userHat[id][i] = 0;
userSelectHat[id] = -1;
userSelectNewHat[id] = -1;
}
return PLUGIN_CONTINUE;
}
public fVaultSave(id){
if(!userLoadVault[id]) return PLUGIN_CONTINUE;
new szData[756];
new iLen = 0;
new szMission[mission_TOTAL*7];
for(new i = 0; i < mission_TOTAL; i ++) iLen += format(szMission[iLen], sizeof(szMission)-iLen-1, "%d%s", userMission[id][i], i == mission_TOTAL-1?"":"_");
iLen = 0;
new szMissionSecret[mission_secret_TOTAL*7];
for(new i = 0; i < mission_secret_TOTAL; i ++) iLen += format(szMissionSecret[iLen], sizeof(szMissionSecret)-iLen-1, "%d%s", userMissionSecret[id][i], i == mission_secret_TOTAL-1?"":"_");
iLen=0;
new szPro[TOTAL_PRO*7];
for(new i = 0; i < TOTAL_PRO; i ++) iLen += format(szPro[iLen], sizeof(szPro)-iLen-1, "%d%s", userPro[id][i], i == TOTAL_PRO-1?"":"_");
iLen=0;
new szUpgradeMine[up_TOTAL*7];
for(new i = 0; i < up_TOTAL; i ++) iLen += format(szUpgradeMine[iLen], sizeof(szUpgradeMine)-iLen-1, "%d%s", userUpgradeMine[id][i], i == up_TOTAL-1?"":"_");
iLen=0;
new szDigging[mine_TOTAL*7];
for(new i = 0; i < mine_TOTAL; i ++) iLen += format(szDigging[iLen], sizeof(szDigging)-iLen-1, "%d%s", userDigging[id][i], i == mine_TOTAL-1?"":"_");
format(szData, sizeof(szData)-1,"%d %d %d %d %d %d %s %s %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %s %s %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 %d %d %d %d",
userLuzCoin[id],
timeVip[id],
timeSVip[id],
userSaveOption[id],
userNuggetAll[id],
userHuman[id],
szMission,
szMissionSecret,
szPro,
userProSelected[id],
userClassHuman[id],
userNewClassHuman[id],
userNewClass[id],
userClass[id],
userGiveClassExp[id],
userLastDay[id],
userHud[id][PLAYER_HUD_RED],
userHud[id][PLAYER_HUD_GREEN],
userHud[id][PLAYER_HUD_BLUE],
userJetpackSpeed[id],
userMoverBlockColor[id],
userLastStaminaTime[id],
userStaminaDayRefresh[id],
szUpgradeMine,
szDigging,
userTypeMine[id],
userMineNugget[id],
userMinePayGoblin[id],
userLastUpgradeTime[id],
unlockCave[id],
startUpgrade[id],
userLastAwardTime[id],
userAllAward[id],
userAllDmg[id],
userFov[id],
userScrollExp[id],
userScrollNugget[id],
userBoostMine[id],
userMute[id],
userMaxHelp[id],
userDayHelp[id],
userHelpPoint[id],
userSecretPoint[id],
userLastAwardGot[id],
userLastAwardFree[id],
userLastAwardRow[id],
userChristmasStart[id],
userChristmasMission[id],
userChristmasType[id],
userHat[id][0],
userHat[id][1],
userHat[id][2],
userHat[id][3],
userSelectHat[id],
userSelectNewHat[id]
);
fvault_set_data(fVAULTFILE, userName[id], szData);
userLoadVault[id] = false;
return PLUGIN_CONTINUE;
}
stock explode(const string[],const character,output[][],const maxs,const maxlen){
new iDo = 0, len = strlen(string), oLen = 0;
do{
oLen += (1+copyc(output[iDo++],maxlen,string[oLen],character));
}while(oLen < len && iDo < maxs);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
__________________
|
|