// // ------------------------------------------------------------------------- // // TimeWaster's Happy Hour Script v0.3 // // ------------------------------------------------------------------------- // // From here, Happy Hour will be referenced as "HH" // To configure a full hour (60 minutes) of HH, please use the format 22:00 to 22:59 hours, due to the Minutes are inklusive. // // This script is released under the GPL: http://www.opensource.org/licenses/gpl-license.php // // Visit my homepage for further info's and cool stuff: http://www.timewaster.de/timewasters-happy-hour-script-for-css-eventscripts/ // // Installation: // 1. The plugin "Eventscripts" has to be installed on your server: http://www.mattie.info/cs/ (both versions are fine) // 2. Copy this script into the folder /addons/eventscripts/happyhour/ (you have to create the folder /happyhour/ ) // 3. Configure the Happy Hour regarding your wishes in the script file itself // 4. Add the following 2 lines to THE END of your server.cfg (without the "// "!!!). // es_load happyhour // es_xdoblock happyhour/hh_config // 5. Restart your server // // Version history: // v 0.3: // - Documentary cleanup // - Added feature: Multilanguage support (now i need your translations!) // - Added feature: Display of predefined text (start and ending times) instead of calculated values // - Added feature: Warmup timer to avoid screwing MAP warmup time // - Added feature: Play a sound when the HH starts or ends // - Added feature: Execute a server command when the HH starts or ends // - Added feature: Prevent block hh_time from being run twice (e.g. after server restart) // - Added feature: The admin can now decide which pieces of equipment will be provided // // v 0.2: // - Initial version // // ToDo's for future Releases (aka wish list) // - Support for multiple HH times (e.g. 2 times a day) and / or make weekday selectable // // block hh_config { es_xset hh_startSound 0 es_xset hh_endSound 0 es_xset hh_startCommand 0 es_xset hh_endCommand 0 // // // ------------------------------------------------------------------------- // ONLY DO CHANGES BETWEEN HERE... // ------------------------------------------------------------------------- // --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- // ------------------------------------------------------------------------- // // // Configuration: // es_xset hh_language "en" // The language of all messages the player could see ("en" or "de") // es_xset hh_startHour 20 // The hour the HH starts (in 24 hour time format!) es_xset hh_startMinute 0 // The minute the HH starts (inclusively!) es_xset hh_startHour_humanReadable "8 PM" // HH start time as human readable format (for display) es_xset hh_endHour 20 // The hour the HH ends (in 24 hour time format!) es_xset hh_endMinute 59 // The minute the HH ends (inclusively, means if you choose 59, minute 59 will be the last minute the HH is on!) es_xset hh_endHour_humanReadable "9 PM" // HH end time as human readable format (for display) es_xset hh_timeFrameInfo 5 // Displays every x minutes a message at which time the HH will start or that the HH is running es_xset hh_warmupTimeToWait 0 // The number of seconds to wait after a map change before any weapons will be distributed. // If your server has a warmup timer, set this to the number of seconds your warmup lasts minus // 1 second to avoid some time intersection where it could be possible that the first round // would be provided no weapons (e.g. 35 - 1 = 34). If you haven't any warmup set this to 0. // es_xset hh_givePrimaryWeaponT "weapon_ak47" // This weapon will be given to the Terrorists if the player has no primary weapon es_xset hh_givePrimaryWeaponCT "weapon_m4a1" // This weapon will be given to the Counter-Terrorists if the player has no primary weapon es_xset hh_giveSecondaryWeapon "weapon_deagle" // This weapon will be given to all players es_xset hh_giveHEGrenade true // Give HE Grenade to all players es_xset hh_giveFlashBang 2 // Give FlashBang Grenades to all players (Values: 0, 1 or 2) es_xset hh_giveSmokeGrenade true // Give Smoke Grenade to all players es_xset hh_giveArmor 100 // Give Armor to all players (Values: 0 to 100) es_xset hh_giveDefuser true // Give Defuser to all players es_xset hh_giveNightVision true // Give Night Vision to all players // es_xset hh_renewHEGrenade false // A thrown HE granade will be replaced with a new one (i.e. endless grenades) (ON YOUR OWN RISK!) es_xset hh_renewFlashGrenade false // A thrown FlashBang will be replaced with a new one (i.e. endless grenades) (ON YOUR OWN RISK!) es_xset hh_renewSmokeGrenade false // A thrown Smoke granade will be replaced with a new one (i.e. endless grenades) (ON YOUR OWN RISK!) es_xset hh_bombForAll false // All Terrorist's get a bomb, not just one Terrorist (and all can be planted) (ON YOUR OWN RISK!) // // FOREWORD: If a sound or a command is not used, COMMENT THE LINE OUT! (with a "//") es_xset hh_startSound "ambient/machines/train_horn_3.wav" // Plays this sound when the HH starts (every player must have this sound, that's your task! (add it to cstrike/cfg/mani_admin_plugin/downloads.txt if it is a custom sound)) es_xset hh_endSound "ambient/machines/train_horn_1.wav" // Plays this sound when the HH ends (every player must have this sound, that's your task! (add it to cstrike/cfg/mani_admin_plugin/downloads.txt if it is a custom sound)) // es_xset hh_startCommand "" // Executes this command when the HH starts (e.g. "hostname name with hh") // es_xset hh_endCommand "" // Executes this command when the HH ends (e.g. "hostname name without hh") // AFTERWORD: There's a handicap with using commands: You cannot use " in the commands. (i.e. "hostname "name with hh"" WONT work, "hostname name with hh" will) // // // Translations: // if(server_var(hh_language) == "en") do { es_xset hh_text_moreInfo "For more information write !happy into the chat." es_xset hh_text_HHOver "The Happy Hour is over!" es_xset hh_text_HHStart_1 "Now it's Happy Hour! You'll get every round" es_xset hh_text_HHStart_2 "weapons and a complete set of equipment!" es_xset hh_text_HHEnd_5Mins "The Happy Hour will end in 5 minutes!" es_xset hh_text_HHEnd_1Mins "The Happy Hour will end in 1 minute!" es_xset hh_text_HHRuns "It's Happy Hour!" es_xset hh_text_HHStart_5Mins "In 5 minutes it's Happy Hour!" es_xset hh_text_HHStart_1Mins "In 1 minute it's Happy Hour!" es_xformatv hh_text_HHStart_NoRuns "The next Happy Hour is at %1!" hh_startHour_humanReadable es_xformatv hh_text_HHInfo_1 "Every day from %1 to %2 it's Happy Hour on this server." hh_startHour_humanReadable hh_endHour_humanReadable es_xset hh_text_HHInfo_2 "This means you'll get every round 2 weapons and a set of" es_xset hh_text_HHInfo_3 "equipment for free!" es_xset hh_text_HHInfo_4 "The weapons will be provided to you automatically" es_xset hh_text_HHInfo_5 "at spawn, you don't have to buy them." es_xset hh_text_HHJoinInfo_1 "Right now it's Happy Hour on this server!" es_xset hh_text_HHJoinInfo_2 "You'll get every round weapons for free!" } if(server_var(hh_language) == "de") do { es_xset hh_text_moreInfo "Fuer mehr Informationen schreibe !happy in den Chat." es_xset hh_text_HHOver "Die Happy Hour ist vorbei!" es_xset hh_text_HHStart_1 "Ab jetzt ist Happy Hour! Jede Runde bekommst du" es_xset hh_text_HHStart_2 "Waffen und Equipment umsonst!" es_xset hh_text_HHEnd_5Mins "Die Happy Hour endet in 5 minuten!" es_xset hh_text_HHEnd_1Mins "Die Happy Hour endet in 1 minute!" es_xset hh_text_HHRuns "Es ist Happy Hour!" es_xset hh_text_HHStart_5Mins "Die Happy Hour beginnt in 5 minuten!" es_xset hh_text_HHStart_1Mins "Die Happy Hour beginnt in 1 minute!" es_xformatv hh_text_HHStart_NoRuns "Die naechste Happy Hour ist um %1!" hh_startHour_humanReadable es_xformatv hh_text_HHInfo_1 "Jeden Tag von %1 bis %2 ist Happy Hour" hh_startHour_humanReadable hh_endHour_humanReadable es_xset hh_text_HHInfo_2 "auf diesem Server. Das bedeutet du bekommst" es_xset hh_text_HHInfo_3 "2 Waffen und jegliche Grundausruestung umsonst!" es_xset hh_text_HHInfo_4 "Die Waffen werden dir beim spawnen automatisch" es_xset hh_text_HHInfo_5 "gegeben, du musst sie nicht kaufen." es_xset hh_text_HHJoinInfo_1 "Es ist gerade Happy Hour auf diesem Server!" es_xset hh_text_HHJoinInfo_2 "Jede Runde bekommst du konstenlos Waffen!" } // // // ------------------------------------------------------------------------- // --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- // ------------------------------------------------------------------------- // ...AND HERE! // ------------------------------------------------------------------------- // // es_xset hh_text_line "---------------------------------------------------------" es_xset hh_doHappyHour true es_xset hh_isHappyHour false es_xset hh_HappyHourWillEnd false es_xset hh_HappyHourWillStart false es_xset hh_preventMessage false es_xset hh_warmupWait false es_xset hh_lastTimeBlockRan 0 es_xset hh_startTime 0 es_math hh_startTime + server_var(hh_startHour) es_xmath hh_startTime * 60 es_math hh_startTime + server_var(hh_startMinute) es_xset hh_endTime 0 es_math hh_endTime + server_var(hh_endHour) es_xmath hh_endTime * 60 es_math hh_endTime + server_var(hh_endMinute) if(server_var(hh_warmupTimeToWait) > 0) do { es_xset hh_warmupWait true es_delayed server_var(hh_warmupTimeToWait) es_xdoblock happyhour/hh_endWarmup } es_xdoblock happyhour/hh_time } block load { es_xdoblock happyhour/hh_config } block unload { es_xset hh_doHappyHour false es_xset hh_isHappyHour false } block hh_endWarmup { hh_warmupWait false } block hh_time { if(server_var(hh_doHappyHour) == true) do { es_xset hh_time 0 es_xset hh_timeHour 0 es_xset hh_timeMinute 0 eventscripts_timeformat "%H" es_gettimestring hh_timeHour eventscripts_timeformat "%M" es_gettimestring hh_timeMinute es_math hh_time + server_var(hh_timeHour) es_xmath hh_time * 60 es_math hh_time + server_var(hh_timeMinute) if(server_var(hh_lastTimeBlockRan) != server_var(hh_time)) do { es_set hh_lastTimeBlockRan server_var(hh_time) es_xset hh_isHappyHour false if(server_var(hh_startTime) < server_var(hh_endTime)) do { if(server_var(hh_time) >= server_var(hh_startTime)) do { if(server_var(hh_time) <= server_var(hh_endTime)) then es_xset hh_isHappyHour true } } else do { if(server_var(hh_time) >= server_var(hh_startTime)) then es_xset hh_isHappyHour true if(server_var(hh_time) <= server_var(hh_endTime)) then es_xset hh_isHappyHour true } if(server_var(hh_HappyHourWillEnd) == true) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHOver) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) es_xset hh_HappyHourWillEnd false es_xset hh_preventMessage true if(server_var(hh_endSound) != 0) then es_cexec_all playgamesound server_var(hh_endSound) if(server_var(hh_endCommand) != 0) then es_xcommandv hh_endCommand } if(server_var(hh_HappyHourWillStart) == true) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHStart_1) es_msg server_var(hh_text_HHStart_2) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) es_xset hh_HappyHourWillStart false es_xset hh_preventMessage true if(server_var(hh_startSound) != 0) then es_cexec_all playgamesound server_var(hh_startSound) if(server_var(hh_startCommand) != 0) then es_xcommandv hh_startCommand } if(server_var(hh_preventMessage) == false) do { if(server_var(hh_isHappyHour) == true) do { es_set hh_tempTime server_var(hh_endTime) es_xmath hh_tempTime - 5 if(server_var(hh_tempTime) < 0) then es_xmath hh_tempTime + 1440 if(server_var(hh_time) == server_var(hh_tempTime)) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHEnd_5Mins) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) } else do { es_xmath hh_tempTime + 4 if(server_var(hh_tempTime) > 1439) then es_xmath hh_tempTime - 1440 if(server_var(hh_time) == server_var(hh_tempTime)) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHEnd_1Mins) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) es_xset hh_HappyHourWillEnd true } else do { es_set hh_tempTime2 server_var(hh_time) es_math hh_tempTime2 / server_var(hh_timeFrameInfo) es_set hh_tempTime3 server_var(hh_tempTime2) es_xmath hh_tempTime2 int if(server_var(hh_tempTime2) == server_var(hh_tempTime3)) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHRuns) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) } } } } else do { es_set hh_tempTime server_var(hh_startTime) es_xmath hh_tempTime - 5 if(server_var(hh_tempTime) < 0) then es_xmath hh_tempTime + 1440 if(server_var(hh_time) == server_var(hh_tempTime)) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHStart_5Mins) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) } else do { es_xmath hh_tempTime + 4 if(server_var(hh_tempTime) > 1439) then es_xmath hh_tempTime - 1440 if(server_var(hh_time) == server_var(hh_tempTime)) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHStart_1Mins) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) es_xset hh_HappyHourWillStart true } else do { es_set hh_tempTime2 server_var(hh_time) es_math hh_tempTime2 / server_var(hh_timeFrameInfo) es_set hh_tempTime3 server_var(hh_tempTime2) es_xmath hh_tempTime2 int if(server_var(hh_tempTime2) == server_var(hh_tempTime3)) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHStart_NoRuns) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) } } } } } es_xset hh_preventMessage false es_delayed 60 es_xdoblock happyhour/hh_time } } } event player_spawn { if(server_var(hh_doHappyHour) == true) do { if(server_var(hh_isHappyHour) == true) do { if(server_var(hh_warmupWait) == false) do { es_xset hh_userTeam false if(event_var(es_userteam) == 2) then es_xset hh_userTeam true if(event_var(es_userteam) == 3) then es_xset hh_userTeam true if(server_var(hh_userTeam) == true) do { es_xset hh_userPrimary 0 es playerget primary hh_userPrimary event_var(userid) es_xset hh_userC4 0 es playerget c4 hh_userC4 event_var(userid) es_fire event_var(userid) player_weaponstrip kill es_give event_var(userid) player_weaponstrip es_fire event_var(userid) player_weaponstrip strip es_delayed 0.1 es_give event_var(userid) weapon_knife es_delayed 0.1 es_give event_var(userid) server_var(hh_giveSecondaryWeapon) if(server_var(hh_userPrimary) == 0) do { if(event_var(es_userteam) == 2) then es_delayed 0.1 es_give event_var(userid) server_var(hh_givePrimaryWeaponT) if(event_var(es_userteam) == 3) then es_delayed 0.1 es_give event_var(userid) server_var(hh_givePrimaryWeaponCT) } else es_delayed 0.1 es_give event_var(userid) server_var(hh_userPrimary) if(server_var(hh_giveHEGrenade) == true) then es_delayed 0.1 es_give event_var(userid) weapon_hegrenade if(server_var(hh_giveFlashBang) > 0) then es_delayed 0.1 es_give event_var(userid) weapon_flashbang if(server_var(hh_giveFlashBang) > 1) then es_delayed 0.1 es_give event_var(userid) weapon_flashbang if(server_var(hh_giveSmokeGrenade) == true) then es_delayed 0.1 es_give event_var(userid) weapon_smokegrenade if(server_var(hh_giveArmor) > 0) then es_delayed 0.1 es playerset armor event_var(userid) server_var(hh_giveArmor) if(server_var(hh_giveDefuser) == true) do { if(event_var(es_userteam) == 3) then es_delayed 0.1 es playerset defuser event_var(userid) 1 } if(server_var(hh_giveNightVision) == true) then es_delayed 0.1 es playerset nightvision event_var(userid) 1 if(event_var(es_userteam) == 2) do { if(server_var(hh_bombForAll) == true) then es_delayed 0.5 es_give event_var(userid) weapon_c4 else do { if(server_var(hh_userC4) == 1) then es_delayed 0.5 es_give event_var(userid) weapon_c4 } } } } } } } event smokegrenade_detonate { if(server_var(hh_doHappyHour) == true) do { if(server_var(hh_isHappyHour) == true) do { if(server_var(hh_warmupWait) == false) do { if(server_var(hh_renewSmokeGrenade) == true) do { es_delayed 0.1 es_give event_var(userid) weapon_smokegrenade } } } } } event hegrenade_detonate { if(server_var(hh_doHappyHour) == true) do { if(server_var(hh_isHappyHour) == true) do { if(server_var(hh_warmupWait) == false) do { if(server_var(hh_renewHEGrenade) == true) do { es_delayed 0.1 es_give event_var(userid) weapon_hegrenade } } } } } event flashbang_detonate { if(server_var(hh_doHappyHour) == true) do { if(server_var(hh_isHappyHour) == true) do { if(server_var(hh_warmupWait) == false) do { if(server_var(hh_renewFlashGrenade) == true) do { es_delayed 0.1 es_give event_var(userid) weapon_flashbang } } } } } event player_say { if(event_var(text) == "!happy") do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHInfo_1) es_msg server_var(hh_text_HHInfo_2) es_msg server_var(hh_text_HHInfo_3) es_msg server_var(hh_text_HHInfo_4) es_msg server_var(hh_text_HHInfo_5) es_msg server_var(hh_text_line) } } event player_activate { if(server_var(hh_doHappyHour) == true) do { if(server_var(hh_isHappyHour) == true) do { es_msg server_var(hh_text_line) es_msg server_var(hh_text_HHJoinInfo_1) es_msg server_var(hh_text_HHJoinInfo_2) es_msg server_var(hh_text_moreInfo) es_msg server_var(hh_text_line) } } }