Guest User

Untitled

a guest
Feb 21st, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 17.50 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #define PLUGIN "Admins Menadzer"
  4. #define VERSION "1.0"
  5. #define AUTHOR "Alka [ Preveo Nidzap]"
  6. #define STR_LEN 64
  7. #define MENU_ACCESS_FLAG ADMIN_RCON
  8. new gConfigsDir[STR_LEN];
  9. new gAdminsFile[STR_LEN];
  10. new const gAdminFlags[][] = {
  11.  
  12. "abcdefgijkmu", "abcdefghijkmnopqrstu", "abcdefghijklmnopqrstu"
  13. };
  14. new const gAdminAccessFlags[][] = {
  15.  
  16. "ab", "ce", "de"
  17. };
  18. new const gAdminFlagsDetails[][] = {
  19.  
  20. "Obican Admin",
  21. "VIP Admin",
  22. "Head Admin",
  23. };
  24. new const gAdminAccessFlagsDetails[][] = {
  25.  
  26. "Nick i Password",
  27. "Steam ID",
  28. "IP",
  29. };
  30. new gAdminTargetId[33];
  31. new gAdminTargetFlags[33][32];
  32. new gAdminTargetPassword[33][STR_LEN];
  33. new gAdminTargetAccessFlags[33][32];
  34. new gAdminTargetAccount[33][32];
  35. new gAdminTargetDetails[33][4][STR_LEN];
  36. new gAdminSaveMode[33];
  37. new bool:gAccessFromEditMenu[33];
  38. public plugin_init() {
  39.  
  40. register_plugin(PLUGIN, VERSION, AUTHOR);
  41.  
  42. register_saycmd("/admins", "cmdAdminsManage", -1, "");
  43.  
  44. register_concmd("amx_adminpassword", "cmdAdminPassword", MENU_ACCESS_FLAG, "<password> - Save / change this password for specified admin.");
  45. register_concmd("amx_adminaccount", "cmdAdminAccount", MENU_ACCESS_FLAG, "<name / ip / steam id> - Save / change this account info for specified admin.");
  46.  
  47. get_configsdir(gConfigsDir, sizeof gConfigsDir - 1);
  48. formatex(gAdminsFile, sizeof gAdminsFile - 1, "%s/users.ini", gConfigsDir);
  49.  
  50. if(!file_exists(gAdminsFile))
  51. set_fail_state("Ne postoji fajl");
  52. }
  53. public cmdAdminsManage(id)
  54. {
  55. static iMenu, iCallBack;
  56. iMenu = menu_create("\yAdmins Menadzer (\wGlavni Meni\y):", "MainMenuHandler");
  57. iCallBack = menu_makecallback("MainMenuCallBack");
  58.  
  59. menu_additem(iMenu, "\wDodaj Admina", "1", 0, iCallBack);
  60. menu_additem(iMenu, "\wIzbrisi Admina", "2", 0, iCallBack);
  61. menu_additem(iMenu, "\wPromeni Admina", "3", 0, iCallBack);
  62.  
  63. menu_addblank(iMenu, 0);
  64. menu_display(id, iMenu, 0);
  65. }
  66. public MainMenuCallBack(id, menu, item)
  67. return access(id, MENU_ACCESS_FLAG) ? ITEM_ENABLED : ITEM_DISABLED;
  68. public MainMenuHandler(id, menu, item)
  69. {
  70. if(item == MENU_EXIT)
  71. return 1;
  72.  
  73. static iAccess, iCallback;
  74. static sData[6];
  75. menu_item_getinfo(menu, item, iAccess, sData, sizeof sData - 1, _, _, iCallback);
  76.  
  77. static iKey;
  78. iKey = str_to_num(sData);
  79.  
  80. switch(iKey)
  81. {
  82. case 1: { cmdAdminAdd(id); }
  83. case 2: { cmdAdminRemove(id); }
  84. case 3: { cmdAdminEdit(id); }
  85. }
  86. return 1;
  87. }
  88. public cmdAdminAdd(id)
  89. {
  90. static iMenu;
  91. iMenu = menu_create("\yAdmins Menadzer (\wDodaj Admina\y):", "AddMenuHandler");
  92.  
  93. static sPlayers[32], iNum;
  94. get_players(sPlayers, iNum, "ch");
  95.  
  96. for(new i = 0 ; i < iNum ; i++)
  97. {
  98. static sName[32];
  99. get_user_name(sPlayers[i], sName, sizeof sName - 1);
  100.  
  101. menu_additem(iMenu, sName, "", 0, -1);
  102. }
  103. menu_addblank(iMenu, 0);
  104. menu_display(id, iMenu, 0);
  105. }
  106. public AddMenuHandler(id, menu, item)
  107. {
  108. if(item == MENU_EXIT)
  109. {
  110. cmdAdminsManage(id);
  111. return 1;
  112. }
  113.  
  114. static iAccess, iCallback;
  115. static sBuffer[32];
  116. menu_item_getinfo(menu, item, iAccess, "", 0, sBuffer, sizeof sBuffer - 1, iCallback);
  117.  
  118. static iTarget;
  119. iTarget = get_user_index(sBuffer);
  120.  
  121. gAdminTargetId[id] = iTarget;
  122.  
  123. cmdAdminAddSubMenu(id);
  124. return 1;
  125. }
  126. public cmdAdminAddSubMenu(id)
  127. {
  128. static sTemp[STR_LEN], sName[32];
  129. get_user_name(gAdminTargetId[id], sName, sizeof sName - 1);
  130.  
  131. formatex(sTemp, sizeof sTemp - 1, "\yAdmins Menadzer (\wDodaj Admina \r%s\y):", sName);
  132.  
  133. static iMenu;
  134. iMenu = menu_create(sTemp, "AddSubMenuHandler");
  135.  
  136. menu_additem(iMenu, "\wIzaberi Flagove", "1", 0, -1);
  137. menu_additem(iMenu, "\wResetuj Flagove", "2", 0, -1);
  138. menu_addblank(iMenu, 0);
  139.  
  140. static sBuffer[STR_LEN];
  141. switch(gAdminSaveMode[id])
  142. {
  143. case 0: { formatex(sBuffer, sizeof sBuffer - 1, "\wAdmin na: \rIp"); }
  144. case 1: { formatex(sBuffer, sizeof sBuffer - 1, "\wAdmin na: \rSteam Id"); }
  145. case 2: { formatex(sBuffer, sizeof sBuffer - 1, "\wAdmin na: \rName + Password"); }
  146. }
  147.  
  148. menu_additem(iMenu, sBuffer, "3", 0, -1);
  149. menu_additem(iMenu, "\wSacuvaj Admina", "4", 0, -1);
  150. menu_addblank(iMenu, 0);
  151.  
  152. menu_display(id, iMenu, 0);
  153. }
  154. public AddSubMenuHandler(id, menu, item)
  155. {
  156. if(item == MENU_EXIT)
  157. {
  158. cmdAdminAdd(id);
  159. return 1;
  160. }
  161.  
  162. static iAccess, iCallback;
  163. static sData[6];
  164. menu_item_getinfo(menu, item, iAccess, sData, sizeof sData - 1, _, _, iCallback);
  165.  
  166. static iKey;
  167. iKey = str_to_num(sData);
  168.  
  169. switch(iKey)
  170. {
  171. case 1: { cmdAdminAddFlags(id); }
  172. case 2: { cmdAdminAddResetFlags(id); }
  173. case 3: { cmdAdminSaveMode(id); }
  174. case 4: { cmdAdminAddSave(id); }
  175. }
  176. return 1;
  177. }
  178. public cmdAdminAddFlags(id)
  179. {
  180. static iMenu;
  181. iMenu = menu_create("\yAdmins Menadzer (\wIzmeni Flagove):", "AddFlagsMenuHandler");
  182.  
  183. static sTemp[128];
  184.  
  185. for(new i = 0 ; i < sizeof gAdminFlags ; i++)
  186. {
  187. formatex(sTemp, sizeof sTemp - 1, "%s - \y%s", gAdminFlags[i], gAdminFlagsDetails[i]);
  188. menu_additem(iMenu, sTemp, "", 0, -1);
  189. }
  190. menu_addblank(iMenu, 0);
  191. menu_display(id, iMenu, 0);
  192. }
  193. public AddFlagsMenuHandler(id, menu, item)
  194. {
  195. if(item == MENU_EXIT)
  196. {
  197. if(gAccessFromEditMenu[id])
  198. {
  199. cmdAdminEditSubMenu(id);
  200. gAccessFromEditMenu[id] = false;
  201.  
  202. return 1;
  203. }
  204. else
  205. {
  206. cmdAdminAddSubMenu(id);
  207. return 1;
  208. }
  209. }
  210.  
  211. static iAccess, iCallback;
  212. static sTemp[32], sBuffer[10];
  213. menu_item_getinfo(menu, item, iAccess, "", 0, sTemp, sizeof sTemp - 1, iCallback);
  214.  
  215. strtok(sTemp, sBuffer, sizeof sBuffer - 1, sTemp, sizeof sTemp - 1, '-', 1);
  216.  
  217. if(containi(gAdminTargetFlags[id], sBuffer) != -1)
  218. replace(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, sBuffer, "");
  219. else
  220. format(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, "%s%s", gAdminTargetFlags[id], sBuffer);
  221.  
  222. set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
  223. show_hudmessage(id, "Add Admin flags : ^"%s^"", gAdminTargetFlags[id]);
  224.  
  225. menu_display(id, menu, 0);
  226. return 1;
  227. }
  228. public cmdAdminAddResetFlags(id)
  229. {
  230. formatex(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, "");
  231.  
  232. set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
  233. show_hudmessage(id, "Admin flagovi : Flagovi resetovani");
  234.  
  235. cmdAdminAddSubMenu(id);
  236. return 1;
  237. }
  238. public cmdAdminSaveMode(id)
  239. {
  240. static iNum;
  241. iNum++;
  242.  
  243. if(iNum > 2)
  244. iNum = 0;
  245.  
  246. gAdminSaveMode[id] = iNum;
  247.  
  248. if(iNum == 2)
  249. {
  250. set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
  251. show_hudmessage(id, "Admin Sifra: Kucaj u konzolu admin-ov Password^nKomanda: amx_adminpassword <zeljeni password> ( bez <> )");
  252. }
  253. cmdAdminAddSubMenu(id);
  254. return 1;
  255. }
  256. public cmdAdminAddSave(id)
  257. {
  258. static iFile;
  259. iFile = fopen(gAdminsFile, "at+");
  260.  
  261. if(!gAdminTargetFlags[id][0])
  262. {
  263. set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
  264. show_hudmessage(id, "Moras izabrati flagove da bi sacuvao ^nAdmina.");
  265.  
  266. cmdAdminAddSubMenu(id);
  267. return 1;
  268. }
  269. static UserInfo[32];
  270.  
  271. switch(gAdminSaveMode[id])
  272. {
  273. case 0: { get_user_ip(gAdminTargetId[id], UserInfo, sizeof UserInfo - 1, 1); }
  274. case 1: { get_user_authid(gAdminTargetId[id], UserInfo, sizeof UserInfo - 1); }
  275. case 2:
  276. {
  277. if(!gAdminTargetPassword[id][0])
  278. {
  279. set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
  280. show_hudmessage(id, "Admin Sifra: Kucaj u konzolu admin-ov Password^nKomanda: amx_adminpassword <zeljeni password> ( bez <> )");
  281.  
  282. cmdAdminAddSubMenu(id);
  283. return 1;
  284. }
  285. get_user_name(gAdminTargetId[id], UserInfo, sizeof UserInfo - 1);
  286. }
  287. }
  288.  
  289. static sTemp[128];
  290. new iLine;
  291.  
  292. while(!feof(iFile))
  293. {
  294. fgets(iFile, sTemp, sizeof sTemp - 1);
  295.  
  296. iLine++;
  297.  
  298. if((containi(sTemp, UserInfo) != -1) && sTemp[0] != ';')
  299. {
  300. client_print(id, print_chat, "Izvinite ali admin sa tim nickom/steam_id-om vec postoji :(( !");
  301. return 1;
  302. }
  303. }
  304.  
  305. static sBuffer[128];
  306. switch(gAdminSaveMode[id])
  307. {
  308. case 0: { formatex(sBuffer, sizeof sBuffer - 1, "^n^"%s^" ^"^" ^"%s^" ^"de^"", UserInfo, gAdminTargetFlags[id]); }
  309. case 1: { formatex(sBuffer, sizeof sBuffer - 1, "^n^"%s^" ^"^" ^"%s^" ^"ce^"", UserInfo, gAdminTargetFlags[id]); }
  310. case 2: { formatex(sBuffer, sizeof sBuffer - 1, "^n^"%s^" ^"%s^" ^"%s^" ^"a^"", UserInfo, gAdminTargetPassword[id], gAdminTargetFlags[id]); }
  311. }
  312.  
  313. fprintf(iFile, sBuffer);
  314.  
  315. fclose(iFile);
  316. client_print(id, print_chat, "Uspesno dodat admin ^"%s^" u admin listu na liniju %d!", UserInfo, iLine + 1);
  317. server_cmd("amx_reloadadmins");
  318.  
  319. formatex(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, "");
  320. formatex(gAdminTargetPassword[id], sizeof gAdminTargetPassword[] - 1, "");
  321. gAdminTargetId[id] = 0;
  322.  
  323. return 1;
  324. }
  325. public cmdAdminPassword(id, level, cid)
  326. {
  327. if(!cmd_access(id, level, cid, 2))
  328. return 1;
  329.  
  330. static sArg[64];
  331. read_argv(1, sArg, sizeof sArg - 1);
  332.  
  333. if(!sArg[0])
  334. return 1;
  335.  
  336. formatex(gAdminTargetPassword[id], sizeof gAdminTargetPassword[] - 1, sArg);
  337.  
  338. console_print(id, "Uspesno sacuvan password ^"%s^" za izabranog admina!", gAdminTargetPassword[id]);
  339. return 1;
  340. }
  341. public cmdAdminRemove(id)
  342. {
  343. static iMenu;
  344. iMenu = menu_create("\yAdmins Menadzer (\wIzbrisi Admina\y):", "RemoveMenuHandler");
  345.  
  346. static sBuffer[128], sTempItem[128];
  347. static sTemp[4][STR_LEN];
  348.  
  349. static iFileP;
  350. iFileP = fopen(gAdminsFile, "rt");
  351.  
  352. while(!feof(iFileP))
  353. {
  354. fgets(iFileP, sBuffer, sizeof sBuffer - 1);
  355.  
  356. if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
  357. continue;
  358.  
  359. parse(sBuffer, sTemp[0], sizeof sTemp[] - 1, sTemp[1], sizeof sTemp[] - 1, sTemp[2], sizeof sTemp[] - 1, sTemp[3], sizeof sTemp[] - 1);
  360.  
  361. for(new j = 0 ; j < sizeof sTemp ; j++)
  362. {
  363. remove_quotes(sTemp[j]);
  364. }
  365.  
  366. formatex(sTempItem, sizeof sTempItem - 1, "\w%s\r|\w%s\r|\w%s\r|\w%s\r", sTemp[0], sTemp[1], sTemp[2], sTemp[3]);
  367.  
  368. menu_additem(iMenu, sTempItem, "", 0, -1);
  369. }
  370. fclose(iFileP);
  371.  
  372. menu_addblank(iMenu, 0);
  373. menu_display(id, iMenu, 0);
  374. }
  375. public RemoveMenuHandler(id, menu, item)
  376. {
  377. if(item == MENU_EXIT)
  378. {
  379. cmdAdminsManage(id);
  380. return 1;
  381. }
  382.  
  383. static iAccess, iCallback;
  384. static sBuffer[128], sTemp[STR_LEN];
  385. menu_item_getinfo(menu, item, iAccess, "", 0, sBuffer, sizeof sBuffer - 1, iCallback);
  386.  
  387. strtok(sBuffer, sTemp, sizeof sTemp - 1, sBuffer, sizeof sBuffer - 1, '|');
  388.  
  389. replace(sTemp, sizeof sTemp - 1, "\w", "");
  390. replace(sTemp, sizeof sTemp - 1, "\r", "");
  391. trim(sTemp);
  392.  
  393. static iFileP;
  394. iFileP = fopen(gAdminsFile, "rt");
  395.  
  396. static sTempAccount[STR_LEN];
  397. new i;
  398.  
  399. while(!feof(iFileP))
  400. {
  401. fgets(iFileP, sBuffer, sizeof sBuffer - 1);
  402.  
  403. i++;
  404.  
  405. if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
  406. continue;
  407.  
  408. parse(sBuffer, sTempAccount, sizeof sTempAccount - 1);
  409.  
  410. remove_quotes(sTempAccount);
  411.  
  412. if(equali(sTempAccount, sTemp))
  413. {
  414. format(sBuffer, sizeof sBuffer - 1, ";%s", sBuffer);
  415. write_file(gAdminsFile, sBuffer, i - 1);
  416. break;
  417. }
  418. }
  419. fclose(iFileP);
  420. client_print(id, print_chat, "Uspesno izbrisan ^"%s^" iz admin liste!", sTemp);
  421. server_cmd("amx_reloadadmins");
  422.  
  423. return 1;
  424. }
  425. public cmdAdminEdit(id)
  426. {
  427. static iMenu;
  428. iMenu = menu_create("\yAdmins Menadzer (\wIzmeni Admina\y):", "EditMenuHandler");
  429.  
  430. static sBuffer[128], sTempItem[128];
  431. static sTemp[4][STR_LEN];
  432.  
  433. static iFileP;
  434. iFileP = fopen(gAdminsFile, "rt");
  435.  
  436. while(!feof(iFileP))
  437. {
  438. fgets(iFileP, sBuffer, sizeof sBuffer - 1);
  439.  
  440. if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
  441. continue;
  442.  
  443. parse(sBuffer, sTemp[0], sizeof sTemp[] - 1, sTemp[1], sizeof sTemp[] - 1, sTemp[2], sizeof sTemp[] - 1, sTemp[3], sizeof sTemp[] - 1);
  444.  
  445. for(new j = 0 ; j < sizeof sTemp ; j++)
  446. {
  447. remove_quotes(sTemp[j]);
  448. }
  449.  
  450. formatex(sTempItem, sizeof sTempItem - 1, "\w%s\r|\w%s\r|\w%s\r|\w%s\r", sTemp[0], sTemp[1], sTemp[2], sTemp[3]);
  451.  
  452. menu_additem(iMenu, sTempItem, "", 0, -1);
  453. }
  454. fclose(iFileP);
  455.  
  456. menu_addblank(iMenu, 0);
  457. menu_display(id, iMenu, 0);
  458. }
  459. public EditMenuHandler(id, menu, item)
  460. {
  461. if(item == MENU_EXIT)
  462. {
  463. cmdAdminsManage(id);
  464.  
  465. for(new j = 0 ; j < sizeof gAdminTargetDetails[] ; j++)
  466. formatex(gAdminTargetDetails[id][j], sizeof gAdminTargetDetails[][] - 1, "");
  467.  
  468. return 1;
  469. }
  470.  
  471. static iAccess, iCallback;
  472. static sBuffer[128];
  473. menu_item_getinfo(menu, item, iAccess, "", 0, sBuffer, sizeof sBuffer - 1, iCallback);
  474.  
  475. str_piece(id, sBuffer, gAdminTargetDetails, sizeof gAdminTargetDetails[], sizeof gAdminTargetDetails[][] - 1, '|');
  476.  
  477. for(new j = 0 ; j < sizeof gAdminTargetDetails[] ; j++)
  478. {
  479. replace(gAdminTargetDetails[id][j], sizeof gAdminTargetDetails[][] - 1, "\w", "");
  480. replace(gAdminTargetDetails[id][j], sizeof gAdminTargetDetails[][] - 1, "\r", "");
  481. trim(gAdminTargetDetails[id][j]);
  482. }
  483. cmdAdminEditSubMenu(id);
  484. return 1;
  485. }
  486. public cmdAdminEditSubMenu(id)
  487. {
  488. static iMenu, sTemp[STR_LEN];
  489. formatex(sTemp, sizeof sTemp - 1, "\yAdmins Menadzer(\wIzmeni Admina \r%s\y):", gAdminTargetDetails[id][0]);
  490.  
  491. iMenu = menu_create(sTemp, "EditSubMenuHandler");
  492.  
  493. menu_additem(iMenu, "\wIzmeni username admina", "1", 0, -1);
  494. menu_additem(iMenu, "\wizmeni password", "2", 0, -1);
  495. menu_additem(iMenu, "\wIzmeni flagove", "3", 0 , -1);
  496. menu_additem(iMenu, "\wIzmeni nacin konektovanja", "4", 0, -1);
  497. menu_addblank(iMenu, 0);
  498. menu_additem(iMenu, "\wSave modification", "5", 0, -1);
  499.  
  500. menu_addblank(iMenu, 0);
  501. menu_display(id, iMenu, 0);
  502. }
  503. public EditSubMenuHandler(id, menu, item)
  504. {
  505. if(item == MENU_EXIT)
  506. {
  507. cmdAdminEdit(id);
  508. return 1;
  509. }
  510.  
  511. static iAccess, iCallback;
  512. static sData[6];
  513. menu_item_getinfo(menu, item, iAccess, sData, sizeof sData - 1, _, _, iCallback);
  514.  
  515. static iKey;
  516. iKey = str_to_num(sData);
  517.  
  518. switch(iKey)
  519. {
  520. case 1:
  521. {
  522. set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
  523. show_hudmessage(id, "Kucaj u konzolu komandu : amx_adminaccount za detalje.");
  524. }
  525. case 2:
  526. {
  527. set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
  528. show_hudmessage(id, "Kucaj u konzolu komandu : amx_adminpassword za detalje.");
  529. }
  530. case 3:
  531. {
  532. gAccessFromEditMenu[id] = true;
  533. cmdAdminAddFlags(id);
  534.  
  535. return 1;
  536. }
  537. case 4: { cmdAdminAddAccessFlags(id); return 1; }
  538. case 5: { cmdSaveAdminModification(id); return 1; }
  539. }
  540. menu_display(id, menu, 0);
  541. return 1;
  542. }
  543. public cmdAdminAccount(id, level, cid)
  544. {
  545. if(!cmd_access(id, level, cid, 2))
  546. return 1;
  547.  
  548. static sArg[64];
  549. read_argv(1, sArg, sizeof sArg - 1);
  550.  
  551. if(!sArg[0])
  552. return 1;
  553.  
  554. formatex(gAdminTargetAccount[id], sizeof gAdminTargetAccount[] - 1, sArg);
  555.  
  556. console_print(id, "Uspesno izmenjeni podaci : ^"%s^" izabranog admina.", gAdminTargetAccount[id]);
  557. return 1;
  558. }
  559. public cmdAdminAddAccessFlags(id)
  560. {
  561. static iMenu;
  562. iMenu = menu_create("\yAdmins Menadzer (\wIzmeni nacin konektovanja admina):", "AddAccessFlagsMenuHandler");
  563.  
  564. static sTemp[128];
  565.  
  566. for(new i = 0 ; i < sizeof gAdminAccessFlags ; i++)
  567. {
  568. formatex(sTemp, sizeof sTemp - 1, "%s - \y%s", gAdminAccessFlags[i], gAdminAccessFlagsDetails[i]);
  569. menu_additem(iMenu, sTemp, "", 0, -1);
  570. }
  571. menu_addblank(iMenu, 0);
  572. menu_display(id, iMenu, 0);
  573. }
  574. public AddAccessFlagsMenuHandler(id, menu, item)
  575. {
  576. if(item == MENU_EXIT)
  577. {
  578. cmdAdminEditSubMenu(id);
  579. return 1;
  580. }
  581.  
  582. static iAccess, iCallback;
  583. static sTemp[32], sBuffer[10];
  584. menu_item_getinfo(menu, item, iAccess, "", 0, sTemp, sizeof sTemp - 1, iCallback);
  585.  
  586. strtok(sTemp, sBuffer, sizeof sBuffer - 1, sTemp, sizeof sTemp - 1, '-', 1);
  587.  
  588. if(containi(gAdminTargetAccessFlags[id], sBuffer) != -1)
  589. replace(gAdminTargetAccessFlags[id], sizeof gAdminTargetAccessFlags[] - 1, sBuffer, "");
  590. else
  591. format(gAdminTargetAccessFlags[id], sizeof gAdminTargetAccessFlags[] - 1, "%s%s", gAdminTargetAccessFlags[id], sBuffer);
  592.  
  593. set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
  594. show_hudmessage(id, "Add Admin access flags : ^"%s^"", gAdminTargetAccessFlags[id]);
  595.  
  596. menu_display(id, menu, 0);
  597. return 1;
  598. }
  599. public cmdSaveAdminModification(id)
  600. {
  601. static iFileP;
  602. iFileP = fopen(gAdminsFile, "rt");
  603.  
  604. static sBuffer[128], sTempAccount[4][STR_LEN];
  605. new i;
  606.  
  607. while(!feof(iFileP))
  608. {
  609. fgets(iFileP, sBuffer, sizeof sBuffer - 1);
  610.  
  611. i++;
  612.  
  613. if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
  614. continue;
  615.  
  616. parse(sBuffer, sTempAccount[0], sizeof sTempAccount[] - 1, sTempAccount[1], sizeof sTempAccount[] - 1, sTempAccount[2], sizeof sTempAccount[] - 1, sTempAccount[3], sizeof sTempAccount[] - 1);
  617.  
  618. for(new j = 0 ; j < sizeof sTempAccount ; j++)
  619. {
  620. remove_quotes(sTempAccount[j]);
  621. }
  622.  
  623. if(equali(sTempAccount[0], gAdminTargetDetails[id][0]))
  624. {
  625. formatex(sBuffer, sizeof sBuffer - 1, "^"%s^" ^"%s^" ^"%s%^" ^"%s^"", gAdminTargetAccount[id][0] ? gAdminTargetAccount[id] : sTempAccount[0], gAdminTargetPassword[id][0] ? gAdminTargetPassword[id] : sTempAccount[1], gAdminTargetFlags[id][0] ? gAdminTargetFlags[id] : sTempAccount[2], gAdminTargetAccessFlags[id][0] ? gAdminTargetAccessFlags[id] : sTempAccount[3]);
  626. write_file(gAdminsFile, sBuffer, i - 1);
  627. break;
  628. }
  629. }
  630. fclose(iFileP);
  631. client_print(id, print_chat, "Uspesno izmenjen admin ^"%s^"!", gAdminTargetDetails[id][0]);
  632. server_cmd("amx_reloadadmins");
  633.  
  634. formatex(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, "");
  635. formatex(gAdminTargetPassword[id], sizeof gAdminTargetPassword[] - 1, "");
  636. formatex(gAdminTargetAccessFlags[id], sizeof gAdminTargetAccessFlags[] - 1, "");
  637. formatex(gAdminTargetAccount[id], sizeof gAdminTargetAccount[] - 1, "");
  638.  
  639. return 1;
  640. }
  641. stock register_saycmd(saycommand[], function[], flags = -1, info[])
  642. {
  643. static sTemp[64];
  644. formatex(sTemp, sizeof sTemp - 1, "say /%s", saycommand);
  645. register_clcmd(sTemp, function, flags, info);
  646. formatex(sTemp, sizeof sTemp - 1, "say .%s", saycommand);
  647. register_clcmd(sTemp, function, flags, info);
  648. formatex(sTemp, sizeof sTemp - 1, "say_team /%s", saycommand);
  649. register_clcmd(sTemp, function, flags, info);
  650. formatex(sTemp, sizeof sTemp - 1, "say_team .%s", saycommand);
  651. register_clcmd(sTemp, function, flags, info);
  652. }
  653. stock str_piece(index, const input[], output[][][], outputsize, piecelen, token = '|')
  654. {
  655. new i = -1, pieces, len = -1;
  656.  
  657. while(input[++i] != 0)
  658. {
  659. if (input[i] != token)
  660. {
  661. if (++len < piecelen)
  662. output[index][pieces][len] = input[i];
  663. }
  664. else
  665. {
  666. output[index][pieces++][++len] = 0;
  667. len = -1;
  668.  
  669. if(pieces == outputsize)
  670. return pieces;
  671. }
  672. }
  673. return pieces + 1;
  674. }
Add Comment
Please, Sign In to add comment