hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.16. 19:42



Jelenlévő felhasználók

Jelenleg 438 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 437 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Percek
HozzászólásElküldve: 2012.10.18. 23:04 
Offline
Őskövület
Avatar

Csatlakozott: 2011.12.28. 00:35
Hozzászólások: 2736
Megköszönt másnak: 56 alkalommal
Megköszönték neki: 275 alkalommal
Hali.

Valaki ezt meg tudná úgy csinálni, hogy nem körönként mutatja hanem 5 percenként egészen 20 percig.

SMA Forráskód: [ Mindet kijelol ]
  1. new const PLUGINNAME[] = "Roundsleft"
  2. new const VERSION[] = "2.4"
  3. new const AUTHOR[] = "MisterJ"
  4. /*
  5.  
  6. THANKS
  7. ========
  8. Johnny got his gun : He created the concept and made the first version.
  9.  
  10.  
  11. ROUNDSLEFT
  12. ==========
  13. Allows the users to "say roundsleft" and remaining rounds will be displayed.
  14. This is useful if you are using default hlds cvar mp_maxrounds set to some value.
  15. There is also a command "amx_roundsleft" to view remaining rounds in console.
  16.  
  17.  
  18. HOW TO INSTALL
  19. ==============
  20. 1. Name this file roundsleft.sma.
  21. 2. Compile it into roundsleft.amxx.
  22. 3. Put roundsleft.amxx into amxmodx/plugins directory.
  23. 4. Open up amxmodx/configs/plugins.ini and add a line to the end saying: roundsleft.amx
  24. 5. Done. Type reload in your server.
  25.  
  26.  
  27. HOW TO USE
  28. ==========
  29. say roundsleft, say rounds, say roundleft, say round
  30. - all these will respond with remaining rounds if mp_maxrounds is set to anything higher than 0.
  31.  
  32. amx_roundsleft
  33. - displays remaining rounds in console. Works also from server console.
  34.  
  35.  
  36. VERSION
  37. ========
  38. 2.4
  39.  
  40. */
  41.  
  42. #include <amxmodx>
  43. #include <amxmisc>
  44. #include <engine>
  45.  
  46. // Globals below
  47. new g_teamScore[2]
  48. // Globals above
  49.  
  50. public sayRoundsLeft(id) {
  51. new maxRounds = get_cvar_num("mp_maxrounds")
  52. if (id) {
  53. if (maxRounds == 0) {
  54. client_print(0, print_chat, "Nincs hater ido")
  55. }
  56. else {
  57. new roundsleft = maxRounds - (g_teamScore[0] + g_teamScore[1])
  58. client_print(0, print_chat, "Marado korok: %d", roundsleft)
  59. speakroundsleft(id, roundsleft)
  60. }
  61. }
  62.  
  63. return PLUGIN_CONTINUE
  64. }
  65.  
  66. speakroundsleft(id, roundsleft) {
  67. new numbers[256]
  68. getnumbers(roundsleft, numbers, 255)
  69. client_cmd(id, "spk ^"%s Meg marado korok^"", numbers)
  70. //client_print(0, print_chat, "%s Kor. %s Maradt", numbers, roundsleft > 1 ? "s" : "")
  71. }
  72.  
  73. public conRoundsLeft(id) {
  74. new maxRounds = get_cvar_num("mp_maxrounds")
  75. if (id) console_print(id,"Meg marado korok: %d",maxRounds - (g_teamScore[0] + g_teamScore[1]))
  76. else server_print("Meg marado korok: %d",maxRounds - (g_teamScore[0] + g_teamScore[1]))
  77.  
  78. return PLUGIN_HANDLED
  79. }
  80.  
  81. public teamScore(id) {
  82. new team[2]
  83. read_data(1,team,1)
  84. g_teamScore[(team[0]=='C')? 0 : 1] = read_data(2)
  85.  
  86. return PLUGIN_CONTINUE
  87. }
  88.  
  89. /*
  90. public newround_event(id) {
  91. if (is_user_bot(id))
  92. return PLUGIN_CONTINUE
  93.  
  94. new maxRounds = get_cvar_num("mp_maxrounds")
  95. if (maxRounds) {
  96.  
  97.   new r = random(256)
  98.   new g = random(256)
  99.   new b = random(256)
  100.  
  101.   new eff = random(5)
  102.  
  103.   set_hudmessage(r, g, b, 0.5, 0.6, eff);
  104. show_hudmessage(id, "%d Kor van meg", maxRounds - (g_teamScore[0] + g_teamScore[1]))
  105. client_print(id, print_chat, "%d rounds remaining", maxRounds - (g_teamScore[0] + g_teamScore[1]))
  106. }
  107.  
  108. return PLUGIN_CONTINUE
  109. }
  110. */
  111.  
  112. public endround_event() {
  113. server_print("endround_event, %d entities in game", entity_count())
  114. set_task(2.0, "endofroundspk")
  115.  
  116. return PLUGIN_CONTINUE
  117. }
  118.  
  119. public endofroundspk() {
  120. //server_print("endofroundspk")
  121. new maxRounds = get_cvar_num("mp_maxrounds")
  122. new roundsleft = maxRounds - (g_teamScore[0] + g_teamScore[1])
  123. new nextmap[64]
  124. get_cvar_string("amx_nextmap", nextmap, 63)
  125. if (maxRounds) {
  126.  
  127. new r = random(256)
  128. new g = random(256)
  129. new b = random(256)
  130.  
  131. new eff = random(5)
  132.  
  133. set_hudmessage(r, g, b, 0.5, 0.6, eff);
  134.  
  135. if (roundsleft == 100)
  136. show_hudmessage(0, "100 Kor van meg", roundsleft)
  137.  
  138. if (roundsleft == 80)
  139. show_hudmessage(0, "80 Kor van meg", roundsleft)
  140.  
  141. if (roundsleft == 60)
  142. show_hudmessage(0, "60 Kor van meg", roundsleft)
  143.  
  144. if (roundsleft == 50)
  145. show_hudmessage(0, "50 Kor van meg", roundsleft)
  146.  
  147. if (roundsleft == 40)
  148. show_hudmessage(0, "40 Kor van meg", roundsleft)
  149.  
  150. if (roundsleft == 30)
  151. show_hudmessage(0, "30 Kor van meg", roundsleft)
  152.  
  153. if (roundsleft == 20)
  154. show_hudmessage(0, "20 Kor van meg", roundsleft)
  155.  
  156. if (roundsleft == 10)
  157. show_hudmessage(0, "10 Kor van meg", roundsleft)
  158.  
  159. if (roundsleft == 5)
  160. show_hudmessage(0, "5 Kor van meg", roundsleft)
  161.  
  162. if (roundsleft == 1)
  163. show_hudmessage(0, "Az utolso kor", roundsleft)
  164.  
  165. if (roundsleft == 0)
  166. show_hudmessage(0, "Kovetkezo palya %s...", nextmap)
  167.  
  168. }
  169.  
  170.  
  171. if (roundsleft > 0) {
  172.  
  173. if (roundsleft == 90)
  174. client_cmd(0, "spk ^"ninety round remaining^"")
  175.  
  176. if (roundsleft == 80)
  177. client_cmd(0, "spk ^"eighty round remaining^"")
  178.  
  179. if (roundsleft == 70)
  180. client_cmd(0, "spk ^"seventy round remaining^"")
  181.  
  182. if (roundsleft == 60)
  183. client_cmd(0, "spk ^"sixty round remaining^"")
  184.  
  185. if (roundsleft == 50)
  186. client_cmd(0, "spk ^"fifty round remaining^"")
  187.  
  188. if (roundsleft == 40)
  189. client_cmd(0, "spk ^"fourty round remaining^"")
  190.  
  191. if (roundsleft == 30)
  192. client_cmd(0, "spk ^"thirty round remaining^"")
  193.  
  194. if (roundsleft == 20)
  195. client_cmd(0, "spk ^"twenty round remaining^"")
  196.  
  197. if (roundsleft == 10)
  198. client_cmd(0, "spk ^"ten round remaining^"")
  199.  
  200. if (roundsleft == 5)
  201. client_cmd(0, "spk ^"five round remaining^"")
  202.  
  203. if (roundsleft == 1)
  204. client_cmd(0, "spk ^"the last round^"")
  205.  
  206. }
  207.  
  208.  
  209. }
  210.  
  211.  
  212.  
  213. stock getnumbers(number, wordnumbers[], length) {
  214. if (number < 0) {
  215. format(wordnumbers, length, "error")
  216. return
  217. }
  218.  
  219. new numberstr[20]
  220. num_to_str(number, numberstr, 19)
  221. new stlen = strlen(numberstr), bool:getzero = false, bool:jumpnext = false
  222. if (stlen == 1)
  223. getzero = true
  224.  
  225. do {
  226. if (jumpnext)
  227. jumpnext = false
  228. else if (numberstr[0] != '0') {
  229. switch (stlen) {
  230. case 9: {
  231. if (getsingledigit(numberstr[0], wordnumbers, length))
  232. format(wordnumbers, length, "%s hundred%s", wordnumbers, numberstr[1] == '0' && numberstr[2] == '0' ? " million" : "")
  233. }
  234. case 8: {
  235. jumpnext = gettens(wordnumbers, length, numberstr)
  236. if (jumpnext)
  237. format(wordnumbers, length, "%s million", wordnumbers)
  238. }
  239. case 7: {
  240. getsingledigit(numberstr[0], wordnumbers, length)
  241. format(wordnumbers, length, "%s million", wordnumbers)
  242. }
  243. case 6: {
  244. if (getsingledigit(numberstr[0], wordnumbers, length))
  245. format(wordnumbers, length, "%s hundred%s", wordnumbers, numberstr[1] == '0' && numberstr[2] == '0' ? " thousand" : "")
  246. }
  247. case 5: {
  248. jumpnext = gettens(wordnumbers, length, numberstr)
  249. if (numberstr[0] == '1' || numberstr[1] == '0')
  250. format(wordnumbers, length, "%s thousand", wordnumbers)
  251. }
  252. case 4: {
  253. getsingledigit(numberstr[0], wordnumbers, length)
  254. format(wordnumbers, length, "%s thousand", wordnumbers)
  255. }
  256. case 3: {
  257. getsingledigit(numberstr[0], wordnumbers, length)
  258. format(wordnumbers, length, "%s hundred", wordnumbers)
  259. }
  260. case 2: jumpnext = gettens(wordnumbers, length, numberstr)
  261. case 1: {
  262. getsingledigit(numberstr[0], wordnumbers, length, getzero)
  263. break // could've trimmed, but of no use here
  264. }
  265. default: {
  266. format(wordnumbers, length, "%s TOO LONG", wordnumbers)
  267. break
  268. }
  269. }
  270. }
  271.  
  272. jghg_trim(numberstr, length, 1)
  273. stlen = strlen(numberstr)
  274. }
  275. while (stlen > 0)
  276.  
  277. // Trim a char from left if first char is a space (very likely)
  278. if (wordnumbers[0] == ' ')
  279. jghg_trim(wordnumbers, length, 1)
  280. }
  281.  
  282. // Returns true if next char should be jumped
  283. stock bool:gettens(wordnumbers[], length, numberstr[]) {
  284. new digitstr[11], bool:dont = false, bool:jumpnext = false
  285. switch (numberstr[0]) {
  286. case '1': {
  287. jumpnext = true
  288. switch (numberstr[1]) {
  289. case '0': digitstr = "ten"
  290. case '1': digitstr = "eleven"
  291. case '2': digitstr = "twelve"
  292. case '3': digitstr = "thirteen"
  293. case '4': digitstr = "fourteen"
  294. case '5': digitstr = "fifteen"
  295. case '6': digitstr = "sixteen"
  296. case '7': digitstr = "seventeen"
  297. case '8': digitstr = "eighteen"
  298. case '9': digitstr = "nineteen"
  299. default: digitstr = "TEENSERROR"
  300. }
  301. }
  302. case '2': digitstr = "twenty"
  303. case '3': digitstr = "thirty"
  304. case '4': digitstr = "fourty"
  305. case '5': digitstr = "fifty"
  306. case '6': digitstr = "sixty"
  307. case '7': digitstr = "seventy"
  308. case '8': digitstr = "eighty"
  309. case '9': digitstr = "ninety"
  310. case '0': dont = true // do nothing
  311. default : digitstr = "TENSERROR"
  312. }
  313. if (!dont)
  314. format(wordnumbers, length, "%s %s", wordnumbers, digitstr)
  315.  
  316. return jumpnext
  317. }
  318.  
  319. // Returns true when sets, else false
  320. stock getsingledigit(digit[], numbers[], length, bool:getzero = false) {
  321. new digitstr[11]
  322. switch (digit[0]) {
  323. case '1': digitstr = "one"
  324. case '2': digitstr = "two"
  325. case '3': digitstr = "three"
  326. case '4': digitstr = "four"
  327. case '5': digitstr = "five"
  328. case '6': digitstr = "six"
  329. case '7': digitstr = "seven"
  330. case '8': digitstr = "eight"
  331. case '9': digitstr = "nine"
  332. case '0': {
  333. if (getzero)
  334. digitstr = "zero"
  335. else
  336. return false
  337. }
  338. default : digitstr = "digiterror"
  339. }
  340. format(numbers, length, "%s %s", numbers, digitstr)
  341.  
  342. return true
  343. }
  344.  
  345. stock jghg_trim(stringtotrim[], len, charstotrim, bool:fromleft = true) {
  346. if (charstotrim <= 0)
  347. return
  348.  
  349. if (fromleft) {
  350. new maxlen = strlen(stringtotrim)
  351. if (charstotrim > maxlen)
  352. charstotrim = maxlen
  353.  
  354. format(stringtotrim, len, "%s", stringtotrim[charstotrim])
  355. }
  356. else {
  357. new maxlen = strlen(stringtotrim) - charstotrim
  358. if (maxlen < 0)
  359. maxlen = 0
  360.  
  361. format(stringtotrim, maxlen, "%s", stringtotrim)
  362. }
  363. }
  364.  
  365. public addrounds(id, level, cid) {
  366. if (!cmd_access(id, level, cid, 2))
  367. return PLUGIN_HANDLED
  368.  
  369. new arg[32]
  370. read_argv(1, arg, 31)
  371. new arglength = strlen(arg)
  372. for (new i = 0; i < arglength; i++) {
  373. if (!isdigit(arg[i])) {
  374. if (i != 0 || arg[0] != '-') {
  375. console_print(id, "Error: Enter only numbers, ie ^"amx_addrounds 10^"")
  376. return PLUGIN_HANDLED
  377. }
  378. }
  379. }
  380.  
  381. new roundstoadd = str_to_num(arg)
  382.  
  383. if (roundstoadd == 0) {
  384. console_print(id, "Error: Well duuuh. Enter a positive or negative value, ie ^"amx_addrounds 10^"")
  385. return PLUGIN_HANDLED
  386. }
  387.  
  388. new originalmaxrounds = get_cvar_num("mp_maxrounds")
  389.  
  390. new newmaxrounds = originalmaxrounds + roundstoadd
  391.  
  392. if (newmaxrounds < 1)
  393. newmaxrounds = 1
  394.  
  395. new roundschanged = newmaxrounds - originalmaxrounds
  396.  
  397. new Float:displayrounds = float(roundschanged)
  398. displayrounds *= displayrounds
  399. displayrounds = floatsqroot(displayrounds)
  400.  
  401. console_print(id, "%sing %d rounds...", roundschanged > 0 ? "Add" : "Remov", floatround(displayrounds))
  402.  
  403. set_cvar_num("mp_maxrounds", newmaxrounds)
  404.  
  405. conRoundsLeft(id)
  406.  
  407. return PLUGIN_HANDLED
  408. }
  409.  
  410. public plugin_init() {
  411. register_plugin(PLUGINNAME, VERSION, AUTHOR)
  412. register_clcmd("say round", "sayRoundsLeft")
  413. register_clcmd("say rounds", "sayRoundsLeft")
  414. register_clcmd("say roundleft", "sayRoundsLeft")
  415. register_clcmd("say roundsleft", "sayRoundsLeft", 0, "- displays remaining rounds")
  416. register_concmd("amx_roundsleft", "conRoundsLeft", 0, "- displays remaining rounds")
  417. register_concmd("amx_addrounds", "addrounds", ADMIN_CFG, "<rounds> - add/remove remaining rounds")
  418. register_event("TeamScore", "teamScore", "ab")
  419. //register_event("ResetHUD", "newround_event", "b")
  420. /*
  421. register_event("SendAudio","endround_event","a","2&%!MRAD_terwin","2&%!MRAD_ctwin","2&%!MRAD_rounddraw")
  422. register_event("TextMsg","endround_event","a","2&#Game_C","2&#Game_w")
  423. register_event("TextMsg","endround_event","a","2&#Game_will_restart_in")
  424. */
  425. /*
  426. register_logevent("death_event",5,"1=killed","3=with")
  427. // L 03/08/2004 - 13:32:34: "xian<2><BOT><CT>" killed "SuperKaka<1><BOT><TERRORIST>" with "usp"
  428. // L 03/08/2004 - 13:32:34: World triggered "Round_End"
  429. */
  430. // L 03/08/2004 - 13:32:34: World triggered "Round_End"
  431. /*register_logevent("endround_event", 3, "2=Round_End")
  432. register_logevent("endround_event", 3, "1=Round_End")
  433. register_logevent("endround_event", 3, "0=Round_End")
  434. register_logevent("endround_event", 3, "3=Round_End")*/
  435. register_logevent("endround_event", 2, "0=World triggered", "1=Round_End")
  436. }

_________________
****


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Percek
HozzászólásElküldve: 2012.10.19. 23:38 
Offline
Félisten
Avatar

Csatlakozott: 2008.04.28. 16:04
Hozzászólások: 872
Megköszönt másnak: 7 alkalommal
Megköszönték neki: 59 alkalommal
Kicsit érdekesen vannak kikommentezve a dolgok, lényeg hogy kikell kapcsolni az kör kiírást a körönként (már ki is van?), és a plugin_init-ben egy set_task-ot csinálni ugyan arra a parancsra úgy, hogy ismétlődő flagje legyen. Funkciót kell olvasni


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 157 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole