Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441.
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <ColorChat> #include <fakemeta> #include <engine> #include <sqlx> #define PLUGIN "Deathrun Rangi" #define VERSION "1.0" #define AUTHOR "speedkill & benio101" #define max_level 16 #define TOP_DATA_BUFFER_SIZE 1536 enum deathrun { skoki, ranga[64] } new stats[33][deathrun] new msg[2][33] new lvl[33] new nick_gracza[33][64] new Prefiks[64] new bool:LoadData[33] new bool:MenuOpened[33] new Handle:g_SqlTuple #include "db.inl" new const g_Rangi[][] = { "Poczatkujacy", "Mlodszy amator", "Starszy amator", "Majster", "Starszy majster", "SpeedRunner", "BH Master", "Czlowiek BH", "skoczek", "Pro BH Gamer", "Runner", "BunnyHoper", "Jumper", "Spider-Man", "Stoch", "Malysz" } new const g_Wymogi[] = { 0, 300, 600, 1200, 2100, 3250, 5000, 7300, 10000, 14000, 18500, 23000, 29000, 35500, 42000, 50000 } new g_NewLvl new g_Best public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /rangi","Menu") register_forward(FM_CmdStart, "counting") register_logevent("Load", 2, "1=Round_Start") g_NewLvl = CreateMultiForward("dr_rangi_new_lvl", ET_IGNORE, FP_CELL) g_Best = CreateMultiForward("dr_rangi_best_player", ET_IGNORE, FP_CELL) } public plugin_cfg() { register_cvar("amx_dr_rangi_host", "localhost") register_cvar("amx_dr_rangi_user", "root") register_cvar("amx_dr_rangi_pass", "root") register_cvar("amx_dr_rangi_db", "db") register_cvar("amx_dr_rangi_team", "2") // 0 - wszyscy, 1 - tylko Terro, 2 - tylko CT, 3 - nikt register_cvar("amx_dr_rangi_speed", "290") register_cvar("amx_dr_rangi_show_best","1") register_cvar("amx_dr_rangi_prefiks","[Deathrun_Rangi]") get_cvar_string("amx_dr_rangi_prefiks",Prefiks,charsmax(Prefiks)) sql_connect() } public plugin_end() { SQL_FreeHandle(g_SqlTuple) } public plugin_natives() { register_library("Deathrun_Rangi") register_native("get_user_jumps", "get_user_jumps",1) register_native("get_user_rang", "get_user_rang",1) } public client_authorized(id) { get_user_name(id, nick_gracza[id], charsmax(nick_gracza[])) replace_all(nick_gracza[id], charsmax(nick_gracza[]), "'", "'") replace_all(nick_gracza[id], charsmax(nick_gracza[]), "`", "`") sql_load(id) } public client_disconnect(id) { sql_save(id) clear(id) } public clear(id) { stats[id][skoki] = 0 for(new i=0;i<2;i++) { msg[i][id] = 0 } lvl[id] = 0 LoadData[id] = false MenuOpened[id] = false } public client_infochanged(id) { new szName[64] get_user_info(id,"name",szName,charsmax(szName)) nick_gracza[id] = szName } public counting(id,uc_handle) { static button,flags button = get_uc(uc_handle,UC_Buttons) flags = pev(id, pev_flags) if(button & IN_JUMP) { if(flags & FL_ONGROUND) { if(get_cvar_num("amx_dr_rangi_team")-3 && (3-get_user_team(id)!=get_cvar_num("amx_dr_rangi_team")) && fm_get_user_speed(id) >= get_cvar_num("amx_dr_rangi_speed")) { stats[id][skoki]++ show(id) } } } } public show(id) { new poziom = 0 for(new i=0;i<sizeof g_Wymogi;i++) { if(stats[id][skoki] >= g_Wymogi[i]) { poziom++ if(poziom > lvl[id]) { ColorChat(id,GREEN,"^x03%s^x04 Awansowales do rangi : ^x03%s",Prefiks,g_Rangi[poziom - 1]) new iRet ExecuteForward(g_NewLvl,iRet,id) if(MenuOpened[id]) { set_task(1.0,"Menu",id) } } } else { break } } lvl[id] = poziom poziom-- formatex(stats[id][ranga],63, "%s",g_Rangi[poziom]) new bool:check = (poziom == max_level) ? true : false new wiad[128] if(msg[1][id] == 0) { formatex(wiad,charsmax(wiad),"Skoki : %d/%d | Ranga : %s",stats[id][skoki],check ? 0 : g_Wymogi[poziom + 1],stats[id][ranga]) } else { formatex(wiad,charsmax(wiad),"Skoki : %d/%d",stats[id][skoki],check ? 0 : g_Wymogi[poziom + 1]) } switch(msg[0][id]) { case 0:{ client_print(id,print_center,"%s",wiad); } case 1:{ show_status(id,"%s",wiad); } case 2:{ show_status(id,""); } } } public Menu(id) { MenuOpened[id] = true new tytul[128] formatex(tytul,charsmax(tytul),"wDeathrun rangi^nySkoki : d%d | yRanga : d%s^n^n",stats[id][skoki],stats[id][ranga]) new menu = menu_create(tytul, "Wybor") menu_additem(menu, "rTop10") menu_additem(menu, "wTwoj ranking") menu_additem(menu, "yOpis rang i ich wymagania") switch(msg[0][id]) { case 0: { menu_additem(menu, "dInformacja o skokach : ySrodek"); } case 1: { menu_additem(menu, "dInformacja o skokach : wLewy dolny rog"); } case 2: { menu_additem(menu, "dInformacja o skokach : rBrak"); } } switch(msg[1][id]) { case 0: { menu_additem(menu, "wRanga przy ilosci skokow : rTak"); } case 1: { menu_additem(menu, "wRanga przy ilosci skokow : yNie"); } } menu_setprop(menu, MPROP_EXITNAME, "Wyjscie") menu_display(id, menu, 0) } public Wybor(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0: { Top10(id); } case 1: { Rank_Load(id); } case 2: { motd(id); } case 3: { switch(msg[0][id]) { case 0: { msg[0][id] = 1 } case 1: { msg[0][id] = 2 } case 2: { msg[0][id] = 0 } } Menu(id) } case 4: { switch(msg[1][id]) { case 0: { msg[1][id] = 1 } case 1: { msg[1][id] = 0 } } Menu(id) } } MenuOpened[id] = false menu_destroy(menu) return PLUGIN_HANDLED } public motd(id) { static Data[TOP_DATA_BUFFER_SIZE],Title[33],Len Len = formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<html><body bgcolor=Black><br>") Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<center><table frame=^"border^" width=^"600^" cellspacing=^"0^" bordercolor=#4A4344 style=^"color:#56A5EC;text-align:center;^">") Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<tr><td><b>Ranga</b></td><td><b>Wymagania</b></td></td></tr>") for(new i;i<sizeof g_Wymogi;i++) { Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<tr>") Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td>%s</td>",g_Rangi[i]) Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td>%d</td>",g_Wymogi[i]) Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "</tr>") } Len += formatex(Data[Len],TOP_DATA_BUFFER_SIZE - Len,"</center></body></html>") formatex(Title, 32, "Opis Rang") show_motd(id, Data, Title) return PLUGIN_HANDLED } public Top10(id) { new szTemp[512],Data[1] Data[0] = id format(szTemp,charsmax(szTemp),"SELECT * FROM Deathrun_Rangi ORDER BY skoki DESC LIMIT 10") SQL_ThreadQuery(g_SqlTuple,"Top",szTemp,Data,1) } public Top(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(FailState) { log_amx("SQL Error: %s (%d)", Error, Errcode) return PLUGIN_HANDLED } new id = Data[0] static Data[TOP_DATA_BUFFER_SIZE],Title[33],Len, Place,name[64],rangi[64],s Place = 0 Len = formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<html><body bgcolor=Black><br>") Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<center><table frame=^"border^" width=^"600^" cellspacing=^"0^" bordercolor=#4A4344 style=^"color:#56A5EC;text-align:center;^">") Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<tr><td><b>#</b></td><td><b>Nick</b></td><td><b>Skoki</b></td></td><td><b>Ranga</b></td></tr>") while(SQL_MoreResults(Query)) { Place++ SQL_ReadResult(Query,0,name,charsmax(name)) SQL_ReadResult(Query,2,rangi,charsmax(rangi)) s = SQL_ReadResult(Query,1) replace_all(name,charsmax(name), "<", "") replace_all(name,charsmax(name), ">", "") Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<tr>") Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td><font color=Red>%d</font></td>", Place) Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td>%s</td>",name) Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td>%d</td>",s) Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td>%s</td>",rangi) Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "</tr>") SQL_NextRow(Query) } Len += formatex(Data[Len],TOP_DATA_BUFFER_SIZE - Len,"</center></body></html>") formatex(Title, 32, "Top 10 Skoczkow") show_motd(id, Data, Title) return PLUGIN_HANDLED } public Rank_Load(id) { new szTemp[512],Data[1] Data[0] = id format(szTemp,charsmax(szTemp),"SELECT COUNT(*) FROM Deathrun_Rangi WHERE `skoki` >= %d",stats[id][skoki]) SQL_ThreadQuery(g_SqlTuple,"Rank",szTemp,Data,1) } public Rank(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(FailState) { log_amx("SQL Error: %s (%d)", Error, Errcode) return PLUGIN_HANDLED } new count = 0,id = Data[0] count = SQL_ReadResult(Query,0) if(count == 0) { count = 1 } ColorChat(id,GREEN,"%s^x03 Zajmujesz %d miejsce z %d skokami i ranga %s",Prefiks,count,stats[id][skoki],stats[id][ranga]) return PLUGIN_CONTINUE } public Load() { for(new i=1;i<33;i++) { if(is_user_connected(i)) { sql_save(i) } } if(get_cvar_num("amx_dr_rangi_show_best")) { Best_Load() } return PLUGIN_CONTINUE } public Best_Load() { new szTemp[512] format(szTemp,charsmax(szTemp),"SELECT * FROM Deathrun_Rangi ORDER BY skoki DESC LIMIT 1") SQL_ThreadQuery(g_SqlTuple,"Best",szTemp) } public Best(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(FailState) { log_amx("SQL Error: %s (%d)", Error, Errcode) return PLUGIN_HANDLED } new n[64],r[64],s SQL_ReadResult(Query,0,n,charsmax(n));SQL_ReadResult(Query,2,r,charsmax(r));s = SQL_ReadResult(Query,1) ColorChat(0,GREEN,"%s^x03 Prowadzi gracz %s z %d skokami i ranga %s",Prefiks,n,s,r) for(new i=1;i<33;i++) { if(is_user_connected(i)) { if(equal(nick_gracza[i],n)) { new iRet ExecuteForward(g_Best,iRet,i) } } } return PLUGIN_CONTINUE } public get_user_rang(id) { return stats[id][ranga] } public get_user_jumps(id) { return stats[id][skoki] } stock Float:fm_get_user_speed(id) { if(!is_user_connected(id)) return 0.0
Dodanych wklejek: 12215
Powered By (Pav32) Pastebin © 2011