[Tutorial] Radar de velocidade [Detector/Bloqueador]
#1

Para que serve?

Serve para limitar a velocidade do players do server

CREDITOS:
Blackwave (eu)
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:
pawn Код:
new bool:speed_limit_is_actived = false;
#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:
pawn Код:
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:

pawn Код:
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:

pawn Код:
public OnPlayerUpdate(playerid)
{
   
 
    if(IsPlayerInAnyVehicle(playerid)) // Se o jogador estiver em um veiculo qualquer
    {
              if(IsPlayerInRangeOfPoint(playerid, 50, 2046.52, 1302.56, 18.83)) // Se estiver hб 50m do radar
              {
                if(speed_limit_is_actived == true) // 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:
pawn Код:
dcmd_speedon(playerid,params[])
{
   
      if(speed_limit_is_actived == true) return SendClientMessage(playerid, AMARELO, "Limite ja ativado");
      else
      {
         speed_limit_is_actived = true; // Ativado
         SoundForAll(1133);
         return SendClientMessageToAll(AMARELO, "@ Limite de velocidade setado para 50km/h");
      }
   }


dcmd_speedoff(playerid,params[])
{
      if(speed_limit_is_actived == false) return SendClientMessage(playerid, AMARELO, "Limite jб desativado. Ative-o antes");
      else
      {
         speed_limit_is_actived == false; // Desativado
         SoundForAll(1133);
         return SendClientMessageToAll(AMARELO, "@ Limite de velocidade desativado!");
       }
   }
}
IMPORTANTE:

Nгo se esqueзa de adicionar a stock:
pawn Код:
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]);
}
FIM
Reply
#2

Veri gude.
Reply
#3

public OnPlayerUpdate(playerid)

Hum...........
Reply
#4

Quote:
Originally Posted by badio12
Посмотреть сообщение
Veri gude.
Vlws.

Quote:

public OnPlayerUpdate(playerid)

Hum...........

Pq "hum...."? coloquei GameText para nгo encher a tela com o SendClientMessage. E nгo laga, alem disso.
Reply
#5

Isso com uma quantidade de players elevadas vai dar uma travadinha sakas ?
Reply
#6

Quote:
Originally Posted by [Banido]HigorOliver
Посмотреть сообщение
Isso com uma quantidade de players elevadas vai dar uma travadinha sakas ?
Sim, se fosse no game geral e com velocidade de no minimo 10km/h travaria, mas й se o jogador estiver hб 50m do radar, estiver em veiculo e com velocidade maior ou igual ao SP la, que pode ser mudada. Vc tbm pode editar, mas no OnPlayerStateChange nгo funfou aq. Ja testei e nгo trava, ja que sгo 3 condiзхes antes de retornar os valores la de tirar do veiculo e do gametext.
Reply
#7

legal.

coloca entre [pawn ] [/pawn ]
Reply
#8

Quote:
Originally Posted by jonas_gabriel
Посмотреть сообщение
legal.

coloca entre [pawn ] [/pawn ]
Vlw. Pronto.
Reply
#9

Uau Legal.
Eu criei um sistema de anti velocidade
basta buscar por 'RealRP'
Reply
#10

@black
Gostei atй do sistema
sу achei que daria pra fazer isso em funзгo com stock e por em 1 settimer ou CP ou atй podese usar area.
e o code ta 1 pouco leve em termos de dificuldade de programaзгo e utilidade rбpida.
mas como eu disse
Fico bom ^^
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)