PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#define PLUGIN "Played Time"
#define VERSION "0.1"
#define AUTHOR "UnKnown Author."
#define host "127.0.0.1"
#define user "root"
#define pass ""
#define db "played_time"
new Handle:sql, g_query[512]
new PlayedTime[33]
new showpt;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR );
register_clcmd("say", "handle_say");
register_concmd("amx_playedtime", "admin_showptime", ADMIN_RCON," <#Player Name> - Details about playedtime.");
showpt = register_cvar("amx_pt_mod","1");
}
public plugin_cfg(){
sql = SQL_MakeDbTuple(host,user,pass,db)
formatex(g_query,511,"CREATE TABLE IF NOT EXISTS `played_time` (name VARCHAR(32), playedtime INT, date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)")
SQL_ThreadQuery(sql,"query",g_query)
}
public handle_say(id)
{
static said[12]
read_argv(1, said, 11)
if(equali(said, "/my_time"))
{
static ctime[64], timep;
timep = get_user_time(id, 1) / 60;
get_time("%H:%M:%S", ctime, 63);
switch(get_pcvar_num(showpt))
{
case 0: return PLUGIN_HANDLED;
case 1 :
{
client_print(id, print_chat, "[Played-Time] You have been playing on the server for: %d minute%s.", timep, timep == 1 ? "" : "s");
client_print(id, print_chat, "[Played-Time] Your total played time on the server: %d minute%s.", timep+PlayedTime[id], timep+PlayedTime[id] == 1 ? "" : "s");
}
case 2 :
{
set_hudmessage(255, 50, 50, 0.34, 0.50, 0, 6.0, 4.0, 0.1, 0.2, -1);
show_hudmessage(id, "[Played-Time] You have been playing on the server for: %d minute%s.^n[AMXX]Current time: %s", timep, timep == 1 ? "" : "s", ctime);
}
}
return PLUGIN_HANDLED;
}
else if(equal(said,"/time")){
new data[1];data[0]=id
formatex(g_query,511,"SELECT * FROM played_time ORDER BY playedtime DESC LIMIT 25")
SQL_ThreadQuery(sql,"show_top15",g_query,data,1)
}
return PLUGIN_CONTINUE;
}
public admin_showptime(id,level,cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
static arg[32];
read_argv(1, arg, 31);
new player = cmd_target(id, arg, 2);
if(!player)
return PLUGIN_HANDLED;
static name[32];
get_user_name(player, name, 31);
static timep, ctime[64];
timep = get_user_time(player, 1) / 60;
get_time("%H:%M:%S", ctime, 63);
console_print(id, "-----------------------(#PlayedTime#)-----------------------");
console_print(id, "[Played-Time] %s have been playing on the server for %d minute%s.",name, timep, timep == 1 ? "" : "s");
console_print(id, "[Played-Time] %s's total played time on the server %d minute%s.",name, timep+PlayedTime[player], timep == 1 ? "" : "s"); // new
console_print(id, "-----------------------------------------------------------------");
return PLUGIN_HANDLED;
}
public client_disconnect(id){
new name[32]
get_user_name(id,name,31)
replace_all(name,32,"'","")
replace_all(name,32,"^"","")
formatex(g_query,511,"UPDATE played_time SET playedtime='%d' WHERE name='%s'",PlayedTime[id],name)
SQL_ThreadQuery(sql,"query",g_query)
PlayedTime[id] = 0
}
public client_putinserver(id){
PlayedTime[id] = get_playedtime(id)
log_amx("--> Got %d",PlayedTime[id])
}
public plugin_end(){
SQL_FreeHandle(sql)
}
get_playedtime(id){
new err,error[128]
new Handle:connect = SQL_Connect(sql,err,error,127)
if(err){
log_amx("--> MySQL Connection Failed - [%d][%s]",err,error)
set_fail_state("mysql connection failed")
}
new name[32],Handle:query,pt
get_user_name(id,name,31)
replace_all(name,32,"'","")
replace_all(name,32,"^"","")
query = SQL_PrepareQuery(connect,"SELECT playedtime FROM played_time WHERE name='%s'",name)
SQL_Execute(query)
if(!SQL_MoreResults(query)){
formatex(g_query,511,"INSERT INTO played_time (name,playedtime) VALUES('%s','%d')",name,get_user_time(id,1)/60)
SQL_ThreadQuery(sql,"query",g_query)
pt = (get_user_time(id,1)/60)
}else{
pt = SQL_ReadResult(query,0)+(get_user_time(id,1)/60)
}
log_amx("--> Get %d minutes for %s",pt,name)
SQL_FreeHandle(connect)
SQL_FreeHandle(query)
return pt
}
public show_top15(FailState, Handle:Query, Error[], Errcode,Data[], DataSize){
static name[32]
new id=Data[0]
new good,motd[1024],len,place
if(!SQL_MoreResults(Query)){
client_print(id,print_chat,"[PT] No entryes")
return PLUGIN_HANDLED
}
len = format(motd, 1023,"<body bgcolor=#000000><font color=#FFB000><pre>")
len += format(motd[len], 1023-len,"%s %-22.22s %3s^n", "#", "Name", "Time")
while(SQL_MoreResults(Query)){
place++
SQL_ReadResult(Query,0,name, 32)
good = SQL_ReadResult(Query,1)
replace_all(name, 32,"<","")
replace_all(name, 32,">","")
len += format(motd[len], 1023-len,"%d %-22.22s %d minute%s^n",place,name,good,good == 1 ? "" : "s")
SQL_NextRow(Query)
}
len += format(motd[len], 1023-len,"</body></font></pre>")
show_motd(id, motd,"Top 15 Players By Time")
return PLUGIN_CONTINUE
}
public query(FailState, Handle:Query, Error[], Errcode){
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/