Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include maps\mp\_utility;
- #include maps\mp\gametypes\_hud_util;
- #include common_scripts\utility;
- main()
- {
- maps\mp\_load::main();
- //-------------------------------------------------------------------------------------------
- //---THREAD-FUNCTIONS------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- thread initTriggers();
- thread onPlayerConnect();
- thread easyFinTrigger();
- thread hardFinTrigger();
- thread mainhardFinTrigger();
- thread setupmsgTriggers();
- //-------------------------------------------------------------------------------------------
- //---SET-DVARS-------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- setdvar("r_specularcolorscale", "9" );
- setdvar("r_glowbloomintensity0",".25");
- setdvar("r_glowbloomintensity1",".25");
- setdvar("r_glowskybleedintensity0",".3");
- setdvar("compassmaxrange","2000");
- setdvar("sm_enable", "1");
- setdvar("sm_sunSampleSizeNear", "3");
- setdvar("bg_falldamageminheight","9999");
- setdvar("jump_slowdownenable","0");
- setdvar("player_sprintcamerabob","0");
- setdvar("player_sprinttime","12.8");
- //-------------------------------------------------------------------------------------------
- //---PRECACHE-STUFF--------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- //3xP Model FX
- level._effect[ "bolt_long" ] = loadfx( "Viruzfx/lightning_bolt_long_runner" );
- level._effect[ "bolt" ] = loadfx( "Viruzfx/lightning_bolt_runner" );
- level._effect[ "bolt_impact" ] = loadfx( "Viruzfx/lightning_bolt_impact_runner" );
- level._effect[ "particle_bg" ] = loadfx( "Viruzfx/particle_background" );
- level._effect[ "electrical_sparks" ] = loadfx( "Viruzfx/electrical_sparks" );
- //Model Trail FX
- level._effect[ "sonic_trail_low" ] = loadfx("Viruzfx/sonic_trail_lowvelocity");
- level._effect[ "sonic_trail_med" ] = loadfx("Viruzfx/sonic_trail_mediumvelocity");
- level._effect[ "sonic_trail_high" ] = loadfx("Viruzfx/sonic_trail_highvelocity");
- level._effect[ "shadow_trail_low" ] = loadfx("Viruzfx/shadow_trail_lowvelocity");
- level._effect[ "shadow_trail_med" ] = loadfx("Viruzfx/shadow_trail_mediumvelocity");
- level._effect[ "shadow_trail_high" ] = loadfx("Viruzfx/shadow_trail_highvelocity");
- level._effect[ "ratchet_trail_low" ] = loadfx("Viruzfx/ratchet_trail_lowvelocity");
- level._effect[ "ratchet_trail_med" ] = loadfx("Viruzfx/ratchet_trail_mediumvelocity");
- level._effect[ "ratchet_trail_high" ] = loadfx("Viruzfx/ratchet_trail_highvelocity");
- //Scoreboard BG
- precacheShader("vote_bg");
- precacheShader("vote_stange");
- precacheShader("vote_stange_left");
- precacheShader("votetext_easy");
- precacheShader("votetext_classic");
- precacheShader("votetext_combined");
- //Shadow Model
- precacheShader("mtl_shadow_eyes");
- precacheShader("mtl_shadow_fur");
- precacheShader("mtl_shadow_shoes");
- precacheShader("mtl_shadow_clothes");
- precacheShader("mtl_shadow_body");
- precacheModel("shadow");
- //Sonic Model
- precacheShader("mtl_sonic");
- precacheShader("mtl_sidney");
- precacheShader("mtl_corpo");
- precacheModel("sonic");
- //Ratchet Model
- precacheShader("mtl_ratchet_body1");
- precacheShader("mtl_ratchet_body2");
- precacheShader("mtl_ratchet_eye");
- precacheShader("mtl_ratchet_head");
- precacheShader("mtl_ratchet_mouth");
- precacheShader("mtl_clank_body");
- precacheShader("mtl_clank_eyes");
- precacheShader("mtl_clank_hands");
- precacheModel("ratchet");
- //Russian Farmer Model (Drizz)
- precacheShader("mtl_farmer_cloth");
- precacheShader("mtl_farmer_head");
- precacheShader("mtl_farmer_hands");
- precacheShader("mtl_eye_highlight");
- precacheModel("body_complete_mp_russian_farmer");
- //CPT Price (Viruz & Vartazian)
- precacheShader("mtl_sas_woodland_body_sp");
- precacheShader("mtl_sas_woodland_hat_hands_sp");
- precacheShader("mtl_sas_woodland_price_sp");
- precacheModel("body_complete_mp_price_woodland");
- //-------------------------------------------------------------------------------------------
- //---SPAWN-EFFECTS---------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- self.spawndelay = 8;
- //electrical sparks links rechts
- thread triggerCustomFX("electrical_sparks", (12982,4166,26842), (270,0,0), self.spawndelay - 2);
- thread triggerCustomFX("electrical_sparks", (12983,5514,26842), (270,0,0), self.spawndelay - 2);
- //bolt rechts oben
- thread triggerCustomFX("bolt_long", (12982,5506,27000), (285,90,0), self.spawndelay + 0.3);
- thread triggerCustomFX("bolt_impact", (12982,5093,27107), (270,0,0), self.spawndelay + 0.3);
- //bolt rechts
- thread triggerCustomFX("bolt", (12982,5506,27000), (270,90,0), self.spawndelay + 0.15);
- thread triggerCustomFX("bolt_impact", (12982,5121,27000), (270,0,0), self.spawndelay + 0.15);
- //bolt rechts unten
- thread triggerCustomFX("bolt_long", (12982,5506,27000), (255,90,0), self.spawndelay);
- thread triggerCustomFX("bolt_impact", (12982,5093,26896), (270,0,0), self.spawndelay);
- //bolt links oben
- thread triggerCustomFX("bolt_long", (12983,4174,27000), (285,270,0), self.spawndelay + 0.3);
- thread triggerCustomFX("bolt_impact", (12982,4587,27107), (270,0,0), self.spawndelay + 0.3);
- //bolt links
- thread triggerCustomFX("bolt", (12983,4174,27000), (270,270,0), self.spawndelay + 0.15);
- thread triggerCustomFX("bolt_impact", (12982,4559,27000), (270,0,0), self.spawndelay + 0.15);
- //bolt links unten
- thread triggerCustomFX("bolt_long", (12983,4174,27000), (255,270,0), self.spawndelay);
- thread triggerCustomFX("bolt_impact", (12982,4578,26896), (270,0,0), self.spawndelay);
- //Logo Background center
- thread triggerCustomFX("particle_bg", (12982,4839,27000), (270,180,0), self.spawndelay + 4);
- }
- //-------------------------------------------------------------------------------------------
- //---SR-SYSTEM-------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- onPlayerConnect() {
- level endon("game_ended");
- while (1) {
- level waittill("connecting", player);
- player initPlayerStuff();
- player thread onPlayerSpawned();
- player thread vipMsg();
- }
- }
- onPlayerSpawned() {
- self endon("disconnect");
- while (1) {
- self waittill("spawned_player");
- self thread rocketCheck();
- self thread changePlayermodelVIP();
- self.trailon = false;
- self.ismodel = false;
- self thread checkforFirst();
- }
- }
- //Setup Triggers, Tps & Msgs
- initPlayerStuff() {
- self initTriggerForPlayer();
- self thread testTouching();
- self setupSpawnTeleports(6, (16410,4880,26696), (0,180,0));
- }
- //Resets Everything to 0
- initTriggerForPlayer() {
- self.triggers = spawnStruct();
- self.triggers.hard = [];
- self.triggers.easy = [];
- self.triggers.combine = [];
- self.triggers.spawn = [];
- self.triggers.finish = [];
- self.triggers.mainhard = [];
- self.time = spawnStruct();
- self.time.start = 0;
- self.time.end = 0;
- self.time = calculateTimes(self.time);
- self.usedRocket = false;
- self.hudsOpen = false;
- }
- //Check if used Rocketlaucher
- rocketCheck() {
- self endon("disconnect");
- while (1) {
- if (!isDefined(self) || !IsAlive(self)) wait 0.05;
- wait 0.05;
- if (self.triggers.spawn.size == 0)
- continue;
- if (self GetCurrentWeapon() == "rpg_mp" && self AttackButtonPressed() && self.usedRocket == false) {
- self.usedRocket = true;
- }
- }
- }
- //inits Trigger
- initTriggers() {
- level.triggers = spawnStruct();
- level.triggers.spawn = [];
- for (i = 0; i < 1024; i++) {
- ent = getEnt("spawn" + i, "targetname");
- if (!isDefined(ent))continue;
- // iprintlnbold("^2[DEBUG] ^3 Found trigger spawn " + i);
- level.triggers.spawn[level.triggers.spawn.size] = ent;
- }
- level.triggers.easy = [];
- for (i = 0; i < 1024; i++) {
- ent = getEnt("easy" + i, "targetname");
- if (!isDefined(ent))continue;
- // iprintlnbold("^2[DEBUG] ^3 Found trigger easy " + i);
- level.triggers.easy[level.triggers.easy.size] = ent;
- }
- level.triggers.combine = [];
- for (i = 0; i < 1024; i++) {
- ent = getEnt("combine" + i, "targetname");
- if (!isDefined(ent))continue;
- // iprintlnbold("^2[DEBUG] ^3 Found trigger combine " + i);
- level.triggers.combine[level.triggers.combine.size] = ent;
- }
- level.triggers.hard = [];
- for (i = 0; i < 1024; i++) {
- ent = getEnt("hard" + i, "targetname");
- if (!isDefined(ent))continue;
- // iprintlnbold("^2[DEBUG] ^3 Found trigger hard " + i);
- level.triggers.hard[level.triggers.hard.size] = ent;
- }
- level.triggers.mainhard = [];
- for (i = 0; i < 1024; i++) {
- ent = getEnt("mainhard" + i, "targetname");
- if (!isDefined(ent))continue;
- // iprintlnbold("^2[DEBUG] ^3 Found trigger mainhard " + i);
- level.triggers.mainhard[level.triggers.mainhard.size] = ent;
- }
- level.triggers.finish = [];
- finishNames = [];
- finishNames[0] = "easyfin";
- finishNames[1] = "hardfin";
- finishNames[2] = "mainfin";
- for (j = 0; j < finishNames.size; j++) {
- ent = getEnt(finishNames[j], "targetname");
- if (!isDefined(ent))continue;
- //iprintlnbold("^2[DEBUG] ^3 Found trigger finish " + finishNames[j]);
- level.triggers.finish[level.triggers.finish.size] = ent;
- }
- level.scores = spawnStruct();
- level.scores.easy = [];
- level.scores.hard = [];
- level.scores.mainhard = [];
- level.scores.rocket_easy = [];
- level.scores.rocket_hard = [];
- level.scores.rocket_mainhard = [];
- }
- //is Touching
- testTouching() {
- self endon("disconnect");
- self endon("run_finished");
- while (1) {
- for (i = 0; i < level.triggers.spawn.size; i++) {
- if (isDefined(level.triggers.spawn[i]) && self isTouching(level.triggers.spawn[i]) && self IsOnGround() && self.sessionstate == "playing") {
- self initTriggerForPlayer();
- //self iprintln("^1[DEBUG] ^2Touching Spawn " + i);
- self.triggers.spawn[i] = 1;
- self.time.start = getTime();
- }
- }
- if (self.triggers.spawn.size == 0) {
- wait 0.05;
- continue;
- }
- for (i = 0; i < level.triggers.hard.size; i++) {
- if (isDefined(level.triggers.hard[i]) && self isTouching(level.triggers.hard[i]) && self.sessionstate == "playing") {
- self.triggers.hard[i] = 1;
- //self iprintln("^1[DEBUG] ^2Touching Hard " + i);
- }
- }
- for (i = 0; i < level.triggers.combine.size; i++) {
- if (isDefined(level.triggers.combine[i]) && self isTouching(level.triggers.combine[i]) && self.sessionstate == "playing") {
- //self iprintln("^1[DEBUG] ^2Touching Combine " + i);
- self.triggers.combine[i] = 1;
- }
- }
- for (i = 0; i < level.triggers.easy.size; i++) {
- if (isDefined(level.triggers.easy[i]) && self isTouching(level.triggers.easy[i]) && self.sessionstate == "playing") {
- //self iprintln("^1[DEBUG] ^2Touching Easy " + i);
- self.triggers.easy[i] = 1;
- }
- }
- for (i = 0; i < level.triggers.mainhard.size; i++) {
- if (isDefined(level.triggers.mainhard[i]) && self isTouching(level.triggers.mainhard[i]) && self.sessionstate == "playing") {
- //self iprintln("^1[DEBUG] ^2Touching mainhard " + i);
- self.triggers.mainhard[i] = 1;
- }
- }
- wait 0.05;
- }
- }
- //Check if finished
- checkForFinish() {
- self endon("disconnect");
- finishway = "";
- if (self.triggers.mainhard.size == level.triggers.mainhard.size) {
- if (!self.usedRocket)
- finishway = "mainhard";
- else
- finishway = "rocket_mainhard";
- } else if (self.triggers.hard.size + self.triggers.combine.size == level.triggers.hard.size + level.triggers.combine.size && self.triggers.easy.size == 0) {
- if (!self.usedRocket)
- finishway = "hard";
- else
- finishway = "rocket_hard";
- } else if (self.triggers.easy.size + self.triggers.combine.size == level.triggers.easy.size + level.triggers.combine.size && self.triggers.hard.size == 0) {
- if (!self.usedRocket)
- finishway = "easy";
- else
- finishway = "rocket_easy";
- } else if (self.triggers.combine.size == level.triggers.combine.size && self.triggers.easy.size > 0 && self.triggers.hard.size > 0) {
- if (isDefined(self.triggers.hard[level.triggers.hard.size - 1]) && self.triggers.hard[level.triggers.hard.size - 1] == 1) {
- if (!self.usedRocket)
- finishway = "combine_hard";
- else
- finishway = "rocket_combine_hard";
- } else if (isDefined(self.triggers.easy[level.triggers.easy.size - 1]) && self.triggers.easy[level.triggers.easy.size - 1] == 1) {
- if (!self.usedRocket)
- finishway = "combine_easy";
- else
- finishway = "rocket_combine_easy";
- }
- }
- if (finishway == "")
- return false;
- self finishmsg(finishway);
- if (finishway == "combine_hard" || finishway == "rocket_combine_hard" || finishway == "combine_easy" || finishway == "rocket_combine_easy")
- return true;
- self addScore(finishway);
- self rankmsg(finishway);
- allplayers = getentarray("player","classname");
- for (i = 0; i < allplayers.size; i++){
- allplayers[i] thread checkforFirst();
- }
- return true;
- }
- //Print out what time and way u did after finish speedrun
- finishmsg(waymsg) {
- self.time calculateTimes(self.time);
- msg_way = "";
- msg_way_rpg = "";
- msg_combine = "";
- switch (waymsg) {
- case "mainhard":
- msg_way = "^1Classic Hard^3";
- msg_way_rpg = "^2norpg run^3";
- msg_combine = "";
- break;
- case "rocket_mainhard":
- msg_way = "^1Classic Hard^3";
- msg_way_rpg = "^1rpg run^3";
- msg_combine = "";
- break;
- case "hard":
- msg_way = "^4Combine Hard^3";
- msg_way_rpg = "^2norpg run^3";
- msg_combine = "^3He used ^2only Hard ^3jumps";
- break;
- case "rocket_hard":
- msg_way = "^4Combine Hard^3";
- msg_way_rpg = "^1rpg run^3";
- msg_combine = "^3He used ^2only Hard ^3jumps";
- break;
- case "easy":
- msg_way = "^5Easy/Inter^3";
- msg_way_rpg = "^2norpg run^3";
- msg_combine = "^3He used ^2only Easy/Inter ^3jumps";
- break;
- case "rocket_easy":
- msg_way = "^5Easy/Inter^3";
- msg_way_rpg = "^1rpg run^3";
- msg_combine = "^3He used ^2only Easy/Inter ^3jumps";
- break;
- case "combine_hard":
- msg_way = "^4Combine Hard^3";
- msg_way_rpg = "^2norpg run^3";
- msg_combine = "^3He used ^1Hard & Easy/Inter ^3jumps";
- break;
- case "rocket_combine_hard":
- msg_way = "^4Combine Hard^3";
- msg_way_rpg = "^1rpg run^3";
- msg_combine = "^3He used ^1Hard & Easy/Inter ^3jumps";
- break;
- case "combine_easy":
- msg_way = "^5Easy/Inter^3";
- msg_way_rpg = "^2norpg run^3";
- msg_combine = "^3He used ^1Hard & Easy/Inter ^3jumps";
- break;
- case "rocket_combine_easy":
- msg_way = "^5Easy^3";
- msg_way_rpg = "^1rpg run^3";
- msg_combine = "^3He used ^1Hard & Easy/Inter ^3jumps";
- break;
- }
- iprintlnbold("^2" + self.name + "^3 finished a " + msg_way_rpg + " in " + msg_way + " in^2 " + self.time.min + ":" + self.time.sec);
- iprintlnbold(msg_combine);
- }
- //Print out which rank you reached after finish speedrun
- rankMsg(way) {
- switch (way) {
- case "easy":
- score = level.scores.easy;
- finname = "norpg Easy/Inter";
- break;
- case "rocket_easy":
- score = level.scores.rocket_easy;
- finname = "rpg Easy/Inter";
- break;
- case "hard":
- score = level.scores.hard;
- finname = "norpg Combined";
- break;
- case "rocket_hard":
- score = level.scores.rocket_hard;
- finname = "rpg Combined";
- break;
- case "mainhard":
- score = level.scores.mainhard;
- finname = "norpg Classic";
- break;
- case "rocket_mainhard":
- score = level.scores.rocket_mainhard;
- finname = "rpg Classic";
- break;
- default:
- score = [];
- finname = "";
- return;
- }
- reachedrank = "";
- for (i = 0; i < 6; i++) {
- if (!isDefined(score[i])) {
- break;
- };
- if (score[i]["guid"] == self getGuid() && score[i]["time"].diff == self.time.diff) {
- reachedrank = "^2" + self.name + "^7 reached ^2" + (i + 1) + "^7. Place in " + finname;
- break;
- } else {
- reachedrank = "^2" + self.name + "^7 is still^2 " + (i + 1) + "^7. Place in " + finname;
- break;
- }
- }
- iPrintLnBold(reachedrank);
- }
- //check if first in Way and change model/activate trail
- checkforFirst() {
- score = level.scores.mainhard;
- score1 = level.scores.hard;
- score2 = level.scores.easy;
- if (isDefined(score[0]) && score[0]["guid"] == self getguid()) {
- self iPrintLn("^2You have been set to SONIC");
- self thread changePlayermodel("sonic");
- self thread drawTrail("sonic");
- }
- else if (isDefined(score1[0]) && score1[0]["guid"] == self getguid()) {
- self iPrintLn("^2You have been set to SHADOW");
- self thread changePlayermodel("shadow");
- self thread drawTrail("shadow");
- }
- else if (isDefined(score2[0]) && score2[0]["guid"] == self getguid()) {
- self iPrintLn("^2You have been set to RATCHET");
- self thread changePlayermodel("ratchet");
- self thread drawTrail("ratchet");
- }
- }
- //Activate Trail for First place
- drawTrail(modelname) {
- self endon("disconnect");
- self endon("joined_spectators");
- switch (modelname) {
- case "sonic":
- self.effectnamelow = level._effect["sonic_trail_low"];
- self.effectnamemed = level._effect["sonic_trail_med"];
- self.effectnamehigh = level._effect["sonic_trail_high"];
- break;
- case "shadow":
- self.effectnamelow = level._effect["shadow_trail_low"];
- self.effectnamemed = level._effect["shadow_trail_med"];
- self.effectnamehigh = level._effect["shadow_trail_high"];
- break;
- case "ratchet":
- self.effectnamelow = level._effect["ratchet_trail_low"];
- self.effectnamemed = level._effect["ratchet_trail_med"];
- self.effectnamehigh = level._effect["ratchet_trail_high"];
- break;
- default:
- self.effectnamelow = "";
- self.effectnamemed = "";
- self.effectnamehigh = "";
- break;
- }
- if (!self.trailon) {
- self.trailon = true;
- while (self isFirstInScoreList()) {
- ursprungA = self.origin;
- wait 0.05;
- origin = self.origin;
- angles = origin - ursprungA;
- if (angles[0] == 0 && angles[1] == 0) continue;
- clientVelocity = Int(Length(self GetVelocity()));
- if (clientVelocity > 130 && clientVelocity <= 240)
- effectname = self.effectnamelow;
- else if (clientVelocity > 240 && clientVelocity <= 500)
- effectname = self.effectnamemed;
- else if (clientVelocity > 500)
- effectname = self.effectnamehigh;
- else{
- continue;
- }
- PlayFX(effectname, origin + (0, 0, 20), angles, angles + (0, 0, 1));
- }
- self.trailon = false;
- }
- }
- //Checks self Got besttime
- isFirstInScoreList() {
- score = level.scores.mainhard;
- score1 = level.scores.hard;
- score2 = level.scores.easy;
- if (isDefined(score) && isDefined(score[0]) && score[0]["guid"] == self getGuid()) {
- return true;
- } else if (isDefined(score1) && isDefined(score1[0]) && score1[0]["guid"] == self getGuid()) {
- return true;
- } else if (isDefined(score2) && isDefined(score2[0]) && score2[0]["guid"] == self getGuid()) {
- return true;
- } else {
- return false;
- }
- }
- //Checks if String strats with
- startsWith(string, pattern) {
- if (string == pattern)
- return true;
- if (pattern.size > string.size)
- return false;
- for (index = 0; index < pattern.size; index++) {
- if (string[index] != pattern[index])
- return false;
- }
- return true;
- }
- //Detaches Head Model (So u can Change Bodymodel(alternativ to detachall()))
- detachHead() {
- self endon ("joined_spectators");
- count = self getattachsize();
- for (index = 0; index < count; index++) {
- head = self getattachmodelname(index);
- if (startsWith(head, "head")) {
- self detach(head);
- break;
- }
- }
- }
- //Changes Playermodel
- changePlayermodel(modelname) {
- self endon("disconnect");
- self endon("joined_spectators");
- self detachHead();
- self SetModel(modelname);
- if (!self.ismodel) {
- self.ismodel = true;
- while (self isFirstInScoreList()) {
- wait 1;
- }
- self setModel("body_mp_usmc_specops");
- self attach("head_mp_usmc_tactical_mich_stripes_nomex", "", true);
- self.ismodel = false;
- }
- }
- //Adds FinishtimeScore to Array
- addScore(way) {
- self endon("disconnect");
- score = [];
- score["name"] = self.name;
- score["time"] = self.time;
- score["guid"] = self getGuid();
- switch (way) {
- case "easy":
- level.scores.easy[level.scores.easy.size] = score;
- level.scores.easy = optimizedBubbleSort(level.scores.easy);
- break;
- case "rocket_easy":
- level.scores.rocket_easy[level.scores.rocket_easy.size] = score;
- level.scores.rocket_easy = optimizedBubbleSort(level.scores.rocket_easy);
- break;
- case "hard":
- level.scores.hard[level.scores.hard.size] = score;
- level.scores.hard = optimizedBubbleSort(level.scores.hard);
- break;
- case "rocket_hard":
- level.scores.rocket_hard[level.scores.rocket_hard.size] = score;
- level.scores.rocket_hard = optimizedBubbleSort(level.scores.rocket_hard);
- break;
- case "mainhard":
- level.scores.mainhard[level.scores.mainhard.size] = score;
- level.scores.mainhard = optimizedBubbleSort(level.scores.mainhard);
- break;
- case "rocket_mainhard":
- level.scores.rocket_mainhard[level.scores.rocket_mainhard.size] = score;
- level.scores.rocket_mainhard = optimizedBubbleSort(level.scores.rocket_mainhard);
- break;
- }
- }
- //Sorting Array (Finish times in this case)
- optimizedBubbleSort(a) {
- n = a.size;
- temp = 0;
- j = 0;
- bound = n - 1;
- for (i = 0; i <= n - 2; i++) {
- for (j = 0; j < bound; j++) {
- if (a[j]["time"].diff > a[j + 1]["time"].diff) {
- temp = a[j];
- a[j] = a[j + 1];
- a[j + 1] = temp;
- }
- }
- bound = j - 1;
- }
- return a;
- }
- //Calculates Time from milliseconds in hours:minutes:millisecons
- calculateTimes(time) {
- time.diff = time.end - time.start;
- time.min = int(time.diff / 1000 / 60);
- time.sec = int((time.diff - time.min * 60 * 1000) / 1000);
- time.msec = int((time.diff - (time.min * 60 * 1000) - (time.sec * 1000)));
- return time;
- }
- //Eases Up Creation of Hudelements
- spawnClientHud(x, y) {
- hud = newClientHudElem(self);
- hud.alignX = "center";
- hud.alignY = "top";
- hud.horzAlign = "center";
- hud.vertAlign = "top";
- hud.hideWhenInMenu = true;
- hud.x = x;
- hud.y = y; //424
- hud.alpha = 1;
- hud.fontScale = 1.4;
- return hud;
- }
- //Creates Finish Scoreboard Hud
- doHudWay(way, ent) {
- self endon("disconnect");
- //Dirty bugfix to avoid double trigger events in the same frame
- self.time.end = getTime();
- finished = self checkforFinish();
- if (finished) {
- self notify("run_finished");
- }
- wait 0.1;
- switch (way) {
- case "easy":
- case "rocket_easy":
- score = level.scores.easy;
- score1 = level.scores.rocket_easy;
- finname = 0;
- break;
- case "hard":
- case "rocket_hard":
- score = level.scores.hard;
- score1 = level.scores.rocket_hard;
- finname = 1;
- break;
- case "mainhard":
- case "rocket_mainhard":
- score = level.scores.mainhard;
- score1 = level.scores.rocket_mainhard;
- finname = 2;
- break;
- default:
- score = [];
- score1 = [];
- finname = 3;
- break;
- }
- finishhuds = [];
- wait 1;
- finish_bg = self spawnClientHud(0, 570);
- finish_bg SetShader("vote_bg", 437, 250);
- finish_bg slideHud(.4, 0, -400);
- wait .2;
- finish_stange = self spawnClientHud(627, 210);
- finish_stange SetShader("vote_stange", 255, 170);
- finish_stange slideHud(.2, -300, 0);
- finish_stange_left = self spawnClientHud(-628, 210);
- finish_stange_left SetShader("vote_stange_left", 255, 170);
- finish_stange_left slideHud(.2, 300, 0);
- wait .2;
- finish = self spawnClientHud(125, 250);
- finish.color = (0, 0, 0);
- finish.font = "default";
- finish setText("Top 6 of " + score.size + " runs");
- finishrpg = self spawnClientHud(-125, 250);
- finishrpg.color = (0, 0, 0);
- finishrpg.font = "default";
- finishrpg setText("Top 6 of " + score1.size + " runs");
- finishname = self spawnClientHud(0, 190);
- if (finname == 0) {
- finishname SetShader("votetext_easy", 225, 52);
- } else if (finname == 1) {
- finishname SetShader("votetext_combined", 225, 52);
- } else if (finname == 2) {
- finishname SetShader("votetext_classic", 225, 52);
- }
- finishhuds[finishhuds.size] = finish_stange;
- finishhuds[finishhuds.size] = finish_stange_left;
- finishhuds[finishhuds.size] = finish_bg;
- finishhuds[finishhuds.size] = finish;
- finishhuds[finishhuds.size] = finishrpg;
- finishhuds[finishhuds.size] = finishname;
- finish_stats = self spawnClientHud(125, 270);
- finish_stats.color = (0, 0, 0);
- finish_stats.font = "default";
- text = "";
- for (i = 0; i < 6; i++) { //i = number of textlines
- if (!isDefined(score[i])) {
- break;
- }
- if (score[i]["guid"] == self getGuid() && score[i]["time"].diff == self.time.diff) {
- text += "^2" + (i + 1) + ". " + score[i]["time"].min + ":" + score[i]["time"].sec + ":" + score[i]["time"].msec + " by " + score[i]["name"] + "^0";
- } else
- text += (i + 1) + ". " + score[i]["time"].min + ":" + score[i]["time"].sec + ":" + score[i]["time"].msec + " by " + score[i]["name"];
- if (i < 5) text += "\n";
- }
- finish_stats setText(text);
- finishhuds[finishhuds.size] = finish_stats;
- finish_stats_left = self spawnClientHud(-125, 270);
- finish_stats_left.color = (0, 0, 0);
- finish_stats_left.font = "default";
- text = "";
- for (i = 0; i < 6; i++) { //i = number of textlines
- if (!isDefined(score1[i])) {
- break;
- }
- if (score1[i]["guid"] == self getGuid() && score1[i]["time"].diff == self.time.diff)
- text += "^2" + (i + 1) + ". " + score1[i]["time"].min + ":" + score1[i]["time"].sec + ":" + score1[i]["time"].msec + " by " + score1[i]["name"] + "^0";
- else
- text += (i + 1) + ". " + score1[i]["time"].min + ":" + score1[i]["time"].sec + ":" + score1[i]["time"].msec + " by " + score1[i]["name"];
- if (i < 5) text += "\n";
- }
- finish_stats_left setText(text);
- finishhuds[finishhuds.size] = finish_stats_left;
- while (1) {
- wait 0.05;
- if (!self isTouching(ent)) {
- self RemoveHuds(finishhuds);
- self initTriggerForPlayer();
- self thread testTouching();
- self.hudsOpen = false;
- break;
- }
- }
- }
- //Removes Finish Scoreboard Hud
- RemoveHuds(huds) {
- self endon("disconnect");
- if (!isDefined(huds))
- return;
- for (i = 0; i < huds.size; i++) {
- if (!isDefined(huds[i])) continue;
- if (i != 0 && i != 1 && i != 2) {
- huds[i] destroy();
- } else if (i == 0) {
- huds[i] slideHud(.2, 300, 0);
- } else if (i == 1) {
- huds[i] slideHud(.2, -300, 0);
- } else if (i == 2) {
- huds[i] slideHud(.4, 0, 400);
- }
- }
- wait 0.4;
- for (i = 0; i < 4; i++) {
- if (isDefined(huds[i]))
- huds[i] destroy();
- }
- }
- //Slides Hud Elements
- slideHud(time, xmove, ymove) {
- if (isDefined(self)) {
- self MoveOverTime(time);
- self.y += ymove;
- self.x += xmove;
- }
- }
- //-------------------------------------------------------------------------------------------
- //---FINISH-TRIGGER--------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- easyFinTrigger() {
- ent = getEnt("easyfin", "targetname");
- if (!isDefined(ent)) return;
- while (1) {
- ent waittill("trigger", player);
- if (!player IsOnGround() || player.hudsOpen) continue;
- player thread doHudWay("easy", ent);
- player.hudsOpen = true;
- }
- }
- hardFinTrigger() {
- ent = getEnt("hardfin", "targetname");
- if (!isDefined(ent)) return;
- while (1) {
- ent waittill("trigger", player);
- if (!player IsOnGround() || player.hudsOpen) continue;
- player thread doHudWay("hard", ent);
- player.hudsOpen = true;
- }
- }
- mainhardFinTrigger() {
- ent = getEnt("mainfin", "targetname");
- if (!isDefined(ent)) return;
- while (1) {
- ent waittill("trigger", player);
- if (!player IsOnGround() || player.hudsOpen) continue;
- player thread doHudWay("mainhard", ent);
- player.hudsOpen = true;
- }
- }
- //-------------------------------------------------------------------------------------------
- //---TELEPORT--------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- setupSpawnTeleports(count, pos, angle) {
- for (i = 0; i < count; i++) {
- thread teleport("spawntp" + i, pos, angle);
- }
- }
- teleport(triggername, pos, angle) {
- ent = getent(triggername, "targetname");
- if (!isDefined(ent)) return;
- while (1) {
- ent waittill("trigger", player);
- if (player.sessionstate != "playing")
- continue;
- player SetOrigin(pos);
- player setPlayerAngles(angle);
- }
- }
- //-------------------------------------------------------------------------------------------
- //---MAPPER-CHECK----------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- changePlayermodelVIP(){
- if (self isVip(self getGuid()) == "varta" || self isVip(self getGuid()) == "viruz"){
- self detachHead();
- self SetModel("body_complete_mp_price_woodland");
- }
- /*else if (self isVip(self getGuid()) == "drizz"){
- self detachHead();
- self SetModel("body_complete_mp_russian_farmer");
- }*/
- }
- isVip(guid){
- if(self shortGuid(guid) == "959303ec")
- return "varta";
- else if (self shortGuid(guid) == "95b5e8d3")
- return "viruz";
- else if (self shortGuid(guid) == "7daf0d52")
- return "drizz";
- else
- return "false";
- }
- shortGuid(guid){
- return getSubstr(guid, 24, 32);
- }
- //-------------------------------------------------------------------------------------------
- //---SPAWN-FX-WITH-ANGLES--------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- playCustomFX(fxid, origin, angle, delay)
- {
- wait 0.05;
- if(delay > 0) wait delay;
- up = AnglesToUp(angle);
- forward = AnglesToForward(angle);
- PlayFX(level._effect[fxid], origin, forward, up);
- }
- triggerCustomFX(fxid, origin, angle, delay)
- {
- wait 0.05;
- if(delay > 0) wait delay;
- up = AnglesToUp(angle);
- forward = AnglesToForward(angle);
- level.fx = SpawnFX(level._effect[fxid], origin, forward, up);
- TriggerFX(level.fx);
- }
- //-------------------------------------------------------------------------------------------
- //---TEXT-MSG--------------------------------------------------------------------------------
- //-------------------------------------------------------------------------------------------
- vipMsg(){
- wait 5;
- if (self isVip(self getGuid()) == "varta")
- iPrintLnBold("The Creator of descent_v1 & descent_v2^2 =.VaRtaZiaN.= ^7has joined");
- else if (self isVip(self getGuid()) == "viruz")
- iPrintLnBold("The Creator of descent_v3 ^2Viruz ^7has joined");
- }
- setupMsg() {
- self.msg = [];
- self.msg[0] = "^2" + self.name + " ^7is so nice and good looking!";
- self.msg[1] = "Map by ^53xP' ^7Viruz!";
- self.msg[2] = "Thanks to ^2-.VaRtaZiaN.- ^7for letting me continue his great mapseries!";
- self.msg[3] = "Thanks to ^2Fr33g !t^7,^2 ZeeZ^7 & ^2Noob^7!";
- self.msg[4] = "u do ^2hax, ^7i got much proof, omgee!";
- self.msg[5] = "^2Drizzjeh ^7sucking much dickerinos!";
- self.msg[6] = "^2" + self.name + " ^7landed ^1Classic Hard ^7Roof";
- self.msg[7] = "^2" + self.name + " ^7landed ^4Combined Hard ^7Roof";
- self.msg[8] = "^2" + self.name + " ^7landed ^5Easy/Inter ^7Roof";
- }
- setupmsgTriggers()
- {
- thread msg("mainhardroof", 6);
- thread msg("hardroof", 7);
- thread msg("easyroof", 8);
- for (i = 0; i < 9; i++) {
- thread msg("mainhardmsg" + (i+1), i);
- thread msg("hardmsg" + (i+1), i);
- thread msg("easymsg" + (i+1), i);
- }
- }
- msg(triggername, msgnumber) {
- ent = getent(triggername, "targetname");
- if (!isDefined(ent)) return;
- while (1) {
- ent waittill("trigger", player);
- if (player.sessionstate != "playing")
- continue;
- player setupMsg();
- iPrintLnBold(player.msg[msgnumber]); //INSERT TEXT HERE
- wait 5;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement