home *** CD-ROM | disk | FTP | other *** search
/ Phenomenon / Phenomenon.iso / quake / quakec / multipl / admin2 / admin.qc next >
Encoding:
Text File  |  1996-08-14  |  12.1 KB  |  543 lines

  1. // Admin.qc - Remote Administration of a Quake Server
  2. //
  3. // Modified 8/14/96
  4. //
  5. // Doug Keegan
  6. // Rip on IRC/NetQuake
  7. // doug.keegan@tamu.edu
  8.  
  9.  
  10. // impulse constants. Change the A_CODEx constants to your 'secret' admin code
  11.  
  12. float   A_CODE1 = 82; 
  13. float   A_CODE2 = 105;
  14. float   A_CODE3 = 112;
  15. float   A_DM1   = 49;
  16. float   A_DM2   = 50;
  17. float   A_DM3   = 51;
  18. float   A_DM4   = 52;
  19. float   A_DM5   = 53;
  20. float   A_DM6   = 54;
  21. float   A_TEAMT = 84;
  22. float   A_DMT   = 68;
  23. float   A_COOPT = 67;
  24. float   A_JUMP  = 76;
  25. float   A_NOEX  = 78;
  26. float   A_GRAVU = 71;
  27. float   A_GRAVD = 72;
  28. float   A_FRICU = 73;
  29. float   A_FRICD = 74;
  30. float   A_START = 83;
  31. float   A_SKICK = 75;
  32. float   A_YES   = 121;
  33. float   A_NO    = 110;
  34. float   A_FRAGL = 69;
  35. float   A_TIMEL = 70;
  36. float   A_MENU  = 99;
  37.  
  38. /*
  39. ============
  40. ShowMenu
  41. ============
  42. */
  43. void() ShowMenu =
  44. {
  45.         local string st;
  46.         sprint(self,"\n\n");
  47.  
  48.         st = ftos(A_TEAMT);
  49.         sprint(self,"Teamplay   ");
  50.         if (A_TEAMT < 100) sprint(self," ");
  51.         sprint(self,st);
  52.  
  53.         sprint(self,"  ");
  54.  
  55.         st = ftos(A_DMT);
  56.         sprint(self,"Deathmatch ");
  57.         if (A_DMT < 100) sprint(self," ");
  58.         sprint(self,st);
  59.  
  60.         sprint(self,"\n");
  61.  
  62.         st = ftos(A_COOPT);
  63.         sprint(self,"Coop       ");
  64.         if (A_COOPT < 100) sprint(self," ");
  65.         sprint(self,st);
  66.  
  67.         sprint(self,"  ");
  68.  
  69.         st = ftos(A_NOEX);
  70.         sprint(self,"Noexit     ");
  71.         if (A_NOEX < 100) sprint(self," ");
  72.         sprint(self,st);
  73.  
  74.         sprint(self,"\n");
  75.  
  76.         st = ftos(A_JUMP);
  77.         sprint(self,"Nextlevel  ");
  78.         if (A_JUMP < 100) sprint(self," ");
  79.         sprint(self,st);
  80.  
  81.         sprint(self,"  ");
  82.  
  83.         st = ftos(A_START);
  84.         sprint(self,"Map start  ");
  85.         if (A_START < 100) sprint(self," ");
  86.         sprint(self,st);
  87.  
  88.         sprint(self,"\n");
  89.  
  90.         st = ftos(A_FRAGL);
  91.         sprint(self,"Fraglimit  ");
  92.         if (A_FRAGL < 100) sprint(self," ");
  93.         sprint(self,st);
  94.  
  95.         sprint(self,"  ");
  96.  
  97.         st = ftos(A_TIMEL);
  98.         sprint(self,"Timelimit  ");
  99.         if (A_TIMEL < 100) sprint(self," ");
  100.         sprint(self,st);  
  101.  
  102.         sprint(self,"\n");
  103.  
  104.         st = ftos(A_GRAVU);
  105.         sprint(self,"Gravity up ");
  106.         if (A_GRAVU < 100) sprint(self," ");
  107.         sprint(self,st);
  108.  
  109.         sprint(self,"  ");
  110.  
  111.         st = ftos(A_GRAVD);
  112.         sprint(self,"Gravity dn ");
  113.         if (A_GRAVD < 100) sprint(self," ");
  114.         sprint(self,st);  
  115.  
  116.         sprint(self,"\n");
  117.  
  118.         st = ftos(A_FRICU);
  119.         sprint(self,"Frictn up  ");
  120.         if (A_FRICU < 100) sprint(self," ");
  121.         sprint(self,st);
  122.  
  123.         sprint(self,"  ");
  124.  
  125.         st = ftos(A_FRICD);
  126.         sprint(self,"Frictn dn  ");
  127.         if (A_FRICD < 100) sprint(self," ");
  128.         sprint(self,st);  
  129.  
  130.         sprint(self,"\n");
  131.  
  132.  
  133.         st = ftos(A_SKICK);
  134.         sprint(self,"Start kick ");
  135.         if (A_SKICK < 100) sprint(self," ");
  136.         sprint(self,st);
  137.  
  138.         sprint(self,"  ");
  139.  
  140.         st = ftos(A_DM1);
  141.         sprint(self,"Map dm1-6  ");
  142.         if (A_DM1 < 100) sprint(self," ");
  143.         sprint(self,st);
  144.         st = ftos (A_DM6);
  145.         sprint(self," - ");
  146.         sprint(self,st);
  147.  
  148.         sprint(self,"\n");
  149.  
  150.         st = ftos(A_YES);
  151.         sprint(self,"Answer yes ");
  152.         if (A_YES < 100) sprint(self," ");
  153.         sprint(self,st);
  154.  
  155.         sprint(self,"  ");
  156.  
  157.         st = ftos(A_NO);
  158.         sprint(self,"Answer no  ");
  159.         if (A_NO < 100) sprint(self," ");
  160.         sprint(self,st);
  161.  
  162.         sprint(self,"\n\n");
  163.  
  164. };
  165.  
  166. /*
  167. ============
  168. CheckAdmin
  169. ============
  170. */
  171. void() CheckAdmin =
  172. {
  173.         if (self.impulse == A_CODE1)
  174.         {
  175.                 self.admin = 1;
  176.         }
  177.         else
  178.         if ((self.impulse == A_CODE2) && (self.admin == 1))
  179.         {
  180.                 self.admin = 2;
  181.         }
  182.         else
  183.         if ((self.impulse == A_CODE3) && (self.admin == 2))
  184.         {
  185.                 self.admin = 3;
  186.                 sprint(self,"\nAdministration privileges enabled\n");
  187.                 sprint(self,"Impulse 99 for menu of commands\n");
  188.         }
  189.         else
  190.         if (self.admin != 3) self.admin = 0;
  191. };
  192.  
  193. /*
  194. ==========
  195. TeamToggle
  196. ==========
  197. */
  198. void() TeamToggle =
  199. {
  200.         bprint("Teamplay is now ");
  201.         if (cvar("teamplay") == 1)
  202.         {
  203.                 bprint("OFF\n");
  204.                 localcmd("teamplay 0\n");
  205.         }
  206.         else
  207.         {
  208.                 bprint("ON\n");
  209.                 localcmd("teamplay 1\n"); 
  210.         }                             
  211. };
  212.  
  213. /*
  214. ==========
  215. DMToggle
  216. ==========
  217. */
  218. void() DMToggle =
  219. {
  220.         bprint("Deathmatch is now ");
  221.         if (cvar("deathmatch") == 1)
  222.         {
  223.                 bprint(" 2\n");
  224.                 localcmd("deathmatch 2\n");
  225.         }
  226.         else
  227.         {
  228.                 bprint(" 1\n");
  229.                 localcmd("deathmatch 1\n"); 
  230.         }
  231.         bprint("Restarting level with new settings...\n");
  232.         changelevel(mapname);
  233. };
  234.  
  235. /*
  236. ==========
  237. CoopToggle
  238. ==========
  239. */
  240. void() CoopToggle =
  241. {
  242.         bprint("Coop is now ");
  243.         if (cvar("coop") == 1)
  244.         {
  245.                 bprint(" 0\n");
  246.                 localcmd("coop 0\n");
  247.                 localcmd("deathmatch 1\n");
  248.         }
  249.         else
  250.         {
  251.                 bprint(" 1\n");
  252.                 localcmd("deathmatch 0\n");
  253.                 localcmd("coop 1\n");
  254.         }
  255.         bprint("Restarting level with new settings...\n");
  256.         changelevel(mapname);
  257. };
  258.  
  259. /*
  260. ==========
  261. JumptoNext
  262. ==========
  263. */
  264. void() JumptoNext =
  265. {
  266.         local entity ot;
  267.         ot = find(world, classname, "trigger_changelevel");
  268.         if (!ot || mapname == "start")     
  269.                 sprint(self,"NextLevel is not defined"); 
  270.         else
  271.         {
  272.                 bprint("Game moved to next level...\n");
  273.                 changelevel(ot.map);
  274.         }
  275. };
  276.  
  277. /*
  278. ==========
  279. ToggleNoExit
  280. ==========
  281. */
  282. void() ToggleNoExit =
  283. {                    
  284.         bprint("NoExit is now ");
  285.         if (cvar("noexit") == 1)
  286.         {
  287.                 bprint("OFF\n");
  288.                 localcmd("noexit 0\n");
  289.         }
  290.         else
  291.         {
  292.                 bprint("ON\n");
  293.                 localcmd("noexit 1\n");
  294.         }           
  295. };
  296.  
  297. /*
  298. ==========
  299. GravToggle
  300. ==========
  301. */
  302. void() GravToggle =
  303. {
  304.         local string st;
  305.         local float  pad;
  306.  
  307.         pad = cvar("sv_gravity");
  308.         if ( ((pad > 0)&&(self.impulse == A_GRAVD)) || ((pad < 3000)&&(self.impulse == A_GRAVU)) )
  309.         {
  310.                 if (self.impulse == A_GRAVD)
  311.                         pad = pad - 100;
  312.                 else
  313.                         pad = pad + 100;
  314.                 st = ftos(pad);
  315.                 bprint("Gravity is now ");
  316.                 bprint(st);
  317.                 bprint("\n");
  318.                 localcmd("sv_gravity ");
  319.                 localcmd(st);
  320.                 localcmd("\n");
  321.          }
  322.          else
  323.          {
  324.                 if (self.impulse == A_GRAVD)
  325.                         sprint(self,"Gravity is at minimum (0)\n");
  326.                 else
  327.                         sprint(self,"Gravity is at a maximum (3000)\n");
  328.          }
  329. };
  330.  
  331. /*
  332. ==========
  333. FricToggle
  334. ==========
  335. */
  336. void() FricToggle =
  337. {
  338.         local string st;
  339.         local float  pad;
  340.  
  341.         pad = cvar("sv_friction");
  342.         if ( ((pad > 0)&&(self.impulse == A_FRICD)) || ((pad < 10)&&(self.impulse == A_FRICU)) )
  343.         {
  344.                 if (self.impulse == A_FRICD)
  345.                         pad = pad - 0.5;
  346.                 else
  347.                         pad = pad + 0.5;
  348.                 st = ftos(pad);
  349.                 bprint("Friction is now ");
  350.                 bprint(st);
  351.                 bprint("\n");
  352.                 localcmd("sv_friction ");
  353.                 localcmd(st);
  354.                 localcmd("\n");
  355.          }
  356.          else
  357.          {
  358.                 if (self.impulse == A_FRICD)
  359.                         sprint(self,"Friction is at minimum (0)\n");
  360.                 else
  361.                         sprint(self,"Friction is at a maximum (10)\n");
  362.          }
  363. };
  364.  
  365. /*
  366. ==========
  367. MapStart
  368. ==========
  369. */
  370. void() MapStart =
  371. {
  372.         bprint("Game moved to start...\n");
  373.         changelevel("start");
  374. };
  375.  
  376. /*
  377. ==========
  378. MapDM
  379. ==========
  380. */
  381. void() MapDM =
  382. {
  383.         if (self.impulse == A_DM1)
  384.         {
  385.                 bprint("Game moved to dm1...\n");
  386.                 changelevel("dm1");
  387.         }
  388.         if (self.impulse == A_DM2)
  389.         {
  390.                 bprint("Game moved to dm2...\n");
  391.                 changelevel("dm2");
  392.         }
  393.         if (self.impulse == A_DM3)
  394.         {
  395.                 bprint("Game moved to dm3...\n");
  396.                 changelevel("dm3");
  397.         }
  398.         if (self.impulse == A_DM4)
  399.         {
  400.                 bprint("Game moved to dm4...\n");
  401.                 changelevel("dm4");
  402.         }
  403.         if (self.impulse == A_DM5)
  404.         {
  405.                 bprint("Game moved to dm5...\n");
  406.                 changelevel("dm5");
  407.         }
  408.         if (self.impulse == A_DM6)
  409.         {
  410.                 bprint("Game moved to dm6...\n");
  411.                 changelevel("dm6");
  412.         }
  413. };
  414.  
  415. /*
  416. ==========
  417. StartKick
  418. ==========
  419. */
  420. void() StartKick =
  421. {
  422.         self.kick = 3;
  423.         self.kicker = find(world, classname, "player");
  424.         sprint(self,"Kick ");
  425.         sprint(self,self.kicker.netname);
  426.         sprint(self,"?\n");
  427. };
  428.  
  429. /*
  430. ==========
  431. DoKick
  432. ==========
  433. */
  434. void() DoKick =
  435. {
  436.         localcmd("kick ");
  437.         localcmd(self.kicker.netname);
  438.         localcmd("\n");
  439.         self.kick = 0;
  440. };
  441.  
  442. /*
  443. ==========
  444. NextKick
  445. ==========
  446. */
  447. void() NextKick =
  448. {
  449.         self.kicker = find(self.kicker, classname, "player");
  450.         if (self.kicker != world)
  451.         {
  452.                 sprint(self,"Kick ");
  453.                 sprint(self,self.kicker.netname);
  454.                 sprint(self,"?\n");
  455.         }
  456.         else
  457.         {
  458.                 sprint(self,"End of player list\n");
  459.                 self.kick = 0;
  460.         }                 
  461. };
  462.  
  463. /*
  464. ==========
  465. ChangeTimeL
  466. ==========
  467. */
  468. void() ChangeTimeL =
  469. {
  470.         local string s;
  471.         localcmd("timelimit ");
  472.         s = ftos(self.impulse);
  473.         localcmd(s);
  474.         localcmd("\n");
  475.         bprint("Timelimit changed to ");
  476.         bprint(s);
  477.         bprint("\n");
  478.         self.impulse = 0;
  479. };
  480.  
  481. /*
  482. ==========
  483. ChangeFragL
  484. ==========
  485. */
  486. void() ChangeFragL =
  487. {
  488.         local string s;
  489.         localcmd("fraglimit ");
  490.         s = ftos(self.impulse);
  491.         localcmd(s);
  492.         localcmd("\n");
  493.         bprint("Fraglimit changed to ");
  494.         bprint(s);
  495.         bprint("\n");
  496.         self.impulse = 0;
  497. };
  498.  
  499. /*
  500. ==========
  501. AdminCommands
  502. ==========
  503. */
  504. void() AdminCommands =
  505. {
  506.         if ((self.indata > 0) && (self.impulse != 0))
  507.         {
  508.                 if (self.indata == 1) ChangeFragL();
  509.                 if (self.indata == 2) ChangeTimeL();
  510.                 self.indata = 0;
  511.         }
  512.  
  513.         if (self.impulse == A_FRAGL)
  514.         {
  515.                 self.indata = 1;
  516.                 sprint(self,"Fraglimit?\n");
  517.         }
  518.         else
  519.         if (self.impulse == A_TIMEL)
  520.         {
  521.                 self.indata = 2;
  522.                 sprint(self,"Timelimit?\n");
  523.         }
  524.         else
  525.  
  526.         if (self.impulse == A_TEAMT) TeamToggle(); else
  527.         if (self.impulse == A_DMT) DMToggle(); else
  528.         if (self.impulse == A_COOPT) CoopToggle(); else
  529.         if (self.impulse == A_JUMP) JumptoNext(); else
  530.         if (self.impulse == A_NOEX) ToggleNoExit(); else
  531.         if ((self.impulse == A_GRAVU) || (self.impulse == A_GRAVD)) GravToggle(); else
  532.         if ((self.impulse == A_FRICU) || (self.impulse == A_FRICD)) FricToggle(); else
  533.         if (self.impulse == A_START) MapStart(); else
  534.         if ((self.impulse >= A_DM1)&&(self.impulse <= A_DM6)) MapDM(); else
  535.         if (self.impulse == A_SKICK) StartKick(); else
  536.         if (self.impulse == A_YES) DoKick(); else
  537.         if (self.impulse == A_NO) NextKick(); else
  538.         if (self.impulse == A_MENU) ShowMenu();
  539.  
  540. };
  541.  
  542.  
  543.