/* * Admin mod script. Copyright (C) 2000, Alfred Reynolds. * $Id: plugin_dio_motm.sma,v 2.50.2 7/8/2001 dio Exp $ * */ /* This plugin will cycle messages to all clients at a timed interval. */ /* View the plugin_dio_motm.txt for setup and usage instructions */ #include <core> #include <console> #include <string> #include <admin> #include <adminlib> #define ACCESS_MOTM 4096 // security level required to reset counter new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.2"; new MapFile[MAX_DATA_LENGTH]; new MOTM_MESSAGE[MAX_TEXT_LENGTH] = "This server uses AdminMod 2.50^nbut the server admin^ndid not setup Dio's plugin right!^nTry admin_motm_wtf^nto find out why!"; new MOTM_COUNTER = 1; new MOTM_MAP = 0; new MOTM_TIME = 240; // seconds between messages new MOTM_DURATION = 10; // 2.50.2 - 7/7/2001 - seconds for message to last. new MOTM_TYPE = 1; 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_type(HLCommand,HLData,HLUserName,UserIndex) { new User[MAX_NAME_LENGTH]; new Data[MAX_TEXT_LENGTH]; new Command[MAX_TEXT_LENGTH]; new sCounter[MAX_NAME_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) { if(check_param(Data)==1) { MOTM_TYPE = 1; } else { MOTM_TYPE = 0; } numtostr(MOTM_TYPE,sCounter); set_vaultdata("MOTM_TYPE", sCounter); } if (MOTM_TYPE == 1) { selfmessage("[ADMIN] MOTM Type mode On"); } else { selfmessage("[ADMIN] MOTM Type mode Off"); } 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 strData[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); //strcpy(strData, Data, MAX_TEXT_LENGTH); } else { //numtostr(MOTM_TIME, strData); } //snprintf(strMessage, MAX_TEXT_LENGTH, "[ADMIN] MOTM Time Is %s seconds", strData); snprintf(strMessage, MAX_TEXT_LENGTH, "[ADMIN] MOTM Time Is %d seconds", MOTM_TIME); selfmessage(strMessage); log_command(User, Command, Data); return PLUGIN_HANDLED; } // 2.50.2 - 7/7/2001 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; } public say_motm(Timer,Repeat,HLName,HLParam) { new strMessage[MAX_TEXT_LENGTH]; /* Read a line based on the MOTM_COUNTER. */ 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 { centersay(MOTM_MESSAGE,10,0,255,0); } } else { new sCounter[MAX_NAME_LENGTH]; new Red = 0; new Green = 255; new Blue = 0; // 2.50.2 - 7/7/2001 if (strncmp(strMessage, "!", 1) == 0) { new strColor[MAX_NAME_LENGTH]; strbreak(strMessage, strColor, strMessage, MAX_TEXT_LENGTH); if (strncasecmp(strColor,"!red",4)==0) { Red = 250; Green = 10; Blue =10; } else if ( strncasecmp(strColor, "!blue",5)==0) { Red = 10; Green = 10; Blue = 250; } else if ( strncasecmp(strColor, "!green",6)==0) { Red = 10; Green = 250; Blue = 10; } else if ( strncasecmp(strColor, "!white",6)==0) { Red = 250; Green = 250; Blue = 250; } else if ( strncasecmp(strColor, "!yellow",7)==0) { Red = 250; Green = 250; Blue = 10; } else if ( strncasecmp(strColor, "!purple",7)==0) { Red = 250; Green = 10; Blue = 250; } else if ( strncasecmp(strColor, "!random",7)==0) { Red = random(256); Green = random(256); Blue = random(256); } } strsubst(strMessage, "^^n", "^n", MAX_TEXT_LENGTH); if (MOTM_TYPE == 0) { centersay(strMessage,10,Red,Green,Blue); } else { typesay(strMessage,10,Red,Green,Blue); } MOTM_COUNTER++; if (MOTM_MAP == 0) { numtostr(MOTM_COUNTER,sCounter); set_vaultdata("MOTM_COUNTER", sCounter); } new Target[MAX_NAME_LENGTH]; new i, SessionID, WONID, Team; new maxplayers = maxplayercount(); strsubst(strMessage, "^n", " ", MAX_TEXT_LENGTH); /* I really hate the csay because once it is off the screen it's gone forever. This will put the message in the users console also. */ for(i=1; i<=maxplayers; i++) { strinit(Target); if(playerinfo(i,Target,MAX_NAME_LENGTH,SessionID,WONID,Team)==1) { messageex(Target,strMessage, print_console); } } } } } 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_type", "admin_motm_type", ACCESS_MOTM,"admin_motm_type <^"on^" | ^"off^">: Set the typesay mode."); 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"); } // 2.50.2 - 7/7/2001 if(get_vaultdata("MOTM_DURATION", VaultData, MAX_DATA_LENGTH) != 0) { MOTM_DURATION = strtonum(VaultData); } else { MOTM_DURATION = 10; set_vaultdata("MOTM_DURATION", "10"); } if(get_vaultdata("MOTM_TYPE", VaultData, MAX_DATA_LENGTH) != 0) { MOTM_TYPE = strtonum(VaultData); } else { MOTM_TYPE = 1; set_vaultdata("MOTM_TYPE", "1"); } // if we are using a map specific cycle then just start at 1 and DON'T SAVE THE COUNTER 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; }