Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include common_scripts\utility;
- #include maps\_utility;
- #include maps\_hud_util;
- /*
- Gamemode created by VintageRice
- Idea from Zyroh7s :D
- Created in about 9/10 hours
- Credits: Mikeeeyyy | CoolBunny | Zyroh
- */
- Settings(){self thread gamemodeSettings();}
- gamemodeSettings()
- {
- self setClientDvars("g_ai", 0, "ui_hud_hardcore", 1);
- self zombieMap();
- if(zombieMap() == "factory")
- {
- wait 1;
- self.collectedModels = 0;
- self.remainingTime = 60; //testing
- self.score = 100000;
- self.modelYawSpeed = 180;
- self.gameEnded = 0;
- self.holdingModel = 0;
- level.chalk_hud1 destroy();
- level.chalk_hud2 destroy();
- self thread spawnModels();
- self thread monitorGame();
- self thread gameGUI();
- self thread modelRange();
- self thread gameTimer();
- self thread enablePower();
- self thread setupVisuals();
- self thread modelTarget();
- self thread collectedModels();
- }
- else
- {
- self freezeControls(1);
- self setBlur(5, .1);
- self.wrongMap = createText("This gamemode was created for Der Riese!", "Objective", 1.5, "CENTER", "CENTER", 0, 0, 1, 1);
- }
- }
- collectedModels()
- {
- for(i = 0; i < 10; i++)
- {
- level.Model["Collected"][i] = spawn("script_model", (sin(180+(i*36))*120 - 55, cos(180+(i*36))*120 + 295, 250)); // Credits to Mikeeeyy for his math skills
- level.Model["Collected"][i].angles = (0, 0, 0);
- level.Model["Collected"][i] setModel("");
- level.Model["Collected"][i] linkTo(level.Model["Tesla"]);
- }
- }
- modelTarget()
- {
- level.Model["Tesla"] = spawn("script_model", (-55, 295, 215));
- level.Model["Tesla"].angles = (0, 0, 180);
- level.Model["Tesla"] setModel("zombie_zapper_tesla_coil");
- playFx(level._effect["tesla_bolt"], (-55, 295, 100));
- playFx(loadFx("misc/fx_zombie_electric_trap"), (-55, 295, 100));
- for(;;)
- {
- level.Model["Tesla"] rotateYaw(self.modelYawSpeed, 10);
- wait 10;
- }
- }
- setupVisuals()
- {
- self setClientDvar("r_filmTweakEnable", "1");
- self setClientDvar("r_filmTweakContrast", "1.1");
- self setVolFog(1500, 750, 750, 1500, .5, .5, .5, 3);
- self visionSetNaked("fly_dark", 3);
- }
- zombieMap()
- {
- mapNames = strTok("prototype|asylum|sumpf|factory", "|");
- for(i = 0; i < 3; i++) if(level.script == "nazi_zombie_" + mapNames[i]) return mapNames[i];
- }
- enablePower()
- {
- triggerPower = getEnt("use_power_switch", "targetname");
- triggerPower notify("trigger", self);
- }
- gameTimer()
- {
- for(;;)
- {
- self.remainingTime--;
- self.gameMode[4] setText("Seconds Remaining: ^2" + self.remainingTime);
- wait 1;
- }
- }
- modelRange()
- {
- self.gameMode[5] = createElement("BOTTOMLEFT", "BOTTOMLEFT", 5, -5, 2, 2, (1, 1, 1), "WHITE", 1, .3);
- for(;;)
- {
- self.totalRange = distance(self.origin, level.Model["Object"].origin);
- self.gameMode[5] scaleOverTime(.1, int(self.totalRange / 5), 2);
- wait .1;
- }
- }
- foundModel()
- {
- self.gameMode[2] setText("");
- self.gameMode[2].alpha = 1;
- self.gameMode[3] setText("Holding: ^2" + level.randomModel + "^7, take it to spawn!");
- self.foundString = "You have found: ^2" + level.randomModel;
- self.finalString = "";
- for(i = 0; i < self.foundString.size; i++)
- {
- self.finalString += self.foundString[i];
- wait .05;
- self.gameMode[2] setText(self.finalString);
- }
- wait 5;
- self.gameMode[2] fadeOverTime(.3);
- self.gameMode[2].alpha = 0;
- }
- foundEffects()
- {
- self playSound("couch_slam");
- playFx(level._effect["lightning_dog_spawn"], self.origin);
- Earthquake(.75, 2, self.origin, 150);
- }
- monitorGame()
- {
- for(;;)
- {
- if(distance(self.origin, level.randomPosition) < 25)
- {
- level.Model["Object"] delete();
- self.holdingModel = 1;
- self foundEffects();
- self foundModel();
- }
- if(distance(self.origin, level.Model["Tesla"].origin) < 135 && self.holdingModel == 1)
- {
- self.collectedModels++;
- self.remainingTime += 30;
- self.modelYawSpeed += 10;
- self.holdingModel = 0;
- self.gameMode[0] setText("Models Collected: ^2" + self.collectedModels);
- level.Model["Collected"][self.collectedModels - 1] setModel(level.randomModel);
- self foundEffects();
- self thread spawnModels();
- }
- if(self.remainingTime <= 0 || self.collectedModels == 10)
- {
- if(self.remainingTime <= 0) self gameEnd("Lose");
- if(self.collectedModels == 10) self gameEnd("Win");
- break;
- }
- wait .1;
- }
- }
- gameEnd(howEnded)
- {
- for(i = 0; i < self.gameMode.size; i++) self.gameMode[i] destroy();
- for(i = 10; i > 0; i--)
- {
- self playSound("pa_audio_link_" + i);
- level.Model["Collected"][i - 1] delete();
- wait 1;
- }
- if(howEnded == "Win")
- {
- for(i = 0; i < 8; i++) playFx(level._effect["zombie_mainframe_link_all"], level.Model["Tesla"].origin);
- level.Model["Tesla"] setModel("zombie_teddybear");
- level.Model["Tesla"].angles = (0, 0, 0);
- level.Model["Tesla"].origin = (-55, 295, 160);
- for(;;)
- {
- if(distance(self.origin, level.Model["Tesla"].origin) < 60)
- {
- self endString("Win");
- break;
- }
- wait .1;
- }
- }
- else self thread endString(howEnded);
- }
- endString(howEnded)
- {
- self freezeControls(1);
- self setBlur(5, 1);
- if(howEnded == "Win") self.endString = strTok("CONGRATULATIONS|You have completed the game!", "|");
- else self.endString = strTok("BETTER ^2LOOK ^7NEXT TIME|You have failed the game!", "|"); //Zyroh, this pun is amazing
- self.endText[0] = createText(self.endString[0], "Default", 1.5, "CENTER", "CENTER", 0, -10, 1, 1);
- self.endText[1] = createText(self.endString[1], "Default", 1.2, "CENTER", "CENTER", 0, 10, 1, 1);
- }
- spawnModels()
- {
- allModels = strTok("zombie_x2_icon|zombie_skull|zombie_ammocan|zombie_bomb|zombie_treasure_box|defaultactor|zombie_vending_doubletap_on|zombie_vending_jugg_on|zombie_vending_revive_on|zombie_vending_sleight_on|zombie_wolf|weapon_zombie_monkey_bomb|zombie_vending_packapunch_on", "|");
- allPositions = strTok("-544,21,69|640,80,65|934,286,64|980,862,66|818,1076,168|-175,-585,-142|-522,557,-3|313,120,60|476,-395,61|547,-1248,64|-107,-2305,51|57,-2498,272|-1046,-432,67|-1291,-1543,191|-1185,-498,199|1424,-1416,133", "|");
- // PNFv2 taught me that I could double split strToks
- formatPosition = [];
- for(i = 0; i < allPositions.size; i++) formatPosition[i] = strTok(allPositions[i], ",");
- randomGen = formatPosition[randomInt(formatPosition.size - 1)];
- level.randomPosition = (int(randomGen[0]), int(randomGen[1]), int(randomGen[2]));
- if(self.lastPosition != level.randomPosition)
- {
- level.randomModel = allModels[randomInt(allModels.size - 1)];
- level.Model["Object"] = spawn("script_model", level.randomPosition);
- level.Model["Object"].angles = (0, randomInt(360), 0);
- level.Model["Object"] setModel(level.randomModel);
- for(i = 0; i < 4; i++) if(level.randomModel == allModels[i]) level.randomModel.origin[1] += 20; // Increase height if it's a 'powerup' model, or it will spawn inside the ground
- self.lastPosition = level.randomPosition;
- self.gameMode[1] setText("Looking for: ^2" + level.randomModel);
- self.gameMode[3] setText("Distance: ");
- }
- else self thread spawnModels();
- }
- gameGUI()
- {
- self.gameMode[0] = createText("Models Collected: ^2" + self.collectedModels, "Default", 1.25, "TOP", "TOP", 0, 5, 1, 1);
- self.gameMode[1] = createText("Looking For: ^2" + level.randomModel, "Default", 1.25, "TOP", "TOP", 0, 20, 1, 1);
- self.gameMode[2] = createText("", "Default", 1.25, "LEFT", "LEFT", 5, 0, 1, 1);
- self.gameMode[3] = createText("Distance: ", "Default", 1.25, "BOTTOMLEFT", "BOTTOMLEFT", 5, -10, 1, 1);
- self.gameMode[4] = createText("", "Default", 1.25, "TOP", "TOP", 0, 35, 1, 1);
- self.gameMode[6] = createElement("TOP", "TOP", 0, 0, 1000, 55, (0, 0, 0), "WHITE", 0, .3);
- self.gameMode[7] = createElement("BOTTOM", "BOTTOM", 0, 0, 1000, 25, (0, 0, 0), "WHITE", 0, .3);
- }
- createText(Text, Font, Scale, Align, Relative, X, Y, Sort, Alpha)
- {
- self endon("death");
- textElem = createFontString(Font, Scale, self);
- textElem setPoint(Align, Relative, x, y);
- textElem SetText(Text);
- textElem.sort = Sort;
- textElem.alpha = Alpha;
- textElem.foreground = true;
- return textElem;
- }
- createElement(Align, Relative, X, Y, Width, Height, Color, Shader, Sort, Alpha)
- {
- self endon("death");
- rectangleElem = newClientHudElem( self );
- rectangleElem.elemType = "bar";
- rectangleElem.width = Width;
- rectangleElem.height = Height;
- rectangleElem.align = Align;
- rectangleElem.relative = Relative;
- rectangleElem.xOffset = 0;
- rectangleElem.yOffset = 0;
- rectangleElem.children = [];
- rectangleElem.sort = Sort;
- rectangleElem.color = Color;
- rectangleElem.alpha = Alpha;
- rectangleElem setParent( level.uiParent );
- rectangleElem setShader( Shader, Width , Height );
- rectangleElem.hidden = false;
- rectangleElem setPoint(Align, Relative, X, Y);
- return rectangleElem;
- }
Advertisement
Add Comment
Please, Sign In to add comment