Guest User

Untitled

a guest
Aug 13th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 16.08 KB | None | 0 0
  1. /*
  2.  
  3.  
  4.  Befehle:
  5.  /berstellen [id][radius][geschwindigkeit]
  6.  Mit diesem Befehl kannst du einen Blitzer erstellen.
  7.  /bloeschen
  8.  Sobald du in der nähe eines Blitzers bist, wird er automatisch gelöescht.
  9.  /addbcreator [playerid]
  10.  Mit diesem Befehl kannst du einem Spieler die Befugnis geben einen Blitzer zu erstellen.
  11.  /removebcreator [playerid]
  12.  Mit diesem Befehl kannst du einem Spieler die Befugnis nehmen einen Blitzer zu erstellen.
  13.  /addnoblitz [playerid]
  14.  Mit diesem Befehl kannst du einen Spieler aus dem Blitzprogramm ausschließen, d.h. er kann nicht mehr geblitzt werden.
  15.  /removenoblitz [playerid]
  16.  Mit diesem Befehl kannst du einen Spieler wieder in das Blitzprogramm hinzufügen, d.h. er kann wieder geblitzt werden.
  17.  
  18.  Features:
  19.  -Blitzer schnell und einfach ingame erstellen
  20.  -Blitzerberechtigung geben
  21.  -NoBlitz Funktion, per Befehl kann eingestellt werden ob man geblitzt werden kann oder nicht. Prakitsch für aduty.
  22.  
  23.  Gescriptet für Midnight Roleplay.
  24.  Erstellt von Dominik. .
  25.  
  26.  Mehrmals getestet,
  27.  ein kleiner Fehler:
  28.  Der Timer überprüft alle 1,5 Sekunden ob man in der nähe eines Blitzers ist.
  29.  Bei hohem Blitzradius wird man evtl. 2x geblitzt.
  30.  
  31.  Info:
  32.  Die Strafrechnung geht folgendermaßen:
  33.  
  34.  Gefahrene Geschwindigkeit * 10 - Erlaubte Geschwindigkeit
  35.  Ist man also 60 gefahren, aber durfte nur 50 fahren wird es so gerechnet:
  36.  
  37.  60 * 10 - 50
  38.  _
  39.  = 600 - 50
  40.  _
  41.  = 550
  42.  
  43.  Die Strafen sind an die heutigen "Reallife Server" angepasst, bei denen man sich eh pro Stunde 100.000$ farmt.
  44.  
  45.  */
  46.  
  47.  
  48.  #define FILTERSCRIPT
  49.  
  50.  #include <a_samp>
  51.  #include <SII>
  52.  #include <zcmd>
  53.  
  54.  #define MAX_BLITZER 10 //Wie viele Blitzer sollen maximal stehen dürfen?
  55.  #define MIN_RADIUS 10 //Was muss mindestens als Radius angegeben werden?
  56.  #define MAX_RADIUS 50 //Was ist der maximale Radius?
  57.  #define MIN_SPEED 10 //Was ist die mindestgeschwindigkeit?
  58.  #define MAX_SPEED 100 //...Was die maximale?
  59.  #define Verzeichnis "Accounts" //In welchem verzeichnis sind die Spielerdateien?
  60.  
  61.  forward BlitzCheck(playerid);
  62.  
  63.  #define cGrün 0x23FF00FF
  64.  #define cRot 0xE10000FF
  65.  #define cOrange 0xFF8200FF
  66.  #define cBlau 0x0A00FFFF
  67.  
  68.  enum BlitzerInfo
  69.  {
  70.  Float:bX,
  71.  Float:bY,
  72.  Float:bZ,
  73.  bRadius,
  74.  bGeschwindigkeit,
  75.  Text3D:bLabel,
  76.  bObjekt
  77.  };
  78.  new Blitzer[MAX_BLITZER][BlitzerInfo];
  79.  
  80.  public OnFilterScriptInit()
  81.  {
  82.  for(new b = 1; b < MAX_BLITZER; b++)
  83.  {
  84.  bLoad(b);
  85.  }
  86.  print("\n--------------------------------------");
  87.  print(" dBlitzer loaded ...");
  88.  print(" (c)Midnight Roleplay");
  89.  print(" Script by Dominik. .");
  90.  print("--------------------------------------\n");
  91.  return 1;
  92.  }
  93.  public BlitzCheck(playerid)
  94.  {
  95.  new bool:WurdeGeblitzt[MAX_PLAYERS] = false;
  96.  new speed = GetPlayerSpeed(playerid,true);
  97.  new strafe;
  98.  new sName[24];
  99.  GetPlayerName(playerid,sName,24);
  100.  if(IsPlayerInAnyVehicle(playerid))
  101.  {
  102.  for(new b = 1; b < MAX_BLITZER; b++)
  103.  {
  104.  if(IsPlayerInRangeOfPoint(playerid,Blitzer[bRadius],Blitzer[b][bX],Blitzer[b][bY],Blitzer[b][bZ]))
  105.  {
  106.  
  107.  if(speed > Blitzer[b][bGeschwindigkeit])
  108.  {
  109.  
  110.  new sFile[64];
  111.  format(sFile,64,"%s/%s.ini",Verzeichnis,sName);
  112.  INI_Open(sFile);
  113.  if(INI_ReadInt("bNoBlitz") != 1)
  114.  {
  115.  WurdeGeblitzt[playerid] = true;
  116.  strafe = speed * 10 - Blitzer[b][bGeschwindigkeit];
  117.  }
  118.  else return SendClientMessage(playerid,cOrange,"Du wurdest geblitzt! musstest aber keine Strafe bezahlen da die einen bNoBlitz Rang hast!");
  119.  }
  120.  }
  121.  }
  122.  }
  123.  if(WurdeGeblitzt[playerid] == true)
  124.  {
  125.  GivePlayerMoney(playerid,-strafe);
  126.  new string[128];
  127.  format(string,128,"|| %s wurde mit %d km/h geblitzt! Er musste $%d Strafe bezahlen!",sName,speed,strafe);
  128.  SendClientMessageToAll(cBlau,string);
  129.  return 1;
  130.  }
  131.  return 1;
  132.  }
  133.  CMD:bloeschen(playerid)
  134.  {
  135.  new sFile[64];
  136.  new sName[24];
  137.  GetPlayerName(playerid,sName,24);
  138.  format(sFile,64,"%s/%s.ini",Verzeichnis,sName);
  139.  INI_Open(sFile);
  140.  if(INI_ReadInt("bErsteller") == 1)
  141.  {
  142.  for(new b = 1; b < MAX_BLITZER; b++)
  143.  {
  144.  if(IsPlayerInRangeOfPoint(playerid,5.0,Blitzer[b][bX],Blitzer[b][bY],Blitzer[b][bZ]))
  145.  {
  146.  new bFile[64];
  147.  format(bFile,64,"Blitzer/%d.ini",b);
  148.  INI_Remove(bFile);
  149.  DestroyObject(Blitzer[b][bObjekt]);
  150.  Delete3DTextLabel(Blitzer[b][bLabel]);
  151.  Blitzer[b][bObjekt] = 0;
  152.  Blitzer[b][bX] = 0;
  153.  Blitzer[b][bY] = 0;
  154.  Blitzer[b][bZ] = 0;
  155.  Blitzer[b][bRadius] = 0;
  156.  Blitzer[b][bGeschwindigkeit] = 0;
  157.  SendClientMessage(playerid,cGrün,"Blitzer erfolgreich geloescht!");
  158.  return 1;
  159.  }
  160.  else return SendClientMessage(playerid,cRot,"Du bist nicht nahe Genug an einem Blitzer!");
  161.  }
  162.  return 1;
  163.  }
  164.  else return SendClientMessage(playerid,cRot,"Du bist nicht berechtigt einen Blitzer zu löschen!");
  165.  }
  166.  CMD:berstellen(playerid,params[])
  167.  {
  168.  new sFile[64];
  169.  new sName[24];
  170.  GetPlayerName(playerid,sName,24);
  171.  format(sFile,64,"%s/%s.ini",Verzeichnis,sName);
  172.  INI_Open(sFile);
  173.  if(INI_ReadInt("bErsteller") == 1)
  174.  {
  175.  INI_Close();
  176.  new radius, geschwindigkeit, blitzerid;
  177.  if(sscanf(params,"ddd",blitzerid,radius,geschwindigkeit)) return SendClientMessage(playerid,cRot,"Verwendung: /berstellen [blitzerid][radius][geschwindigkeit]");
  178.  if(blitzerid >= 1 && blitzerid <= MAX_BLITZER)
  179.  {
  180.  if(radius <= MAX_RADIUS && radius >= MIN_RADIUS)
  181.  {
  182.  if(geschwindigkeit <= MAX_SPEED && geschwindigkeit >= MIN_RADIUS)
  183.  {
  184.  new Float:X,Float:Y,Float:Z;
  185.  GetPlayerPos(playerid,X,Y,Z);
  186.  bCreate(blitzerid,X,Y,Z,geschwindigkeit,radius);
  187.  return 1;
  188.  }
  189.  else
  190.  {
  191.  new string[64];
  192.  format(string,64,"Die Geschwindigkeit muss zwischen %d und %d liegen!",MIN_SPEED,MAX_SPEED);
  193.  return SendClientMessage(playerid,cRot,string);
  194.  }
  195.  }
  196.  else
  197.  {
  198.  new string[64];
  199.  format(string,64,"Der Radius muss zwischen %d und %d liegen!",MIN_RADIUS,MAX_RADIUS);
  200.  return SendClientMessage(playerid,cRot,string);
  201.  }
  202.  }
  203.  else
  204.  {
  205.  new string[64];
  206.  format(string,64,"Die BlitzerID muss zwischen 1 und %d liegen!",MAX_BLITZER);
  207.  return SendClientMessage(playerid,cRot,string);
  208.  }
  209.  }
  210.  else return SendClientMessage(playerid,cRot,"Du bist nicht berechtigt einen Blitzer zu erstellen!");
  211.  }
  212.  CMD:addbcreator(playerid,params[])
  213.  {
  214.  if(IsPlayerAdmin(playerid))
  215.  {
  216.  new addplayerid;
  217.  if(sscanf(params,"d",addplayerid)) return SendClientMessage(playerid,cRot,"Verwendung: /addbcreator [addplayerid]");
  218.  if(IsPlayerConnected(addplayerid) && addplayerid != INVALID_PLAYER_ID)
  219.  {
  220.  new sFile[64];
  221.  new aName[24];
  222.  new sName[24];
  223.  GetPlayerName(playerid,sName,24);
  224.  GetPlayerName(addplayerid,aName,24);
  225.  format(sFile,64,"%s/%s.ini",Verzeichnis,aName);
  226.  INI_Open(sFile);
  227.  INI_WriteInt("bErsteller",1);
  228.  INI_Save();
  229.  INI_Close();
  230.  new string[64];
  231.  new string2[64];
  232.  format(string,64,"Du hast %s erfolgreich den bErsteller Rang gegeben!",aName);
  233.  format(string2,63,"%s hat dir den den bErsteller Rang gegeben!",sName);
  234.  SendClientMessage(playerid,cGrün,string);
  235.  SendClientMessage(addplayerid,cOrange,string2);
  236.  return 1;
  237.  }
  238.  else return SendClientMessage(playerid,cRot,"Ungültige SpielerID!");
  239.  }
  240.  else return SendClientMessage(playerid,cRot,"Du bist kein RCON-Administrator!");
  241.  }
  242.  CMD:removebcreator(playerid,params[])
  243.  {
  244.  if(IsPlayerAdmin(playerid))
  245.  {
  246.  new addplayerid;
  247.  if(sscanf(params,"d",addplayerid)) return SendClientMessage(playerid,cRot,"Verwendung: /removebcreator [addplayerid]");
  248.  if(IsPlayerConnected(addplayerid) && addplayerid != INVALID_PLAYER_ID)
  249.  {
  250.  new sFile[64];
  251.  new aName[24];
  252.  new sName[24];
  253.  GetPlayerName(playerid,sName,24);
  254.  GetPlayerName(addplayerid,aName,24);
  255.  format(sFile,64,"%s/%s.ini",Verzeichnis,aName);
  256.  INI_Open(sFile);
  257.  INI_WriteInt("bErsteller",0);
  258.  INI_Save();
  259.  INI_Close();
  260.  new string[64];
  261.  new string2[64];
  262.  format(string,64,"Du hast %s erfolgreich den bErsteller Rang entzogen!",aName);
  263.  format(string2,63,"%s hat dir den den bErsteller Rang entzogen!",sName);
  264.  SendClientMessage(playerid,cGrün,string);
  265.  SendClientMessage(addplayerid,cOrange,string2);
  266.  return 1;
  267.  }
  268.  else return SendClientMessage(playerid,cRot,"Ungültige SpielerID!");
  269.  }
  270.  else return SendClientMessage(playerid,cRot,"Du bist kein RCON-Administrator!");
  271.  }
  272.  CMD:removeblitz(playerid,params[])
  273.  {
  274.  if(IsPlayerAdmin(playerid))
  275.  {
  276.  new addplayerid;
  277.  if(sscanf(params,"d",addplayerid)) return SendClientMessage(playerid,cRot,"Verwendung: /removebcreator [addplayerid]");
  278.  if(IsPlayerConnected(addplayerid) && addplayerid != INVALID_PLAYER_ID)
  279.  {
  280.  new sFile[64];
  281.  new aName[24];
  282.  new sName[24];
  283.  GetPlayerName(playerid,sName,24);
  284.  GetPlayerName(addplayerid,aName,24);
  285.  format(sFile,64,"%s/%s.ini",Verzeichnis,aName);
  286.  INI_Open(sFile);
  287.  INI_WriteInt("bNoBlitz",0);
  288.  INI_Save();
  289.  INI_Close();
  290.  new string[64];
  291.  new string2[64];
  292.  format(string,64,"Du hast %s erfolgreich den bNoBlitz Rang entzogen!",aName);
  293.  format(string2,63,"%s hat dir den den bNoBlitz Rang entzogen!",sName);
  294.  SendClientMessage(playerid,cGrün,string);
  295.  SendClientMessage(addplayerid,cOrange,string2);
  296.  return 1;
  297.  }
  298.  else return SendClientMessage(playerid,cRot,"Ungültige SpielerID!");
  299.  }
  300.  else return SendClientMessage(playerid,cRot,"Du bist kein RCON-Administrator!");
  301.  }
  302.  CMD:addnoblitz(playerid,params[])
  303.  {
  304.  if(IsPlayerAdmin(playerid))
  305.  {
  306.  new addplayerid;
  307.  if(sscanf(params,"d",addplayerid)) return SendClientMessage(playerid,cRot,"Verwendung: /addnoblitz [addplayerid]");
  308.  if(IsPlayerConnected(addplayerid) && addplayerid != INVALID_PLAYER_ID)
  309.  {
  310.  new sFile[64];
  311.  new aName[24];
  312.  new sName[24];
  313.  GetPlayerName(playerid,sName,24);
  314.  GetPlayerName(addplayerid,aName,24);
  315.  format(sFile,64,"%s/%s.ini",Verzeichnis,aName);
  316.  INI_Open(sFile);
  317.  INI_WriteInt("bNoBlitz",1);
  318.  INI_Save();
  319.  INI_Close();
  320.  new string[64];
  321.  new string2[64];
  322.  format(string,64,"Du hast %s erfolgreich den bNoBlitz Rang gegeben!",aName);
  323.  format(string2,63,"%s hat dir den den bNoBlitz Rang gegeben!",sName);
  324.  SendClientMessage(playerid,cGrün,string);
  325.  SendClientMessage(addplayerid,cOrange,string2);
  326.  return 1;
  327.  }
  328.  else return SendClientMessage(playerid,cRot,"Ungültige SpielerID!");
  329.  }
  330.  else return SendClientMessage(playerid,cRot,"Du bist kein RCON-Administrator!");
  331.  }
  332.  
  333.  
  334.  public OnFilterScriptExit()
  335.  {
  336.  return 1;
  337.  }
  338.  
  339.  public OnPlayerConnect(playerid)
  340.  {
  341.  SetTimerEx("BlitzCheck",1500,true,"i",playerid);
  342.  return 1;
  343.  }
  344.  stock bCreate(blitzerid,Float:X,Float:Y,Float:Z,geschwindigkeit,radius)
  345.  {
  346.  new bFile[64];
  347.  format(bFile,64,"Blitzer/%d.ini",blitzerid);
  348.  INI_Open(bFile);
  349.  INI_WriteFloat("X",X);
  350.  INI_WriteFloat("Y",Y);
  351.  INI_WriteFloat("Z",Z);
  352.  INI_WriteInt("Geschwindigkeit",geschwindigkeit);
  353.  INI_WriteInt("Radius",radius);
  354.  INI_Save();
  355.  INI_Close();
  356.  new text3dtext[128];
  357.  format(text3dtext,128,"||==========||Blitzer||==========||\nGeschwindigkeit: %d\nRadius: %d\n||==========||Blitzer||==========||",geschwindigkeit,radius);
  358.  Blitzer[blitzerid][bX] = X;
  359.  Blitzer[blitzerid][bY] = Y;
  360.  Blitzer[blitzerid][bZ] = Z;
  361.  Blitzer[blitzerid][bGeschwindigkeit] = geschwindigkeit;
  362.  Blitzer[blitzerid][bRadius] = radius;
  363.  Blitzer[blitzerid][bLabel] = Create3DTextLabel(text3dtext,cBlau,X+1,Y+1,Z+1,radius / 2,0);
  364.  Blitzer[blitzerid][bObjekt] = CreateObject(18880,X+1,Y+1,Z-1,0.0,0.0,0.0);
  365.  return 1;
  366.  }
  367.  stock bLoad(blitzerid)
  368.  {
  369.  new bFile[64];
  370.  format(bFile,64,"Blitzer/%d.ini",blitzerid);
  371.  INI_Open(bFile);
  372.  Blitzer[blitzerid][bX] = INI_ReadFloat("X");
  373.  Blitzer[blitzerid][bY] = INI_ReadFloat("Y");
  374.  Blitzer[blitzerid][bZ] = INI_ReadFloat("Z");
  375.  Blitzer[blitzerid][bGeschwindigkeit] = INI_ReadInt("Geschwindigkeit");
  376.  Blitzer[blitzerid][bRadius] = INI_ReadInt("Radius");
  377.  new text3dtext[128];
  378.  format(text3dtext,128,"||==========||Blitzer||==========||\nGeschwindigkeit: %d\nRadius: %d\n||==========||Blitzer||==========||",Blitzer[blitzerid][bGeschwindigkeit],Blitzer[blitzerid][bRadius]);
  379.  Blitzer[blitzerid][bLabel] = Create3DTextLabel(text3dtext,cBlau,Blitzer[blitzerid][bX]+1,Blitzer[blitzerid][bY]+1,Blitzer[blitzerid][bZ]+1,Blitzer[blitzerid][bRadius] / 2,0);
  380.  Blitzer[blitzerid][bObjekt] = CreateObject(18880,Blitzer[blitzerid][bX]+1,Blitzer[blitzerid][bY]+1,Blitzer[blitzerid][bZ]-1,0.0,0.0,0.0);
  381.  INI_Close();
  382.  return 1;
  383.  }
  384.  stock sscanf(string[], format[], {Float,_}:...)
  385.  {
  386.  #if defined isnull
  387.  if (isnull(string))
  388.  #else
  389.  if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  390.  #endif
  391.  {
  392.  return format[0];
  393.  }
  394.  #pragma tabsize 4
  395.  new
  396.  formatPos = 0,
  397.  stringPos = 0,
  398.  paramPos = 2,
  399.  paramCount = numargs(),
  400.  delim = ' ';
  401.  while (string[stringPos] && string[stringPos] <= ' ')
  402.  {
  403.  stringPos++;
  404.  }
  405.  while (paramPos < paramCount && string[stringPos])
  406.  {
  407.  switch (format[formatPos++])
  408.  {
  409.  case '\0':
  410.  {
  411.  return 0;
  412.  }
  413.  case 'i', 'd':
  414.  {
  415.  new
  416.  neg = 1,
  417.  num = 0,
  418.  ch = string[stringPos];
  419.  if (ch == '-')
  420.  {
  421.  neg = -1;
  422.  ch = string[++stringPos];
  423.  }
  424.  do
  425.  {
  426.  stringPos++;
  427.  if ('0' <= ch <= '9')
  428.  {
  429.  num = (num * 10) + (ch - '0');
  430.  }
  431.  else
  432.  {
  433.  return -1;
  434.  }
  435.  }
  436.  while ((ch = string[stringPos]) > ' ' && ch != delim);
  437.  setarg(paramPos, 0, num * neg);
  438.  }
  439.  case 'h', 'x':
  440.  {
  441.  new
  442.  num = 0,
  443.  ch = string[stringPos];
  444.  do
  445.  {
  446.  stringPos++;
  447.  switch (ch)
  448.  {
  449.  case 'x', 'X':
  450.  {
  451.  num = 0;
  452.  continue;
  453.  }
  454.  case '0' .. '9':
  455.  {
  456.  num = (num << 4) | (ch - '0');
  457.  }
  458.  case 'a' .. 'f':
  459.  {
  460.  num = (num << 4) | (ch - ('a' - 10));
  461.  }
  462.  case 'A' .. 'F':
  463.  {
  464.  num = (num << 4) | (ch - ('A' - 10));
  465.  }
  466.  default:
  467.  {
  468.  return -1;
  469.  }
  470.  }
  471.  }
  472.  while ((ch = string[stringPos]) > ' ' && ch != delim);
  473.  setarg(paramPos, 0, num);
  474.  }
  475.  case 'c':
  476.  {
  477.  setarg(paramPos, 0, string[stringPos++]);
  478.  }
  479.  case 'f':
  480.  {
  481.  
  482.  new changestr[16], changepos = 0, strpos = stringPos;
  483.  while(changepos < 16 && string[strpos] && string[strpos] != delim)
  484.  {
  485.  changestr[changepos++] = string[strpos++];
  486.  }
  487.  changestr[changepos] = '\0';
  488.  setarg(paramPos,0,_:floatstr(changestr));
  489.  }
  490.  case 'p':
  491.  {
  492.  delim = format[formatPos++];
  493.  continue;
  494.  }
  495.  case '\'':
  496.  {
  497.  new
  498.  end = formatPos - 1,
  499.  ch;
  500.  while ((ch = format[++end]) && ch != '\'') {}
  501.  if (!ch)
  502.  {
  503.  return -1;
  504.  }
  505.  format[end] = '\0';
  506.  if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  507.  {
  508.  if (format[end + 1])
  509.  {
  510.  return -1;
  511.  }
  512.  return 0;
  513.  }
  514.  format[end] = '\'';
  515.  stringPos = ch + (end - formatPos);
  516.  formatPos = end + 1;
  517.  }
  518.  case 'u':
  519.  {
  520.  new
  521.  end = stringPos - 1,
  522.  id = 0,
  523.  bool:num = true,
  524.  ch;
  525.  while ((ch = string[++end]) && ch != delim)
  526.  {
  527.  if (num)
  528.  {
  529.  if ('0' <= ch <= '9')
  530.  {
  531.  id = (id * 10) + (ch - '0');
  532.  }
  533.  else
  534.  {
  535.  num = false;
  536.  }
  537.  }
  538.  }
  539.  if (num && IsPlayerConnected(id))
  540.  {
  541.  setarg(paramPos, 0, id);
  542.  }
  543.  else
  544.  {
  545.  #if !defined foreach
  546.  #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  547.  #define __SSCANF_FOREACH__
  548.  #endif
  549.  string[end] = '\0';
  550.  num = false;
  551.  new
  552.  name[MAX_PLAYER_NAME];
  553.  id = end - stringPos;
  554.  foreach (Player, playerid)
  555.  {
  556.  GetPlayerName(playerid, name, sizeof (name));
  557.  if (!strcmp(name, string[stringPos], true, id))
  558.  {
  559.  setarg(paramPos, 0, playerid);
  560.  num = true;
  561.  break;
  562.  }
  563.  }
  564.  if (!num)
  565.  {
  566.  setarg(paramPos, 0, INVALID_PLAYER_ID);
  567.  }
  568.  string[end] = ch;
  569.  #if defined __SSCANF_FOREACH__
  570.  #undef foreach
  571.  #undef __SSCANF_FOREACH__
  572.  #endif
  573.  }
  574.  stringPos = end;
  575.  }
  576.  case 's', 'z':
  577.  {
  578.  new
  579.  i = 0,
  580.  ch;
  581.  if (format[formatPos])
  582.  {
  583.  while ((ch = string[stringPos++]) && ch != delim)
  584.  {
  585.  setarg(paramPos, i++, ch);
  586.  }
  587.  if (!i)
  588.  {
  589.  return -1;
  590.  }
  591.  }
  592.  else
  593.  {
  594.  while ((ch = string[stringPos++]))
  595.  {
  596.  setarg(paramPos, i++, ch);
  597.  }
  598.  }
  599.  stringPos--;
  600.  setarg(paramPos, i, '\0');
  601.  }
  602.  default:
  603.  {
  604.  continue;
  605.  }
  606.  }
  607.  while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  608.  {
  609.  stringPos++;
  610.  }
  611.  while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  612.  {
  613.  stringPos++;
  614.  }
  615.  paramPos++;
  616.  }
  617.  do
  618.  {
  619.  if ((delim = format[formatPos++]) > ' ')
  620.  {
  621.  if (delim == '\'')
  622.  {
  623.  while ((delim = format[formatPos++]) && delim != '\'') {}
  624.  }
  625.  else if (delim != 'z')
  626.  {
  627.  return delim;
  628.  }
  629.  }
  630.  }
  631.  while (delim > ' ');
  632.  return 0;
  633.  }
  634.  stock GetPlayerSpeed(playerid,bool:kmh)
  635.  {
  636.  new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
  637.  if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else GetPlayerVelocity(playerid,Vx,Vy,Vz);
  638.  rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  639.  return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
  640.  }
Add Comment
Please, Sign In to add comment