Para que serve?
Serve para limitar a velocidade do players do server

CREDITOS:
Blackwave
OBS: So copiei a stock de um tutorial em inglês, de um velocimetro. O resto, eu que fiz.


Antes de começar, coloque no topo:




new speed_limit_is_actived[MAX_PLAYERS];#define AMARELO 0xFFFF00FF
#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
Agora, coloque no seu OnGameModeInit ou OnFilterScriptInit (GM e FS respectivamente), esse Text3D:


public OnFilterScriptInit()
{
   Create3DTextLabel
("RADAR!", AMARELO, 2046.52, 1302.56, 18.83, 100, 0); // 3D label do radar
   
// 2046.52, 1302.56, 18.83 == coordenadas | 100 a distancia de que pode ser visto | 0 = Virtual world
   
return 1;}


No OnPlayerCommandText:




public OnPlayerCommandText(playerid, cmdtext[])
{
   dcmd(speedon,7,cmdtext); // Ativar o comando de limite de speed
    dcmd(speedoff,8,cmdtext); // Desativar o comando de limite de speed
   return 0;
}


E, no OnPlayerUpdate:


public OnPlayerUpdate(playerid)
{
 


    if(IsPlayerInAnyVehicle(playerid)) // Se o jogador estiver em um veiculo qualquer
    {
        for(new i = 0; i < MAX_PLAYERS; i++) // Para todos os players
        {
            if(IsPlayerInRangeOfPoint(playerid, 50, 2046.52, 1302.56, 18.83)) // Se estiver há 50m do radar
            {
          if(speed_limit_is_actived[i]==1) // Se o limite de velocidade estiver ativo
          {
        new str[128]; // String
        new v; v = GetPlayerVehicleID(playerid); // String v, que define o veiculo que o player está
        new sp; sp = GetPlayerSpeed(playerid); // Obtem a velocidade do carro do player
        //format(str,sizeof(str),"KM/H: %d", sp); // Formata a string com a velocidade obtida (opcinal)


        if(sp >= 50)  // SP = Speed. Se a velocidade for igual ou maior a 50. "Pode ser mudada"
        {
         GameTextForPlayer(playerid, "~g~Limite maximo antigido ~r~@", 1000, 5); // Retorna isso
         RemovePlayerFromVehicle(playerid); // E isso(remove jogador do carro)
        }
         


       }
    }
  }
  return 1;
}
   
    return 1;
}


Dps de todas as callbacks (publics), coloque isto:


dcmd_speedon(playerid,params[])
{
   for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(speed_limit_is_actived[i] == 1) return SendClientMessage(playerid, AMARELO, "Limite ja ativado");
      else
      {
         speed_limit_is_actived[i] = 1; // Ativado
         SoundForAll(1133);
         return SendClientMessageToAll(AMARELO, "@ Limite de velocidade setado para 100km/h");
      }
   }
}


dcmd_speedoff(playerid,params[])
{
     for(new i = 0; i < MAX_PLAYERS; i++)
   {
      if(speed_limit_is_actived[i] == 0) return SendClientMessage(playerid, AMARELO, "Limite já desativado. Ative-o antes");
      else
      {
         speed_limit_is_actived[i] = 0; // Desativado
         SoundForAll(1133);
         return SendClientMessageToAll(AMARELO, "@ Limite de velocidade desativado!");
      }
   }
}
IMPORTANTE:






stock GetPlayerSpeed(playerid)
{
    new Float:ST[4];
    if(IsPlayerInAnyVehicle(playerid))
        GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
        else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
    return floatround(ST[3]);
}