Advertisement
ijontichy

modcvars.acs

Jun 25th, 2013
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.86 KB | None | 0 0
  1. /////////////////////////////////////////////////
  2. //-----------------------------------------------
  3. //| /\ /\ /|_ _ MODCVARS (v2)\_ /\_ _/|
  4. //|/ |_/ \/ |_/ \_/ \_/ \_/ |_| |
  5. //-----------------------------------------------
  6. //a library for writing cvars in ACS.
  7. //===============================================
  8. //
  9. // SetCvar(str name, int value)
  10. //
  11. // - name: the name of the cvar, MUST start with "x_" prefix.
  12. // - value: value for the cvar, can range -999,999 to 999,999.
  13. //
  14. // Example:
  15. //
  16. // SetCvar("x_orangesleft", 5);
  17. // GetCvar("x_orangesleft"); //Returns 5
  18. //
  19. // You may only use letters and numbers and "_" for the cvar name.
  20. //
  21. //
  22. // Credits go to VirgiL for figuring out a way to
  23. // write strings with ConsoleCommand, I wouldn't
  24. // have realized how to do this otherwise!
  25. //
  26. // -worst
  27. //////////////////////////////////////////////////
  28.  
  29. #library "modcvars"
  30. #include "zcommon.acs"
  31.  
  32. function bool SetCvar(str name,int value)
  33. {
  34.  
  35. //----------//
  36. //Cvar name //
  37. //----------//
  38. ConsoleCommand("set setcvar_str x_"); //prefix must be added here, or bad things will happen.
  39.  
  40. int len = StrLen(name);
  41. For(int i = 0; i < len; i++)
  42. {
  43. int chr = GetChar(name,i);
  44.  
  45. if(
  46. ( (i == 0) && (chr != 'x' && chr != 'X') ) ||
  47. ( (i == 1) && (chr != '_') )
  48. )
  49. {
  50. PrintBold(s:"SetCVAR: names must start with a x_ prefix!");
  51. return FALSE; //failed
  52. }
  53.  
  54. if(i < 2) continue; //dont add prefix twice.
  55.  
  56. switch(chr)
  57. {
  58. case '0': ConsoleCommand("eval + $setcvar_str 0 setcvar_str"); break;
  59. case '1': ConsoleCommand("eval + $setcvar_str 1 setcvar_str"); break;
  60. case '2': ConsoleCommand("eval + $setcvar_str 2 setcvar_str"); break;
  61. case '3': ConsoleCommand("eval + $setcvar_str 3 setcvar_str"); break;
  62. case '4': ConsoleCommand("eval + $setcvar_str 4 setcvar_str"); break;
  63. case '5': ConsoleCommand("eval + $setcvar_str 5 setcvar_str"); break;
  64. case '6': ConsoleCommand("eval + $setcvar_str 6 setcvar_str"); break;
  65. case '7': ConsoleCommand("eval + $setcvar_str 7 setcvar_str"); break;
  66. case '8': ConsoleCommand("eval + $setcvar_str 8 setcvar_str"); break;
  67. case '9': ConsoleCommand("eval + $setcvar_str 9 setcvar_str"); break;
  68. case 'A': ConsoleCommand("eval + $setcvar_str A setcvar_str"); break;
  69. case 'B': ConsoleCommand("eval + $setcvar_str B setcvar_str"); break;
  70. case 'C': ConsoleCommand("eval + $setcvar_str C setcvar_str"); break;
  71. case 'D': ConsoleCommand("eval + $setcvar_str D setcvar_str"); break;
  72. case 'E': ConsoleCommand("eval + $setcvar_str E setcvar_str"); break;
  73. case 'F': ConsoleCommand("eval + $setcvar_str F setcvar_str"); break;
  74. case 'G': ConsoleCommand("eval + $setcvar_str G setcvar_str"); break;
  75. case 'H': ConsoleCommand("eval + $setcvar_str H setcvar_str"); break;
  76. case 'I': ConsoleCommand("eval + $setcvar_str I setcvar_str"); break;
  77. case 'J': ConsoleCommand("eval + $setcvar_str J setcvar_str"); break;
  78. case 'K': ConsoleCommand("eval + $setcvar_str K setcvar_str"); break;
  79. case 'L': ConsoleCommand("eval + $setcvar_str L setcvar_str"); break;
  80. case 'M': ConsoleCommand("eval + $setcvar_str M setcvar_str"); break;
  81. case 'N': ConsoleCommand("eval + $setcvar_str N setcvar_str"); break;
  82. case 'O': ConsoleCommand("eval + $setcvar_str O setcvar_str"); break;
  83. case 'P': ConsoleCommand("eval + $setcvar_str P setcvar_str"); break;
  84. case 'Q': ConsoleCommand("eval + $setcvar_str Q setcvar_str"); break;
  85. case 'R': ConsoleCommand("eval + $setcvar_str R setcvar_str"); break;
  86. case 'S': ConsoleCommand("eval + $setcvar_str S setcvar_str"); break;
  87. case 'T': ConsoleCommand("eval + $setcvar_str T setcvar_str"); break;
  88. case 'U': ConsoleCommand("eval + $setcvar_str U setcvar_str"); break;
  89. case 'V': ConsoleCommand("eval + $setcvar_str V setcvar_str"); break;
  90. case 'W': ConsoleCommand("eval + $setcvar_str W setcvar_str"); break;
  91. case 'X': ConsoleCommand("eval + $setcvar_str X setcvar_str"); break;
  92. case 'Y': ConsoleCommand("eval + $setcvar_str Y setcvar_str"); break;
  93. case 'Z': ConsoleCommand("eval + $setcvar_str Z setcvar_str"); break;
  94. case '_': ConsoleCommand("eval + $setcvar_str _ setcvar_str"); break;
  95. case 'a': ConsoleCommand("eval + $setcvar_str a setcvar_str"); break;
  96. case 'b': ConsoleCommand("eval + $setcvar_str b setcvar_str"); break;
  97. case 'c': ConsoleCommand("eval + $setcvar_str c setcvar_str"); break;
  98. case 'd': ConsoleCommand("eval + $setcvar_str d setcvar_str"); break;
  99. case 'e': ConsoleCommand("eval + $setcvar_str e setcvar_str"); break;
  100. case 'f': ConsoleCommand("eval + $setcvar_str f setcvar_str"); break;
  101. case 'g': ConsoleCommand("eval + $setcvar_str g setcvar_str"); break;
  102. case 'h': ConsoleCommand("eval + $setcvar_str h setcvar_str"); break;
  103. case 'i': ConsoleCommand("eval + $setcvar_str i setcvar_str"); break;
  104. case 'j': ConsoleCommand("eval + $setcvar_str j setcvar_str"); break;
  105. case 'k': ConsoleCommand("eval + $setcvar_str k setcvar_str"); break;
  106. case 'l': ConsoleCommand("eval + $setcvar_str l setcvar_str"); break;
  107. case 'm': ConsoleCommand("eval + $setcvar_str m setcvar_str"); break;
  108. case 'n': ConsoleCommand("eval + $setcvar_str n setcvar_str"); break;
  109. case 'o': ConsoleCommand("eval + $setcvar_str o setcvar_str"); break;
  110. case 'p': ConsoleCommand("eval + $setcvar_str p setcvar_str"); break;
  111. case 'q': ConsoleCommand("eval + $setcvar_str q setcvar_str"); break;
  112. case 'r': ConsoleCommand("eval + $setcvar_str r setcvar_str"); break;
  113. case 's': ConsoleCommand("eval + $setcvar_str s setcvar_str"); break;
  114. case 't': ConsoleCommand("eval + $setcvar_str t setcvar_str"); break;
  115. case 'u': ConsoleCommand("eval + $setcvar_str u setcvar_str"); break;
  116. case 'v': ConsoleCommand("eval + $setcvar_str v setcvar_str"); break;
  117. case 'w': ConsoleCommand("eval + $setcvar_str w setcvar_str"); break;
  118. case 'x': ConsoleCommand("eval + $setcvar_str x setcvar_str"); break;
  119. case 'y': ConsoleCommand("eval + $setcvar_str y setcvar_str"); break;
  120. case 'z': ConsoleCommand("eval + $setcvar_str z setcvar_str"); break;
  121. }
  122. }
  123.  
  124. //-----------//
  125. //Cvar value //
  126. //-----------//
  127. int val = value;
  128.  
  129. //Eval only returns GetCvar -usable values if the CVAR is in the range -999,999 to 999,999.
  130. if (val > 999999) val = 999999;
  131. if (val < -999999) val = -999999;
  132.  
  133. ConsoleCommand("set setcvar_int 0");
  134.  
  135. if(val >= 524288) { ConsoleCommand("eval + $setcvar_int 524288 setcvar_int"); val -= 524288; } //2^19
  136. if(val >= 262144) { ConsoleCommand("eval + $setcvar_int 262144 setcvar_int"); val -= 262144; } //2^18
  137. if(val >= 131072) { ConsoleCommand("eval + $setcvar_int 131072 setcvar_int"); val -= 131072; } //2^17
  138. if(val >= 65536) { ConsoleCommand("eval + $setcvar_int 65536 setcvar_int"); val -= 65536; } //2^16
  139. if(val >= 32768) { ConsoleCommand("eval + $setcvar_int 32768 setcvar_int"); val -= 32768; } //2^15
  140. if(val >= 16384) { ConsoleCommand("eval + $setcvar_int 16384 setcvar_int"); val -= 16384; } //2^14
  141. if(val >= 8192) { ConsoleCommand("eval + $setcvar_int 8192 setcvar_int"); val -= 8192; } //2^13
  142. if(val >= 4096) { ConsoleCommand("eval + $setcvar_int 4096 setcvar_int"); val -= 4096; } //2^12
  143. if(val >= 2048) { ConsoleCommand("eval + $setcvar_int 2048 setcvar_int"); val -= 2048; } //2^11
  144. if(val >= 1024) { ConsoleCommand("eval + $setcvar_int 1024 setcvar_int"); val -= 1024; } //2^10
  145. if(val >= 512) { ConsoleCommand("eval + $setcvar_int 512 setcvar_int"); val -= 512; } //2^9
  146. if(val >= 256) { ConsoleCommand("eval + $setcvar_int 256 setcvar_int"); val -= 256; } //2^8
  147. if(val >= 128) { ConsoleCommand("eval + $setcvar_int 128 setcvar_int"); val -= 128; } //2^7
  148. if(val >= 64) { ConsoleCommand("eval + $setcvar_int 64 setcvar_int"); val -= 64; } //2^6
  149. if(val >= 32) { ConsoleCommand("eval + $setcvar_int 32 setcvar_int"); val -= 32; } //2^5
  150. if(val >= 16) { ConsoleCommand("eval + $setcvar_int 16 setcvar_int"); val -= 16; } //2^4
  151. if(val >= 8) { ConsoleCommand("eval + $setcvar_int 8 setcvar_int"); val -= 8; } //2^3
  152. if(val >= 4) { ConsoleCommand("eval + $setcvar_int 4 setcvar_int"); val -= 4; } //2^2
  153. if(val >= 2) { ConsoleCommand("eval + $setcvar_int 2 setcvar_int"); val -= 2; } //2^1
  154. if(val >= 1) { ConsoleCommand("eval + $setcvar_int 1 setcvar_int"); val -= 1; } //2^0
  155.  
  156. if(val <= -524288) { ConsoleCommand("eval - $setcvar_int 524288 setcvar_int"); val += 524288; } //2^19
  157. if(val <= -262144) { ConsoleCommand("eval - $setcvar_int 262144 setcvar_int"); val += 262144; } //2^18
  158. if(val <= -131072) { ConsoleCommand("eval - $setcvar_int 131072 setcvar_int"); val += 131072; } //2^17
  159. if(val <= -65536) { ConsoleCommand("eval - $setcvar_int 65536 setcvar_int"); val += 65536; } //2^16
  160. if(val <= -32768) { ConsoleCommand("eval - $setcvar_int 32768 setcvar_int"); val += 32768; } //2^15
  161. if(val <= -16384) { ConsoleCommand("eval - $setcvar_int 16384 setcvar_int"); val += 16384; } //2^14
  162. if(val <= -8192) { ConsoleCommand("eval - $setcvar_int 8192 setcvar_int"); val += 8192; } //2^13
  163. if(val <= -4096) { ConsoleCommand("eval - $setcvar_int 4096 setcvar_int"); val += 4096; } //2^12
  164. if(val <= -2048) { ConsoleCommand("eval - $setcvar_int 2048 setcvar_int"); val += 2048; } //2^11
  165. if(val <= -1024) { ConsoleCommand("eval - $setcvar_int 1024 setcvar_int"); val += 1024; } //2^10
  166. if(val <= -512) { ConsoleCommand("eval - $setcvar_int 512 setcvar_int"); val += 512; } //2^9
  167. if(val <= -256) { ConsoleCommand("eval - $setcvar_int 256 setcvar_int"); val += 256; } //2^8
  168. if(val <= -128) { ConsoleCommand("eval - $setcvar_int 128 setcvar_int"); val += 128; } //2^7
  169. if(val <= -64) { ConsoleCommand("eval - $setcvar_int 64 setcvar_int"); val += 64; } //2^6
  170. if(val <= -32) { ConsoleCommand("eval - $setcvar_int 32 setcvar_int"); val += 32; } //2^5
  171. if(val <= -16) { ConsoleCommand("eval - $setcvar_int 16 setcvar_int"); val += 16; } //2^4
  172. if(val <= -8) { ConsoleCommand("eval - $setcvar_int 8 setcvar_int"); val += 8; } //2^3
  173. if(val <= -4) { ConsoleCommand("eval - $setcvar_int 4 setcvar_int"); val += 4; } //2^2
  174. if(val <= -2) { ConsoleCommand("eval - $setcvar_int 2 setcvar_int"); val += 2; } //2^1
  175. if(val <= -1) { ConsoleCommand("eval - $setcvar_int 1 setcvar_int"); val += 1; } //2^0
  176.  
  177. ConsoleCommand("set $setcvar_str $setcvar_int");
  178. ConsoleCommand("archivecvar $setcvar_str"); //Make it stay in the ini after closing the game.
  179.  
  180. //cleanup
  181. ConsoleCommand("unset setcvar_str");
  182. ConsoleCommand("unset setcvar_int");
  183.  
  184. return TRUE; //success
  185. }
  186.  
  187.  
  188. /*
  189. //Test script
  190. script 1 (int value)
  191. {
  192. SetCvar("x_testcvar_1", value);
  193. print(s:"value: ",d:GetCvar("x_testcvar_1"));
  194. }
  195. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement