180° vehicle rotation on key press -
VinnyOne - 21.02.2015
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.
Re: 180° vehicle rotation on key press -
Pottus - 21.02.2015
https://sampforum.blast.hk/showthread.php?tid=100312
Re: 180° vehicle rotation on key press -
Puppy - 21.02.2015
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?
Re : Re: 180° vehicle rotation on key press -
VinnyOne - 21.02.2015
Quote:
Originally Posted by Pottus
|
read what i said, not flip but rotation
Re: 180° vehicle rotation on key press -
Pottus - 21.02.2015
Just get the zangle and add 180 to it then set the zangle.
Re : Re: 180° vehicle rotation on key press -
VinnyOne - 21.02.2015
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
Re : Re: 180° vehicle rotation on key press -
VinnyOne - 21.02.2015
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);
}
}
Re: Re : Re: 180° vehicle rotation on key press -
AndySedeyn - 21.02.2015
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;
}
Re: 180° vehicle rotation on key press -
Patrik356b - 22.02.2015
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