VintageRice

[Cod5][Release] - Find & Seek 'v2'

Jun 24th, 2014
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include common_scripts\utility;
  2. #include maps\_utility;
  3. #include maps\_hud_util;
  4.  
  5. /*
  6.     Gamemode created by VintageRice
  7.     Idea from Zyroh7s :D
  8.    
  9.     Created in about 9/10 hours
  10.    
  11.     Credits: Mikeeeyyy | CoolBunny | Zyroh
  12. */
  13.  
  14. Settings(){self thread gamemodeSettings();}
  15.  
  16. gamemodeSettings()
  17. {
  18.     self setClientDvars("g_ai", 0, "ui_hud_hardcore", 1);
  19.     self zombieMap();
  20.    
  21.     if(zombieMap() == "factory")
  22.     {
  23.         wait 1;
  24.        
  25.         self.collectedModels = 0;
  26.         self.remainingTime = 60; //testing
  27.         self.score = 100000;
  28.         self.modelYawSpeed = 180;
  29.         self.gameEnded = 0;
  30.         self.holdingModel = 0;
  31.        
  32.         level.chalk_hud1 destroy();
  33.         level.chalk_hud2 destroy();
  34.  
  35.         self thread spawnModels();
  36.         self thread monitorGame();
  37.         self thread gameGUI();
  38.         self thread modelRange();
  39.         self thread gameTimer();
  40.         self thread enablePower();
  41.         self thread setupVisuals();
  42.         self thread modelTarget();
  43.         self thread collectedModels();
  44.     }
  45.     else
  46.     {
  47.         self freezeControls(1);
  48.         self setBlur(5, .1);
  49.        
  50.         self.wrongMap = createText("This gamemode was created for Der Riese!", "Objective", 1.5, "CENTER", "CENTER", 0, 0, 1, 1);
  51.     }
  52. }
  53.  
  54. collectedModels()
  55. {
  56.     for(i = 0; i < 10; i++)
  57.     {
  58.         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
  59.         level.Model["Collected"][i].angles = (0, 0, 0);
  60.         level.Model["Collected"][i] setModel("");
  61.        
  62.         level.Model["Collected"][i] linkTo(level.Model["Tesla"]);
  63.     }
  64. }
  65.  
  66. modelTarget()
  67. {
  68.     level.Model["Tesla"] = spawn("script_model", (-55, 295, 215));
  69.     level.Model["Tesla"].angles = (0, 0, 180);
  70.     level.Model["Tesla"] setModel("zombie_zapper_tesla_coil");
  71.    
  72.     playFx(level._effect["tesla_bolt"], (-55, 295, 100));
  73.     playFx(loadFx("misc/fx_zombie_electric_trap"), (-55, 295, 100));
  74.    
  75.     for(;;)
  76.     {
  77.         level.Model["Tesla"] rotateYaw(self.modelYawSpeed, 10);
  78.         wait 10;
  79.     }
  80. }
  81.  
  82. setupVisuals()
  83. {
  84.     self setClientDvar("r_filmTweakEnable", "1");
  85.     self setClientDvar("r_filmTweakContrast", "1.1");
  86.    
  87.     self setVolFog(1500, 750, 750, 1500, .5, .5, .5, 3);
  88.     self visionSetNaked("fly_dark", 3);
  89. }
  90.  
  91. zombieMap()
  92. {
  93.     mapNames = strTok("prototype|asylum|sumpf|factory", "|");
  94.     for(i = 0; i < 3; i++) if(level.script == "nazi_zombie_" + mapNames[i]) return mapNames[i];
  95. }
  96.  
  97. enablePower()
  98. {
  99.     triggerPower = getEnt("use_power_switch", "targetname");
  100.     triggerPower notify("trigger", self);
  101. }
  102.  
  103. gameTimer()
  104. {
  105.     for(;;)
  106.     {
  107.         self.remainingTime--;
  108.         self.gameMode[4] setText("Seconds Remaining: ^2" + self.remainingTime);
  109.        
  110.         wait 1;
  111.     }
  112. }
  113.  
  114. modelRange()
  115. {
  116.     self.gameMode[5] = createElement("BOTTOMLEFT", "BOTTOMLEFT", 5, -5, 2, 2, (1, 1, 1), "WHITE", 1, .3);
  117.    
  118.     for(;;)
  119.     {
  120.         self.totalRange = distance(self.origin, level.Model["Object"].origin);
  121.         self.gameMode[5] scaleOverTime(.1, int(self.totalRange / 5), 2);
  122.        
  123.         wait .1;
  124.     }
  125. }
  126.  
  127. foundModel()
  128. {  
  129.     self.gameMode[2] setText("");
  130.     self.gameMode[2].alpha = 1;
  131.     self.gameMode[3] setText("Holding: ^2" + level.randomModel + "^7, take it to spawn!");
  132.    
  133.     self.foundString = "You have found: ^2" +  level.randomModel;
  134.     self.finalString = "";
  135.    
  136.     for(i = 0; i < self.foundString.size; i++)
  137.     {
  138.         self.finalString += self.foundString[i];
  139.         wait .05;
  140.        
  141.         self.gameMode[2] setText(self.finalString);
  142.     }
  143.    
  144.     wait 5;
  145.    
  146.     self.gameMode[2] fadeOverTime(.3);
  147.     self.gameMode[2].alpha = 0;
  148. }
  149.  
  150. foundEffects()
  151. {
  152.     self playSound("couch_slam");
  153.    
  154.     playFx(level._effect["lightning_dog_spawn"], self.origin);
  155.     Earthquake(.75, 2, self.origin, 150);
  156. }
  157.  
  158. monitorGame()
  159. {  
  160.     for(;;)
  161.     {
  162.         if(distance(self.origin, level.randomPosition) < 25)
  163.         {  
  164.             level.Model["Object"] delete();
  165.             self.holdingModel = 1;
  166.            
  167.             self foundEffects();
  168.             self foundModel();
  169.         }
  170.        
  171.         if(distance(self.origin, level.Model["Tesla"].origin) < 135 && self.holdingModel == 1)
  172.         {
  173.             self.collectedModels++;
  174.             self.remainingTime += 30;
  175.             self.modelYawSpeed += 10;
  176.             self.holdingModel = 0;
  177.            
  178.             self.gameMode[0] setText("Models Collected: ^2" + self.collectedModels);
  179.             level.Model["Collected"][self.collectedModels - 1] setModel(level.randomModel);
  180.            
  181.             self foundEffects();
  182.             self thread spawnModels();
  183.         }
  184.        
  185.         if(self.remainingTime <= 0 || self.collectedModels == 10)
  186.         {
  187.             if(self.remainingTime <= 0) self gameEnd("Lose");
  188.             if(self.collectedModels == 10) self gameEnd("Win");
  189.            
  190.             break;
  191.         }
  192.        
  193.         wait .1;
  194.     }
  195. }
  196.  
  197. gameEnd(howEnded)
  198. {
  199.     for(i = 0; i < self.gameMode.size; i++) self.gameMode[i] destroy();
  200.    
  201.     for(i = 10; i > 0; i--)
  202.     {
  203.         self playSound("pa_audio_link_" + i);
  204.         level.Model["Collected"][i - 1] delete();
  205.         wait 1;
  206.     }
  207.    
  208.     if(howEnded == "Win")
  209.     {
  210.         for(i = 0; i < 8; i++) playFx(level._effect["zombie_mainframe_link_all"], level.Model["Tesla"].origin);
  211.        
  212.         level.Model["Tesla"] setModel("zombie_teddybear");
  213.         level.Model["Tesla"].angles = (0, 0, 0);
  214.         level.Model["Tesla"].origin = (-55, 295, 160);
  215.        
  216.         for(;;)
  217.         {
  218.             if(distance(self.origin, level.Model["Tesla"].origin) < 60)
  219.             {
  220.                 self endString("Win");
  221.                 break;
  222.             }
  223.             wait .1;
  224.         }
  225.     }
  226.     else self thread endString(howEnded);
  227. }
  228.  
  229. endString(howEnded)
  230. {
  231.     self freezeControls(1);
  232.     self setBlur(5, 1);
  233.    
  234.     if(howEnded == "Win") self.endString = strTok("CONGRATULATIONS|You have completed the game!", "|");
  235.     else self.endString = strTok("BETTER ^2LOOK ^7NEXT TIME|You have failed the game!", "|"); //Zyroh, this pun is amazing
  236.    
  237.     self.endText[0] = createText(self.endString[0], "Default", 1.5, "CENTER", "CENTER", 0, -10, 1, 1);
  238.     self.endText[1] = createText(self.endString[1], "Default", 1.2, "CENTER", "CENTER", 0, 10, 1, 1);
  239. }
  240.  
  241. spawnModels()
  242. {
  243.     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", "|");
  244.     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", "|");
  245.    
  246.     // PNFv2 taught me that I could double split strToks
  247.     formatPosition = [];
  248.     for(i = 0; i < allPositions.size; i++) formatPosition[i] = strTok(allPositions[i], ",");
  249.     randomGen = formatPosition[randomInt(formatPosition.size - 1)];
  250.    
  251.     level.randomPosition = (int(randomGen[0]), int(randomGen[1]), int(randomGen[2]));
  252.    
  253.     if(self.lastPosition != level.randomPosition)
  254.     {
  255.         level.randomModel = allModels[randomInt(allModels.size - 1)];  
  256.         level.Model["Object"] = spawn("script_model", level.randomPosition);
  257.         level.Model["Object"].angles = (0, randomInt(360), 0);
  258.         level.Model["Object"] setModel(level.randomModel);
  259.        
  260.         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
  261.        
  262.         self.lastPosition = level.randomPosition;
  263.        
  264.         self.gameMode[1] setText("Looking for: ^2" + level.randomModel);
  265.         self.gameMode[3] setText("Distance: ");
  266.     }
  267.     else self thread spawnModels();
  268. }
  269.  
  270. gameGUI()
  271. {
  272.     self.gameMode[0] = createText("Models Collected: ^2" + self.collectedModels, "Default", 1.25, "TOP", "TOP", 0, 5, 1, 1);
  273.     self.gameMode[1] = createText("Looking For: ^2" + level.randomModel, "Default", 1.25, "TOP", "TOP", 0, 20, 1, 1);
  274.     self.gameMode[2] = createText("", "Default", 1.25, "LEFT", "LEFT", 5, 0, 1, 1);
  275.     self.gameMode[3] = createText("Distance: ", "Default", 1.25, "BOTTOMLEFT", "BOTTOMLEFT", 5, -10, 1, 1);
  276.     self.gameMode[4] = createText("", "Default", 1.25, "TOP", "TOP", 0, 35, 1, 1);
  277.    
  278.     self.gameMode[6] = createElement("TOP", "TOP", 0, 0, 1000, 55, (0, 0, 0), "WHITE", 0, .3);
  279.     self.gameMode[7] = createElement("BOTTOM", "BOTTOM", 0, 0, 1000, 25, (0, 0, 0), "WHITE", 0, .3);
  280. }
  281.  
  282. createText(Text, Font, Scale, Align, Relative, X, Y, Sort, Alpha)
  283. {
  284.     self endon("death");
  285.     textElem = createFontString(Font, Scale, self);
  286.    
  287.     textElem setPoint(Align, Relative, x, y);
  288.     textElem SetText(Text);
  289.    
  290.     textElem.sort = Sort;
  291.     textElem.alpha = Alpha;
  292.     textElem.foreground = true;
  293.    
  294.     return textElem;
  295. }
  296.  
  297. createElement(Align, Relative, X, Y, Width, Height, Color, Shader, Sort, Alpha)
  298. {
  299.     self endon("death");
  300.     rectangleElem = newClientHudElem( self );
  301.    
  302.     rectangleElem.elemType = "bar";
  303.     rectangleElem.width = Width;
  304.     rectangleElem.height = Height;
  305.     rectangleElem.align = Align;
  306.     rectangleElem.relative = Relative;
  307.     rectangleElem.xOffset = 0;
  308.     rectangleElem.yOffset = 0;
  309.     rectangleElem.children = [];
  310.     rectangleElem.sort = Sort;
  311.     rectangleElem.color = Color;
  312.     rectangleElem.alpha = Alpha;
  313.     rectangleElem setParent( level.uiParent );
  314.     rectangleElem setShader( Shader, Width , Height );
  315.     rectangleElem.hidden = false;
  316.     rectangleElem setPoint(Align, Relative, X, Y);
  317.    
  318.     return rectangleElem;
  319. }
Advertisement
Add Comment
Please, Sign In to add comment