Results 1 to 1 of 1

Thread: Cyber Attack / Search & Destroy Mod V2.00, for MOHAA Reborn (9/13 update)

  1. #1

    Lightbulb Cyber Attack / Search & Destroy Mod V2.00, for MOHAA Reborn (9/13 update)

    <><><> Cyber Attack / Search & Destroy Mod V2.00 <><><>

    The popular Cyber Attack and Search & Destroy game modes from Call of Duty: Modern Warfare 2 (2022) have been ported into MOHAA for 2023.
    The gameplay, rules, and conditions to win/lose in this mod are almost identical to the originals.
    Both game modes use "g_gametype 2" or team deathmatch, but killed players go to team-only spectator instead of respawning.
    In Cyber Attack, dead players are frozen like in Freeze Tag and other teammates can revive them (there are no long-range melt lasers in Cyber Attack).
    In Search & Destroy, dead players cannot be revived. Bombsites and an explosive are also on the map, allowing a team to blow up the other team's bombsite to win the round.
    Teams in both game modes have a specified amount of rounds to win (5 by default) before the map ends or until the map time limit runs out. Specific rules below.

    <><><> <><><>

    <><><> How To Install / Uninstall <><><>

    If packed in a .zip, unpack the .pk3 file. Copy the .pk3 file and paste it in the "Medal of Honor/main" folder (same folder as Pak0.pk3, Pak1.pk3, Pak2.pk3).

    Uninstall by deleting the .pk3 mod file from the "main" folder.

    <><><> <><><>

    <><><> Essential CVARS for UBER MODS Servers <><><>

    This new CVAR allows for switching between the current 3 uber game modes (besides FFA or TDM) before loading a new map.
    Place one of these lines into your server.cfg file, or add one of these lines to an .scr map script (before level waittill prespawn):

    Code:
    	seta g_ubergametype ""		// none or "0", default to g_gametype 1 or g_gametype 2.
    	seta g_ubergametype "bb"	// UBER BASEBUILDER game mode
    	seta g_ubergametype "cyb"	// CYBER ATTACK game mode
    	seta g_ubergametype "snd"	// SEARCH & DESTROY game mode
    	seta g_ubergametype "ft"	// FREEZE TAG game mode
    To switch to any of the "obj/" maps from an FFA or TDM game mode map (such as "dm/"), type the following into the console:

    Code:
    	g_gametype 4; map obj/obj_team1
    	g_gametype 4; map obj/obj_team2
    	g_gametype 4; map obj/obj_team3
    	g_gametype 4; map obj/obj_team4
    <><><> <><><>

    <><><> Features & Gameplay <><><>

    Code:
    - When the map loads, the first round begins after a few seconds (8 by default). Until the round begins, the bomb cannot be picked up, and all players can respawn after dying.
    Once started, the bomb and bombsites become triggerable. Any players that die will go to team-only spectating mode (not actually in spectator), and a frozen body will appear where players died if playing Cyber Attack.
    These frozen players can only be melted by their teammates, similar to Freeze Tag.
    When revived, the melted player is respawned and teleported back to where they were frozen, only after all other players have moved far enough away from your frozen body (prevents players getting stuck inside each other). 
    
    - While in team-spectating mode and waiting to get melted in Cyber Attack, or waiting for the next round in Search & Destroy, the spectating player can cycle between any living teammates or frozen dead bodies, with FIRE key (cycle forward) or USE key (cycle backward).
    If the enemy team wins while your teammates are spectating, all team-spectators will begin spectating the enemy team until the next round begins (usually 3 seconds total).
    If somehow all players are dead (round was a draw), then team-spectators will all teleport to and be trapped within their frozen body's beams until the next round begins.
    
    - If a team wins but there are no players on the other team, scorepoints will not be added. A bomb (thread) and at least two bombsites (waitthreads) are added in the main map script.
    If a bomb-carrying player dies, the bomb drops to the ground. If a bomb-carrying player leaves or changes teams or goes to spectator, the bomb respawns back to the origin it was last picked up at.
    
    - Cyber Attack: This game mode is best played on DM maps, since bombsites switch team defenders every 3 rounds. Each team has a bombsite to defend at all times, ideally placed near opposite corners of the map in DM maps or near team spawnpoints in OBJ maps.
    The Allies bombsite is blue-lit and the Axis bombsite is red-lit. The radiobomb is ideally spawned near the middle of the map. Both teams must find the purple-lit bomb and plant it on the opposite team's bombsite. The bomb takes 1.5 seconds to plant/defuse.
    If defused by the enemy team, the defusing player receives the radiobomb, ready to be planted on the enemy team's bombsite. To win, players must kill all enemies or plant and destroy the enemy's bombsite.
    Every 3 rounds, the bombsites "change sides": all Allies bombsites become Axis, and all Axis bombsites become Allies.
    
    - Search & Destroy: This game mode is best played on OBJ maps, so the bomb can always spawn near the planting team's spawnpoints.
    Depending on "level.changesides" (0 or default = Allies plant first, 1 = Axis plant first), one team has two bombsites to find and defend, while the other planting team must find and destroy a bombsite.
    These bombsites are ideally placed near the center of the map where both teams clash in gun battles the most, but kept far enough away from each other so the defending team cannot defend both bombsites with one player simultaneously.
    The bomb is ideally spawned near the planting team's spawnpoints, whose origin changes when the planting team changes. The bomb cannot be picked up by players on the defending team. The bomb takes 4.5 seconds to plant/defuse.
    If defused by the enemy team, the defusing team wins immediately. To win, players must kill all enemies, plant and destroy the enemy's bombsite, or defuse the enemy's bomb.
    Every 3 rounds, the bombsites "change sides": the planting team becomes defenders, the defending team becomes planters, and all bombsites change teams accordingly. 
    
    - Freeze Tag: This game mode is an almost identical replica of Mefy's Freeze Tag. Unlike Cyber Attack where melted players respawn back to their dead bodies, Freeze Tag simply respawns the melted players.
    There are no bombs or bombsites in Freeze Tag, so any "bombsite" or "bomb" threads are ignored by the script (still requires running the main script, or running "......scr::main" to run this game mode).
    After the round begins, the 1st team to kill all enemy players wins the round.
    <><><> <><><>

    <><><> Main Map Script Parameters <><><>

    Code:
    - bombsite: Make sure these are waitthreads, so the bombsite's targetname can increment after a previous bombsite has finished spawning. Parameters: origin, angle, team.
    The "team" parameter only applies to Cyber Attack, since "level.changesides" will determine the team for both bombsites in Search & Destroy.
    Both teams in Cyber Attack can have more than 1 bombsite if desired, but make sure they have at least 1 bombsite. Search & Destroy can also have 1, 2, or more bombsites since team parameter is ignored.
    Run "exec global/cyberattack_searchdestroy.scr" after level waittill spawn and after all cyberattack_searchdestroy.scr threads run. Example below:
    
    	- waitthread global/cyberattack_searchdestroy.scr::bombsite ( -1210 485 168 ) -90 axis // team parameters can be removed for search & destroy.
    	- waitthread global/cyberattack_searchdestroy.scr::bombsite ( 1297 2461 672 ) 90 allies
    
    - bomb: Parameters: Allies origin, Allies origin, Axis origin, Axis angle, central origin, central angle. Both Allies and Axis origins/angles are for Search & Destroy only.
    The central origin/angle is for Cyber Attack only. The bomb color is always blue when Allies are planting, and red when Axis are planting in Search & Destroy. Only spawn in one bomb per map. Examples below:
    
    	- thread global/cyberattack_searchdestroy.scr::bomb ( -153 1445 96 ) 180 ( -153 1445 96 ) 180 ( -153 1445 96 ) -90 	// cyb & snd
    	- thread global/cyberattack_searchdestroy.scr::bomb ( 0 0 0 ) 0 ( 0 0 0 ) 0 ( -153 1445 96 ) -90 			// cyber attack only
    	- thread global/cyberattack_searchdestroy.scr::bomb ( -153 1445 96 ) 180 ( -153 1445 96 ) 180 ( 0 0 0 ) 0 		// search & destroy only only
    
    - level.round_starttime: 8 seconds default. This variable determimes the time in seconds until the round begins, disabling respawning and forcing dead players to spectate their teammates until the next round begins.
    Waiting a few seconds for a new round to begin serves as a temporary spawn protection. 
    
    - level.rounds_towin: 5 rounds to win default. This determines how many rounds a team must obtain before winning and ending the map, allowing a winning game to be as close as 5 to 4 points by default.
    
    - level.changesides: 0, Allies plant first default. This can only be 0 or 1, where 1 = Axis plant first (for Search & Destroy).
    If playing Cyber Attack, setting level.changesides = 1 will flip the bombsite's defending teams to the opposite teams initially.
    Every 3 total rounds, level.changesides toggles from 1 to 0 or from 0 to 1. 
    
    - level.keepsamesides: 0, no nothing default. If set to 1, level.changesides will never increment, mainly for OBJ & singleplayer maps (bomb & bombsites will not change teams every 3 rounds).
    
    - level.spectators_jointeams: 0, do nothing default. If set to 1, all actual spectators will be forced to auto-join teams and be given a machine gun, pistol, and grenades when the round begins.
    If those players are still AFK, they'll eventually get killed and placed into team-spectating mode until the next round begins.
    
    - level.bombcamera: 0, do nothing default. If set to 1, when a bombsite is about to explode, all players' cameras are moved to the bombsite to view the explosion, before returning all cameras back to their respective players' heads after a few seconds.
    While viewing the explosion, players cannot see or kill each other.
    
    - level.cameradistance: 200 default. This determines the distance between a bombsite and all players' cameras when the bombsite blows up.
    Some bombsites are indoors. If the camera is inside the wall or the bombsite is invisible during explosion, this variable should be lowered.
    
    - level.melttime: 3 seconds default. This determines the time in seconds for a player to melt/revive a teammate.
    Note: there's always roughly a half-second extra time required for all players to move away from the melted/revived teammate, before he respawns.
    
    - level.meltrespawn: 0, respawn melted/revived players back to their frozen bodies default. If set to 1, then all players that get melted/revived will not tele back to their dead bodies (regular respawn instead).
    This = 1 by default for Freeze Tag only, unless specified as level.meltrespawn = 0.
    
    - level.meltlaser: 0, laser beam is invisible default (Freeze Tag only). If set to 1, all players' melting laser beams (when holding USE key) are visibie.
    
    - Run "exec global/cyberattack_searchdestroy.scr" after level waittill spawn and after all cyberattack_searchdestroy.scr threads run.

    <><><> <><><>

    <><><> New CVARS for Reborn Servers <><><>

    Code:
    				//		         maxentities = 869 in code, but players may crash joining Reborn servers (singleplayer maps) if current entities = 725+, or 140+ remaining entities.
    exec cvars/playercount.scr	// "players" cvar.  	"players 1" = print to console the # of players in-game (type these into the server's console window).
    				//	       		"players 2" = print to console the # of players in-game & their usernames.
    				//	       		"players 3" = see which players in $player array are NULL.
    exec cvars/entitycount.scr 	// "entities" cvar.	"entities 1" = wait 4 seconds to print # of entities & remaining entities until maxentities (1024) is reached.
    				//	       		"entities 2" = print all entities & their targetnames (or NULL) from 1 to maxentities.
    				//	       		"entities 3" = print all entities & their targetnames, but print slower.
    				//			"entities 4" = print only non-NULL entities ($player entities do not print for "entities" 4, 5, 6, 7).
    				//			"entities 5" = print only non-NULL entities that have targetnames.
    				//			"entities 6" = print only non-NULL entities that do not have targetnames (targetnames = "").
    				//			"entities 7" = print only non-NULL entities, and print their classnames.
    exec cvars/track.scr		// "track" cvar.    	"track 1" = iprint each players' coords & angle to their own screens. 
    				//			"track 2" = iprint and print to console each players' coords & angles once every 3 seconds.
    				//			"track 0" = turn off tracking.
    exec cvars/check.scr		// "check_[trigger]" cvar. "check_giantbomb 1" "check_giantbomb 2" "check_lightbomb 1" "check_lightbomb 2" (giantbomb, lightbomb, health, grenade, rocket, snowball)
    				// 			"1" = teleports all spectators to each of the ("giantbomb", "health", "rocket", etc) trigger's randomized origins every 3 seconds.
    				// 			"2" = spawn in a dummy model at each of the trigger's origins (only works once).
    				// 			"0" = stop teleporting, delete the dummy models.
    				// 			"check 0" = make all "check_[trigger]" cvars "0".
    				//
    exec cvars/find.scr		// "find [targetname without $]" cvar. "find truckclip", "find endtrigger", "find aispawn", or multiple ents with the same targetname: "find barrel[1]", "find barrel[2]",
    				// 			to teleport all players on the map to the entity's coords (also printing: coords, angles, entnum, and target).
    exec cvars/findent.scr		// "findent [entnum]" cvar. "findent 65", "findent 450", or any entnum >= "sv_maxclients" cvar to teleport all players on the map to the entity's coords (also printing: coords, angles,
    				// classname, model, targetname, target, health).
    				//
    exec cvars/findclass.scr	// "findclass [classname, case-specific]" cvar. "findclass ScriptModel", "findclass CrateObject", "findclass TurretGun", "findclass Trigger", or any other classname to print all entnums and
    				// their targetnames in the map with that classname.
    				//
    exec cvars/findmodel.scr	// "findmodel [models/...tik]" cvar. "findmodel models/static/indycrate.tik", "findmodel static/indycrate.tik", or any other model to print all entnums and
    				// their targetnames in the map with that model name.
    				//
    exec cvars/drawpath.scr		// "drawpath [1st ent's targetname without $ in a path]" cvar. "drawpath bomberpath", "drawpath spotpath1_1", "drawpath latertruckpath", or multiple paths with the same targetname: "drawpath
    				// exploderchunk[1]", "drawpath exploderchunk[12]", to spawn nodes & lasers and draw them to each .target, until there's no more .targets or until the .target reaches an already-drawn node.
    				//
    exec cvars/cybsnd.scr		// "cybsnd_score 1" cvar, to print the current Cyber Attack, Search & Destroy, or Freeze Tag score (rounds Allies won, Axis won).
    				// "cybsnd_info 1" cvar, to print round start time, rounds to win, change sides (0 or 1 for switching bombsites), melt time, melt respawn (0 or 1 for spawning at frozen body or regular
    				// spawn), spectators auto-join teams (once round begins), bomb camera (1 or 0, when bomb explodes), bomb camera distance.
    				// "cybsnd_debug 1" cvar, to print once per second the Allies/Axis team count (living players) and Allies/Axis team total.
    				//
    exec cvars/ubergametype.scr	// "g_ubergametype" cvar. 	"g_ubergametype bb" = Base-Builder gametype.
    				//				"g_ubergametype cyb" = Cyber Attack gametype.
    				//				"g_ubergametype snd" = Search & Destroy gametype.
    				//				"g_ubergametype 0" or "" = none, regular TDM or FFA (based on g_gametype).
    				// "g_ubermods" cvar.		"g_ubermods 2" = default, all UBER mods enabled.
    				//				"g_ubermods 1" = No crates or teles, fewer triggers for multiplayer maps. Crates & teles, but no extra mods for singleplayer maps.
    				//				"g_ubermods 0" = all UBER mods disabled.
    				// "g_throwingknives" cvar.	"g_throwingknives 1" = all players spawn with 1 throwing knife (hold USE + FIRE to throw), and 4 extra knives spawn around the map.
    				//				"g_throwingknives 0" = no throwing knives.
    				//
    exec cvars/adminstuff.scr	// "hacker_kill" cvar.	"hacker_kill 27" = continuously kill $player[27]
    				//				"hacker_kill Searingwolfe" = continuously kill the player with the name "Searingwolfe"
    				//				"hacker_unbindall [27 or Searingwolfe]" = continuously unbind all their keys
    				//				"hacker_disconnect [27 or Searingwolfe]" = continuously disconnect [kick] them from the server
    				//				"hacker_quit [27 or Searingwolfe]" = continuously quit their game
    				//				"votekick [27 or Searingwolfe]" = all players vote to kick: Hold USE Key + Lean Left = VOTE NO (default), Hold USE Key + Lean Right = VOTE YES.
    				//
    				// for "players same name" fix: add admin's IPs at top of "adminstuff.scr", to give admins name-changing priority.
    <><><> <><><>

    <><><> Updates & Bug Fixes <><><>

    Code:
    v1.01 (1-19-2023): - Added "droptofloor" for frozen bodies and dropped bomb.
    
    ---------------
    
    v1.02 (2-2-2023): - Fixed stopwatches not appearing for some players that are defusing or getting melted/revived. Added an iprint message for players getting melted/revived by a teammate, in case the stopwatch still doesn't appear for them.
    Realigned the scoreboard HUD text at the top right of players' screens so it fits correctly for MOHAA 1.12 Reborn, and changed the font types (no more bold letters).
    
    ---------------
    
    v1.03 (2-4-2023): - Added global/earthquake.scr effects when a bombsite explodes (jitter_large thread from MOHAA's original obj/obj_team1.scr).
    
    ---------------
    
    v1.10 (2-22-2023): - Major script updates. Includes Living Dog mod from "UBER Mods v7.0", now fully compatible so players can carry the bomb as a dog. Almost all bugs and rare-scenarios have been fixed: 
    - If a player kills an enemy, wins the round, and the player clicks only once, they would go to team-spectator mode without someone to spectate (free-flying in noclip), until a new round began. Fixed.
    - If a player is in team-spectating mode, and he decides to change teams (not go to regular spectator), he will instead be killed immediately and sent back to team-specating mode. His old opposite-team frozen body is removed.
    
    - Fixed the frozen body's beam colors, so they will correctly turn purple when an enemy is next to the frozen body.
    - If two frozen bodies are inside of each other, many issues were fixed. If a teammate revives both bodies and walks away, the beam colors will now turn back to red. If two teammates are revived at the same time, one player will either respawn normally to a new location or one player's beams will be removed, waiting for all other players to move away before respawning him back to his frozen body too; this prevents players getting stuck inside each other.
    - Sometimes when one player is melted/revived but another player is still touching the frozen body trigger, they would get stuck inside each other only if his $player[] number was lower than the frozen $player[] number. Fixed
    
    - If a new round has started but a dead player still hasn't respawned yet, prevent them from going into team-spectating mode and respawn them as normal. 
    - Simplified player_alive_status thread; the score can now increment even if level.round_starttime = 0. 
    - Expanded reset_players thread; dead players will be respawned only after a new round has started, and players stuck in team-spectating mode are reset and respawned normally.
    - Added an iprintlnbold message indicating whenever the bombsites switch sides (every 3 rounds).
    - If the person carrying the bomb leaves the game, the bomb disappeared. Fixed.
    
    - Added two new parameters for map scripts: level.melttime (default: 3 seconds) and level.meltrespawn (default: 0). level.melttime determines how many seconds that a player must hold USE to melt/revive a teammate. If level.meltrespawn = 1, then players will not respawn back to their frozen bodies; they will respawn normally to a new location.
    - Dogs can pick up, plant, and defuse the bomb, and the bomb is now visible on the dog's body. If the player is still a dog when the round ends, the dog mod script calls in a player's mef_weaponclass for giving players their weapons back when they respawn. Dogs cannot kill teammates anymore.
    
    ---------------
    
    v1.11 (3-4-2023): - $player[local.i].team was a MOHAA read-only variable, and caused script error spamming if using "developer 1", even though the mod still works. Fixed by using $player[local.i].teamm instead.
    - Total number of players on each team now correctly decrements when a player suddenly leaves. If no one is on the other team, no score points are awarded.
    
    ---------------
    
    v1.20 (3-6-2023): - Major script update, fixed many server-side issues that cause a server to crash. Removed almost all errors found using "developer 2", including those that appears when players leave during various points in the script.
    
    - Total number of players on each team, and players-alive count on each team now update accurately for all cases (checking through "sv_maxclients" instead of "$player.size).
    - Fixed all the "applied NULL to listener" developer errors by first checking "if(self != NULL)" each time.
    
    - Made sure all "stopwatch 0" lines are not spamming continuously for players (run only once when needed), otherwise players will get kicked for "command overflow error" after 650+ iterations.
    
    - Fixed "player_spectating" thread, so it is not spamming to change a player's origin when the player hasn't found a "spectarget" from "allow_player_to_spectate" thread yet. This caused "CGM buffer for client 0 is full" errors to spam for 3 seconds and briefly freezing the whole server.
    - Sometimes when the last one of a player's team plants the bomb and gets killed by the enemy team, the dead player briefly has no "spectarget" to spectate, causing "applied NULL to listener" errors to spam for 0.1 seconds. Fixed.
    
    - Some while-loops in "allow_player_to_spectate" thread were giving "index 2 out of buffer range" (2 = $player.size + 1 at the time) since local.i was incrementing to one integer higher than $player.size. Fixed.
    - The for-loop in "melt_frozen_player" was replaced with a slightly slower while-loop, making the script more responsive to players still touching freshly-melted players; further prevents players getting stuck inside each other.
    
    - The dog.scr script was sometimes giving errors when the round ended and living players who were still dogs respawned, but the "move" thread never ended.
    - Cyber Attack's bomb-planted countdown timer was increased from 35 to 45 seconds.
    - level.bombcamera = 1 by default now (all players' cameras move to view the bombsite when it explodes).
    
    ---------------
    
    v1.21 (3-7-2023): - Fixed another "applied to NULL listener" error occuring after bombsites switch sides (after 3 rounds each), where a NULL $bombexplosive was being sent the "light" command inside a while-loop.
    - Fixed the main cause for the "CGM buffer for client 0 is full". Refreshing huddraw_ commands within a while-loop must be slowed down to at least once per 5 seconds. This error causes the player/client number's game to crash.
    
    ---------------
    
    v1.22 (3-8-2023): - Minimized running huddraw_ commands as much as possible and removed them from while-loops. Should completely fix the "CGM buffer for client 0 is full" error. 
    - Added a new thread "new_player_hud" for loading the HUD only when a new player joins the game. The HUD strings update only one time: whenever a team gets a scorepoint, when the bomb is planted/defused, or when a bombsite is destroyed.
    
    ---------------
    
    v1.23 (3-14-2023): - Added a new level variable for adjusting the bombcamera distance from a bombsite as desired. mohdm6 and mohdm7 now include level.cameradistance adjustments, since the bombcamera's origin was inside some walls. level.cameradistance: 200 default. This determines the distance between a bombsite and all players' cameras when the bombsite blows up. 
    Some bombsites are indoors. If the camera is inside the wall or the bombsite is invisible during explosion, this variable should be lowered.
    - All living dogs are now hidden when a bombsite explodes and when level.bombcamera = 1.
    - If living-dog players allowed the game to respawn them instead of respawning themselves (not pressing FIRE to respawn), sometimes they will be invisible when the next round begins. Fixed.
    - The bombcamera now releases players back to their bodies 0.1 seconds before everyone respawns for the new round, that way players are not killing each other in the current round after the bombsite explodes (only when level.bombcamera = 1).
    
    ---------------
    
    v1.25 (4-17-2023): - Reworked the HUD threads again, making all huddraw commands into ihuddraw. The "new_player_hud" thread now has a while-loop that runs ihuddraw commands only one time per player, per map. 
    
    ---------------
    
    v1.50 (6-20-2023): - Several script edits to ensure that level array sizes for allies_count, axis_count, allies_total, axis_total remain accurate, whose inconsistencies were the primary cause for many bugs/crashes. 
    - Potential server crashes fixed if spectators switch teams or go to spectator during one of many while-loops (frozen player, getting melted, spectating before/after a team has won, etc).
    - Prevented the 4 level array sizes from updating until after a spectator has selected a team, chosen a weapon, and spawned in.
    
    - If a spectator joins a team while a round is in progress, the player dies immediately and leaves a frozen body for someone to revive them (prevents players from switching teams repeatedly mid-round).
    - If a spectator joins a team but nobody is currently on that team, the player does not die. The thread "player_fromspectator" runs once each time a player join the server and/or goes to spectator.
    
    - Dead players who are spectating a player will now toggle one-time a new spec-target when holding USE (cycle backward) or FIRE (cycle forward), instead of rapidly cycling when holding USE or FIRE.
    - Reborn's "sin" & "cos" functions are now used for team-spectating players instead of the slower global/math.scr::sin & cos, removing most of the camera jittering while their "spectargets" are moving and looking around.
    - In the rare case if dead players somehow have no one to spectate (spectarget = NULL) but the while-loop hasn't ended, try again 3 more times to find a spectarget, otherwise end (potential server crash fix).
    
    - Reordered various if-statements so that "self != NULL" or "isalive self" are checked first, preventing NULL errors from printing to console.
    - Frozen body beams now spawn from top-to-bottom, instead of bottom-to-top.
    - If a frozen player goes to spectator, the frozen body gets removed.
    - If the last player on a team dies, the frozen body's playermodel remains hidden, since the dying player's body is already inside the frozen body's beams.
    - If the frozen player is melted, but the melting teammate is still inside the frozen body, and if that frozen player suddenly goes to spectator, the new spectator stays hidden and noclipping.
    - Added iprintlnbold "The [Allies/Axis] have the bomb!" whenever a player acquires/picks up the bomb.
    
    ---------------
    
    - Fixed living dog trigger not properly ending its threads when the player dies, which could've caused a server crash if too many players were dogs [from UBER MODS v7.71].
    - Biting enemy players now counts as kills for the living dog player.
    - Sounds for the dog trigger & living dog-players were given custom aliascaches, allowing them to be heard client-side without any mods or a modded ubersound.scr.
    - Added aliascache_triggersounds.scr for sound aliascache compatibility with other mods to avoid "duplicate aliases" errors.
    
    - Included several custom-made cvars from UBER MODS: "track 0,1", "players 1,2,3", "entities 1,2,3", "find [targetname without $]" or for example "find barrel[2]" or "find door_locked[21]".
    - Added 3 new cvars for printing various Cyber Attack / Search & Destroy level.variables at any time within the server's console window:
    "cybsnd_score 1" = print current rounds-won Allies/Axis scores.
    "cybsnd_info 1" = print level variables: round start time, rounds to win, change sides (0 = allies/axis bombsites are at initial origins, 1 = bombsites' teams are flipped), melt time, melt respawn (0 = respawn at frozen body origin, 1 = normal respawn melted players), spectators auto join teams (0 = no, 1 = once round begins), bomb camera, bomb camera distance.
    "cybsnd_debug 1" = print once per second the 4 team size level arrays: allies_count.size, axis_count.size, allies_total.size, axis_total.size, only when at least 1 player is in the server.
    
    ---------------
    v2.00 (9-13-2023): - Major cyberattack_searchdestroy.scr script changes: dead players mid-round can now spectate between living players and dead frozen bodies across the map, by pressing FIRE or USE (cycle forward/backward). This now applies to Cyber Attack too.
    - Incorporated the new g_ubergametype (0, bb, cyb, snd, ft) cvar. For example: add "seta g_ubergametype cyb" to server.cfg or before level waittill prespawn, or type "g_ubergametype ft" or cyb or snd or 0 (none, TDM or FFA) to switch gametypes between maps.

    - Freeze Tag UBER gametype added: essentially Cyber Attack but without any bomb or bombsites, and with players regularly respawning after getting melted instead of teleporting back to their dead bodies (level.meltrespawn = 1).
    - Freeze Tag only: melt laser threads added for melting any far-away frozen players in direct line-of-sight; "laser-groundtarget istouching frozen player" conditions added for melting players.
    - Added a new level variable: level.meltlaser = 0. Melting laser beam is invisible default (Freeze Tag only). If set to 1, all players' melting laser beams (when holding USE key) are visibie.

    - Fixed hopefully the final server crashing issue in cyberattack_searchdestroy.scr, caused when a spectarget left the game and spectating teammates weren't getting a new player to spectate (script checked for self.spectarget == NULL, when it should've checked == NIL first).

    - Added println error messages to console if some cyberattack_searchdestroy.scr parameters are missing or incorrect.
    - Fixed some missing sound aliases & duplicate aliases. Fixed NULL player errors, and other NIL errors.

    - Living dogs' bite animations now reset properly if player holds FIRE button. Targetname added for dog-mouth bite trigger, so dogs can bite & kill nebelwerfer players.
    - Dog triggers' angles will now look towards the closest player it can see within 700 units, only after getting shot at too many times and the dog becomes "angry" (red in color).

    ---------------
    Attached Files Attached Files
    Last edited by Searingwolfe; September 18th, 2023 at 07:50 PM. Reason: major script changes, server crash fixes, new .zip with v2.00 added

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •