HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <sqlx>
  4. #include <colorchat>
  5.  
  6. #pragma semicolon 1;
  7.  
  8. enum Login
  9. {
  10. unknown,
  11. signing_up, //Regisztrál
  12. logging_in, //Bejelentkezik
  13. logged_in //Bejelentkezett
  14. }
  15.  
  16. new Login:User[33];
  17. new username[33][64], password[33][32], password2[33][32];
  18. new info_hud_message[33][64], HudObj, info_hud_color[3]; // 0-Piros; 1-Zöld; 2-Kék;
  19.  
  20. new Pont[33], bool:VIP[33], bool:Is_Prefix[33], Prefix[33][32];
  21.  
  22. #define GetBit(%1,%2) (%1 & (1 << (%2 & 31)))
  23. #define SetBit(%1,%2) %1 |= (1 << (%2 & 31))
  24. #define ResetBit(%1,%2) %1 &= ~(1 << (%2 & 31))
  25. new bitadmin;
  26. new bitelo;
  27.  
  28. new const SQL_INFO[][] = {
  29. "127.0.0.1", // HOST
  30. "root", // USERNAME
  31. "ymAdCAx8RFym1Y3", // PASSWORD
  32. "danika" // DATABASE
  33. };
  34.  
  35. new Handle:g_SqlTuple;
  36.  
  37. public plugin_init()
  38. {
  39. register_plugin("Mod", "1.0", "LyleChriss && Maxi");
  40.  
  41. register_impulse(201, "Main_Menu");
  42. register_clcmd("say /menu", "Main_Menu");
  43.  
  44. register_clcmd("Felhasznalonev", "cmd_Username");
  45. register_clcmd("Jelszo", "cmd_Password");
  46. register_clcmd("Jelszo_ujra", "cmd_Password2");
  47.  
  48. HudObj = CreateHudSyncObj();
  49. set_task(1.0, "InfoHUD", _, _, _, "b");
  50.  
  51. register_event("DeathMsg", "eDeathMsg", "a");
  52.  
  53. register_clcmd("say", "HandlerSay");
  54. register_clcmd("say_team", "HandlerSayTeam");
  55. register_event("ResetHUD", "eResetHUD", "be");
  56. }
  57.  
  58. public eDeathMsg()
  59. {
  60. new id = read_data(1);
  61. new victim = read_data(2);
  62. ResetBit(bitelo, victim);
  63.  
  64. if(id != victim && is_user_alive(id) && User[id] == logged_in)
  65. {
  66. switch(VIP[id])
  67. {
  68. case false:{
  69. Pont[id]++;
  70. ColorChat(id, NORMAL, "Kaptál ^4egy ^1pontot!");
  71. }
  72. case true:{
  73. Pont[id]+=2;
  74. ColorChat(id, NORMAL, "Kaptál ^4két ^1pontot");
  75. }
  76. }
  77. }
  78. }
  79.  
  80. public eResetHUD(id) SetBit(bitelo, id);
  81.  
  82. public client_putinserver(id)
  83. {
  84. if(get_user_flags(id) & ADMIN_CHAT) SetBit(bitadmin, id);
  85. else ResetBit(bitadmin, id);
  86. }
  87.  
  88. public client_disconnect(id)
  89. {
  90. if(!is_user_bot(id) || !is_user_hltv(id))
  91. {
  92. Update_SQL(id);
  93. }
  94.  
  95. username[id][0] = EOS;
  96. password[id][0] = EOS;
  97. password2[id][0] = EOS;
  98. User[id] = unknown;
  99. Pont[id] = 0;
  100. VIP[id] = false;
  101. Is_Prefix[id] = false;
  102. Prefix[id][0] = EOS;
  103. ResetBit(bitelo, id);
  104. }
  105.  
  106. public InfoHUD()
  107. {
  108. new players[32], pnum, id;
  109. get_players(players, pnum, "chi");
  110.  
  111. for(new i; i<pnum; i++)
  112. {
  113. id=players[i];
  114. set_hudmessage(info_hud_color[0], info_hud_color[1], info_hud_color[2], -1.0, -1.0, 0, 6.0, 12.0, 0.8, 0.8, -1);
  115. ShowSyncHudMsg(id, HudObj, "%s", info_hud_message[id]);
  116. }
  117. }
  118.  
  119. public HUD_EndOfString(taskid) info_hud_message[taskid-1000][0] = EOS;
  120.  
  121. public Main_Menu(id)
  122. {
  123. new menu = menu_create("Valami Mod | Főmenü", "Main_Menu_Handler");
  124.  
  125. menu_additem(menu, "Jelentkezz be!", "", 0);
  126. menu_additem(menu, "Még nincs felhasználód? Regisztrálj!", "", 0);
  127.  
  128. menu_display(id, menu);
  129. }
  130.  
  131. public Main_Menu_Handler(id, menu, item)
  132. {
  133. switch(item)
  134. {
  135. case MENU_EXIT:{
  136. menu_destroy(menu);
  137. return;
  138. }
  139. case 0:{
  140. Main_Menu_Login(id);
  141. User[id] = logging_in;
  142. }
  143. case 1:{
  144. Main_Menu_Register(id);
  145. User[id] = signing_up;
  146. }
  147. }
  148. menu_destroy(menu);
  149. }
  150.  
  151. public Main_Menu_Register(id)
  152. {
  153. new menu = menu_create("Valami Mod | Regisztráció", "Main_Menu_Register_Handler");
  154.  
  155. new text[128];
  156. formatex(text, charsmax(text), "Felhasználónév: %s", username[id]);
  157. menu_additem(menu, text, "", 0);
  158.  
  159. formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id])));
  160. menu_additem(menu, text, "", 0);
  161.  
  162. formatex(text, charsmax(text), "Jelszó újra: %s", show_stars(strlen(password2[id])));
  163. menu_additem(menu, text, "", 0);
  164.  
  165. menu_additem(menu, "Regisztráció", "", 0);
  166.  
  167. menu_display(id, menu);
  168. }
  169.  
  170. public Main_Menu_Register_Handler(id, menu, item)
  171. {
  172. switch(item)
  173. {
  174. case MENU_EXIT:{
  175. menu_destroy(menu);
  176. return;
  177. }
  178. case 0:{
  179. client_cmd(id, "messagemode Felhasznalonev");
  180. Main_Menu_Register(id);
  181. }
  182. case 1:{
  183. client_cmd(id, "messagemode Jelszo");
  184. Main_Menu_Register(id);
  185. }
  186. case 2:{
  187. client_cmd(id, "messagemode Jelszo_ujra");
  188. Main_Menu_Register(id);
  189. }
  190. case 3: Register_Check(id);
  191. }
  192. menu_destroy(menu);
  193. }
  194.  
  195. public Main_Menu_Login(id)
  196. {
  197. new menu = menu_create("Valami Mod | Bejelentkezés", "Main_Menu_Login_Handler");
  198.  
  199. new text[128];
  200. formatex(text, charsmax(text), "Felhasználónév: %s", username[id]);
  201. menu_additem(menu, text, "", 0);
  202.  
  203. formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id])));
  204. menu_additem(menu, text, "", 0);
  205.  
  206. menu_additem(menu, "Bejelentkezés", "", 0);
  207.  
  208. menu_display(id, menu);
  209. }
  210.  
  211. public Main_Menu_Login_Handler(id, menu, item)
  212. {
  213. switch(item)
  214. {
  215. case MENU_EXIT:{
  216. menu_destroy(menu);
  217. return;
  218. }
  219. case 0:{
  220. client_cmd(id, "messagemode Felhasznalonev");
  221. Main_Menu_Login(id);
  222. }
  223. case 1:{
  224. client_cmd(id, "messagemode Jelszo");
  225. Main_Menu_Login(id);
  226. }
  227. case 2: Login_Check(id);
  228. }
  229. menu_destroy(menu);
  230. }
  231.  
  232. public Register_Check(id)
  233. {
  234. if(User[id] == logging_in ||User[id] == logged_in || User[id] == unknown)
  235. return;
  236.  
  237. if(!equal(password[id], password2[id]))
  238. {
  239. formatex(info_hud_message[id], charsmax(info_hud_message[]), "A két jelszó nem egyezik!");
  240. info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  241. Main_Menu_Register(id);
  242. return;
  243. }
  244.  
  245. else if((strlen(password[id])) > 16 || (strlen(password2[id])) > 16)
  246. {
  247. formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet hosszabb 16 karakternél!");
  248. info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  249. Main_Menu_Register(id);
  250. return;
  251. }
  252.  
  253. else if((strlen(password[id])) < 6 || (strlen(password2[id])) < 6)
  254. {
  255. formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet rövidebb 6 karakternél!");
  256. info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  257. Main_Menu_Register(id);
  258. return;
  259. }
  260.  
  261. else
  262. {
  263. formatex(info_hud_message[id], charsmax(info_hud_message[]), "Regisztráció folyamatban... Kérlek várj!");
  264. info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
  265. Sql_Register_Check(id);
  266. Main_Menu_Register(id);
  267. }
  268. }
  269.  
  270. public Login_Check(id)
  271. {
  272. if(User[id] == logged_in || User[id] == unknown)
  273. return;
  274. formatex(info_hud_message[id], charsmax(info_hud_message[]), "Bejelentkezés folyamatban... Kérlek várj!");
  275. info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
  276. Sql_Login_Check(id);
  277. Main_Menu_Login(id);
  278. }
  279.  
  280. public cmd_Username(id)
  281. {
  282. if(User[id] == logged_in || User[id] == unknown)
  283. return;
  284.  
  285. username[id][0] = EOS;
  286. set_task(0.1, "HUD_EndOfString", 1000+id);
  287. read_args(username[id], charsmax(username []));
  288. remove_quotes(username[id]);
  289. switch(User[id])
  290. {
  291. case signing_up: Main_Menu_Register(id);
  292. case logging_in: Main_Menu_Login(id);
  293. }
  294. }
  295.  
  296. public cmd_Password(id)
  297. {
  298. if(User[id] == logged_in || User[id] == unknown)
  299. return;
  300.  
  301. password[id][0] = EOS;
  302. set_task(0.1, "HUD_EndOfString", 1000+id);
  303. read_args(password[id], charsmax(password []));
  304. remove_quotes(password[id]);
  305. switch(User[id])
  306. {
  307. case signing_up: Main_Menu_Register(id);
  308. case logging_in: Main_Menu_Login(id);
  309. }
  310. }
  311.  
  312. public cmd_Password2(id)
  313. {
  314. if(User[id] == logged_in || User[id] == logging_in || User[id] == unknown)
  315. return;
  316.  
  317. password2[id][0] = EOS;
  318. set_task(0.1, "HUD_EndOfString", 1000+id);
  319. read_args(password2[id], charsmax(password2[]));
  320. remove_quotes(password2[id]);
  321. Main_Menu_Register(id);
  322. }
  323.  
  324. public Sql_Register_Check(id)
  325. {
  326. static Query[512];
  327.  
  328. new Data[2];
  329. Data[0] = id;
  330. Data[1] = get_user_userid(id);
  331.  
  332. formatex(Query, charsmax(Query), "SELECT * FROM `register` WHERE username = '%s'", username[id]);
  333.  
  334. SQL_ThreadQuery(g_SqlTuple, "Sql_Register_Thread", Query, Data, 2);
  335. }
  336.  
  337. public Sql_Register_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  338. {
  339. if(FailState == TQUERY_CONNECT_FAILED)
  340. set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  341. else if(FailState == TQUERY_QUERY_FAILED)
  342. set_fail_state("Query Error");
  343. if(Errcode)
  344. log_amx("Hibat dobtam: %s",Error);
  345.  
  346. new id = Data[0];
  347.  
  348. if(Data[1] != get_user_userid(id))
  349. return;
  350.  
  351. new RowsFound = SQL_NumRows(Query);
  352.  
  353. if(RowsFound)
  354. {
  355. formatex(info_hud_message[id], charsmax(info_hud_message[]), "Ez a felhasználónév már foglalt!");
  356. info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  357. Main_Menu_Register(id);
  358. }
  359. else Sql_Account_Create(id);
  360. }
  361.  
  362. public Sql_Account_Create(id)
  363. {
  364. static Query[512];
  365.  
  366. formatex(Query, charsmax(Query), "INSERT INTO `register` (username, password) VALUES('%s', '%s')", username[id], password[id]);
  367.  
  368. new Data[2];
  369. Data[0] = id;
  370. Data[1] = get_user_userid(id);
  371.  
  372. SQL_ThreadQuery(g_SqlTuple, "Sql_Account_Create_Thread", Query, Data, 2);
  373. }
  374.  
  375. public Sql_Account_Create_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  376. {
  377. if(FailState == TQUERY_CONNECT_FAILED)
  378. set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  379. else if(FailState == TQUERY_QUERY_FAILED)
  380. set_fail_state("Query Error");
  381. if(Errcode)
  382. log_amx("Hibat dobtam: %s",Error);
  383.  
  384. new id = Data[0];
  385.  
  386. if(Data[1] != get_user_userid(id))
  387. return;
  388.  
  389. formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres Regisztráció! Jelentkezz be!");
  390. info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
  391. set_task(5.0, "HUD_EndOfString", 1000+id);
  392. User[id] = logging_in;
  393. Main_Menu_Login(id);
  394. }
  395.  
  396. public Sql_Login_Check(id)
  397. {
  398. static Query[512];
  399.  
  400. new Data[2];
  401. Data[0] = id;
  402. Data[1] = get_user_userid(id);
  403.  
  404. formatex(Query, charsmax(Query), "SELECT * FROM `register` WHERE username = '%s'", username[id]);
  405.  
  406. SQL_ThreadQuery(g_SqlTuple, "Sql_Login_Thread", Query, Data, 2);
  407. }
  408.  
  409. public Sql_Login_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  410. {
  411. if(FailState == TQUERY_CONNECT_FAILED)
  412. set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  413. else if(FailState == TQUERY_QUERY_FAILED)
  414. set_fail_state("Query Error");
  415. if(Errcode)
  416. log_amx("Hibat dobtam: %s",Error);
  417.  
  418. new id = Data[0];
  419.  
  420. if(Data[1] != get_user_userid(id))
  421. return;
  422.  
  423. new RowsFound = SQL_NumRows(Query);
  424.  
  425. if(RowsFound)
  426. {
  427. new tmp_pass[32];
  428.  
  429. SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "password"), tmp_pass, charsmax(tmp_pass));
  430.  
  431. if(equal(password[id], tmp_pass))
  432. {
  433. User[id] = logged_in;
  434. formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres bejelentkezés!");
  435. info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
  436. set_task(5.0, "HUD_EndOfString", 1000+id);
  437. Pont[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pontok"));
  438. new vip, prefix;
  439. vip = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "is_vip"));
  440. prefix = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "is_prefix"));
  441.  
  442. switch(vip)
  443. {
  444. case 0: VIP[id] = false;
  445. case 1: VIP[id] = true;
  446. }
  447. switch(prefix)
  448. {
  449. case 0: Is_Prefix[id] = false;
  450. case 1:{
  451. Is_Prefix[id] = true;
  452. SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "prefix"), Prefix[id], charsmax(Prefix[]));
  453. }
  454. }
  455. }
  456. else
  457. {
  458. formatex(info_hud_message[id], charsmax(info_hud_message[]), "Érvénytelen jelszó!");
  459. info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  460. Main_Menu_Login(id);
  461. }
  462. }
  463. else
  464. {
  465. formatex(info_hud_message[id], charsmax(info_hud_message[]), "Érvénytelen felhasználónév!");
  466. info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  467. Main_Menu_Login(id);
  468. }
  469. }
  470.  
  471. public Update_SQL(id)
  472. {
  473. static Query[512];
  474.  
  475. formatex(Query, charsmax(Query), "UPDATE `register` SET `pontok` = '%d' WHERE `username` = '%s';", Pont[id], username[id]);
  476. SQL_ThreadQuery(g_SqlTuple, "Sql_Update_Thread", Query);
  477. }
  478.  
  479. public Sql_Update_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  480. {
  481. if(FailState == TQUERY_CONNECT_FAILED)
  482. set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  483. else if(FailState == TQUERY_QUERY_FAILED)
  484. set_fail_state("Query Error");
  485. if(Errcode)
  486. log_amx("Hibat dobtam: %s",Error);
  487. }
  488.  
  489. public plugin_cfg()
  490. {
  491. g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]);
  492. }
  493.  
  494. public HandlerSay(id) return uzenetformazas(id, false);
  495. public HandlerSayTeam(id) return uzenetformazas(id, true);
  496.  
  497. uzenetformazas(id, bool:csapat)
  498. {
  499. #define MAX_BIT 180
  500. static uzenet[MAX_BIT], stringkonvertalas[charsmax(uzenet) * 2 + 1];
  501. read_args(uzenet, charsmax(uzenet));
  502. remove_quotes(uzenet);
  503.  
  504. if(uzenet[0] == EOS || uzenet[0] == '/' || equal(uzenet, " "))
  505. return PLUGIN_HANDLED_MAIN;
  506.  
  507. static fullos, tagek[MAX_BIT], team_lekeres, sTeam[16];
  508. team_lekeres = get_user_team(id, sTeam, charsmax(sTeam));
  509.  
  510. switch(team_lekeres)
  511. {
  512. case 1: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[T] " : "");
  513. case 2: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[CT] " : "");
  514. default:fullos = formatex(tagek, charsmax(tagek), "^1*Spec* ");
  515. }
  516.  
  517. if(Prefix[id][0] && Is_Prefix[id])
  518. fullos += formatex(tagek[fullos], charsmax(tagek) - fullos, "^4[%s] ", Prefix[id]);
  519.  
  520. fullos += formatex(tagek[fullos], charsmax(tagek) - fullos, "^3%%s1^1 : %%s2");
  521.  
  522. stringkonvertalas = uzenet;
  523. replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
  524. replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
  525.  
  526. static bitlimit; bitlimit = MAX_BIT;
  527. while(fullos + strlen(stringkonvertalas) > MAX_BIT) stringkonvertalas[bitlimit -= 10] = 0;
  528.  
  529. static players[32], pcount; get_players(players, pcount, "c");
  530. switch(csapat)
  531. {
  532. case true:
  533. {
  534. for(new i; i < pcount; i++)
  535. {
  536. if(GetBit(bitadmin, players[i]) || (GetBit(bitelo, id) == GetBit(bitelo, players[i]) && team_lekeres == get_user_team(players[i])))
  537. PrintChat(players[i], id, tagek, stringkonvertalas);
  538. }
  539. }
  540. case false:
  541. {
  542. for(new i; i < pcount; i++)
  543. PrintChat(players[i], id, tagek, stringkonvertalas);
  544. }
  545. }
  546. static sAuthId[25], sName[32];
  547. get_user_name(id, sName, charsmax(sName));
  548. get_user_authid(id, sAuthId, charsmax(sAuthId));
  549. log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, csapat ? "say_team" : "say" , stringkonvertalas);
  550. return PLUGIN_HANDLED;
  551. }
  552.  
  553. PrintChat(iReceiver, iSender, const tagek[], const uzenet[])
  554. {
  555. message_begin(MSG_ONE, 76, .player=iReceiver);
  556. write_byte(iSender);
  557. write_string(tagek);
  558. write_string("");
  559. write_string(uzenet);
  560. message_end();
  561. }
  562.  
  563. stock show_stars(i_Lenght)
  564. {
  565. static s_Stars[32] = "*******************************", sStars2[32];
  566. formatex(sStars2, 31, "%s", s_Stars[31-i_Lenght]);
  567. return sStars2;
  568. }
  569.