Nyft_

Tutorial de como fazer um Velocimetro ~Nyft

Sep 8th, 2020 (edited)
700
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.08 KB | None | 0 0
  1. #include a_samp
  2. #include sscanf2
  3. #include pawn.cmd
  4.  
  5. #define function%0(%1) \
  6.     forward%0(%1); public%0(%1)
  7.  
  8. new gVehicleSpeedometer[MAX_PLAYERS]; // Variável do timer que vai atualizar a velocidade pra usar no KillTimer depois
  9.  
  10. main(){}
  11.  
  12. // ~~~~~~~~~~~~~~~~~~~~~~ //
  13.  
  14. public OnPlayerStateChange(playerid, newstate, oldstate)
  15. {
  16.     if(newstate == PLAYER_STATE_DRIVER) // Entrou no veículo
  17.         gVehicleSpeedometer[playerid] = SetTimerEx("UpdateStateSpeedometer", 100, true, "i", playerid); // Atualizar a public "UpdateStateSpeedometer" em um timer de "100" milissegundos
  18.  
  19.     if(oldstate == PLAYER_STATE_DRIVER) // Saiu do veículo
  20.         KillTimer(gVehicleSpeedometer[playerid]); // Tirando o timer para não ficar rodando atoa quando o player sair do veículo
  21.     return 1;
  22. }
  23.  
  24. function UpdateStateSpeedometer(playerid)
  25. {
  26.     new string[24];
  27.     format(string, sizeof(string), "~w~%d ~b~KM/H", GetVehicleSpeed(GetPlayerVehicleID(playerid))); // Formatando a velocidade "%d" do veículo que o player está com "GetVehicleSpeed"
  28.     GameTextForPlayer(playerid, string, 1000, 3); // Mostrando na tela do player a velocidade com a função "GameTextForPlayer"
  29.     return 1;
  30. }
  31.  
  32. GetVehicleSpeed(vehicleid) // Aqui pega a velocidade do veículo
  33. {
  34.     new Float:Velocity[3];
  35.     GetVehicleVelocity(vehicleid, Velocity[0], Velocity[1], Velocity[2]);
  36.     return floatround(floatsqroot(Velocity[0] * Velocity[0] + Velocity[1] * Velocity[1] + Velocity[2] * Velocity[2]) * 180.0);
  37. }
  38.  
  39. // Comando de criar veículos para testar o sistema:
  40.  
  41. CMD:v(playerid, params[])
  42. {
  43.     new modelid;
  44.  
  45.     if(sscanf(params, "d", modelid))
  46.         return SendClientMessage(playerid, -1, "[!] Use: /v [modelo]");
  47.  
  48.     if(!(400 <= modelid <= 611))
  49.         return SendClientMessage(playerid, -1, "[!] Modelo inexistente.");
  50.  
  51.     new vehicleid, Float:Pos[4];
  52.  
  53.     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  54.     GetPlayerFacingAngle(playerid, Pos[3]);
  55.  
  56.     vehicleid = CreateVehicle(modelid, Pos[0], Pos[1], Pos[2], Pos[3], -1, -1, -1);
  57.     PutPlayerInVehicle(playerid, vehicleid, 0);
  58.     return 1;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment