Code:
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
#define ACCESS_MOTM 4096
new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.2";
new MapFile[MAX_DATA_LENGTH];
new MOTM_MESSAGE[MAX_TEXT_LENGTH] = "The server admin did not^nsetup motm plugin right!";
new MOTM_COUNTER = 1;
new MOTM_MAP = 0;
new MOTM_TIME = 240;
new MOTM_DURATION = 10;
public admin_motm_reset(HLCommand,HLData,HLUserName,UserIndex) {
new User[MAX_NAME_LENGTH];
new Data[MAX_TEXT_LENGTH];
new Command[MAX_TEXT_LENGTH];
convert_string(HLUserName,User,MAX_NAME_LENGTH);
convert_string(HLData,Data,MAX_NAME_LENGTH);
convert_string(HLCommand,Command,MAX_NAME_LENGTH);
selfmessage("[ADMIN] MOTM Counter Reset To 1");
MOTM_COUNTER = 1;
log_command(User,Command,Data);
return PLUGIN_HANDLED;
}
public admin_motm_time(HLCommand,HLData,HLUserName,UserIndex) {
new User[MAX_NAME_LENGTH];
new Data[MAX_TEXT_LENGTH];
new Command[MAX_TEXT_LENGTH];
new strMessage[MAX_TEXT_LENGTH];
convert_string(HLUserName,User,MAX_NAME_LENGTH);
convert_string(HLData,Data,MAX_NAME_LENGTH);
convert_string(HLCommand,Command,MAX_NAME_LENGTH);
if (strlen(Data) > 0) {
MOTM_TIME = strtonum(Data);
set_vaultdata("MOTM_TIME", Data);
}
snprintf(strMessage, MAX_TEXT_LENGTH, "[ADMIN] MOTM Time Is %d seconds", MOTM_TIME);
selfmessage(strMessage);
log_command(User, Command, Data);
return PLUGIN_HANDLED;
}
public admin_motm_duration(HLCommand,HLData,HLUserName,UserIndex) {
new User[MAX_NAME_LENGTH];
new Data[MAX_TEXT_LENGTH];
new Command[MAX_TEXT_LENGTH];
new strMessage[MAX_TEXT_LENGTH];
convert_string(HLUserName,User,MAX_NAME_LENGTH);
convert_string(HLData,Data,MAX_NAME_LENGTH);
convert_string(HLCommand,Command,MAX_NAME_LENGTH);
if (strlen(Data) > 0) {
MOTM_DURATION = strtonum(Data);
set_vaultdata("MOTM_DURATION", Data);
}
snprintf(strMessage, MAX_TEXT_LENGTH, "[ADMIN] MOTM Duration Is %d seconds", MOTM_DURATION);
selfmessage(strMessage);
log_command(User, Command, Data);
return PLUGIN_HANDLED;
}
public admin_motm_wtf(HLCommand,HLData,HLUserName,UserIndex) {
selfmessage("[ADMIN] MOTM : Checking Configuration");
new TestFile[MAX_DATA_LENGTH];
new TextOut[MAX_DATA_LENGTH];
new YesNo[MAX_NAME_LENGTH];
currentmap(TestFile, MAX_DATA_LENGTH);
snprintf(TestFile, MAX_TEXT_LENGTH, "%s.txt", TestFile);
if (fileexists(TestFile) > 0) {
strcpy(YesNo, "found", MAX_DATA_LENGTH);
} else {
strcpy(YesNo, "not found (WARNING ONLY)", MAX_DATA_LENGTH);
}
snprintf(TextOut, MAX_DATA_LENGTH, "[ADMIN] MOTM : Checking for file %s ... %s", TestFile, YesNo);
selfmessage(TextOut);
strcpy(TestFile, "MOTM.TXT", MAX_DATA_LENGTH);
if (fileexists(TestFile) > 0) {
strcpy(YesNo, "found", MAX_DATA_LENGTH);
} else {
strcpy(YesNo, "not found (ERROR!)", MAX_DATA_LENGTH);
}
snprintf(TextOut, MAX_DATA_LENGTH, "[ADMIN] MOTM : Checking for file %s ... %s", TestFile, YesNo);
selfmessage(TextOut);
if (getvar("file_access_read") == 0) {
strcpy(TestFile, "Off (ERROR)", MAX_TEXT_LENGTH);
} else {
strcpy(TestFile, "On", MAX_TEXT_LENGTH);
}
snprintf(TextOut, MAX_DATA_LENGTH, "[ADMIN] MOTM : File read access (file_access_read) %s", TestFile);
selfmessage(TextOut);
selfmessage("[ADMIN] MOTM : Done.");
return PLUGIN_HANDLED;
}
hlgcsay(strMessage[ ]) {
new sHLGSAY[MAX_DATA_LENGTH];
snprintf(sHLGSAY,MAX_TEXT_LENGTH,"hlg_say ^"%s^"",strMessage);
exec(sHLGSAY);
return 1;
}
public say_motm(Timer,Repeat,HLName,HLParam) {
new strMessage[MAX_TEXT_LENGTH];
if (MOTM_COUNTER < 1)
MOTM_COUNTER = 1;
if ( fileexists(MapFile) > 0 ) {
if (readfile(MapFile, strMessage, MOTM_COUNTER, MAX_TEXT_LENGTH) == 0) {
if ( MOTM_COUNTER > 1 ) {
MOTM_COUNTER = 1;
say_motm(Timer,Repeat,HLName,HLParam);
} else {
hlgcsay(MOTM_MESSAGE);
}
} else {
new sCounter[MAX_NAME_LENGTH];
hlgcsay(strMessage);
MOTM_COUNTER++;
if (MOTM_MAP == 0) {
numtostr(MOTM_COUNTER,sCounter);
set_vaultdata("MOTM_COUNTER", sCounter);
}
}
}
}
public plugin_init() {
plugin_registerinfo("Message Of The Moment Plugin","Displays messages from a text file to all users at timed intervals.",STRING_VERSION);
plugin_registercmd("admin_motm_reset", "admin_motm_reset", ACCESS_MOTM,"admin_motm_reset: Reset the MOTM counter to 1.");
plugin_registercmd("admin_motm_time", "admin_motm_time", ACCESS_MOTM,"admin_motm_time <seconds>: Set the time between MOTM messages.");
// 2.50.2 - 7/7/2001
plugin_registercmd("admin_motm_duration", "admin_motm_duration", ACCESS_MOTM,"admin_motm_duration <seconds>: Set the duration the message says on the client screen.");
plugin_registercmd("admin_motm_wtf", "admin_motm_wtf", ACCESS_MOTM,"admin_motm_wtf: Tells you what the problem is when MOTM don't work.");
new VaultData[MAX_DATA_LENGTH];
if(get_vaultdata("MOTM_TIME", VaultData, MAX_DATA_LENGTH) != 0) {
MOTM_TIME = strtonum(VaultData);
} else {
MOTM_TIME = 240;
set_vaultdata("MOTM_TIME", "240");
}
if(get_vaultdata("MOTM_DURATION", VaultData, MAX_DATA_LENGTH) != 0) {
MOTM_DURATION = strtonum(VaultData);
} else {
MOTM_TIME = 10;
set_vaultdata("MOTM_DURATION", "10");
}
currentmap(MapFile, MAX_DATA_LENGTH);
snprintf(MapFile, MAX_TEXT_LENGTH, "%s.txt", MapFile);
if ( fileexists(MapFile) > 0 ) {
MOTM_MAP = 1;
} else {
strcpy(MapFile, "MOTM.TXT", MAX_DATA_LENGTH);
MOTM_MAP = 0;
if(get_vaultdata("MOTM_COUNTER", VaultData, MAX_DATA_LENGTH) != 0) {
MOTM_COUNTER = strtonum(VaultData);
} else {
MOTM_COUNTER = 1;
}
}
if (getvar("file_access_read") == 0) {
MOTM_TIME = 20;
}
set_timer("say_motm",MOTM_TIME,99999);
return PLUGIN_CONTINUE;
}