Dr-Strange

Roundsleft_nospeak

Apr 11th, 2020
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.54 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4.  
  5. // Globals below
  6. new g_teamScore[2]
  7. // Globals above
  8.  
  9. public sayRoundsLeft(id) {
  10. new maxRounds = get_cvar_num("mp_maxrounds")
  11. if (id) {
  12. if (maxRounds == 0) {
  13. client_print(0, print_chat, "No rounds limit.")
  14. }
  15. else {
  16. new roundsleft = maxRounds - (g_teamScore[0] + g_teamScore[1])
  17. client_print(0, print_chat, "Remaining rounds: %d", roundsleft)
  18. }
  19. }
  20.  
  21. return PLUGIN_CONTINUE
  22. }
  23.  
  24. public conRoundsLeft(id) {
  25. new maxRounds = get_cvar_num("mp_maxrounds")
  26. if (id) console_print(id,"Remaining rounds: %d",maxRounds - (g_teamScore[0] + g_teamScore[1]))
  27. else server_print("Remaining rounds: %d",maxRounds - (g_teamScore[0] + g_teamScore[1]))
  28.  
  29. return PLUGIN_HANDLED
  30. }
  31.  
  32. public teamScore(id) {
  33. new team[2]
  34. read_data(1,team,1)
  35. g_teamScore[(team[0]=='C')? 0 : 1] = read_data(2)
  36.  
  37. return PLUGIN_CONTINUE
  38. }
  39.  
  40. /*
  41. public newround_event(id) {
  42. if (is_user_bot(id))
  43. return PLUGIN_CONTINUE
  44.  
  45. new maxRounds = get_cvar_num("mp_maxrounds")
  46. if (maxRounds) {
  47. set_hudmessage(0, 100, 0, -1.0, 0.65, 2, 0.02, 10.0, 0.01, 0.1, 2)
  48. show_hudmessage(id, "%d rounds remaining", maxRounds - (g_teamScore[0] + g_teamScore[1]))
  49. client_print(id, print_chat, "%d rounds remaining", maxRounds - (g_teamScore[0] + g_teamScore[1]))
  50. }
  51.  
  52. return PLUGIN_CONTINUE
  53. }
  54. */
  55.  
  56. public endround_event() {
  57. server_print("endround_event, %d entities in game", entity_count())
  58. set_task(2.0, "endofroundspk")
  59.  
  60. return PLUGIN_CONTINUE
  61. }
  62.  
  63. stock getnumbers(number, wordnumbers[], length) {
  64. if (number < 0) {
  65. format(wordnumbers, length, "error")
  66. return
  67. }
  68.  
  69. new numberstr[20]
  70. num_to_str(number, numberstr, 19)
  71. new stlen = strlen(numberstr), bool:getzero = false, bool:jumpnext = false
  72. if (stlen == 1)
  73. getzero = true
  74.  
  75. do {
  76. if (jumpnext)
  77. jumpnext = false
  78. else if (numberstr[0] != '0') {
  79. switch (stlen) {
  80. case 9: {
  81. if (getsingledigit(numberstr[0], wordnumbers, length))
  82. format(wordnumbers, length, "%s hundred%s", wordnumbers, numberstr[1] == '0' && numberstr[2] == '0' ? " million" : "")
  83. }
  84. case 8: {
  85. jumpnext = gettens(wordnumbers, length, numberstr)
  86. if (jumpnext)
  87. format(wordnumbers, length, "%s million", wordnumbers)
  88. }
  89. case 7: {
  90. getsingledigit(numberstr[0], wordnumbers, length)
  91. format(wordnumbers, length, "%s million", wordnumbers)
  92. }
  93. case 6: {
  94. if (getsingledigit(numberstr[0], wordnumbers, length))
  95. format(wordnumbers, length, "%s hundred%s", wordnumbers, numberstr[1] == '0' && numberstr[2] == '0' ? " thousand" : "")
  96. }
  97. case 5: {
  98. jumpnext = gettens(wordnumbers, length, numberstr)
  99. if (numberstr[0] == '1' || numberstr[1] == '0')
  100. format(wordnumbers, length, "%s thousand", wordnumbers)
  101. }
  102. case 4: {
  103. getsingledigit(numberstr[0], wordnumbers, length)
  104. format(wordnumbers, length, "%s thousand", wordnumbers)
  105. }
  106. case 3: {
  107. getsingledigit(numberstr[0], wordnumbers, length)
  108. format(wordnumbers, length, "%s hundred", wordnumbers)
  109. }
  110. case 2: jumpnext = gettens(wordnumbers, length, numberstr)
  111. case 1: {
  112. getsingledigit(numberstr[0], wordnumbers, length, getzero)
  113. break // could've trimmed, but of no use here
  114. }
  115. default: {
  116. format(wordnumbers, length, "%s TOO LONG", wordnumbers)
  117. break
  118. }
  119. }
  120. }
  121.  
  122. jghg_trim(numberstr, length, 1)
  123. stlen = strlen(numberstr)
  124. }
  125. while (stlen > 0)
  126.  
  127. // Trim a char from left if first char is a space (very likely)
  128. if (wordnumbers[0] == ' ')
  129. jghg_trim(wordnumbers, length, 1)
  130. }
  131.  
  132. // Returns true if next char should be jumped
  133. stock bool:gettens(wordnumbers[], length, numberstr[]) {
  134. new digitstr[11], bool:dont = false, bool:jumpnext = false
  135. switch (numberstr[0]) {
  136. case '1': {
  137. jumpnext = true
  138. switch (numberstr[1]) {
  139. case '0': digitstr = "ten"
  140. case '1': digitstr = "eleven"
  141. case '2': digitstr = "twelve"
  142. case '3': digitstr = "thirteen"
  143. case '4': digitstr = "fourteen"
  144. case '5': digitstr = "fifteen"
  145. case '6': digitstr = "sixteen"
  146. case '7': digitstr = "seventeen"
  147. case '8': digitstr = "eighteen"
  148. case '9': digitstr = "nineteen"
  149. default: digitstr = "TEENSERROR"
  150. }
  151. }
  152. case '2': digitstr = "twenty"
  153. case '3': digitstr = "thirty"
  154. case '4': digitstr = "fourty"
  155. case '5': digitstr = "fifty"
  156. case '6': digitstr = "sixty"
  157. case '7': digitstr = "seventy"
  158. case '8': digitstr = "eighty"
  159. case '9': digitstr = "ninety"
  160. case '0': dont = true // do nothing
  161. default : digitstr = "TENSERROR"
  162. }
  163. if (!dont)
  164. format(wordnumbers, length, "%s %s", wordnumbers, digitstr)
  165.  
  166. return jumpnext
  167. }
  168.  
  169. // Returns true when sets, else false
  170. stock getsingledigit(digit[], numbers[], length, bool:getzero = false) {
  171. new digitstr[11]
  172. switch (digit[0]) {
  173. case '1': digitstr = "one"
  174. case '2': digitstr = "two"
  175. case '3': digitstr = "three"
  176. case '4': digitstr = "four"
  177. case '5': digitstr = "five"
  178. case '6': digitstr = "six"
  179. case '7': digitstr = "seven"
  180. case '8': digitstr = "eight"
  181. case '9': digitstr = "nine"
  182. case '0': {
  183. if (getzero)
  184. digitstr = "zero"
  185. else
  186. return false
  187. }
  188. default : digitstr = "digiterror"
  189. }
  190. format(numbers, length, "%s %s", numbers, digitstr)
  191.  
  192. return true
  193. }
  194.  
  195. stock jghg_trim(stringtotrim[], len, charstotrim, bool:fromleft = true) {
  196. if (charstotrim <= 0)
  197. return
  198.  
  199. if (fromleft) {
  200. new maxlen = strlen(stringtotrim)
  201. if (charstotrim > maxlen)
  202. charstotrim = maxlen
  203.  
  204. format(stringtotrim, len, "%s", stringtotrim[charstotrim])
  205. }
  206. else {
  207. new maxlen = strlen(stringtotrim) - charstotrim
  208. if (maxlen < 0)
  209. maxlen = 0
  210.  
  211. format(stringtotrim, maxlen, "%s", stringtotrim)
  212. }
  213. }
  214.  
  215. public addrounds(id, level, cid) {
  216. if (!cmd_access(id, level, cid, 2))
  217. return PLUGIN_HANDLED
  218.  
  219. new arg[32]
  220. read_argv(1, arg, 31)
  221. new arglength = strlen(arg)
  222. for (new i = 0; i < arglength; i++) {
  223. if (!isdigit(arg[i])) {
  224. if (i != 0 || arg[0] != '-') {
  225. console_print(id, "Error: Enter only numbers, ie ^"amx_addrounds 10^"")
  226. return PLUGIN_HANDLED
  227. }
  228. }
  229. }
  230.  
  231. new roundstoadd = str_to_num(arg)
  232.  
  233. if (roundstoadd == 0) {
  234. console_print(id, "Error: Well duuuh. Enter a positive or negative value, ie ^"amx_addrounds 10^"")
  235. return PLUGIN_HANDLED
  236. }
  237.  
  238. new originalmaxrounds = get_cvar_num("mp_maxrounds")
  239.  
  240. new newmaxrounds = originalmaxrounds + roundstoadd
  241.  
  242. if (newmaxrounds < 1)
  243. newmaxrounds = 1
  244.  
  245. new roundschanged = newmaxrounds - originalmaxrounds
  246.  
  247. new Float:displayrounds = float(roundschanged)
  248. displayrounds *= displayrounds
  249. displayrounds = floatsqroot(displayrounds)
  250.  
  251. console_print(id, "%sing %d rounds...", roundschanged > 0 ? "Add" : "Remov", floatround(displayrounds))
  252.  
  253. set_cvar_num("mp_maxrounds", newmaxrounds)
  254.  
  255. conRoundsLeft(id)
  256.  
  257. return PLUGIN_HANDLED
  258. }
  259.  
  260. public plugin_init() {
  261.  
  262. register_clcmd("say timeleft", "sayRoundsLeft")
  263. register_clcmd("say roundsleft", "sayRoundsLeft", 0, "- displays remaining rounds")
  264. register_concmd("amx_roundsleft", "conRoundsLeft", 0, "- displays remaining rounds")
  265. register_concmd("amx_addrounds", "addrounds", ADMIN_CFG, "<rounds> - add/remove remaining rounds")
  266. register_event("TeamScore", "teamScore", "ab")
  267. //register_event("ResetHUD", "newround_event", "b")
  268. /*
  269. register_event("SendAudio","endround_event","a","2&%!MRAD_terwin","2&%!MRAD_ctwin","2&%!MRAD_rounddraw")
  270. register_event("TextMsg","endround_event","a","2&#Game_C","2&#Game_w")
  271. register_event("TextMsg","endround_event","a","2&#Game_will_restart_in")
  272. */
  273. /*
  274. register_logevent("death_event",5,"1=killed","3=with")
  275. // L 03/08/2004 - 13:32:34: "xian<2><BOT><CT>" killed "SuperKaka<1><BOT><TERRORIST>" with "usp"
  276. // L 03/08/2004 - 13:32:34: World triggered "Round_End"
  277. */
  278. // L 03/08/2004 - 13:32:34: World triggered "Round_End"
  279. /*register_logevent("endround_event", 3, "2=Round_End")
  280. register_logevent("endround_event", 3, "1=Round_End")
  281. register_logevent("endround_event", 3, "0=Round_End")
  282. register_logevent("endround_event", 3, "3=Round_End")*/
  283. register_logevent("endround_event", 2, "0=World triggered", "1=Round_End")
  284.  
  285. }
Add Comment
Please, Sign In to add comment