Advertisement
Guest User

Untitled

a guest
Jun 4th, 2010
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 14.14 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  4. new Float:JailCellSpawns[][3] =
  5. {
  6.     {197.3941,162.4637,1003.0300},
  7.     {194.3641,175.6378,1003.0234},
  8.     {197.8117,174.2043,1003.0234}
  9. };
  10.  
  11. forward UnJail(playerid);
  12.  
  13. new InJail[MAX_PLAYERS];
  14. new PlayersTicket[MAX_PLAYERS];
  15.  
  16. public OnFilterScriptInit()
  17. {
  18.     print("\n--------------------------------------");
  19.     print(" Jail System by: KAR!");
  20.     print("--------------------------------------\n");
  21.     return 1;
  22. }
  23.  
  24. public OnFilterScriptExit()
  25. {
  26.     return 1;
  27. }
  28. public OnPlayerSpawn(playerid)
  29. {
  30.     SetPlayerVirtualWorld(playerid, 0);
  31.     SetPlayerInterior(playerid, 0);
  32.     if(InJail[playerid] == 1)
  33.     {
  34.         new rand = random(sizeof(JailCellSpawns));
  35.         SetPlayerPos(playerid, JailCellSpawns[rand][0], JailCellSpawns[rand][1], JailCellSpawns[rand][2]);
  36.         SendClientMessage(playerid, 0xFF0000AA, "Dying Wont Evade You From Escaping Out Of Jail!");
  37.         return 1;
  38.     }
  39.     return 1;
  40. }
  41. public OnPlayerConnect(playerid)
  42. {
  43.     InJail[playerid] = 0;
  44.     return 1;
  45. }
  46.  
  47. public OnPlayerDeath(playerid, killerid, reason)
  48. {
  49.     return 1;
  50. }
  51.  
  52. public OnPlayerCommandText(playerid, cmdtext[])
  53. {
  54.     dcmd(tk,2,cmdtext);
  55.     dcmd(ticket,6,cmdtext);
  56.     dcmd(ar,2,cmdtext);
  57.     dcmd(jail,4,cmdtext);
  58.     dcmd(arrest,6,cmdtext);
  59.     dcmd(copcmds,7,cmdtext);
  60.     if (InJail[playerid] == 1)
  61.     {
  62.         SendClientMessage(playerid, 0xFF0000AA, "Your Commands Have been Disabled While In Jail!");
  63.         return 0;
  64.     }
  65.     return 0;
  66. }
  67.  
  68.  
  69. public UnJail(playerid)
  70. {
  71.     SpawnPlayer(playerid);
  72.     SendClientMessage(playerid, 0xFF0000AA, "You Have Been Released From Jail!");
  73.     InJail[playerid] = 0;
  74.     return 1;
  75. }
  76.  
  77. dcmd_tk(playerid,params[])
  78. {
  79.     new idx,giveplayerid;
  80.     new tmp[128];
  81.     new pskin = GetPlayerSkin(playerid);
  82.     if(pskin == 265 || pskin == 266 || pskin == 267 || pskin == 280 || pskin == 281 || pskin == 284 || pskin == 285 || pskin == 286 || pskin == 287 || pskin == 288)
  83.     {
  84.         tmp = strtok(params,idx);
  85.         if(!strlen(tmp)) return SendClientMessage(playerid, 0xFF0000AA, "Usage: /tk [ID]");
  86.         giveplayerid = strval(tmp)
  87.         else if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, 0xFF0000AA, "The ID You Entered Was Not Found.");
  88.         else
  89.         {
  90.                     new Float:x, Float:y, Float:z;
  91.                     GetPlayerPos(giveplayerid, x, y, z);
  92.                     if(IsPlayerInRangeOfPoint(playerid, 12.0, x, y, z))
  93.                     {
  94.                         new pname[MAX_PLAYER_NAME], aname[MAX_PLAYER_NAME], string1[128];
  95.                         GetPlayerName(playerid, pname, sizeof(pname));  //cop name
  96.                         GetPlayerName(giveplayerid, aname, sizeof(aname)); //criminal
  97.                         if (GetPlayerWantedLevel(giveplayerid) == 0)
  98.                         {
  99.                             SendClientMessage(playerid, 0xFF0000AA, "This Player Is Not Wanted!");
  100.                             return 1;
  101.                         }
  102.  
  103.                         else if (GetPlayerWantedLevel(giveplayerid) == 1)
  104.                         {
  105.                             SetPlayerScore(playerid,GetPlayerScore(playerid)+1);
  106.                             new rmoney = random(1000);
  107.                             rmoney = rmoney + 500;
  108.                             PlayersTicket[giveplayerid] += rmoney;
  109.                             format(string1, sizeof(string1), "%s(%d) Has Been Fined %d Ticket Isued!", aname, giveplayerid, rmoney);
  110.                             SendClientMessage(playerid,0xFF0000AA, string1);
  111.                             SetPlayerWantedLevel(giveplayerid, 0);
  112.                             format(string1, sizeof(string1), "%s(%d) Has Been Fined %d by %s Because You Were Just Ticketed!", aname, giveplayerid, rmoney,pname);//<--- prob want rmoney here too
  113.                             SendClientMessage(giveplayerid,0xFF0000AA, string1);
  114.                             return 1;
  115.                         }
  116.                         else if (GetPlayerWantedLevel(giveplayerid) > 1)
  117.                         {
  118.                             SendClientMessage(playerid, 0xFF0000AA, "Error: this player has to be arrested use /ar");
  119.                             return 1;
  120.                         }
  121.                     }
  122.                 }
  123.             }
  124.             else
  125.             {
  126.                 return SendClientMessage(playerid, 0xFF0000AA, "Error: You are not a police officer!");
  127.             }
  128.     return 1;
  129. }
  130.  
  131. dcmd_ticket(playerid,params[])
  132. {
  133.     return dcmd_tk(playerid, params);
  134. }
  135.  
  136. dcmd_ar(playerid,params[])
  137. {
  138.     new pskin = GetPlayerSkin(playerid);
  139.     if(pskin == 265 || pskin == 266 || pskin == 267 || pskin == 280 || pskin == 281 || pskin == 284 || pskin == 285 || pskin == 286 || pskin == 287 || pskin == 288)
  140.     {
  141.         if(sscanf(params, "d", playerid)) return SendClientMessage(playerid, 0xFF0000AA, "Usage: /ar [ID]");
  142.             else if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "The ID You Entered Was Not Found.");
  143.                 else
  144.                 {
  145.                     new Float:x, Float:y, Float:z;
  146.                     GetPlayerPos(playerid, x, y, z);
  147.                     if(IsPlayerInRangeOfPoint(playerid, 12.0, x, y, z))
  148.                     {
  149.                         new pname[MAX_PLAYER_NAME], aname[MAX_PLAYER_NAME], string1[250];
  150.                         GetPlayerName(playerid, pname, sizeof(pname));
  151.                         GetPlayerName(playerid, aname, sizeof(aname));
  152.                         if (GetPlayerWantedLevel(playerid) == 0)
  153.                         {
  154.                             SendClientMessage(playerid, 0xFF0000AA, "This Player Is Not Wanted!");
  155.                             return 1;
  156.                         }
  157.                         else if (GetPlayerWantedLevel(playerid) == 1)
  158.                         {
  159.                             SendClientMessage(playerid, 0xFF0000AA, "Error: this player has to high of a wanted level use /tk");
  160.                             return 1;
  161.                         }
  162.                         else if (GetPlayerWantedLevel(playerid) > 1)
  163.                         {
  164.                             SetPlayerScore(playerid,GetPlayerScore(playerid)+1);
  165.                             new WantedLevel = GetPlayerWantedLevel(playerid);
  166.                             SetPlayerInterior(playerid, 3);
  167.                             new rand = random(sizeof(JailCellSpawns));
  168.                             SetPlayerPos(playerid, JailCellSpawns[rand][0], JailCellSpawns[rand][1], JailCellSpawns[rand][2]);
  169.                             SetTimerEx("UnJail",WantedLevel*1000*60,0,"i",playerid);
  170.                             InJail[playerid] = 1;
  171.                             GivePlayerMoney(playerid, -WantedLevel*1000);
  172.                             GivePlayerMoney(playerid, WantedLevel*1000);
  173.                             SetPlayerWantedLevel(playerid, 0);
  174.                             format(string1, sizeof(string1), "%s(%d) Has Been Arrested By Officer %s(%d)", aname, playerid, pname, playerid);
  175.                             SendClientMessageToAll(0xFF0000AA, string1);
  176.                             format(string1, sizeof(string1), "You Have Been Sent To Jail For %s Minuets For Having A Level %s Wanted Level!", WantedLevel, WantedLevel);
  177.                             SendClientMessage(playerid, 0xFF0000AA, string1);
  178.                             format(string1, sizeof(string1), "You Have Recieved A %s000 Bonus For Arresting A Level %s Suspect!", WantedLevel, WantedLevel);
  179.                             SendClientMessage(playerid, 0xFF0000AA, string1);
  180.                             format(string1, sizeof(string1), "You Have Payed A %s000 Penalty On Your Arrest For Having A %s Wanted Level!", WantedLevel, WantedLevel);
  181.                             SendClientMessage(playerid, 0xFF0000AA, string1);
  182.                             return 1;
  183.                         }
  184.                     }
  185.                 }
  186.    }
  187.             else
  188.             {
  189.                 return SendClientMessage(playerid, 0xFF0000AA, "Error: You are not a police officer!");
  190.             }
  191.     return 1;
  192. }
  193.  
  194. dcmd_jail(playerid,params[])
  195. {
  196.     if(IsPlayerAdmin(playerid))
  197.     {
  198.         new time;
  199.         if(sscanf(params, "dds", playerid, time, params[3])) return SendClientMessage(playerid, 0xFF0000AA, "Usage: /jail [ID] [time in minuets][reason]");
  200.             else if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "The ID You Entered Was Not Found.");
  201.                 else
  202.                 {
  203.                     SetPlayerScore(playerid,GetPlayerScore(playerid)+1);
  204.                     new pname[MAX_PLAYER_NAME], jname[MAX_PLAYER_NAME], string1[250];
  205.                     GetPlayerName(playerid, pname, sizeof(pname));
  206.                     GetPlayerName(playerid, jname, sizeof(jname));
  207.                     SetPlayerInterior(playerid, 3);
  208.                     new rand = random(sizeof(JailCellSpawns));
  209.                     SetPlayerPos(playerid, JailCellSpawns[rand][0], JailCellSpawns[rand][1], JailCellSpawns[rand][2]);
  210.                     SetTimerEx("UnJail",time*1000*60,0,"i",playerid);
  211.                     InJail[playerid] = 1;
  212.                     SetPlayerWantedLevel(playerid, 0);
  213.                     format(string1, sizeof(string1), "%s(%d) Has Been Jailed By Admin %s(%d) For Reason: %s", jname, playerid, pname, playerid, params[3]);
  214.                     SendClientMessageToAll(0xFF0000AA, string1);
  215.                     return 1;
  216.                 }
  217.       }
  218.       else
  219.             {
  220.           return 0;
  221.             }
  222. }
  223.  
  224. dcmd_arrest(playerid,params[])
  225. {
  226.     return dcmd_tk(playerid, params);
  227. }
  228.  
  229. dcmd_copcmds(playerid,params[])
  230. {
  231.     #pragma unused params
  232.     new pskin = GetPlayerSkin(playerid);
  233.     if(pskin == 265 || pskin == 266 || pskin == 267 || pskin == 280 || pskin == 281 || pskin == 284 || pskin == 285 || pskin == 286 || pskin == 287 || pskin == 288)
  234.     {
  235.         SendClientMessage(playerid, 0xFF0000AA, "Current Cop Commands!");
  236.         SendClientMessage(playerid, 0xFF0000AA, "/arrest - /ar - /ticket - /tk");
  237.         SendClientMessage(playerid, 0xFF0000AA, "Admin Cop Commands!");
  238.         SendClientMessage(playerid, 0xFF0000AA, "/jail");
  239.         return 1;
  240.     }
  241.     else
  242.     {
  243.         return SendClientMessage(playerid, 0xFF0000AA, "Error: You are not a police officer!");
  244.     }
  245. }
  246.  
  247. //!!!!!!!!!!!!!!!!!!!!!!!!!THIS MUST BE AT THE BOTTOM OF THE SCRIPT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  248.  
  249. //------------------[SSCANF]-------------------------------------
  250. stock sscanf(string[], format[], {Float,_}:...)
  251. {
  252.     #if defined isnull
  253.         if (isnull(string))
  254.     #else
  255.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  256.     #endif
  257.         {
  258.             return format[0];
  259.         }
  260.     #pragma tabsize 4
  261.     new
  262.         formatPos = 0,
  263.         stringPos = 0,
  264.         paramPos = 2,
  265.         paramCount = numargs(),
  266.         delim = ' ';
  267.     while (string[stringPos] && string[stringPos] <= ' ')
  268.     {
  269.         stringPos++;
  270.     }
  271.     while (paramPos < paramCount && string[stringPos])
  272.     {
  273.         switch (format[formatPos++])
  274.         {
  275.             case '\0':
  276.             {
  277.                 return 0;
  278.             }
  279.             case 'i', 'd':
  280.             {
  281.                 new
  282.                     neg = 1,
  283.                     num = 0,
  284.                     ch = string[stringPos];
  285.                 if (ch == '-')
  286.                 {
  287.                     neg = -1;
  288.                     ch = string[++stringPos];
  289.                 }
  290.                 do
  291.                 {
  292.                     stringPos++;
  293.                     if ('0' <= ch <= '9')
  294.                     {
  295.                         num = (num * 10) + (ch - '0');
  296.                     }
  297.                     else
  298.                     {
  299.                         return -1;
  300.                     }
  301.                 }
  302.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  303.                 setarg(paramPos, 0, num * neg);
  304.             }
  305.             case 'h', 'x':
  306.             {
  307.                 new
  308.                     num = 0,
  309.                     ch = string[stringPos];
  310.                 do
  311.                 {
  312.                     stringPos++;
  313.                     switch (ch)
  314.                     {
  315.                         case 'x', 'X':
  316.                         {
  317.                             num = 0;
  318.                             continue;
  319.                         }
  320.                         case '0' .. '9':
  321.                         {
  322.                             num = (num << 4) | (ch - '0');
  323.                         }
  324.                         case 'a' .. 'f':
  325.                         {
  326.                             num = (num << 4) | (ch - ('a' - 10));
  327.                         }
  328.                         case 'A' .. 'F':
  329.                         {
  330.                             num = (num << 4) | (ch - ('A' - 10));
  331.                         }
  332.                         default:
  333.                         {
  334.                             return -1;
  335.                         }
  336.                     }
  337.                 }
  338.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  339.                 setarg(paramPos, 0, num);
  340.             }
  341.             case 'c':
  342.             {
  343.                 setarg(paramPos, 0, string[stringPos++]);
  344.             }
  345.             case 'f':
  346.             {
  347.  
  348.                 new changestr[16], changepos = 0, strpos = stringPos;
  349.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  350.                 {
  351.                     changestr[changepos++] = string[strpos++];
  352.                     }
  353.                 changestr[changepos] = '\0';
  354.                 setarg(paramPos,0,_:floatstr(changestr));
  355.             }
  356.             case 'p':
  357.             {
  358.                 delim = format[formatPos++];
  359.                 continue;
  360.             }
  361.             case '\'':
  362.             {
  363.                 new
  364.                     end = formatPos - 1,
  365.                     ch;
  366.                 while ((ch = format[++end]) && ch != '\'') {}
  367.                 if (!ch)
  368.                 {
  369.                     return -1;
  370.                 }
  371.                 format[end] = '\0';
  372.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  373.                 {
  374.                     if (format[end + 1])
  375.                     {
  376.                         return -1;
  377.                     }
  378.                     return 0;
  379.                 }
  380.                 format[end] = '\'';
  381.                 stringPos = ch + (end - formatPos);
  382.                 formatPos = end + 1;
  383.             }
  384.             case 'u':
  385.             {
  386.                 new
  387.                     end = stringPos - 1,
  388.                     id = 0,
  389.                     bool:num = true,
  390.                     ch;
  391.                 while ((ch = string[++end]) && ch != delim)
  392.                 {
  393.                     if (num)
  394.                     {
  395.                         if ('0' <= ch <= '9')
  396.                         {
  397.                             id = (id * 10) + (ch - '0');
  398.                         }
  399.                         else
  400.                         {
  401.                             num = false;
  402.                         }
  403.                     }
  404.                 }
  405.                 if (num && IsPlayerConnected(id))
  406.                 {
  407.                     setarg(paramPos, 0, id);
  408.                 }
  409.                 else
  410.                 {
  411.                     #if !defined foreach
  412.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  413.                         #define __SSCANF_FOREACH__
  414.                     #endif
  415.                     string[end] = '\0';
  416.                     num = false;
  417.                     new
  418.                         name[MAX_PLAYER_NAME];
  419.                     id = end - stringPos;
  420.                     foreach (Player, playerid)
  421.                     {
  422.                         GetPlayerName(playerid, name, sizeof (name));
  423.                         if (!strcmp(name, string[stringPos], true, id))
  424.                         {
  425.                             setarg(paramPos, 0, playerid);
  426.                             num = true;
  427.                             break;
  428.                         }
  429.                     }
  430.                     if (!num)
  431.                     {
  432.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  433.                     }
  434.                     string[end] = ch;
  435.                     #if defined __SSCANF_FOREACH__
  436.                         #undef foreach
  437.                         #undef __SSCANF_FOREACH__
  438.                     #endif
  439.                 }
  440.                 stringPos = end;
  441.             }
  442.             case 's', 'z':
  443.             {
  444.                 new
  445.                     i = 0,
  446.                     ch;
  447.                 if (format[formatPos])
  448.                 {
  449.                     while ((ch = string[stringPos++]) && ch != delim)
  450.                     {
  451.                         setarg(paramPos, i++, ch);
  452.                     }
  453.                     if (!i)
  454.                     {
  455.                         return -1;
  456.                     }
  457.                 }
  458.                 else
  459.                 {
  460.                     while ((ch = string[stringPos++]))
  461.                     {
  462.                         setarg(paramPos, i++, ch);
  463.                     }
  464.                 }
  465.                 stringPos--;
  466.                 setarg(paramPos, i, '\0');
  467.             }
  468.             default:
  469.             {
  470.                 continue;
  471.             }
  472.         }
  473.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  474.         {
  475.             stringPos++;
  476.         }
  477.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  478.         {
  479.             stringPos++;
  480.         }
  481.         paramPos++;
  482.     }
  483.     do
  484.     {
  485.         if ((delim = format[formatPos++]) > ' ')
  486.         {
  487.             if (delim == '\'')
  488.             {
  489.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  490.             }
  491.             else if (delim != 'z')
  492.             {
  493.                 return delim;
  494.             }
  495.         }
  496.     }
  497.     while (delim > ' ');
  498.     return 0;
  499. }
  500.  
  501. strtok(const string[], &index,seperator=' ')
  502. {
  503.     new length = strlen(string);
  504.     new offset = index;
  505.     new result[MAX_STRING];
  506.     while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  507.     {
  508.         result[index - offset] = string[index];
  509.         index++;
  510.     }
  511.  
  512.     result[index - offset] = EOS;
  513.     if ((index < length) && (string[index] == seperator))
  514.     {
  515.         index++;
  516.     }
  517.     return result;
  518. }
  519.  
  520. #endinput
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement