BulletRja

Dynamic BR Rules System

Dec 25th, 2017
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.37 KB | None | 0 0
  1. /*
  2.   //////////////////////     ///////////////////
  3.   //                  //     //               //
  4.   //                  //     //               //
  5.   //                  //     //               //
  6.   //                  //     //               //
  7.   //                  //     //         //////
  8.   /////////////////////      ////////////
  9.   //                  //     //         //
  10.   //                  //     //          //
  11.   //                  //     //           //
  12.   //                  //     //            //
  13.   //                  //     //             //
  14.   /////////////////////      //              //
  15.   Bullet                      RAJA                  &          Wherethescripters
  16.   cyber_punk: Merandom
  17.   Zeex: ZCMD
  18.   Incognito:  sscanf2
  19. */
  20. //Merandom Download http://forum.sa-mp.com/showthread.php?t=109196
  21. #define FILTERSCRIPT
  22.  
  23. #include <a_samp>
  24. #include <sscanf2>
  25. #include <Dini>
  26. #include <zcmd>
  27. //#include <merrandom>
  28. /* Dialogs */
  29. #define    DIALOG_RULES                          1
  30. #define DIALOG_RULE_DELETE                    2
  31. #define DIALOG_RULE_DELETE_CONFIRM            3
  32. #define DIALOG_RULE_VIEW                      4
  33.  
  34. /* Defines */
  35. #define     MAX_RULES               10
  36.  
  37. /* folders & files */
  38. #define rulesfolder "R"
  39. #define rules       "rules"
  40.  
  41. /* COLORS */
  42. #define COLOR_WHITE 0xFFFFFFFF
  43. #define COLOR_YELLOW 0xFFFF00FF
  44. #define COLOR_RED 0xFF0000FF
  45. #define COLOR_ORANGE 0xFF9900FF
  46.  
  47. /* Automatic Rules Sending System */
  48. /*forward rulestimer();
  49. public rulestimer()
  50. {
  51.     new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  52.     if (bb == 0) return 1;
  53.     new tmp[6];
  54.     for (new i = 0; i < MAX_PLAYERS; i++) {
  55.         if (IsPlayerConnected(i)) {
  56.             format(tmp, 6, "rule%d", MRandom(bb)+1);
  57.             ReturnMessage(i, COLOR_YELLOW, "Rule: {FF0000}%s.", dini_Get(PlaceDirectory(rulesfolder, rules), tmp), "");
  58.         }
  59.     }
  60.     return 1;
  61. }*/
  62. stock ToggleRules(playerid)
  63. {
  64.     new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  65.     if (bb == 1)
  66.     {
  67.      new tmp[6];
  68.      for (new i = 0; i < MAX_PLAYERS; i++)
  69.      {
  70.       if (IsPlayerConnected(i))
  71.        {
  72.             format(tmp, 6, "rule%d", MRandom(bb)+1);
  73.             ReturnMessage(i, COLOR_YELLOW, "Rule: {FF0000}%s.", dini_Get(PlaceDirectory(rulesfolder, rules), tmp), "");
  74.        }
  75.      }
  76.     }
  77.     return 1;
  78. }
  79. /*         Directory For Files     */
  80. PlaceDirectory(directory[], filename[])
  81. {
  82.     new newname[128];
  83.     format(newname, sizeof(newname), "%s/%c/%s.ini", directory, filename[0] != '.' ? filename[0] : '#', filename);
  84.     return newname;
  85. }
  86. ReturnMessage(playerid, color, str[], msg[], msg2[])
  87. {
  88.     new pstr[256];
  89.     format(pstr, 256, str, msg, msg2);
  90.     SendClientMessage(playerid, color, pstr);
  91.     return 1;
  92. }
  93.  
  94. ReturnAll(color, str[], msg[], msg2[])
  95. {
  96.     new pstr[256];
  97.     format(pstr, 256, str, msg, msg2);
  98.     SendClientMessageToAll(color, pstr);
  99.     return 1;
  100. }
  101. public OnFilterScriptInit()
  102. {
  103.     print("\n--------------------------------------");
  104.     print(" Script by Bulletraja & Wherethescripts");
  105.     print("--------------------------------------\n");
  106.     SetTimer("ToggleRules", 300000, 1);
  107.     return 1;
  108. }
  109.  
  110. public OnFilterScriptExit()
  111. {
  112.     return 1;
  113. }
  114.  
  115. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  116. {
  117.     new tmp2[256], tmp[256];
  118.     if (dialogid == DIALOG_RULE_DELETE)
  119.     {
  120.         if (response)
  121.         {
  122.             SetPVarInt(playerid, "ruleselect", listitem+1);
  123.             format(tmp, 6, "rule%d", listitem+1);
  124.             if (!dini_Isset(PlaceDirectory(rulesfolder, rules), tmp))
  125.                 return SendClientMessage(playerid, COLOR_RED, "Rule doesn't exist.");
  126.             format(tmp2, sizeof(tmp2), "%s.\n\nDo you want to delete this rule?", dini_Get(PlaceDirectory(rulesfolder, rules), tmp));
  127.             ShowPlayerDialog(playerid, DIALOG_RULE_DELETE_CONFIRM, DIALOG_STYLE_MSGBOX, "Delete rule", tmp2, "Delete", "Cancel");
  128.         }
  129.         return 1;
  130.     }
  131.     if (dialogid == DIALOG_RULE_DELETE_CONFIRM)
  132.     {
  133.         if (response)
  134.         {
  135.             format(tmp, 6, "rule%d", GetPVarInt(playerid, "ruleselect"));
  136.             if (!dini_Isset(PlaceDirectory(rulesfolder, rules), tmp))
  137.                 return SendClientMessage(playerid, COLOR_RED, "Rule doesn't exist.");
  138.             new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  139.             if (GetPVarInt(playerid, "ruleselect") != bb) {
  140.                 format(tmp2, 6, "rule%d", bb);
  141.                 dini_Set(PlaceDirectory(rulesfolder, rules), tmp, dini_Get(PlaceDirectory(rulesfolder, rules), tmp2));
  142.                 dini_Unset(PlaceDirectory(rulesfolder, rules), tmp2);
  143.             }
  144.             else {
  145.                 dini_Unset(PlaceDirectory(rulesfolder, rules), tmp);
  146.             }
  147.             dini_IntSet(PlaceDirectory(rulesfolder, rules), "rules", bb-1);
  148.             SendClientMessage(playerid, COLOR_ORANGE, "Rule deleted.");
  149.         }
  150.         else {
  151.             new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  152.             new tmp3[2048];
  153.             for (new t = 1; t <= bb; t++) {
  154.                 format(tmp2, 6, "rule%d", t);
  155.                 format(tmp2, sizeof(tmp2), "%s", dini_Get(PlaceDirectory(rulesfolder, rules), tmp2));
  156.                 if (strlen(tmp2) > 64) {
  157.                     strmid(tmp2, tmp2, 0, 61);
  158.                     format(tmp2, sizeof(tmp2), "%s...", tmp2);
  159.                 }
  160.                 format(tmp3, sizeof(tmp3), "%s%s\n", tmp3, tmp2);
  161.             }
  162.             ShowPlayerDialog(playerid, DIALOG_RULE_DELETE, DIALOG_STYLE_LIST, "Rules", tmp3, "Select", "Cancel");
  163.         }
  164.         return 1;
  165.     }
  166.     if (dialogid == DIALOG_RULES)
  167.     {
  168.         if (response)
  169.         {
  170.         }
  171.         return 1;
  172.     }
  173.     if (dialogid == DIALOG_RULE_VIEW)
  174.     {
  175.         if (response)
  176.         {
  177.             new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  178.             if (bb == 0)
  179.                 return SendClientMessage(playerid, COLOR_RED, "There are no rules created.");
  180.             new tmp3[2048];
  181.             for (new t = 1; t <= bb; t++) {
  182.                 format(tmp2, 6, "rule%d", t);
  183.                 format(tmp2, sizeof(tmp2), "%s", dini_Get(PlaceDirectory(rulesfolder, rules), tmp2));
  184.                 if (strlen(tmp2) > 64) {
  185.                     strmid(tmp2, tmp2, 0, 61);
  186.                     format(tmp2, sizeof(tmp2), "%s...", tmp2);
  187.                 }
  188.                 format(tmp3, sizeof(tmp3), "%s%s\n", tmp3, tmp2);
  189.             }
  190.             ShowPlayerDialog(playerid, DIALOG_RULES, DIALOG_STYLE_LIST, "Rules", tmp3, "Select", "Cancel");
  191.         }
  192.         return 1;
  193.     }
  194.     return 1;
  195. }
  196.  
  197. CMD:rules(playerid, params[])
  198. {
  199.     new tmp[256];
  200.     new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  201.     if (bb == 0) return SendClientMessage(playerid, COLOR_RED, "There are no rules created.");
  202.     new tmp3[2048];
  203.     for (new t = 1; t <= bb; t++)
  204.     {
  205.         format(tmp, 6, "rule%d", t);
  206.         format(tmp, sizeof(tmp), "%s", dini_Get(PlaceDirectory(rulesfolder, rules), tmp));
  207.         format(tmp3, sizeof(tmp3), "%s%s\n", tmp3, tmp);
  208.     }
  209.     ShowPlayerDialog(playerid, DIALOG_RULES, DIALOG_STYLE_MSGBOX, "Rules", tmp3, "Accept", "");
  210.     return 1;
  211. }
  212. CMD:addrule(playerid, params[])
  213. {
  214.     new tmp[256], tmp2[256], playername[25];
  215.  
  216.     if (sscanf(params, "s[128]", tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /addrule [rule]");
  217.     new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  218.     if (bb == MAX_RULES)
  219.     {
  220.         format(tmp2, sizeof(tmp2), "Error: You have created the maximum of %d rules.", MAX_RULES);
  221.         SendClientMessage(playerid, COLOR_RED, tmp2);
  222.         return 1;
  223.     }
  224.     dini_IntSet(PlaceDirectory(rulesfolder, rules), "rules", bb+1);
  225.     format(tmp2, 6, "rule%d", bb+1);
  226.     dini_Set(PlaceDirectory(rulesfolder, rules), tmp2, tmp);
  227.     ReturnMessage(playerid, COLOR_ORANGE, "Rule '%s' created.", tmp, "");
  228.     GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  229.     ReturnAll(COLOR_YELLOW, "%s has added a new rule. Type /rules to view the list of rules.", playername, "");
  230.     return 1;
  231. }
  232. CMD:delrule(playerid, params[])
  233. {
  234.     new tmp[256];
  235.     new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  236.     if (bb == 0) return SendClientMessage(playerid, COLOR_RED, "There are no rules created.");
  237.     new tmp3[2048];
  238.     for (new t = 1; t <= bb; t++)
  239.     {
  240.         format(tmp, 6, "rule%d", t);
  241.         format(tmp, sizeof(tmp), "%s", dini_Get(PlaceDirectory(rulesfolder, rules), tmp));
  242.         if (strlen(tmp) > 64)
  243.         {
  244.             strmid(tmp, tmp, 0, 61);
  245.             format(tmp, sizeof(tmp), "%s...", tmp);
  246.         }
  247.         format(tmp3, sizeof(tmp3), "%s%s\n", tmp3, tmp);
  248.     }
  249.     ShowPlayerDialog(playerid, DIALOG_RULE_DELETE, DIALOG_STYLE_LIST, "Rules", tmp3, "Select", "Cancel");
  250.     return 1;
  251. }
  252. CMD:togglerules(playerid , params[])
  253. {
  254.     new bb = dini_Int(PlaceDirectory(rulesfolder, rules), "rules");
  255.     if(bb == 0)
  256.     {
  257.         SendClientMessage(playerid, COLOR_RED, "You have turned ON Server Rules.");
  258.         dini_IntSet(PlaceDirectory(rulesfolder, rules), "rules", 1);
  259.         return 1;
  260.     }
  261.     if(bb == 1)
  262.     {
  263.         SendClientMessage(playerid, COLOR_RED, "You have turned OFF Server Rules.");
  264.         dini_IntSet(PlaceDirectory(rulesfolder, rules), "rules", 0);
  265.         return 1;
  266.     }
  267.     return 1;
  268. }
Add Comment
Please, Sign In to add comment