// SAMPLE_PLUGIN.cpp : Defines the entry point for the DLL application. // #include "bzfsAPI.h" #include #include #include extern std::string strtoupper(std::string strtoconv); bool yesBot = true; BZ_GET_PLUGIN_VERSION class BZFSBotHandler : public bz_EventHandler { public: BZFSBotHandler(); virtual ~BZFSBotHandler(); virtual void process ( bz_EventData *eventData ); virtual bool autoDelete ( void ) { return false;} // this will be used for more then one event }; BZFSBotHandler bot; BZF_PLUGIN_CALL int bz_Load ( const char* commandLine ) { bz_debugMessage(1,"BZFSBot plugin loaded. Party Time!"); bz_registerEvent(bz_eChatMessageEvent,BZ_ALL_USERS,&bot); return 0; } BZF_PLUGIN_CALL int bz_Unload ( void ) { bz_debugMessage(1,"BZFSBot plugin unloaded. Load me next time ;)"); bz_removeEvent(bz_eChatMessageEvent,BZ_ALL_USERS,&bot); return 0; } BZFSBotHandler::BZFSBotHandler() { } BZFSBotHandler::~BZFSBotHandler() { } void BZFSBotHandler::process ( bz_EventData *eventData ) { switch (eventData->eventType) { default: break; case bz_eChatMessageEvent: { bz_ChatEventData *chat = (bz_ChatEventData*)eventData; /*Do stuff here, ie.e set vars up*/ int sender = chat->from; std::string message = chat->message.c_str();//convert bzAPI string to std::string for substr srand ( (unsigned)time(NULL) ); bz_PlayerRecord* speaker = bz_getPlayerByIndex ( chat->from ); // activate things... and vice versa if(strtoupper(message.substr(0,7)) == "@YESBOT") { if(speaker->admin == true){ yesBot = true; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "Bot activated"); } else{ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "You aren't an admin"); } } if(strtoupper(message.substr(0,6)) == "@NOBOT") { if(speaker->admin == true){ yesBot = false; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "Bot deactivated"); } else{ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "You aren't an admin"); } } if(yesBot == true){// get a way to turn off the bot when not needed :) // "non-symbol" commands if(strtoupper(message.substr(0,2)) == "HI") { std::string user = speaker->callsign.c_str();//the former is a std::string while the latter is bzAPI string, so "convert" it std::string hello = "Hi "; std::string result = hello + user; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } if(strtoupper(message.substr(0,5)) == "HELLO") { std::string user = speaker->callsign.c_str(); std::string hello = "Hello "; std::string result = hello + user; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } if(strtoupper(message).find("SERVER",0) != std::string::npos)// find the occurrence of the string "server", and if it is found, um.. yeah { bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "What about me?"); } if(strtoupper(message).find("MAGIC",0) != std::string::npos)// find the occurrence of the string "server", and if it is found, um.. yeah { bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, ""); } if(strtoupper(message).find("BLAST007",0) != std::string::npos)// find the occurrence of the string "server", and if it is found, um.. yeah { bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "He is occasionally wacky, but very cool :)"); } if(strtoupper(message).find("WEGSTAR",0) != std::string::npos)// find the occurrence of the string "server", and if it is found, um.. yeah { bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "The stater of the obvious, tries to learn the world, but ends up wasting time instead."); } if(strtoupper(message).find("LOL",0) != std::string::npos)// find the occurrence of the string "server", and if it is found, um.. yeah { std::string user = speaker->callsign.c_str(); std::string part = "lol.. that's so funny, "; std::string part2 = ". hehehe"; std::string result = part + user + part2; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str() ); } if(strtoupper(message.substr(0,1))== std::string("~")) { /* Hi */ if(strtoupper(message.substr(0,3)) == "~HI") { bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "Hello"); } if(strtoupper(message.substr(0,5)) == "~LART"){ std::string arg = message.substr(6);// from the six character to the end // for some reason, switch and case doesn't work here :( int num = rand()%10; if(num == 1) { std::string lart = "The SERVER beats "; std::string lart2 = " head off with a louisville slugger, and makes a home run"; std::string result = lart + arg + lart2; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 2) { std::string lart = "The SERVER forces "; std::string lart2 = " to browse the web with IE"; std::string result = lart + arg + lart2; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 3) { std::string lart = "The SERVER rm -rf's "; std::string result = lart + arg; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 4) { std::string lart = "The SERVER cuts off "; std::string lart2 = "'s head with a halberd that could have been sharper"; std::string result = lart + arg + lart2; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 5) { std::string lart = "The SERVER blasts "; std::string lart2 = " to oblivion with a kamehameha wave"; std::string result = lart + arg + lart2; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 6) { std::string lart = "The SERVER cuts "; std::string lart2 = " in half with a free AOL CD"; std::string result = lart + arg + lart2; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 7) { std::string lart = "The SERVER jabs a hot car lighter into "; std::string lart2 = "'s eye sockets"; std::string result = lart + arg + lart2 ; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 8) { std::string lart = "The SERVER removes debian from "; std::string lart2 = "'s system"; std::string result = lart + arg + lart2 ; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 9) { std::string lart = "The SERVER sends a legion of lawyers after "; std::string lart2 = "'s head"; std::string result = lart + arg + lart2 ; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else if(num == 10) { std::string lart = "The SERVER beats "; std::string lart2 = " senseless with a 50lb Unix manual"; std::string result = lart + arg + lart2 ; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } else { std::string lart = "The SERVER decides to spare "; std::string lart2 = "'s life :P"; std::string result = lart + arg + lart2 ; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } }/*if ~lart*/ /* FISHSLAP */ if(strtoupper(message.substr(0,10)) == "~WHALESLAP") { std::string arg = message.substr(11); std::string slap = "The SERVER slaps "; std::string slap2 = " upside and over the head with one freakishly huge killer whale named Hugh"; std::string result = slap + arg + slap2; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } /* Magic Eight Ball*/ if(strtoupper(message.substr(0,15)) == "~MAGICEIGHTBALL") { std::string opt1 = "Yes..."; std::string opt2 = "No..."; std::string opt3 = "Maybe So..."; std::string opt4 = "Dunno"; std::string opt5 = "umm... probably"; std::string opt6 = "Never"; std::string opt7 = "Not in a million years :-)..."; std::string opt = "Ask again later"; int num = rand()%7; if(num==1){ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, opt1.c_str()); } else if(num==2){ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, opt2.c_str()); } else if(num == 3){ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, opt3.c_str()); } else if (num == 4){ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, opt4.c_str()); } else if (num == 5){ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, opt5.c_str()); } else if (num == 6){ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, opt6.c_str()); } else if (num == 7){ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, opt7.c_str()); } else{ bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, opt.c_str()); } } /* Commands */ if(strtoupper(message.substr(0,10)) == "~TOGGLEANNOUNCE") { std::string arg = message.substr(11); std::string slap = "The SERVER slaps "; std::string slap2 = " upside and over the head with one freakishly huge killer whale named Hugh"; std::string result = slap + arg + slap2; bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, result.c_str()); } } /*if "~" one*/ } } /*switch*/ break; case bz_ePlayerSpawnEvent: { bz_sendTextMessage(BZ_SERVER, BZ_ALL_USERS, "Welcome"); } break; case bz_ePlayerJoinEvent: { bz_PlayerJoinPartEventData *join = (bz_PlayerJoinPartEventData*)eventData; bz_PlayerRecord* joiner = bz_getPlayerByIndex ( join->playerID ); if(join->callsign == "wegstar" && (joiner->globalUser == true)){ bz_sendTextMessage(BZ_SERVER,BZ_ALL_USERS, "WEGSTAR HAS ARRIVED!!"); } else if (join->callsign == "gnurdux" && (joiner->globalUser == true)){ bz_sendTextMessage(BZ_SERVER,BZ_ALL_USERS, "GNURDUX HAS ARRIVED!!"); } } break; } }