/************************************************* * RealBot AI Control Plugin - Version 1.0 * * * * by AnalyzeThis 7-July-02 * * shootme@rochester.rr.com * * * * Allows users with Admin rights to issue bot * * commands, without having rcon rights. * * * * Uses vault.ini to store settings. * *************************************************/ #include <core> #include <console> #include <string> #include <admin> #include <adminlib> #define ACCESS_RB_COMMANDS 2 // allows access for any admin, assuming server default access is set to 1 #define MIN_SKILL -1 // minimum value allowed by bot program #define MAX_SKILL 10 // maximum value allowed by bot program #define DEFAULT_SKILL -1 // default setting until modified by an Admin #define DEFAULT_MIN_SKILL 3 // default setting until modified by an Admin #define DEFAULT_MAX_SKILL 8 // default setting until modified by an Admin new rb_skill = DEFAULT_SKILL; // -1 to 10, -1=Random, 0=GodLike, 10=Noob new rb_min_skill = DEFAULT_MIN_SKILL; // min skill when random new rb_max_skill = DEFAULT_MAX_SKILL; // max skill when random /* readvaultnum, writevaultnum and readHLnum functions extracted from: * * settings.inc * Configuration Setting address helper function library * By Ravenous Bugblatter Beast * ravenousbugblatterbeast@hotmail.com * http://www.ravenousbugblatterbeast.pwp.blueyonder.co.uk * * No sense taking time to re-invent the wheel... Thanks RBB :) */ stock readvaultnum(name[],&output,defaultval,minimum,maximum) { /* Read saved setting from vault */ new Buffer[10]=""; get_vaultdata(name,Buffer,10); if (strlen(Buffer)>0) { output = strtonum(Buffer); if ((output <minimum) || (output > maximum)) { output = defaultval; } return 1; } return 0; } stock writevaultnum(name[],value) { /* write number to vault */ new Buffer[10]; numtostr(value,Buffer); set_vaultdata(name,Buffer); return 0; } stock readHLnum(HLData,&output,defaultval,minimum,maximum) { /* Read setting from halflife string */ new Data[MAX_DATA_LENGTH]; convert_string(HLData,Data,MAX_DATA_LENGTH); if (strlen(Data) > 0) { output = strtonum(Data); if ((output <minimum) || (output > maximum)) { output = defaultval; } return 1; } return 0; } public addtbot(HLCommand, HLData, HLUserName, UserIndex) { new rbds_cmd[MAX_DATA_LENGTH]; new text[MAX_TEXT_LENGTH]; new NewSkill; new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); if (rb_skill == -1) { NewSkill = rb_min_skill + random(rb_max_skill - rb_min_skill+1); if (NewSkill < 0) NewSkill = 0; if (NewSkill > 10) NewSkill = 10; } else NewSkill = rb_skill; snprintf(rbds_cmd,MAX_DATA_LENGTH,"rbds addbot_1_%i",NewSkill); exec(rbds_cmd); snprintf(text,MAX_TEXT_LENGTH,"Terrorist Bot Added - Skill %i (Default %i, Min %i, Max %i)",NewSkill,rb_skill,rb_min_skill,rb_max_skill); messageex(User, text, print_chat); return PLUGIN_HANDLED; } public addctbot(HLCommand, HLData, HLUserName, UserIndex) { new rbds_cmd[MAX_DATA_LENGTH]; new text[MAX_TEXT_LENGTH]; new NewSkill; new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); if (rb_skill == -1) { NewSkill = rb_min_skill + random(rb_max_skill - rb_min_skill+1); if (NewSkill < 0) NewSkill = 0; if (NewSkill > 10) NewSkill = 10; } else NewSkill = rb_skill; snprintf(rbds_cmd,MAX_DATA_LENGTH,"rbds addbot_2_%i",NewSkill); exec(rbds_cmd); snprintf(text,MAX_TEXT_LENGTH,"Counter-Terrorist Bot Added - Skill %i (Default %i, Min %i, Max %i)",NewSkill,rb_skill,rb_min_skill,rb_max_skill); messageex(User, text, print_chat); return PLUGIN_HANDLED; } public remtbot(HLCommand, HLData, HLUserName, UserIndex) { new rbds_cmd[MAX_DATA_LENGTH]; new text[MAX_TEXT_LENGTH]; new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); snprintf(rbds_cmd,MAX_DATA_LENGTH,"rbds removebot_1_1"); exec(rbds_cmd); snprintf(text,MAX_TEXT_LENGTH,"Terrorist Bot Removed"); messageex(User, text, print_chat); return PLUGIN_HANDLED; } public remctbot(HLCommand, HLData, HLUserName, UserIndex) { new rbds_cmd[MAX_DATA_LENGTH]; new text[MAX_TEXT_LENGTH]; new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); snprintf(rbds_cmd,MAX_DATA_LENGTH,"rbds removebot_1_2"); exec(rbds_cmd); snprintf(text,MAX_TEXT_LENGTH,"Counter-Terrorist Bot Removed"); messageex(User, text, print_chat); return PLUGIN_HANDLED; } public killbots(HLCommand, HLData, HLUserName, UserIndex) { new rbds_cmd[MAX_DATA_LENGTH]; new text[MAX_TEXT_LENGTH]; new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); snprintf(rbds_cmd,MAX_DATA_LENGTH,"rbds endround"); exec(rbds_cmd); snprintf(text,MAX_TEXT_LENGTH,"All bots terminated"); messageex(User, text, print_chat); return PLUGIN_HANDLED; } public defaultskill(HLCommand, HLData, HLUserName, UserIndex) { new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); if (readHLnum(HLData, rb_skill, DEFAULT_SKILL, MIN_SKILL, MAX_SKILL)) { writevaultnum("rb_skill", rb_skill); new text[MAX_TEXT_LENGTH]; snprintf(text,MAX_TEXT_LENGTH,"Default Bot Skill set to %i", rb_skill); messageex(User, text, print_chat); } return PLUGIN_HANDLED; } public minskill(HLCommand, HLData, HLUserName, UserIndex) { new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); if (readHLnum(HLData, rb_min_skill, MIN_SKILL, MIN_SKILL, MAX_SKILL)) { writevaultnum("rb_min_skill", rb_min_skill); new text[MAX_TEXT_LENGTH]; snprintf(text,MAX_TEXT_LENGTH,"Minimum Bot Skill set to %i", rb_min_skill); messageex(User, text, print_chat); } return PLUGIN_HANDLED; } public maxskill(HLCommand, HLData, HLUserName, UserIndex) { new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); if (readHLnum(HLData, rb_max_skill, MAX_SKILL, MIN_SKILL, MAX_SKILL)) { writevaultnum("rb_max_skill", rb_max_skill); new text[MAX_TEXT_LENGTH]; snprintf(text,MAX_TEXT_LENGTH,"Maximum Bot Skill set to %i", rb_max_skill); messageex(User, text, print_chat); } return PLUGIN_HANDLED; } public plugin_init() { /* Register plugin & commands with adminmod */ readvaultnum("rb_skill", rb_skill, DEFAULT_SKILL, MIN_SKILL, MAX_SKILL); readvaultnum("rb_min_skill", rb_min_skill, DEFAULT_MIN_SKILL, MIN_SKILL, MAX_SKILL); readvaultnum("rb_max_skill", rb_max_skill, DEFAULT_MAX_SKILL, MIN_SKILL, MAX_SKILL); plugin_registerinfo("RealBot AI Command Plugin","Allows RealBot commands to be run without rcon privs","1.0"); plugin_registercmd("addtbot", "addtbot", ACCESS_RB_COMMANDS, "addtbot: Adds a T bot with current default skill"); plugin_registercmd("addctbot", "addctbot", ACCESS_RB_COMMANDS, "addctbot: Adds a CT bot with current default skill"); plugin_registercmd("remtbot", "remtbot", ACCESS_RB_COMMANDS, "remtbot: Removes a T bot"); plugin_registercmd("remctbot", "remctbot", ACCESS_RB_COMMANDS, "remctbot: Removes a CT bot"); plugin_registercmd("killbots", "killbots", ACCESS_RB_COMMANDS, "killbots: Kills all bots"); plugin_registercmd("defaultskill", "defaultskill", ACCESS_RB_COMMANDS, "defaultskill: Sets default bot skill (-1=random, 0 to 10=GodLike to Noob"); plugin_registercmd("minskill", "minskill", ACCESS_RB_COMMANDS, "minskill: Sets low limit for random bot skill"); plugin_registercmd("maxskill", "maxskill", ACCESS_RB_COMMANDS, "maxskill: Sets high limit for random bot skill"); // say("plugin_realbot initialized"); return PLUGIN_CONTINUE; }