HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <sqlx>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <fun>
  7. #include <csx>
  8. #include <engine>
  9. #include <fun>
  10. #include <cstrike>
  11.  
  12. #define PLUGIN "Achievement System"
  13. #define VERSION "1.1"
  14. #define AUTHOR "IrOn"
  15.  
  16. new g_host, g_user, g_pass, g_db
  17. new Handle:g_SqlTuple
  18. new g_error[512]
  19.  
  20. new logfelhasznalo[32], logjelszo[32], regfelhasznalo[32], regjelszo[32];
  21. new bool:bejelentkezve[33];
  22.  
  23. new belepescheck[512], felhasznalocheck[512], sqlmentes[512], sqloles[1024], sqltalalat[1024], sqldisconnect[1024];
  24.  
  25. new mentett_user[33][33], mentett_pw[33][33], mentett_userid[33], check_pass[33], check_user[33];
  26. new megtett_tavolsag[33], second[33];
  27. new hatastalanitott_bomba[33], lerakott_bomba[33], felrobbant_bomba[33], jatekido[33];
  28. new talalat[33], oles[33], halal[33], ongyilkos[33];
  29.  
  30. //VIP
  31. new is_user_vip[33];
  32. new vip_ammo, vip_money;
  33. new const MAXBPAMMO[] = {-1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120,
  34. 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100};
  35.  
  36. new const AMMOTYPE[][] = {"", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm",
  37. "57mm", "45acp", "556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox",
  38. "buckshot", "556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm"};
  39.  
  40. public plugin_init()
  41. {
  42. register_plugin(PLUGIN, VERSION, AUTHOR)
  43. register_clcmd("say /reg", "AchievementsMenu")
  44.  
  45. g_host = register_cvar("achi_host", "localhost")
  46. g_user = register_cvar("achi_user", "user")
  47. g_pass = register_cvar("achi_pass", "pw")
  48. g_db = register_cvar("achi_db", "adatbazis")
  49.  
  50. register_clcmd("BEJELENTKEZESI_FELHASZNALO", "belepes_felhasznalo")
  51. register_clcmd("BEJELENTKEZESI_JELSZO", "belepes_jelszo")
  52. register_clcmd("FELHASZNALO", "reg_felhasznalo")
  53. register_clcmd("JELSZO", "reg_jelszo")
  54.  
  55. register_event( "DeathMsg", "Oles", "a" );
  56. register_forward( FM_ClientKill, "Ongyilkossag" );
  57. RegisterHam(Ham_TraceAttack, "player", "Sebzes");
  58.  
  59. //VIP
  60. RegisterHam(Ham_Spawn, "player", "vip_eledes", 1)
  61.  
  62. register_cvar("vip_weapon1", "weapon_awp")
  63. register_cvar("vip_weapon2", "weapon_m4a1")
  64. register_cvar("vip_weapon3", "weapon_ak47")
  65. vip_ammo = register_cvar("vip_fullammo", "1")
  66. vip_money = register_cvar("vip_money", "16000")
  67. //VIP Vége
  68.  
  69. set_task(60.0, "mentes")
  70. }
  71.  
  72. public vip_eledes(id)
  73. {
  74. if(is_user_vip[id])
  75. {
  76. //FEGYVER
  77. new weapon1[51], weapon2[51], weapon3[51];
  78. get_cvar_string("vip_weapon1", weapon1, 50)
  79. get_cvar_string("vip_weapon2", weapon2, 50)
  80. get_cvar_string("vip_weapon3", weapon3, 50)
  81.  
  82. if(!(equal(weapon1, "")))
  83. give_item(id, weapon1);
  84. if(!(equal(weapon2, "")))
  85. give_item(id, weapon2);
  86. if(!(equal(weapon3, "")))
  87. give_item(id, weapon3);
  88.  
  89. //TÖLTÉNY
  90. switch(get_pcvar_num(vip_ammo))
  91. {
  92. case 1:
  93. {
  94. new weapons[32], num;
  95. get_user_weapons(id, weapons, num);
  96.  
  97. for (new i = 0; i < num; i++)
  98. {
  99. ExecuteHam(Ham_GiveAmmo, id, MAXBPAMMO[weapons[i]], AMMOTYPE[weapons[i]], MAXBPAMMO[weapons[i]]);
  100. }
  101. }
  102.  
  103. case 0:
  104. return PLUGIN_CONTINUE;
  105. }
  106.  
  107. //PÉNZ
  108. new penz = cs_get_user_money(id)+get_pcvar_num(vip_money)
  109. cs_set_user_money(id, penz)
  110. }
  111. return PLUGIN_CONTINUE;
  112. }
  113.  
  114. public client_disconnect(id)
  115. {
  116. if(bejelentkezve[id])
  117. {
  118. jatekido[id] = jatekido[id]+get_user_time(id)
  119. formatex(sqldisconnect, charsmax(sqldisconnect), "UPDATE `achi_felhasznalok` SET `megtett_tavolsag`=^"%d^", `jatekido`=^"%d^", `bomba_hatastalanitas`=^"%d^", `bomba_lerakas`=^"%d^", `bomba_robbanas`=^"%d^", `talalat`=^"%d^", `oles`=^"%d^", `halal`=^"%d^" , `ongyilkos`=^"%d^" WHERE id=^"%d^";", megtett_tavolsag[id], jatekido[id], hatastalanitott_bomba[id], lerakott_bomba[id], felrobbant_bomba[id], talalat[id], oles[id], halal[id], ongyilkos[id], mentett_userid[id])
  120. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqldisconnect)
  121. mentett_user[id] = ""
  122. bejelentkezve[id] = false
  123. second[id] = 0;
  124. is_user_vip[id] = false;
  125. }
  126. }
  127.  
  128. public client_connect(id)
  129. {
  130. mentett_user[id] = ""
  131. bejelentkezve[id] = false
  132. second[id] = 0;
  133. is_user_vip[id] = false;
  134. }
  135.  
  136. public mentes()
  137. {
  138. new Players[32], pnum;
  139. get_players(Players, pnum, "ch")
  140. for(new i = 0; i < pnum; i++)
  141. {
  142. new id = Players[i];
  143. if(bejelentkezve[id])
  144. {
  145. formatex(sqldisconnect, charsmax(sqldisconnect), "UPDATE `achi_felhasznalok` SET `megtett_tavolsag`=^"%d^", `bomba_hatastalanitas`=^"%d^", `bomba_lerakas`=^"%d^", `bomba_robbanas`=^"%d^", `talalat`=^"%d^", `oles`=^"%d^", `halal`=^"%d^" , `ongyilkos`=^"%d^" WHERE id=^"%d^";", megtett_tavolsag[id], hatastalanitott_bomba[id], lerakott_bomba[id], felrobbant_bomba[id], talalat[id], oles[id], halal[id], ongyilkos[id], mentett_userid[id])
  146. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqldisconnect)
  147. }
  148. }
  149. set_task(60.0, "mentes")
  150. }
  151.  
  152. public client_PreThink(id)
  153. {
  154. if(get_user_button(id) & IN_FORWARD && bejelentkezve[id])
  155. {
  156. new Float: speed[33];
  157. speed[id] = get_user_maxspeed(id);
  158. new speedr[33];
  159. speedr[id] = floatround(speed[id], floatround_round);
  160. second[id]++;
  161. megtett_tavolsag[id] = (speedr[id] * second[id])/1000;
  162. }
  163. }
  164.  
  165. public plugin_cfg()
  166. {
  167. new Host[64], User[32], Pass[32], DB[128];
  168. get_pcvar_string(g_host, Host, charsmax(Host))
  169. get_pcvar_string(g_user, User, charsmax(User))
  170. get_pcvar_string(g_pass, Pass, charsmax(Pass))
  171. get_pcvar_string(g_db, DB, charsmax(DB))
  172.  
  173. g_SqlTuple = SQL_MakeDbTuple(Host, User, Pass, DB)
  174. new errorcode, Handle:SqlConnection = SQL_Connect(g_SqlTuple, errorcode, g_error, charsmax(g_error))
  175. new Handle:Query
  176. Query = SQL_PrepareQuery(SqlConnection, "CREATE TABLE IF NOT EXISTS `achi_felhasznalok` (`id` INT(255) NOT NULL AUTO_INCREMENT ,`user` VARCHAR(255) NOT NULL ,`pw` VARCHAR(255) NOT NULL ,PRIMARY KEY (`id`) ,INDEX (`id`));")
  177. SQL_FreeHandle(Query)
  178. SQL_FreeHandle(SqlConnection)
  179. }
  180.  
  181. public QuerySetData(FailState, Handle:Query, error[],errcode, data[], datasize)
  182. {
  183. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  184. {
  185. return
  186. }
  187. }
  188.  
  189. public AchievementsMenu(id)
  190. {
  191. new menu = menu_create("\rAchievements Rendszer:", "AchievementsMenu_handler");
  192. if(bejelentkezve[id])
  193. menu_additem(menu, "\wKijelentkezes", "1", 0);
  194. else
  195. {
  196. menu_additem(menu, "\wRegisztracio", "1", 0);
  197. menu_additem(menu, "\wBelepes", "2", 0);
  198. }
  199.  
  200. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  201. menu_display(id, menu, 0);
  202. }
  203.  
  204. public AchievementsMenu_handler(id, menu, item)
  205. {
  206. if(item == MENU_EXIT)
  207. {
  208. menu_destroy(menu);
  209. return PLUGIN_HANDLED;
  210. }
  211. new data[6], szName[64];
  212. new access, callback;
  213. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  214. new key = str_to_num(data);
  215. switch(key)
  216. {
  217. case 1:
  218. {
  219. if(bejelentkezve[id])
  220. {
  221. bejelentkezve[id] = false;
  222. client_print(id, print_chat, "Kijelentkeztel!")
  223. AchievementsMenu(id)
  224. }
  225. else
  226. client_cmd(id, "messagemode FELHASZNALO")
  227. }
  228. case 2:
  229. {
  230. if(bejelentkezve[id])
  231. client_print(id, print_chat, "Mar be vagy jelentkezve!")
  232. else
  233. client_cmd(id, "messagemode BEJELENTKEZESI_FELHASZNALO")
  234. }
  235. }
  236. menu_destroy(menu);
  237. return PLUGIN_HANDLED;
  238. }
  239.  
  240. public belepes_felhasznalo(id)
  241. {
  242. read_args(logfelhasznalo, charsmax(logfelhasznalo))
  243. remove_quotes(logfelhasznalo)
  244.  
  245. if(equal(logfelhasznalo, ""))
  246. return PLUGIN_HANDLED
  247.  
  248. mentett_user[id] = logfelhasznalo
  249. client_cmd(id, "messagemode BEJELENTKEZESI_JELSZO")
  250. return PLUGIN_CONTINUE
  251. }
  252.  
  253. public belepes_jelszo(id)
  254. {
  255. read_args(logjelszo, charsmax(logjelszo))
  256. remove_quotes(logjelszo)
  257.  
  258. if(equal(logfelhasznalo, ""))
  259. return PLUGIN_HANDLED
  260.  
  261. mentett_pw[id] = logjelszo
  262. Belepesellenorzese(id)
  263. return PLUGIN_CONTINUE
  264. }
  265.  
  266. public Belepesellenorzese(id)
  267. {
  268. new data[1]
  269. data[0] = id
  270. formatex(belepescheck, charsmax(belepescheck), "SELECT `id`, `user`, `pw`, `megtett_tavolsag`, `jatekido`, `bomba_hatastalanitas`, `bomba_lerakas`, `bomba_robbanas`, `vip`, `talalat`, `oles`, `halal`, `ongyilkos` FROM `achi_felhasznalok` WHERE user = ^"%s^" AND pw = ^"%s^";", mentett_user[id], mentett_pw[id])
  271. SQL_ThreadQuery(g_SqlTuple, "QuerySelectDataBejelentkezes", belepescheck, data, 1)
  272. }
  273.  
  274. public QuerySelectDataBejelentkezes(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime)
  275. {
  276. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  277. {
  278. log_amx("%s", error)
  279. return
  280. }
  281. else
  282. {
  283. new id = data[0];
  284. new col_user = SQL_FieldNameToNum(Query, "user")
  285. new col_pw = SQL_FieldNameToNum(Query, "pw")
  286. new col_id = SQL_FieldNameToNum(Query, "id")
  287. new col_tavolsag = SQL_FieldNameToNum(Query, "megtett_tavolsag")
  288. new col_hatastalanitott = SQL_FieldNameToNum(Query, "bomba_hatastalanitas")
  289. new col_lerakott = SQL_FieldNameToNum(Query, "bomba_lerakas")
  290. new col_robbant = SQL_FieldNameToNum(Query, "bomba_robbanas")
  291. new col_jatekido = SQL_FieldNameToNum(Query, "jatekido")
  292. new col_vip = SQL_FieldNameToNum(Query, "vip")
  293. new col_talalat = SQL_FieldNameToNum(Query, "talalat")
  294. new col_oles = SQL_FieldNameToNum(Query, "oles")
  295. new col_halal = SQL_FieldNameToNum(Query, "halal")
  296. new col_ongyilkos = SQL_FieldNameToNum(Query, "ongyilkos")
  297.  
  298. while(SQL_MoreResults(Query))
  299. {
  300. SQL_ReadResult(Query, col_user, check_user, charsmax(check_user))
  301. SQL_ReadResult(Query, col_pw, check_pass, charsmax(check_pass))
  302. mentett_userid[id] = SQL_ReadResult(Query, col_id)
  303. megtett_tavolsag[id] = SQL_ReadResult(Query, col_tavolsag)
  304. hatastalanitott_bomba[id] = SQL_ReadResult(Query, col_hatastalanitott)
  305. lerakott_bomba[id] = SQL_ReadResult(Query, col_lerakott)
  306. felrobbant_bomba[id] = SQL_ReadResult(Query, col_robbant)
  307. jatekido[id] = SQL_ReadResult(Query, col_jatekido)
  308. talalat[id] = SQL_ReadResult(Query, col_talalat)
  309. oles[id] = SQL_ReadResult(Query, col_oles)
  310. halal[id] = SQL_ReadResult(Query, col_halal)
  311. ongyilkos[id] = SQL_ReadResult(Query, col_ongyilkos)
  312. new vip[33];
  313. vip[id] = SQL_ReadResult(Query, col_vip)
  314.  
  315. if(vip[id] == 1)
  316. is_user_vip[id] = true
  317. else
  318. is_user_vip[id] = false
  319.  
  320. new Float: speed[33];
  321. speed[id] = get_user_maxspeed(id);
  322. new speedr[33];
  323. speedr[id] = floatround(speed[id], floatround_round);
  324. second[id] = ((megtett_tavolsag[id]*1000)/speedr[id])
  325.  
  326. if(equal(mentett_user[id], check_user) && equal(mentett_pw[id], check_pass))
  327. {
  328. bejelentkezve[id] = true;
  329. client_print(id, print_chat, "Sikeres bejelentkezes!")
  330. AchievementsMenu(id)
  331. }
  332. SQL_NextRow(Query)
  333. }
  334. }
  335. }
  336.  
  337. public reg_felhasznalo(id)
  338. {
  339. read_args(regfelhasznalo, charsmax(regfelhasznalo))
  340. remove_quotes(regfelhasznalo)
  341.  
  342. if(equal(regfelhasznalo, ""))
  343. return PLUGIN_HANDLED
  344.  
  345. mentett_user[id] = regfelhasznalo
  346. Felhasznalo_Ellenorzese(id)
  347. client_cmd(id, "messagemode JELSZO")
  348. return PLUGIN_CONTINUE
  349. }
  350.  
  351. public reg_jelszo(id)
  352. {
  353. read_args(regjelszo, charsmax(regjelszo))
  354. remove_quotes(regjelszo)
  355.  
  356. if(equal(regjelszo, ""))
  357. return PLUGIN_HANDLED
  358.  
  359. mentett_pw[id] = regjelszo
  360.  
  361. formatex(sqlmentes, charsmax(sqlmentes), "INSERT INTO `achi_felhasznalok`(`user`, `pw`) VALUES (^"%s^",^"%s^");", mentett_user[id], mentett_pw[id])
  362. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqlmentes)
  363. client_print(id, print_chat, "Sikeresen regisztraltal!")
  364. Belepesellenorzese(id)
  365. return PLUGIN_CONTINUE
  366. }
  367.  
  368. public Felhasznalo_Ellenorzese(id)
  369. {
  370. new data[1]
  371. data[0] = id
  372.  
  373. formatex(felhasznalocheck, charsmax(felhasznalocheck), "SELECT `user` FROM `achi_felhasznalok` WHERE user = ^"%s^";", mentett_user[id])
  374. SQL_ThreadQuery(g_SqlTuple, "QuerySelectDataFelhasznalo", felhasznalocheck, data, 1)
  375. }
  376.  
  377. public QuerySelectDataFelhasznalo(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime)
  378. {
  379. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  380. {
  381. log_amx("%s", error)
  382. return
  383. }
  384. else
  385. {
  386. new id = data[0];
  387. new col_user = SQL_FieldNameToNum(Query, "user")
  388.  
  389. while(SQL_MoreResults(Query))
  390. {
  391. SQL_ReadResult(Query, col_user, check_user, charsmax(check_user))
  392. if(equal(mentett_user[id], check_user))
  393. {
  394. client_print(id, print_chat, "Ez a felhasznalo mar letezik!")
  395. client_cmd(id, "messagemode FELHASZNALO")
  396. }
  397. SQL_NextRow(Query)
  398. }
  399. }
  400. }
  401.  
  402. public Oles()
  403. {
  404. new killer = read_data( 1 );
  405. new victim = read_data( 2 );
  406.  
  407. if(killer == victim)
  408. {
  409. if(bejelentkezve[killer])
  410. {
  411. ongyilkos[killer]++
  412. formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_ongyilkossag`(`userid`) VALUES (^"%d^");", mentett_userid[killer])
  413. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles)
  414. }
  415. return PLUGIN_HANDLED;
  416. }
  417. halal[victim]++
  418. oles[killer]++
  419. new fegyver = get_user_weapon(killer)
  420. new hp = get_user_health(killer)
  421. new armor = get_user_armor(killer)
  422.  
  423. if(bejelentkezve[killer] && bejelentkezve[victim])
  424. {
  425. formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_olesek`(`killer_id`, `halott_id`, `fegyverid`, `killer_hp`, `killer_armor`) VALUES (^"%d^",^"%d^",^"%d^",^"%d^",^"%d^");", mentett_userid[killer], mentett_userid[victim], fegyver, hp, armor)
  426. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles)
  427. }
  428. else if(bejelentkezve[killer])
  429. {
  430. formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_olesek`(`killer_id`, `halott_id`, `fegyverid`, `killer_hp`, `killer_armor`) VALUES (^"%d^",^"0^",^"%d^",^"%d^",^"%d^");", mentett_userid[killer], fegyver, hp, armor)
  431. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles)
  432. }
  433. else if(bejelentkezve[victim])
  434. {
  435. formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_olesek`(`killer_id`, `halott_id`, `fegyverid`, `killer_hp`, `killer_armor`) VALUES (^"0^",^"%d^",^"%d^",^"%d^",^"%d^");", mentett_userid[victim], fegyver, hp, armor)
  436. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles)
  437. }
  438. return PLUGIN_CONTINUE;
  439.  
  440. }
  441.  
  442. public Ongyilkossag(id)
  443. {
  444. if(bejelentkezve[id])
  445. {
  446. ongyilkos[id]++
  447. formatex(sqloles, charsmax(sqloles), "INSERT INTO `achi_ongyilkossag`(`userid`) VALUES (^"%d^");", mentett_userid[id])
  448. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqloles)
  449. }
  450. }
  451.  
  452. public Sebzes(Vic, Att, Float:dmg, Float:dir[3], traceresult, dmgbits)
  453. {
  454. new talalat_helye = get_tr2(traceresult, TR_iHitgroup)
  455. new fegyver = get_user_weapon(Att)
  456. if(bejelentkezve[Vic] && bejelentkezve[Att])
  457. {
  458. formatex(sqltalalat, charsmax(sqltalalat), "INSERT INTO `achi_talalatok`(`attacker_id`, `victim_id`, `fegyverid`, `talalat_helye`, `sebzes_erteke`) VALUES (^"%d^",^"%d^",^"%d^",^"%d^",^"%f^");", mentett_userid[Att], mentett_userid[Vic], fegyver, talalat_helye, dmg )
  459. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqltalalat)
  460. }
  461. else if(bejelentkezve[Vic])
  462. {
  463. formatex(sqltalalat, charsmax(sqltalalat), "INSERT INTO `achi_talalatok`(`attacker_id`, `victim_id`, `fegyverid`, `talalat_helye`, `sebzes_erteke`) VALUES (^"0^",^"%d^",^"%d^",^"%d^",^"%f^");", mentett_userid[Vic], fegyver, talalat_helye, dmg )
  464. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqltalalat)
  465. }
  466. else if(bejelentkezve[Att])
  467. {
  468. formatex(sqltalalat, charsmax(sqltalalat), "INSERT INTO `achi_talalatok`(`attacker_id`, `victim_id`, `fegyverid`, `talalat_helye`, `sebzes_erteke`) VALUES (^"%d^",^"0^",^"%d^",^"%d^",^"%f^");", mentett_userid[Att], fegyver, talalat_helye, dmg )
  469. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", sqltalalat)
  470. }
  471. talalat[Att]++
  472. return HAM_IGNORED;
  473. }
  474.  
  475. public bomb_defused(defuser)
  476. hatastalanitott_bomba[defuser]++;
  477.  
  478. public bomb_explode(planter)
  479. felrobbant_bomba[planter]++;
  480.  
  481. public bomb_planted(planter)
  482. lerakott_bomba[planter]++;
  483. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  484. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  485. */
  486.