180° vehicle rotation on key press
#1

Hi so i am very new to samp scripting and i am currently making a lan server for me and a few friends (mostly freeroam/race etc). I added some FS from this forum but i did not find anything related with this (and i don't even know if it is possible).

What i want is a script that makes your vehicle turn back by 180° (not a backflip, just a rotation) when you press a key like 2 or LMB. Is that possible? If yes, could someone help me get such a script?

Thank you.
Reply
#2

https://sampforum.blast.hk/showthread.php?tid=100312
Reply
#3

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkes)
{
       if(newkeys & KEY_SUBMISSION_KEY)
       {
              SetVehicleZAngle(GetPlayerVehicleID(playerid), 180.0);
              return 1;
       }
       return true;
}
This should rotate the vehicle's Z Angle 180 degrees. Is this what you mean?
Reply
#4

Quote:
Originally Posted by Pottus
Посмотреть сообщение
read what i said, not flip but rotation
Reply
#5

Just get the zangle and add 180 to it then set the zangle.
Reply
#6

Quote:
Originally Posted by Puppy
Посмотреть сообщение
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkes)
{
       if(newkeys & KEY_SUBMISSION_KEY)
       {
              SetVehicleZAngle(GetPlayerVehicleID(playerid), 180.0);
              return 1;
       }
       return true;
}
This should rotate the vehicle's Z Angle 180 degrees. Is this what you mean?
(85) : error 025: function heading differs from prototype
(86) : error 021: symbol already defined: "OnPlayerKeyStateChange"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


The second error might be caused by the fact i already used the OnPlayerKeyStateChange earlier in the script
Reply
#7

Quote:
Originally Posted by Pottus
Посмотреть сообщение
Just get the zangle and add 180 to it then set the zangle.
this is what i tried but it didnt work i guess it was just a bad script

Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys == KEY_SUBMISSION)
       {
       new vehicleid = GetPlayerVehicleID(playerid);
       if(IsPlayerInVehicle(playerid, vehicleid))
       {
      		new currentveh;
    		new Float:angle;
    		currentveh = GetPlayerVehicleID(playerid);
    		GetVehicleZAngle(currentveh, angle);
    		SetVehicleZAngle(currentveh, angle+180);
    		}
}
Reply
#8

Quote:
Originally Posted by VinnyOne
Посмотреть сообщение
this is what i tried but it didnt work i guess it was just a bad script

Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys == KEY_SUBMISSION)
       {
       new vehicleid = GetPlayerVehicleID(playerid);
       if(IsPlayerInVehicle(playerid, vehicleid))
       {
      		new currentveh;
    		new Float:angle;
    		currentveh = GetPlayerVehicleID(playerid);
    		GetVehicleZAngle(currentveh, angle);
    		SetVehicleZAngle(currentveh, angle+180);
    		}
}
The code is not that bad but it surely contains unnecessary variable declarations such as 'vehicleid' and 'currentveh'.
SA:MP has a function called 'IsPlayerInAnyVehicle' so there is no need to get the Player' vehicle ID and then use a function to use it.
You are already getting the player's vehicle id in the 'vehicleid' variable, there is absolutely no need to declare a second variable in the exact same function with the exact same use. The rest seems good.

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_SUBMISSION)
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            new vehicleid = GetPlayerVehicleID(playerid);
            new Float:angle;
            // OR:
            // new vehicleid = GetPlayerVehicleID(playerid), Float:angle;
            GetVehicleZAngle(vehicleid, angle);
            SetVehicleZAngle(vehicleid, angle+180.0);
        }
    }
    return 1;
}
Reply
#9

Slimmed:

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_SUBMISSION)
    {
        new vehicleid = GetPlayerVehicleID(playerid);
        if(vehicleid != 0)
        {
            new Float:angle;
            GetVehicleZAngle(vehicleid, angle);
            SetVehicleZAngle(vehicleid, angle+180.0);
        }
    }
    return 1;
}
As GetPlayerVehicleID will return 0 when player is not in any vehicle you can check vehicleid against 0 (zero) and omit IsPlayerInAnyVehicle
source: https://sampwiki.blast.hk/wiki/GetPlayerVehicleID
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)