VintageRice

[Cod5][Release] - Model Building Aid

Jul 4th, 2014
458
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. modelSettings()
  6. {
  7.     self.menuOpen = 0;
  8.     self.modelCount = 0;
  9.     self.modelsHidden = 0;
  10.  
  11.     self.allModels = strTok("zombie_beaker_sphere|zombie_lab_dead_rat|static_global_trash_4x4|zombie_perk_bottle_sleight|zombie_perk_bottle_revive|zombie_perk_bottle_doubletap|zombie_perk_bottle_jugg|zombie_teleporter_control_panel|zombie_teleporter_powerline|zombie_factory_bearpile|zombie_chalkboard|zombie_wallclock_main|zombie_teddybear|zombie_zapper_tesla_coil|defaultactor|zombie_x2_icon|zombie_skull|zombie_ammocan|zombie_bomb|zombie_treasure_box|zombie_vending_doubletap_on|zombie_vending_jugg_on|zombie_vending_revive_on|zombie_vending_sleight_on|zombie_wolf|zombie_teleporter_pad|weapon_zombie_monkey_bomb|zombie_vending_packapunch_on", "|");
  12.    
  13.     for(i = 0; i < 9; i++) self.Menu["Curs"][i] = i;
  14.    
  15.     self thread menuOptions();
  16.     self thread menuControls();
  17. }
  18.  
  19. menuGUI()
  20. {
  21.     self.Menu["GUI"][0] = createElement("LEFT", "LEFT", 10, 0, 190, 110, (0, 0, 0), "WHITE", 1, .3);
  22.     self.Menu["GUI"][1] = createElement("LEFT", "LEFT", 10, 0, 2, 15, (0, .5, 1), "WHITE", 2, .3);
  23.    
  24.     for(i = 0; i < 7; i++) self.Menu["GUI"][2][i] = createText("", "Default", 1.1, "LEFT", "LEFT", 15, (i * 15) - (45), 3, 1);
  25.     self.Menu["GUI"][2][3].color = (0, .5, 1);
  26.    
  27.     self.Menu["GUI"][3] = createText("", "Default", 1.1, "TOP", "TOP", 0, 5, 1, 1);
  28.     self.Menu["GUI"][4] = createText("", "Default", 1.1, "TOP", "TOP", 0, 20, 1, 1);
  29. }
  30.  
  31. closeMenu()
  32. {
  33.     self.menuOpen = 0;
  34.  
  35.     self.Marker destroy();
  36.     level.Model["Preview"] delete();
  37.    
  38.     for(i = 0; i < 7; i++) self.Menu["GUI"][2][i] destroy();
  39.     for(i = 0; i < 3; i++) self.Menu["GUI"][i] destroy();
  40. }
  41.  
  42. tempMenuClose()
  43. {
  44.     self.tempClose = 1;
  45.     self thread tempMenuEffect(190, (1, 1, 1));
  46.    
  47.     for(;;)
  48.     {
  49.         if(self meleeButtonPressed())
  50.         {
  51.             wait .3;
  52.             self.tempClose = 0;
  53.            
  54.             for(i = 3; i < 5; i++) self.Menu["GUI"][i] setText("");
  55.  
  56.             self thread tempMenuEffect(2, (0, .5, 1));
  57.             self thread menuControls();
  58.  
  59.             break;
  60.         }
  61.         wait .05;
  62.     }
  63. }
  64.  
  65. tempMenuEffect(Width, Colour)
  66. {
  67.     self.Menu["GUI"][1] scaleOverTime(.2, Width, 15);
  68.     self.Menu["GUI"][2][3] fadeOverTime(.2);
  69.     self.Menu["GUI"][2][3].color = Colour;
  70. }
  71.  
  72. menuOptions()
  73. {
  74.     for(i = 0; i < 15; i++) for(ii = 0; ii < 7; ii++) self addMenu(i, ii, ""); //Fixes the broken scrolling bug by adding 'fake' slots
  75.  
  76.     self addMenu("Main", 0, "Select a Model", ::newMenu, 11);
  77.     self addMenu("Main", 1, "Hide Models", ::hideModels);
  78.     self addMenu("Main", 2, "Rotation", ::editModel, "Rotation");
  79.     self addMenu("Main", 3, "Reset Rotation", ::resetRotation);
  80.     self addMenu("Main", 4, "Positioning", ::editModel, "Position");
  81.     self addMenu("Main", 5, "Place a Model", ::placeModel);
  82.     self addMenu("Main", 6, "Delete Previous Model", ::deleteModel);
  83.     self addMenu("Main", 7, "Spawned Model Info", ::newMenu, 10);
  84.     self addMenu("Main", 8, "Collapse all Models", ::collapseAll);
  85.     self addMenu("Main", 9, "Compass & Player Things", ::doCompass);
  86.  
  87.     for(i = 0; i < self.allModels.size; i++)
  88.     {
  89.         self addMenu(11, i, self.allModels[i], ::setNewModel, self.allModels[i]);
  90.         for(ii = 0; ii < 7; ii++) self addMenu(self.allModels[i], ii, "");
  91.  
  92.         self.menuPlace[self.allModels[i]] = 0;
  93.     }
  94.  
  95.     self revalueCount();
  96. }  
  97.  
  98. menuControls()
  99. {
  100.     while(self.tempClose == 0)
  101.     {
  102.         if(self.menuOpen == 0)
  103.         {
  104.             if(self adsButtonPressed() && self meleeButtonPressed())
  105.             {  
  106.                 self.menuOpen = 1;
  107.                 self.Marker = createPointer((0, 0, 0), "rank_prestige10");
  108.                
  109.                 self thread menuGUI();
  110.                 self thread modelPreview();
  111.                 self thread newMenu("Main");
  112.             }
  113.         }
  114.         else
  115.         {
  116.             if(self attackButtonPressed() || self adsButtonPressed())
  117.             {
  118.                 for(i = 0; i < 7; i++)
  119.                 {
  120.                     self.Menu["Curs"][i] += self attackButtonPressed();
  121.                     self.Menu["Curs"][i] -= self adsButtonPressed();
  122.                    
  123.                     if(self.Menu["Curs"][i] > self.Menu["Name"][self.Menu["SubMenu"]].size - 1) self.Menu["Curs"][i] = 0;
  124.                     if(self.Menu["Curs"][i] < 0) self.Menu["Curs"][i] = self.Menu["Name"][self.Menu["SubMenu"]].size - 1;
  125.                    
  126.                     self.Menu["GUI"][2][i] setText(self.Menu["Name"][self.Menu["SubMenu"]][self.Menu["Curs"][i]]);
  127.                 }
  128.  
  129.                 self setMarker(self.Menu["Name"][self.Menu["SubMenu"]][self.Menu["Curs"][3]]);
  130.                 wait .1;
  131.             }
  132.            
  133.             if(self meleeButtonPressed())
  134.             {
  135.                 if(self.Menu["SubMenu"] != "Main") self newMenu("Main");
  136.                 else self closeMenu();
  137.                 wait .1;
  138.             }
  139.            
  140.             if(self useButtonPressed())
  141.             {
  142.                 self thread [[self.Menu["Func"][self.Menu["SubMenu"]][self.Menu["Curs"][3]]]](self.Menu["Arg"][self.Menu["SubMenu"]][self.Menu["Curs"][3]]);
  143.                 wait .1;
  144.             }
  145.         }
  146.         wait .1;
  147.     }
  148. }
  149.  
  150. doCompass()
  151. {
  152.     self thread tempMenuClose();
  153.     self setClientDvar("cg_drawcrosshair", 0);
  154.  
  155.     self.Menu["GUI"][5] = createElement("CENTER", "CENTER", 0, 0, 10, 10, (0, .5, 1), "WHITE", 2, .3);
  156.     self.Menu["GUI"][6] = createElement("CENTER", "CENTER", 0, 0, 110, 110, (0, 0, 0), "WHITE", 1, .3);
  157.  
  158.     for(i = 0; i < 4; i++) self.Menu["GUI"][7][i] = createText("", "Default", 1.25, "CENTER", "CENTER", sin((i * 90)) * 70, cos((i * 90)) * 70, 2, 1);
  159.  
  160.     for(;;)
  161.     {
  162.         newAngles = (180 - self.angles[1]);
  163.         self.Menu["GUI"][5] moveElement(.05, (sin(newAngles) * 40), (cos(newAngles) * 40));
  164.  
  165.         if((newAngles > 45 && newAngles < 135) || (newAngles > 225 && newAngles < 315)) self.compassText = strTok("X|Y|X|Y", "|");
  166.         else self.compassText = strTok("Y|X|Y|X", "|");
  167.  
  168.         for(i = 0; i < 4; i++) self.Menu["GUI"][7][i] setText(self.compassText[i]);
  169.         self.Menu["GUI"][3] setText("Origin: " + self.origin);
  170.         self.Menu["GUI"][4] setText("Angles: " + self.angles);
  171.  
  172.         if(self meleeButtonPressed())
  173.         {
  174.             for(i = 0; i < 2; i++)
  175.             {
  176.                 self.Menu["GUI"][(i + 3)] setText("");
  177.                 self.Menu["GUI"][(i + 5)] destroy();
  178.  
  179.                 self setClientDvar("cg_drawcrosshair", 1);
  180.             }
  181.             for(i = 0; i < 4; i++) self.Menu["GUI"][7][i] destroy();
  182.  
  183.             break;
  184.         }
  185.         wait .05;
  186.     }
  187. }
  188.  
  189. deleteModel()
  190. {
  191.     if(level.Model.size >= 2)
  192.     {
  193.         self addMenu(self.cModel["Name"], self.cModel["Number"], "Model Removed");
  194.         self iprintln("Deleted [" + self.cModel["Name"] + "]");
  195.  
  196.         level.Model[self.cModel["Count"]] delete();
  197.         self.modelCount--;
  198.     }
  199. }
  200.  
  201. hideModels()
  202. {
  203.     if(self.modelsHidden == 1)
  204.     {
  205.         self iprintln("All Models [Hidden]");
  206.         for(i = 0; i < level.Model.size; i++) level.Model[i] Hide();
  207.         self.modelsHidden = 0;
  208.     }
  209.     else
  210.     {
  211.         self iprintln("All Models [Visible]");
  212.         for(i = 0; i < level.Model.size; i++) level.Model[i] Show();
  213.         self.modelsHidden = 1;
  214.     }
  215. }
  216.  
  217.  
  218. editModel(Type)
  219. {
  220.     self thread tempMenuClose();
  221.     if(Type == "Position") level.Model["Preview"] delete();
  222.    
  223.     self.aAxis = 0;
  224.     self.bAxis = strTok("X|Y|Z", "|");
  225.  
  226.     for(i = 0; i < 3;i ++)
  227.     {
  228.         self.doRotate[i] = 0;
  229.         self.doPos[i] = level.Model[self.cModel["Count"]].origin[i];
  230.     }
  231.    
  232.     self.Menu["GUI"][4] setText("Increase: Attack | Decrease: Ads | Change Axis: Frag | Close: Melee");
  233.    
  234.     for(;;)
  235.     {
  236.         if(self attackButtonPressed())
  237.         {
  238.             if(Type == "Rotation") self.doRotate[self.aAxis] += 5;
  239.             else self.doPos[self.aAxis] += 5;
  240.         }
  241.         if(self adsButtonPressed())
  242.         {
  243.             if(Type == "Rotation") self.doRotate[self.aAxis] -= 5;
  244.             else self.doPos[self.aAxis] -= 5;
  245.         }
  246.        
  247.         if(self fragButtonPressed()) self.aAxis++;
  248.         if(self.aAxis > 2) self.aAxis = 0;
  249.         if(self meleeButtonPressed()) break;
  250.        
  251.         self.Menu["GUI"][3] setText("Editing the: ^2" + self.bAxis[self.aAxis] + "^7 axis");
  252.         if(Type == "Rotation") level.Model["Preview"] rotateTo((0, 0, 0) + (self.doRotate[0], self.doRotate[1], self.doRotate[2]), .1);
  253.         else level.Model[self.cModel["Count"]] moveTo((self.doPos[0], self.doPos[1], self.doPos[2]), .1, .05, .05);
  254.        
  255.         wait .05;
  256.     }
  257. }
  258.  
  259. resetRotation()
  260. {
  261.     level.Model["Preview"] rotateTo((0, 0, 0), 1);
  262.     for(i = 0; i < 3; i++) self.doRotate[i] = 0;
  263. }
  264.  
  265. setMarker(Origin)
  266. {
  267.     self.Marker.x = Origin[0];
  268.     self.Marker.y = Origin[1];
  269.     self.Marker.z = Origin[2];
  270. }
  271.  
  272. modelPreview()
  273. {
  274.     for(;;)
  275.     {
  276.         level.Model["Preview"] moveTo(self viewPos(), .5);
  277.         wait .1;
  278.     }
  279. }
  280.  
  281. setNewModel(Model)
  282. {
  283.     if(!isDefined(level.Model["Preview"])) self createModel("Preview", "", (0, 0, 0));
  284.  
  285.     level.Model["Preview"] setModel(Model);
  286.     self.bModel = Model;
  287. }
  288.  
  289. createModel(ID, Model, Origin)
  290. {
  291.     level.Model[ID] = spawn("script_model", Origin);
  292.     level.Model[ID] setModel(Model);
  293.  
  294.     if(ID == self.modelCount)
  295.     {
  296.         level.Model[ID].angles = (self.doRotate[0], self.doRotate[1], self.doRotate[2]);
  297.  
  298.         self addMenu(Model, self.menuPlace[Model], level.Model[ID].origin, ::printAngles, level.Model[ID].angles);
  299.         self revalueCount();
  300.  
  301.         self.cModel["Count"] = ID;
  302.         self.cModel["Name"] = Model;
  303.         self.cModel["Number"] = self.menuPlace[Model];
  304.  
  305.         self.modelCount++;
  306.         self.menuPlace[Model]++;
  307.     }
  308.     else level.Model[ID].angles = (0, 0, 0);
  309. }
  310.  
  311. moveElement(Time, x, y)
  312. {
  313.     self moveOverTime(Time);
  314.  
  315.     self.x = x;
  316.     self.y = y;
  317. }
  318.  
  319. newMenu(Menu)
  320. {
  321.     self.Menu["SubMenu"] = Menu;
  322.     if(Menu != "Main") level.Model["Preview"] delete();
  323.  
  324.     for(i = 0; i < 7; i++) self.Menu["GUI"][2][i] setText(self.Menu["Name"][Menu][i]);
  325.     for(i = 0; i < self.Menu["Name"][Menu].size; i++) self.Menu["Curs"][i] = i;
  326. }
  327.  
  328. addMenu(Menu, Num, String, Function, Argument)
  329. {
  330.     self.Menu["Name"][Menu][Num] = String;
  331.     self.Menu["Num"][Menu][Num] = Num;
  332.    
  333.     if(isDefined(Function)) self.Menu["Func"][Menu][Num] = Function;
  334.     if(isDefined(Argument)) self.Menu["Arg"][Menu][Num] = Argument;
  335. }
  336.  
  337. createPointer(Origin, Icon)
  338. {
  339.     objMarker = newHudElem();
  340.     objMarker setWayPoint(false, Icon);
  341.    
  342.     return objMarker;
  343. }
  344.  
  345. createText(Text, Font, Scale, Align, Relative, x, y, Sort, Alpha)
  346. {
  347.         self endon("death");
  348.         textElem = createFontString(Font, Scale, self);
  349.        
  350.         textElem setPoint(Align, Relative, x, y);
  351.         textElem SetText(Text);
  352.        
  353.         textElem.sort = Sort;
  354.         textElem.alpha = Alpha;
  355.         textElem.foreground = true;
  356.        
  357.         return textElem;
  358. }
  359.  
  360. createElement(Align, Relative, X, Y, Width, Height, Color, Shader, Sort, Alpha)
  361. {
  362.     self endon("death");
  363.     rectangleElem = newClientHudElem( self );
  364.        
  365.     rectangleElem.elemType = "bar";
  366.     rectangleElem.width = Width;
  367.     rectangleElem.height = Height;
  368.     rectangleElem.align = Align;
  369.     rectangleElem.relative = Relative;
  370.     rectangleElem.xOffset = 0;
  371.     rectangleElem.yOffset = 0;
  372.     rectangleElem.children = [];
  373.     rectangleElem.sort = Sort;
  374.     rectangleElem.color = Color;
  375.     rectangleElem.alpha = Alpha;
  376.     rectangleElem setParent( level.uiParent );
  377.     rectangleElem setShader( Shader, Width , Height );
  378.     rectangleElem.hidden = false;
  379.     rectangleElem setPoint(Align, Relative, X, Y);
  380.        
  381.     return rectangleElem;
  382. }
  383.  
  384. //The members of the 'one-liner' crew
  385.  
  386. placeModel(){self createModel(self.modelCount, self.bModel, level.Model["Preview"].origin);}
  387.  
  388. resetPosition(){for(i = 0; i < 3; i++) self.doPos[i] = 0;}
  389.  
  390. printAngles(Angles){self iprintln(Angles);}
  391.  
  392. collapseAll(){for(i = 0; i < level.Model.size; i++) if(isDefined(level.Model[i])) level.Model[i] physicsLaunch();}
  393.  
  394. viewPos(){return bulletTrace(self getTagOrigin("j_head"), self getTagOrigin("j_head") + anglesToForward(self getPlayerAngles()) * 1000, true, self)["position"];}
  395.  
  396. revalueCount(){for(i = 0; i < self.allModels.size; i++) self addMenu(10, i, (self.menuPlace[self.allModels[i]] + 1) + " | " + self.allModels[i], ::newMenu, self.allModels[i]);}
Advertisement
Add Comment
Please, Sign In to add comment