[RELEASE] Gersh Grenades (Updated)
-
Here is a Gersh Grenades Function feel free to improve it as i wont be changing anything on it anymore was just a daft function i wanted to make for my menu. It currently teleports zombies within radius and kills them, also if players are within a certain distance they now get pulled and teleported to a random spawn location.

GershGrenadesToggle() { if (!isDefined(self.gershGrenadesToggle)) { self.gershGrenadesToggle = true; self thread mzGershGrenades(); self iprintln("Gersh Grenades: ^2Enabled"); } else { self.gershGrenadesToggle = undefined; self notify("stop_gershgrenades"); self iprintln("Gersh Grenades: ^1Disabled"); } } mzGershGrenades() { self endon("stop_gershgrenades"); self endon("disconnect"); level endon("game_ended"); for(;;) { self waittill("grenade_fire", grenade, weapon_name); if (!isDefined(grenade)) continue; origin = undefined; while (isDefined(grenade)) { origin = grenade.origin; wait 0.1; } if (!isDefined(origin)) continue; self thread mzGershBlackHole(origin, self); } } mzGershBlackHole(center, attacker) { self endon("disconnect"); level endon("game_ended"); self thread mzGershFX(center); foreach(player in level.players) player thread mzGershPlayerPull(center); killTeleportRadius = 350; for (tick = 0; tick < 14; tick++) { foreach(zombie in getAiArray(level.zombie_team)) { if (!isDefined(zombie) || !isDefined(zombie.health) || zombie.health <= 0) continue; if (isDefined(zombie.mz_gersh_dead)) continue; if (distance(zombie getOrigin(), center) <= killTeleportRadius) { zombie.mz_gersh_dead = 1; zombie forceteleport(center, self.angles + vectorScale((0, 1, 0), 180)); wait 0.05; if (isDefined(zombie) && isDefined(zombie.health) && zombie.health > 0) zombie doDamage(zombie.health * 2, center, attacker); if (isDefined(zombie)) zombie thread mzGershSafeDelete(); playfx(level._effect["zombie_guts_explosion"], center + (0, 0, 30)); } } wait 0.25; } foreach(player in level.players) if (isDefined(player)) player notify("stop_gersh_pull"); playfx(loadfx("explosions/fx_default_explosion"), center); } mzGershSafeDelete() { self endon("disconnect"); level endon("game_ended"); wait 0.15; if (!isDefined(self)) return; if (isDefined(self.health) && self.health > 0) return; self delete(); } mzGershPlayerPull(origin) { self endon("disconnect"); self endon("stop_gersh_pull"); level endon("game_ended"); for (tick = 0; tick < 14; tick++) { if (distance(origin, self getOrigin()) < 250) { self setOrigin(self.origin); self setVelocity((origin - self getOrigin())); if (distance(origin, self getOrigin()) < 60) { self thread mzGershTeleportPlayer(); } } wait 0.25; } wait 0.5; self setVelocity((0, 0, 0)); } mzGershTeleportPlayer() { self endon("disconnect"); spawn_points = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); if (spawn_points.size == 0) return; valid_groups = []; for (i = 0; i < spawn_points.size; i++) { if (spawn_points[i].locked == 0) { valid_groups[valid_groups.size] = spawn_points[i]; } } if (valid_groups.size == 0) return; random_group = valid_groups[randomint(valid_groups.size)]; spawn_array = getstructarray(random_group.target, "targetname"); if (!isDefined(spawn_array) || spawn_array.size == 0) return; spawn_array = array_randomize(spawn_array); chosen_spawn = undefined; for (k = 0; k < spawn_array.size; k++) { if (!positionwouldtelefrag(spawn_array[k].origin)) { chosen_spawn = spawn_array[k]; break; } } if (!isDefined(chosen_spawn)) chosen_spawn = spawn_array[0]; self setOrigin(chosen_spawn.origin); if (isDefined(chosen_spawn.angles)) self setPlayerAngles(chosen_spawn.angles); playfx(level._effect["powerup_grabbed_solo"], self.origin); } mzGershFX(origin) { self endon("disconnect"); for (i = 0; i < 14; i++) { playfx(level._effect["grenade_samantha_steal"], origin); wait 0.25; } }Video clip link
-
coolio
-
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login
