#include <amxmodx>
#include <amxmisc>
#define SERVER_NAME "Zm.WarGods.ro"
#define READ_FILENAME "mesaje_ore.ini"
#define TASK_MSG 5654
native cs_get_user_played_time(id)
enum Color
{
YELLOW = 1, // Yellow
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
new secs[33], cvars[2]
public plugin_init()
{
cvars[0] = register_cvar("min_hours_for_messages", "2") // hours
cvars[1] = register_cvar("message_time_interval", "120") // sec
}
public client_connect(id)
{
if(!is_user_bot(id) || !is_user_hltv(id))
{
new mins, hours
secs[id] = cs_get_user_played_time(id)
mins = secs[id] % 60
hours = mins / 60
if(hours < get_pcvar_num(cvars[0]))
{
set_task(get_pcvar_float(cvars[1]), "msg_hours", id + TASK_MSG, _, _, "b")
}
}
}
public client_disconnect(id)
{
if(task_exists(id + TASK_MSG))
remove_task(id+TASK_MSG)
}
public msg_hours(id)
{
id -= TASK_MSG
ColorChat(id, GREEN, "[%s]^x01:%s", SERVER_NAME, loading_text_from_file(READ_FILENAME))
}
public loading_text_from_file(const file_name[])
{
new message[256], path[64], fsize, txtlen
get_configsdir(path, charsmax(path))
formatex(path, charsmax(path), "%s/%s", path, file_name)
// File not present
if(!file_exists(path))
{
new error[100]
formatex(error, sizeof(error) - 1, "[%s]:Error, could't find the file %s !",SERVER_NAME, file_name)
set_fail_state(error)
}
fsize = file_size(path, 1)
new rand = random_num(1, fsize)
read_file(path, rand, message, charsmax(message), txtlen)
return message
}
public ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
static message[256];
switch(type)
{
case YELLOW: // Yellow
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';
new team, ColorChange, index, MSG_Type;
if(!id)
{
index = FindPlayer();
MSG_Type = MSG_ALL;
} else {
MSG_Type = MSG_ONE;
index = id;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}
ShowColorMessage(id, type, message[])
{
message_begin(type, get_user_msgid("SayText"), _, id);
write_byte(id)
write_string(message);
message_end();
}
Team_Info(id, type, team[])
{
message_begin(type, get_user_msgid("TeamInfo"), _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}
return 0;
}
FindPlayer()
{
new i = -1;
while(i <= get_maxplayers())
{
if(is_user_connected(++i))
{
return i;
}
}
return -1;
}