Plutonium-T6-Scripts/mapvote/mapvote_zm_extend.gsc
Resxt 4501736b79 Remove everything about compiled files
Just a refactor that doesn't affect any script or add anything new.
Plutonium T6 now supports loading source scripts so compiling them isn't needed anymore
https://plutonium.pw/docs/changelog/#r3408

[Refactor]
Removed all compiled scripts
Moved all source scripts to the main folder instead of a source folder
Renamed all source scripts to remove the source tag at the end

Removed notions of compiled and source scripts in the repository's README
2023-02-27 14:05:04 +01:00

154 lines
3.4 KiB
Plaintext

/*
All the credits for this script go to DoktorSAS for both the source code and for helping me figuring this out
https://github.com/DoktorSAS/PlutoniumT6Mapvote/blob/master/Zombies/mapvote.gsc
menuSounds = array("zmb_meteor_activate", "zmb_spawn_powerup", "zmb_powerup_grabbed", "zmb_switch_flip", "zmb_elec_start", "zmb_perks_packa_ready");
*/
#include common_scripts\utility;
#include maps\mp\_utility;
Init()
{
if (GetDvarInt("mapvote_enable"))
{
replaceFunc(maps\mp\zombies\_zm::intermission, ::OnIntermissionStart);
}
}
OnIntermissionStart()
{
level.intermission = 1;
level notify("intermission");
for (i = 0; i < level.players.size; i++)
{
level.players[i] thread player_intermission();
level.players[i] hide();
level.players[i] setclientuivisibilityflag("hud_visible", 0);
level.players[i] setclientthirdperson(0);
level.players[i].health = 100;
level.players[i] stopsounds();
level.players[i] stopsounds();
}
wait GetDvarInt("mapvote_display_wait_time");
[[level.mapvote_rotate_function]]();
for (i = 0; i < level.players.size; i++)
{
level.players[i] notify("_zombie_game_over");
level.players[i].sessionstate = "intermission";
}
players = get_players();
i = 0;
while (i < players.size)
{
setclientsysstate("levelNotify", "zi", players[i]);
i++;
}
wait 0.25;
players = get_players();
i = 0;
while (i < players.size)
{
setclientsysstate("lsm", "0", players[i]);
i++;
}
level thread maps\mp\zombies\_zm::zombie_game_over_death();
}
player_intermission()
{
self closemenu();
self closeingamemenu();
level endon("stop_intermission");
self endon("disconnect");
self endon("death");
self.score = self.score_total;
self.spectatorclient = -1;
self.killcamentity = -1;
self.archivetime = 0;
self.psoffsettime = 0;
self.friendlydamage = undefined;
points = getstructarray("intermission", "targetname");
if (!isDefined(points) || points.size == 0)
{
points = getentarray("info_intermission", "classname");
location = getDvar("ui_zm_mapstartlocation");
for(i = 0;i < points.size;i++)
{
if(points[i].script_string == location)
{
points = points[i];
}
}
if (points.size < 1)
{
return;
}
}
if (isdefined(self.game_over_bg))
self.game_over_bg destroy();
org = undefined;
while (1)
{
points = array_randomize(points);
i = 0;
while (i < points.size)
{
point = points[i];
if (!isDefined(org))
{
self spawn(point.origin, point.angles);
}
if (isDefined(points[i].target))
{
if (!isDefined(org))
{
org = spawn("script_model", self.origin + vectorScale((0, 0, -1), 60));
org setmodel("tag_origin");
}
org.origin = points[i].origin;
org.angles = points[i].angles;
j = 0;
while (j < get_players().size)
{
player = get_players()[j];
player camerasetposition(org);
player camerasetlookat();
player cameraactivate(1);
j++;
}
speed = 20;
if (isDefined(points[i].speed))
{
speed = points[i].speed;
}
target_point = getstruct(points[i].target, "targetname");
dist = distance(points[i].origin, target_point.origin);
time = dist / speed;
q_time = time * 0.25;
if (q_time > 1)
{
q_time = 1;
}
org moveto(target_point.origin, time, q_time, q_time);
org rotateto(target_point.angles, time, q_time, q_time);
wait(time - q_time);
wait q_time;
i++;
continue;
}
i++;
}
}
}