Burgershot
  • Home
  • Members
  • Team
  • Help
  • Search
  • Register
  • Login
  • Home
  • Members
  • Help
  • Search
Burgershot Other languages Spanish/Español Programación [Ayuda] Limitador de velocidad

 
  • 0 Vote(s) - 0 Average
[Ayuda] Limitador de velocidad
ThePez
Offline

Desarrollador
Posts: 21
Threads: 8
Joined: Apr 2019
Reputation: 0
#1
2020-03-02, 07:39 PM (This post was last modified: 2020-03-02, 08:01 PM by ThePez.)
Buenos días

He estado investigando como hacer un limitador de velocidad, es decir
cuando un jugador ejecute un comando estando en un vehículo, 
no puede tener mas velocidad que la establecida por el.

/limitador [velocidad]
[velocidad] es la velocidad máxima alcanzada por el vehículo

para ello encontré una función

PHP Code:
SetVehicleVelocity(vehicleid, Float:X, Float:Y, Float:Z); 

Aun no se como implementarla.
como comprobar para que direccion esta yendo.

PHP Code:
CMD:limitador(playerid, params[])
{
    if(!sscanf(params, "d", velocidad))
    {
        new vehicleid = GetPlayerVehicleID(playerid);
        SetVehicleVelocity(vehicleid, velocidad, velocidad, velocidad);
    }
} 

En este CMD hay varios errores, falta comprobar si esta en un vehículo y si la velocidad es mas alta de lo que puede ir en realidad el vehiculo.
no se me ocurre una forma de lograr esto.
[Image: Fondo.jpg]
SKainer
Offline

Burgershot Member
Posts: 15
Threads: 3
Joined: Jan 2020
Reputation: 0
#2
2020-03-05, 12:41 AM (This post was last modified: 2020-03-05, 01:17 AM by SKainer.)
Está bien más o menos lo que hiciste, pero tuviste ciertos errores que complican la lógica del código:

Eso es porque no haz implementado una condicional IsPlayerInAnyVehicle para ver si el usuario está en un vehículo o no...

También cuando pones "velocidad" en el SetVehicleVelocity pones que el limite serían los parámetros puestos... pero... Los parámetros son tipo Float? Porque en la función SetVehicleVelocity(vehicleid, Float:X, Float:Y, Float:Z) necesitarías Variables Flotantes...

Eso también causa un error con el sscanf ya que en donde pones  !sscanf(params, "d", velocidad)  pones un "d" como especificador, pero el "d" es para variables enteras y no flotantes... osea, debes usar un "f".

Te quedaría algo así...

PHP Code:
CMD:limitador(playerid, params[])
{
    new Float:velocidad;
    if(!sscanf(params, "f", velocidad))
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
        new vehicleid = GetPlayerVehicleID(playerid);
        SetVehicleVelocity(vehicleid, velocidad, velocidad, velocidad);
        }
    }
    return 1;
} 

Recuerda que la sintáxis es así: /limitador X Y Z
Pero no pongas numeros superiores a 0, ya que con solo poner un 1 es mucha velocidad. Para usarlo deberías usar 0.0 0.0 0.2, números pequeños flotantes. Para más información sobre el uso de SetVehicleVelocity, ve a https://wiki.sa-mp.com/wiki/SetVehicleVelocity .
Languajes de Programación que domino:
Pawn, Lua.
Lenguajes de Programación que estoy aprendiendo:
C++, JavaScript & C#.

¡Listo para ayudarte!
ThePez
Offline

Desarrollador
Posts: 21
Threads: 8
Joined: Apr 2019
Reputation: 0
#3
2020-03-09, 09:35 PM
Solo era un ejemplo, la ayuda era lograr el limitador.
ya lo he logrado.
[Image: Fondo.jpg]
« Next Oldest | Next Newest »



  • View a Printable Version
  • Subscribe to this thread
Forum Jump:

© Burgershot - Powered by our Community and MyBB Original Theme by Emerald

Linear Mode
Threaded Mode