Advertisement
Guest User

[FS]

a guest
Mar 30th, 2012
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 12.51 KB | None | 0 0
  1. #pragma tabsize 0
  2. #define FILTERSCRIPT
  3.  
  4. #include <a_samp>
  5. #include <dini>
  6. #define SCM SendClientMessage
  7. #define PlayerIsAdmin(%1) (PInfo[%1][Adminlevel] > 0 || IsPlayerAdmin(%1))
  8. #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  9.  
  10. #define GREY 0xAFAFAFAA
  11. #define GREEN 0x33AA33AA
  12. #define YELLOW 0xFFFF00AA
  13. #define WHITE 0xFFFFFFAA
  14. #define LIGHTBLUE 0x33CCFFAA
  15. #define ORANGE 0xFF9900AA
  16. enum gPInfo
  17. {
  18.     Logged,
  19.     Regged,
  20.     Viplevel,
  21.     Adminlevel,
  22.     level
  23. };
  24. new PInfo[MAX_PLAYERS][gPInfo];
  25. #if defined FILTERSCRIPT
  26.  
  27. public OnFilterScriptInit()
  28. {
  29.     print("\n--------------------------------------");
  30.     print("    Game Mode By Eddy");
  31.     print("--------------------------------------\n");
  32.     return 1;
  33. }
  34.  
  35. public OnFilterScriptExit()
  36. {
  37.     return 1;
  38. }
  39.  
  40. #else
  41.  
  42. main()
  43. {
  44.     print("\n----------------------------------");
  45.     print(" Blank Gamemode by your name here");
  46.     print("----------------------------------\n");
  47. }
  48.  
  49. #endif
  50.  
  51. public OnGameModeInit()
  52. {
  53.     // Don't use these lines if it's a filterscript
  54.     SetGameModeText("Blank Script");
  55.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  56.     return 1;
  57. }
  58.  
  59.  
  60. dcmd_setvip(playerid,params[])
  61. {
  62. new name[24],pname[24],string[128],viplevel,id;
  63. if(!PlayerIsAdmin(playerid)) return 0;
  64. if(sscanf(params,"ud",id,Viplevel)) {
  65. SCM(playerid,-1,"SYNTAX: /setvip [playerid/name] [level 0-4]");
  66. SCM(playerid,-1,"SYNTAX: , 1: Rat ,2: Tiger ,3: Lion ,4: SuperWooper");
  67. } else {
  68. if(!IsPlayerConnected(id)) return SCM(playerid,-1,"Player not connected.");
  69. if(viplevel > 4 || viplevel < 0) {
  70. SCM(playerid,-1,"SYNTAX: /setvip [playerid/name] [level 0-4]");
  71. SCM(playerid,-1,"SYNTAX: 1: Rat ,2: Tiger ,3: Lion ,4: SuperWooper");
  72. }
  73. GetPlayerName(playerid,name,24);
  74. GetPlayerName(id,pname,24);
  75. switch(viplevel)
  76. {
  77. case 0: format(string,sizeof(string),"%s(%d) is no more a VIP.",pname,id);
  78. case 1: format(string,sizeof(string),"You have set %s(%d)'s VIP status to: Rat.",pname,id);
  79. case 2: format(string,sizeof(string),"You have set %s(%d)'s VIP status to: Tiger.",pname,id);
  80. case 3: format(string,sizeof(string),"You have set %s(%d)'s VIP status to: Lion.",pname,id);
  81. case 4: format(string,sizeof(string),"You have set %s(%d)'s VIP status to: SuperWooper.",pname,id);
  82. }
  83. SendClientMessage(playerid,-1,string);
  84. switch(Viplevel)
  85. {
  86. case 0: format(string,sizeof(string),"%s(%d) has removed your VIP status.",name,playerid);
  87. case 1: format(string,sizeof(string),"%s(%d) has set your VIP status to: Rat.",name,playerid);
  88. case 2: format(string,sizeof(string),"%s(%d) has set your VIP status to: Tiger.",name,playerid);
  89. case 3: format(string,sizeof(string),"%s(%d) has set your VIP status to: Lion.",name,playerid);
  90. case 4: format(string,sizeof(string),"%s(%d) has set your VIP status to: SuperWooper.",name,playerid);
  91. }
  92. SendClientMessage(id,-1,string);
  93. PInfo[id][Viplevel] = Viplevel;
  94. }
  95. return 1;
  96. }
  97. //----------------------------------
  98. dcmd_viplocker(playerid,params[])
  99. {
  100. #pragma unused params
  101. if(PInfo[playerid][Viplevel] == 0) return SendClientMessage(playerid,-1, "lol go get some money to be a vip");
  102. ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Enjoy your Vip", "Health \nArmour \nMiniGun /n /nMore coming soon", "Okay", "Quit");
  103. return 1;
  104. }
  105.  
  106.  
  107. //========================= >>> REGISTER <<< =================================//
  108. dcmd_register(playerid,params[])
  109. {
  110.     new file[256],n[MAX_PLAYER_NAME];
  111.     GetPlayerName(playerid,n,MAX_PLAYER_NAME);
  112.     format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
  113.     if(dini_Exists(file)) return SendClientMessage(playerid,YELLOW,"You are already registered!");
  114.     if(PInfo[playerid][Regged] == 1) return SendClientMessage(playerid,LIGHTBLUE,"You are already registered!");
  115.     if(PInfo[playerid][Logged] == 1) return SendClientMessage(playerid,ORANGE,"You are already registered, and logged in!");
  116.     if(strlen(params))
  117.     {
  118.         if(!dini_Exists(file))
  119.         {
  120.             dini_Create(file);
  121.             dini_Set(file,"Password",params);
  122.             dini_IntSet(file,"Regged",1);
  123.             dini_IntSet(file,"Logged",0);
  124.             dini_IntSet(file,"level",0);
  125.             dini_IntSet(file,"Viplevel",0);
  126.             SendClientMessage(playerid,LIGHTBLUE,"Congratulations, you have just registered, please /login");
  127.             PInfo[playerid][Regged] = 1;
  128.             return 1;
  129.         }
  130.     }
  131.     else
  132.     {
  133.         SendClientMessage(playerid,GREY,"USAGE: /register <Password>");
  134.         return 1;
  135.     }
  136.     return 1;
  137. }
  138. //===========================>>> LOGIN <<<======================================
  139. dcmd_login(playerid,params[])
  140. {
  141.     new file[256],n[MAX_PLAYER_NAME];
  142.     GetPlayerName(playerid,n,MAX_PLAYER_NAME);
  143.     format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
  144.     if(!dini_Exists(file)) return SendClientMessage(playerid,YELLOW,"You are not registered! Please /register");
  145.     if(PInfo[playerid][Logged] == 1) return SendClientMessage(playerid,LIGHTBLUE,"You are already logged in!");
  146.     if(PInfo[playerid][Regged] == 0) return SendClientMessage(playerid,ORANGE,"You are not registered! Please /register");
  147.     if(strlen(params))
  148.     {
  149.         new pass[256];
  150.         pass = dini_Get(file,"Password");
  151.         if(dini_Exists(file))
  152.         {
  153.             if(strcmp(params,pass,false) != 0)
  154.             {
  155.                 SendClientMessage(playerid,YELLOW,"Wrong Password!");
  156.             }
  157.             else
  158.             {
  159.                 dini_IntSet(file,"Logged",1);
  160.                 PInfo[playerid][Logged] = 1;
  161.                 PInfo[playerid][level] = dini_Int(file,"level");
  162.                 PInfo[playerid][Viplevel] = dini_Int(file,"Viplevel");
  163.                 SendClientMessage(playerid,YELLOW,"You have now logged in!");
  164.                 return 1;
  165.             }
  166.         }
  167.     }
  168.     else
  169.     {
  170.         SendClientMessage(playerid,GREY,"USAGE: /login <Password>");
  171.         SendClientMessage(playerid,GREY,"Then Press Spawn");
  172.         return 1;
  173.     }
  174.     return 1;
  175. }
  176. public OnGameModeExit()
  177. {
  178.     return 1;
  179. }
  180.  
  181. public OnPlayerRequestClass(playerid, classid)
  182. {
  183.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  184.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  185.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  186.     return 1;
  187. }
  188.  
  189. public OnPlayerConnect(playerid)
  190. {
  191.     PInfo[playerid][Logged] = 0;
  192.     PInfo[playerid][Regged] = 0;
  193.     PInfo[playerid][Viplevel] = 0;
  194.     PInfo[playerid][level] = 0;
  195.     new n[MAX_PLAYER_NAME], file[256];
  196.     GetPlayerName(playerid,n,sizeof(n));
  197.     format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
  198.     if(dini_Exists(file))
  199.     {
  200.         SendClientMessage(playerid,LIGHTBLUE,"You are registered, Please /login!");
  201.         PInfo[playerid][Regged] = 1;
  202.         PInfo[playerid][Logged] = 0;
  203.         return 1;
  204.     }
  205.     if(!dini_Exists(file))
  206.     {
  207.         SendClientMessage(playerid,LIGHTBLUE,"You are not registered, Please /register!");
  208.         PInfo[playerid][Regged] = 0;
  209.         PInfo[playerid][Logged] = 0;
  210.         return 1;
  211.     }
  212.     return 1;
  213. }
  214.  
  215. public OnPlayerDisconnect(playerid, reason)
  216. {
  217.     new n[MAX_PLAYER_NAME], file[256];
  218.     GetPlayerName(playerid,n,sizeof(n));
  219.     format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
  220.     PInfo[playerid][Logged] = 0;
  221.     dini_IntSet(file,"Logged",0);
  222.     return 1;
  223. }
  224.  
  225.  
  226. public OnPlayerCommandText(playerid, cmdtext[])
  227. {
  228.     new cmd[256], idx;
  229.     cmd = strtok(cmdtext, idx);
  230.     dcmd(register,8,cmdtext);
  231.     dcmd(login,5,cmdtext);
  232.     dcmd(setvip,6,cmdtext);
  233.     dcmd(viplocker,9,cmdtext)
  234.     return 0;
  235. }
  236.  
  237.  
  238.  
  239. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  240. {
  241. if(response)
  242.     {
  243.     switch(dialogid)
  244.         {
  245.             case 1:
  246.             {
  247.                 switch(listitem)
  248.                 {
  249.                     case 0:
  250.                     {
  251.                         SetPlayerHealth(playerid, 100.0);
  252.                     }
  253.                     case 1:
  254.                     {
  255.                         SetPlayerArmour(playerid, 100.0);
  256.                     }
  257.                     case 2:
  258.                     {
  259.                         GivePlayerWeapon(playerid, 38, 5000);
  260.                     }
  261.                 }
  262.             }
  263.         }
  264.     }
  265. return 1;
  266. }
  267.  
  268.  
  269. stock sscanf(string[], format[], {Float,_}:...)
  270. {
  271.     #if defined isnull
  272.         if (isnull(string))
  273.     #else
  274.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  275.     #endif
  276.         {
  277.             return format[0];
  278.         }
  279.     #pragma tabsize 4
  280.     new
  281.         formatPos = 0,
  282.         stringPos = 0,
  283.         paramPos = 2,
  284.         paramCount = numargs(),
  285.         delim = ' ';
  286.     while (string[stringPos] && string[stringPos] <= ' ')
  287.     {
  288.         stringPos++;
  289.     }
  290.     while (paramPos < paramCount && string[stringPos])
  291.     {
  292.         switch (format[formatPos++])
  293.         {
  294.             case '\0':
  295.             {
  296.                 return 0;
  297.             }
  298.             case 'i', 'd':
  299.             {
  300.                 new
  301.                     neg = 1,
  302.                     num = 0,
  303.                     ch = string[stringPos];
  304.                 if (ch == '-')
  305.                 {
  306.                     neg = -1;
  307.                     ch = string[++stringPos];
  308.                 }
  309.                 do
  310.                 {
  311.                     stringPos++;
  312.                     if ('0' <= ch <= '9')
  313.                     {
  314.                         num = (num * 10) + (ch - '0');
  315.                     }
  316.                     else
  317.                     {
  318.                         return -1;
  319.                     }
  320.                 }
  321.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  322.                 setarg(paramPos, 0, num * neg);
  323.             }
  324.             case 'h', 'x':
  325.             {
  326.                 new
  327.                     num = 0,
  328.                     ch = string[stringPos];
  329.                 do
  330.                 {
  331.                     stringPos++;
  332.                     switch (ch)
  333.                     {
  334.                         case 'x', 'X':
  335.                         {
  336.                             num = 0;
  337.                             continue;
  338.                         }
  339.                         case '0' .. '9':
  340.                         {
  341.                             num = (num << 4) | (ch - '0');
  342.                         }
  343.                         case 'a' .. 'f':
  344.                         {
  345.                             num = (num << 4) | (ch - ('a' - 10));
  346.                         }
  347.                         case 'A' .. 'F':
  348.                         {
  349.                             num = (num << 4) | (ch - ('A' - 10));
  350.                         }
  351.                         default:
  352.                         {
  353.                             return -1;
  354.                         }
  355.                     }
  356.                 }
  357.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  358.                 setarg(paramPos, 0, num);
  359.             }
  360.             case 'c':
  361.             {
  362.                 setarg(paramPos, 0, string[stringPos++]);
  363.             }
  364.             case 'f':
  365.             {
  366.                 setarg(paramPos, 0, _:floatstr(string[stringPos]));
  367.             }
  368.             case 'p':
  369.             {
  370.                 delim = format[formatPos++];
  371.                 continue;
  372.             }
  373.             case '\'':
  374.             {
  375.                 new
  376.                     end = formatPos - 1,
  377.                     ch;
  378.                 while ((ch = format[++end]) && ch != '\'') {}
  379.                 if (!ch)
  380.                 {
  381.                     return -1;
  382.                 }
  383.                 format[end] = '\0';
  384.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  385.                 {
  386.                     if (format[end + 1])
  387.                     {
  388.                         return -1;
  389.                     }
  390.                     return 0;
  391.                 }
  392.                 format[end] = '\'';
  393.                 stringPos = ch + (end - formatPos);
  394.                 formatPos = end + 1;
  395.             }
  396.             case 'u':
  397.             {
  398.                 new
  399.                     end = stringPos - 1,
  400.                     id = 0,
  401.                     bool:num = true,
  402.                     ch;
  403.                 while ((ch = string[++end]) && ch != delim)
  404.                 {
  405.                     if (num)
  406.                     {
  407.                         if ('0' <= ch <= '9')
  408.                         {
  409.                             id = (id * 10) + (ch - '0');
  410.                         }
  411.                         else
  412.                         {
  413.                             num = false;
  414.                         }
  415.                     }
  416.                 }
  417.                 if (num && IsPlayerConnected(id))
  418.                 {
  419.                     setarg(paramPos, 0, id);
  420.                 }
  421.                 else
  422.                 {
  423.                     #if !defined foreach
  424.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  425.                         #define __SSCANF_FOREACH__
  426.                     #endif
  427.                     string[end] = '\0';
  428.                     num = false;
  429.                     new
  430.                         name[MAX_PLAYER_NAME];
  431.                     id = end - stringPos;
  432.                     foreach (Player, playerid)
  433.                     {
  434.                         GetPlayerName(playerid, name, sizeof (name));
  435.                         if (!strcmp(name, string[stringPos], true, id))
  436.                         {
  437.                             setarg(paramPos, 0, playerid);
  438.                             num = true;
  439.                             break;
  440.                         }
  441.                     }
  442.                     if (!num)
  443.                     {
  444.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  445.                     }
  446.                     string[end] = ch;
  447.                     #if defined __SSCANF_FOREACH__
  448.                         #undef foreach
  449.                         #undef __SSCANF_FOREACH__
  450.                     #endif
  451.                 }
  452.                 stringPos = end;
  453.             }
  454.             case 's', 'z':
  455.             {
  456.                 new
  457.                     i = 0,
  458.                     ch;
  459.                 if (format[formatPos])
  460.                 {
  461.                     while ((ch = string[stringPos++]) && ch != delim)
  462.                     {
  463.                         setarg(paramPos, i++, ch);
  464.                     }
  465.                     if (!i)
  466.                     {
  467.                         return -1;
  468.                     }
  469.                 }
  470.                 else
  471.                 {
  472.                     while ((ch = string[stringPos++]))
  473.                     {
  474.                         setarg(paramPos, i++, ch);
  475.                     }
  476.                 }
  477.                 stringPos--;
  478.                 setarg(paramPos, i, '\0');
  479.             }
  480.             default:
  481.             {
  482.                 continue;
  483.             }
  484.         }
  485.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  486.         {
  487.             stringPos++;
  488.         }
  489.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  490.         {
  491.             stringPos++;
  492.         }
  493.         paramPos++;
  494.     }
  495.     do
  496.     {
  497.         if ((delim = format[formatPos++]) > ' ')
  498.         {
  499.             if (delim == '\'')
  500.             {
  501.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  502.             }
  503.             else if (delim != 'z')
  504.             {
  505.                 return delim;
  506.             }
  507.         }
  508.     }
  509.     while (delim > ' ');
  510.     return 0;
  511. }
  512.  
  513.  
  514. //--------------------------------
  515. strtok(const string[], &index)
  516. {
  517.     new length = strlen(string);
  518.     while ((index < length) && (string[index] <= ' '))
  519.     {
  520.         index++;
  521.     }
  522.     new offset = index;
  523.     new result[20];
  524.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  525.     {
  526.         result[index - offset] = string[index];
  527.         index++;
  528.     }
  529.     result[index - offset] = EOS;
  530.     return result;
  531. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement