// Im tired, when I have time I'll add 'Accounts System Menu', meanwhile about when we have enter to server our data gonna be loaded
// and data gonna be saved when you has disconnected or every new round
#include <amxmodx>
#include <amxmisc>
#include <adv_vault>
#include <cstrike>
#include <hamsandwich>
// Task which we call every second that we playing
#define TASK_CS 65900
#define ID_TASK (taskid - TASK_CS)
#define POST 1 // Just put 1 on that shit and delete this :p
// Some plugin shits
new const Plugin[] = "Adv-Vault - Simple System";
new const Version[] = "1.0";
new const Creator[] = "Emanuelitop15";
new const Account_Folder[] = "ADV-VAULT [ACCOUNTS]" // Folder which we save the data
// Enums (enumeradores *aprende español*)
enum
{
NO_ACCOUNT = 0,
REGISTERED,
PLAYING
};
enum
{
PASS,
PLAYED_TIME,
MAX_FIELDS
};
// variables
new g_time_played[33];
new g_field[MAX_FIELDS], g_vault;
new g_acc_name[33][32], g_acc_pw[33][21], g_status[33];
new g_max_players;
public plugin_init()
{
register_plugin(Plugin, Version, Creator);
register_event("HLTV", "event_round_start", "a", "1=0", "2=0"); // We have to save the data every new round UwU (at least if server crashes, we don't lost too much data)
register_clcmd("say /time_here", "clcmd_playing"); // This is a little check, to comprobar (wtf you say this in english) if the saved data is okay
//RegisterHam(Ham_Spawn, "player", "player_spawn_post", POST); // We set the status account's player in PLAYING when spawns on the map;
// We "create the accounts", which gonna be saved in this folder: Account_Folder
g_vault = adv_vault_open(Account_Folder, true);
g_field[PASS] = adv_vault_register_field(g_vault, "Password", DATATYPE_STRING, charsmax(g_acc_pw[]));
g_field[PLAYED_TIME] = adv_vault_register_field(g_vault, "Time Played");
adv_vault_init(g_vault);
g_max_players = get_maxplayers();
}
public client_putinserver(id)
{
// The way that we use to save the data of one or more players
// need to be saved in some place, so that place is the name of that / those player(s)
get_user_name(id, g_acc_name[id], charsmax(g_acc_name[])); // Now we gotta the name, now we have to load accounts
// g_acc_pw[id][0] = '^0';
// no matter if he/she is not register, this is neccesary
load_data(id);
// If we have the name in the registered accounts, data gonna be loaded
// Our playing time...
set_task(1.0, "playing_cs", id+TASK_CS, _, _, "b");
}
public client_disconnected(id)
{
remove_task(id+TASK_CS); // Are we still playing???
save_data(id); // When we left the game, data needs to be saved, so SAVE IT BITCHHHH
}
// Some day when the 'Accounts System Menu' has been incorporated, you'd have to delete this shit
public event_round_start() for (new player = 1; player <= g_max_players; player++) g_status[player] = PLAYING, save_data(player);
load_data(id)
{
if (!adv_vault_get_prepare(g_vault, _, g_acc_name[id])) // If she/him isn't register yet,
// we put her/his status account in NO_ACCOUNT and we load default
// variables (i don't know how to say this in english xd)
{
g_status[id] = NO_ACCOUNT;
g_time_played[id] = 0;
return;
}
else // If we have saved data, we load it...
{
g_status[id] = REGISTERED; // Now we know this player has an account and login menu will be different
adv_vault_get_field(g_vault, g_field[PASS], g_acc_pw[id], charsmax(g_acc_pw[])); // Password
g_time_played[id] = adv_vault_get_field(g_vault, g_field[PLAYED_TIME]); // Time Played in the game
}
}
save_data(id)
{
if (!is_user_connected(id) || g_status[id] != PLAYING) // He/She isn't connected or is not registered, we don't save data
return;
adv_vault_set_start(g_vault); // We load our data
adv_vault_set_field(g_vault, g_field[PLAYED_TIME], g_time_played[id]);
adv_vault_set_end(g_vault, 0, g_acc_name[id]); // And, all is finish here...
client_print(id, print_console, "[ADV-VAULT SIMPLE] Your data was saved successfully!");
}
public playing_cs(taskid)
{
static id; id = ID_TASK;
if (!is_user_connected(id) || cs_get_user_team(id) == CS_TEAM_SPECTATOR || cs_get_user_team(id) == CS_TEAM_UNASSIGNED /* is this neccesary now ?*/)
return;
// We accumulate the time that we play here...
g_time_played[id]++;
}
public clcmd_playing(id)
{
if (!g_time_played[id]) return;
client_print_color(id, print_team_default, "^3[ADV-VAULT - SIMPLE]^1 You playing time here is^4 %s^1 seconds!", add_point(g_time_played[id]));
}
stock add_point(number)
{
new count, i, str[29], str2[35], len; num_to_str(number, str, charsmax(str));
len = strlen(str);
for (i = 0; i < len; i++)
{
if (i != 0 && ((len - i) %3 == 0))
{
add(str2, charsmax(str2), ".", 1);
count++;
add(str2[i+count], 1, str[i], 1);
}
else add(str2[i+count], 1, str[i], 1);
}
return str2;
}