Flip/Speedboost/Jump with car
#1

I have a FS with flip, speedboost and jump with the car.
But if a player get in as passenger and press the H the car flips, if he press 2 the car jump.
How Can i make it so when a player is passenger can't do all this.
Only the driver.
Reply
#2

well you use onplayerstatechange and do if(newstate == PLAYER_STATE_DRIVER) let him use em and use } else { then tell them they cant use it
Reply
#3

use something like this:
pawn Код:
new playerState = GetPlayerState(playerid);
    {
        if (playerState == PLAYER_STATE_DRIVER)
        {
            //boosts script
        }
    }
Reply
#4

if(GetPlayerState(playerd) == 2)
Reply
#5

Quote:
Originally Posted by Zonoya
Посмотреть сообщение
well you use onplayerstatechange and do if(newstate == PLAYER_STATE_DRIVER) let him use em and use } else { then tell them they cant use it
It has
pawn Код:
OnPlayerKeyStateChange
This is the FS
pawn Код:
//SpeedBoost With Car Fly Nitros by Boom
//Don't Romove the Credits Please
//You can Add it with the credits thanks Enjoy my script


#include a_samp
#define FILTERSCRIPT
#define red 0xF60000AA
#define GREEN               0x21DD00FF
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define COLOR_MESSAGE_YELLOW            0xFFDD00AA
//------------------------------------------------------------------------------
new Float:SpeedBoostMultiplier[MAX_PLAYERS];

// -----------------------------------------------------------------------------

public OnFilterScriptInit()
{
    print("\n-------------------------------------------------");
    print(" Speed Boost With Car Fly Has been loaded by Boom");
    print("-------------------------------------------------\n");

    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (IsPlayerConnected(i) && !IsPlayerNPC(i))
        {
            SpeedBoostMultiplier[i] = 3.0;
        }
    }

    return 1;
}

// -----------------------------------------------------------------------------

public OnFilterScriptExit()
{
    print("\n------------------------------------------------");
    print(" Unloaded SpeedBoost with CarFly By Boom Successfully");
    print("------------------------------------------------\n");
    return 1;
}

// -----------------------------------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new idx;

    cmd = strtok(cmdtext, idx);
    if (strcmp(cmd, "/SpeedBoostSetup", true) == 0 || strcmp(cmd, "/ssb", true) == 0)
    {
        new strBoostMultiplier[256];
        new strTempString[256];
        strBoostMultiplier = strtok(cmdtext, idx);

        if (!strlen(strBoostMultiplier))
        {
            return 1;
        }

        if (!IsNumeric2(strBoostMultiplier))
        {
            return 1;
        }

        new Float:BoostMultiplier = floatstr(strBoostMultiplier);

        if (BoostMultiplier < 1.0 || BoostMultiplier > 3.0)
        {
            SendClientMessage(playerid, COLOR_MESSAGE_YELLOW, "*** Error: You can just change it for 0.1 to 3.0");
            return 1;
        }

        SpeedBoostMultiplier[playerid] = BoostMultiplier;

        format(strTempString,sizeof(strTempString), "*** You set your speed boost multiplier to %0.2f", SpeedBoostMultiplier[playerid]);
        SendClientMessage(playerid, COLOR_MESSAGE_YELLOW, strTempString);

        return 1;
    }
    return 0;
}

// -----------------------------------------------------------------------------

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, COLOR_MESSAGE_YELLOW, "*** Welcome To Anti-Knots Team! Enjoy!");
    // (the previous player may of changed it)
    SpeedBoostMultiplier[playerid] = 2.0; //Its 2.0 you can also doing 3.0 and change it
    return 1;
}

// -----------------------------------------------------------------------------

stock strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

// -----------------------------------------------------------------------------

IsNumeric2(const string[])
{
    new length=strlen(string);
    if (length==0) return false;
    for (new i = 0; i < length; i++)
    {
      if((string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+' && string[i]!='.') // Not a number,'+' or '-' or '.'
             || (string[i]=='-' && i!=0)                                             // A '-' but not first char.
             || (string[i]=='+' && i!=0)                                             // A '+' but not first char.
         ) return false;
    }
    if (length==1 && (string[0]=='-' || string[0]=='+' || string[0]=='.')) return false;
    return true;
}

// -----------------------------------------------------------------------------

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_CROUCH)
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            {
                RepairVehicle(GetPlayerVehicleID(playerid));
            }
        }
    }
    if (PRESSED(KEY_FIRE))
    {
        new
            vehicleid = GetPlayerVehicleID(playerid);
        if (vehicleid)
        {
            AddVehicleComponent(vehicleid, 1010);
        }
    }
    if(newkeys & KEY_FIRE && IsPlayerInAnyVehicle(playerid))
    {
        if(!IsNosVehicle(GetPlayerVehicleID(playerid))) return
        AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
        PlayerPlaySound(playerid, 1133 ,0, 0, 0);
    }
    if(newkeys & KEY_SUBMISSION && IsPlayerInAnyVehicle(playerid))
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            new Float:x, Float:y, Float:z;
            GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
            SetVehicleVelocity(GetPlayerVehicleID(playerid) ,x ,y ,z+0.3);
        }
    }
    if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        if (newkeys & KEY_FIRE)
        {
            new Float:vx, Float:vy, Float:vz;
            GetVehicleVelocity(GetPlayerVehicleID(playerid), vx, vy, vz);

            if (floatabs(vx) < 3 && floatabs(vy) < 3 && floatabs(vz) < 3)
            {
                SetVehicleVelocity(GetPlayerVehicleID(playerid), vx * SpeedBoostMultiplier[playerid], vy * SpeedBoostMultiplier[playerid], vz * SpeedBoostMultiplier[playerid]);
            }
            return 1;
        }
    }
    return 1;
}
IsNosVehicle(vehicleid)
{
    #define NO_NOS_VEHICLES 52

    new InvalidNosVehicles[NO_NOS_VEHICLES] =
    {
        581,523,462,521,463,522,461,448,468,586,417,425,469,487,512,520,563,593,
        509,481,510,472,473,493,520,595,484,430,453,432,476,497,513,533,577,
        452,446,447,454,590,569,537,538,570,449,519,460,488,511,519,548,592
    };

    for(new i = 0; i < NO_NOS_VEHICLES; i++)
    {
        if(GetVehicleModel(vehicleid) == InvalidNosVehicles[i])
        {
            return false;
        }
    }
    return true;
}
Can you tell me what i add and replace, I am not very good with the script :P
Reply
#6

Seems to be checking that the playerid is the driver for the speedboost already, I can't find the flip part In the script, only boost, jump and nitro, fixed those.

pawn Код:
//SpeedBoost With Car Fly Nitros by Boom
//Don't Romove the Credits Please
//You can Add it with the credits thanks Enjoy my script


#include a_samp
#define FILTERSCRIPT
#define red 0xF60000AA
#define GREEN               0x21DD00FF
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define COLOR_MESSAGE_YELLOW            0xFFDD00AA
//------------------------------------------------------------------------------
new Float:SpeedBoostMultiplier[MAX_PLAYERS];

// -----------------------------------------------------------------------------

public OnFilterScriptInit()
{
    print("\n-------------------------------------------------");
    print(" Speed Boost With Car Fly Has been loaded by Boom");
    print("-------------------------------------------------\n");

    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (IsPlayerConnected(i) && !IsPlayerNPC(i))
        {
            SpeedBoostMultiplier[i] = 3.0;
        }
    }

    return 1;
}

// -----------------------------------------------------------------------------

public OnFilterScriptExit()
{
    print("\n------------------------------------------------");
    print(" Unloaded SpeedBoost with CarFly By Boom Successfully");
    print("------------------------------------------------\n");
    return 1;
}

// -----------------------------------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new idx;

    cmd = strtok(cmdtext, idx);
    if (strcmp(cmd, "/SpeedBoostSetup", true) == 0 || strcmp(cmd, "/ssb", true) == 0)
    {
        new strBoostMultiplier[256];
        new strTempString[256];
        strBoostMultiplier = strtok(cmdtext, idx);

        if (!strlen(strBoostMultiplier))
        {
            return 1;
        }

        if (!IsNumeric2(strBoostMultiplier))
        {
            return 1;
        }

        new Float:BoostMultiplier = floatstr(strBoostMultiplier);

        if (BoostMultiplier < 1.0 || BoostMultiplier > 3.0)
        {
            SendClientMessage(playerid, COLOR_MESSAGE_YELLOW, "*** Error: You can just change it for 0.1 to 3.0");
            return 1;
        }

        SpeedBoostMultiplier[playerid] = BoostMultiplier;

        format(strTempString,sizeof(strTempString), "*** You set your speed boost multiplier to %0.2f", SpeedBoostMultiplier[playerid]);
        SendClientMessage(playerid, COLOR_MESSAGE_YELLOW, strTempString);

        return 1;
    }
    return 0;
}

// -----------------------------------------------------------------------------

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, COLOR_MESSAGE_YELLOW, "*** Welcome To Anti-Knots Team! Enjoy!");
    // (the previous player may of changed it)
    SpeedBoostMultiplier[playerid] = 2.0; //Its 2.0 you can also doing 3.0 and change it
    return 1;
}

// -----------------------------------------------------------------------------

stock strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

// -----------------------------------------------------------------------------

IsNumeric2(const string[])
{
    new length=strlen(string);
    if (length==0) return false;
    for (new i = 0; i < length; i++)
    {
      if((string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+' && string[i]!='.') // Not a number,'+' or '-' or '.'
             || (string[i]=='-' && i!=0)                                             // A '-' but not first char.
             || (string[i]=='+' && i!=0)                                             // A '+' but not first char.
         ) return false;
    }
    if (length==1 && (string[0]=='-' || string[0]=='+' || string[0]=='.')) return false;
    return true;
}

// -----------------------------------------------------------------------------

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_CROUCH)
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            {
                RepairVehicle(GetPlayerVehicleID(playerid));
            }
        }
    }
    if (PRESSED(KEY_FIRE))
    {
        new
            vehicleid = GetPlayerVehicleID(playerid);
        if (vehicleid)
        {
            AddVehicleComponent(vehicleid, 1010);
        }
    }
    if(newkeys & KEY_FIRE && IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == 2)
    {
        if(!IsNosVehicle(GetPlayerVehicleID(playerid))) return
        AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
        PlayerPlaySound(playerid, 1133 ,0, 0, 0);
    }
    if(newkeys & KEY_SUBMISSION && IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == 2)
    {
        new Float:x, Float:y, Float:z;
        GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
        SetVehicleVelocity(GetPlayerVehicleID(playerid) ,x ,y ,z+0.3);
    }
    if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        if (newkeys & KEY_FIRE)
        {
            new Float:vx, Float:vy, Float:vz;
            GetVehicleVelocity(GetPlayerVehicleID(playerid), vx, vy, vz);

            if (floatabs(vx) < 3 && floatabs(vy) < 3 && floatabs(vz) < 3)
            {
                SetVehicleVelocity(GetPlayerVehicleID(playerid), vx * SpeedBoostMultiplier[playerid], vy * SpeedBoostMultiplier[playerid], vz * SpeedBoostMultiplier[playerid]);
            }
            return 1;
        }
    }
    return 1;
}
IsNosVehicle(vehicleid)
{
    #define NO_NOS_VEHICLES 52

    new InvalidNosVehicles[NO_NOS_VEHICLES] =
    {
        581,523,462,521,463,522,461,448,468,586,417,425,469,487,512,520,563,593,
        509,481,510,472,473,493,520,595,484,430,453,432,476,497,513,533,577,
        452,446,447,454,590,569,537,538,570,449,519,460,488,511,519,548,592
    };

    for(new i = 0; i < NO_NOS_VEHICLES; i++)
    {
        if(GetVehicleModel(vehicleid) == InvalidNosVehicles[i])
        {
            return false;
        }
    }
    return true;
}
Reply
#7

Thank you, Elorreli
It works perfect
Also, the flip part is on my gamemode, not on this FS, my fault.
This is the flip
pawn Код:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
  if(IsPlayerInAnyVehicle(playerid))
  {
    if(newkeys &= 2)
    {
      new Float:ZAngle,Float:X,Float:Y,Float:Z,vehicleid;
      vehicleid = GetPlayerVehicleID(playerid);
      GetVehiclePos(vehicleid,X,Y,Z);
      GetVehicleZAngle(vehicleid,ZAngle);
      SetVehicleZAngle(vehicleid,ZAngle);
      SetVehiclePos(vehicleid,X,Y,Z+2);
    }
  }
  return 1;
}
Reply
#8

pawn Код:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
        if(newkeys &= 2)
        {
            if( GetPlayerState( playerid ) != PLAYER_STATE_DRIVER ) return SendClientMessage(playerid, -1, "You cant use this since youre not the driver!"); // if the playerstate doesnt equals to 2, it sends him the message
            new Float:ZAngle,Float:X,Float:Y,Float:Z,vehicleid;
            vehicleid = GetPlayerVehicleID(playerid);
            GetVehiclePos(vehicleid,X,Y,Z);
            GetVehicleZAngle(vehicleid,ZAngle);
            SetVehicleZAngle(vehicleid,ZAngle);
            SetVehiclePos(vehicleid,X,Y,Z+2);
        }
    }
    return 1;
}
Reply
#9

Quote:
Originally Posted by Wesley221
Посмотреть сообщение
pawn Код:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
        if(newkeys &= 2)
        {
            if( GetPlayerState( playerid ) != PLAYER_STATE_DRIVER ) return SendClientMessage(playerid, -1, "You cant use this since youre not the driver!"); // if the playerstate doesnt equals to 2, it sends him the message
            new Float:ZAngle,Float:X,Float:Y,Float:Z,vehicleid;
            vehicleid = GetPlayerVehicleID(playerid);
            GetVehiclePos(vehicleid,X,Y,Z);
            GetVehicleZAngle(vehicleid,ZAngle);
            SetVehicleZAngle(vehicleid,ZAngle);
            SetVehiclePos(vehicleid,X,Y,Z+2);
        }
    }
    return 1;
}
Also, Thanks Wesley221 for the flip part! All works fine with it.

Question:

I want to add a ChaseCar, this is the FS
pawn Код:
#include <a_samp> //includes a_samp

new AllCars[93] =
{
400,401,402,404,405,410,411,412,415,418,419,420,421,422,424,426,429,434,436,
438,439,442,445,451,458,466,467,470,474,475,477,478,480,480,480,480,489,490,
491,492,494,496,500,501,502,503,504,505,506,507,516,517,518,526,527,529,533,
534,535,536,540,541,542,543,545,546,547,549,550,551,555,558,559,560,561,562,
565,566,567,575,576,580,585,587,589,596,597,598,600,602,603,604,605,
}; //defines all the cars in game

new Float:x = 2324.3391; //x position
new Float:y = -1270.5941; //y position
new Float:z = 22.1586; //z position
new Float:rot = 180.6980; //rotation

new ccar; //stores the car
forward ccc(); //forward ccc

main()
{
    print("ChaseCar loaded!"); //prints ClaseCar loaded!
}

public OnFilterScriptInit()
{
    ccar = AddStaticVehicle(562,x,y,z,rot,122,1); // ccar
    SetTimer("ccc", 500, 1); //sets the timer
   
    for(new i=0; i<MAX_VEHICLES; i++)  //loop
    {
        if(i == ccar) //if i == ccar
        {
            SetVehicleNumberPlate(i, "ChaseMe"); //sets the cars number plate
            SetVehicleToRespawn(i); //respawns it (VERY IMPORTANT!!!)
        }
    }
    return 1;
}

public OnFilterScriptExit()
{
    DestroyVehicle(ccar); //destroys the car
    return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(vehicleid == ccar) //if vehicleid == ccar
    {
        new name[MAX_PLAYER_NAME], string[44]; //defines name and string
        GetPlayerName(playerid, name, sizeof(name)); //gets the players name
        format(string, sizeof(string), "%s has taken the ChaseCar!",name); //formats the message
        SendClientMessageToAll(0xFF0000FF, string); //sends the message
    }
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(vehicleid == ccar) //if vehicleid == ccar
    {
        new name[MAX_PLAYER_NAME], string[44]; //defines name and string
        GetPlayerName(playerid, name, sizeof(name)); //gets the players name
        format(string, sizeof(string), "%s has left the ChaseCar!",name); //formats the message
        SendClientMessageToAll(0xFF0000FF, string); //sends the message
    }
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    if(vehicleid == ccar)
    {
        ChangeVehiclePaintjob(vehicleid,0); // paint job
        AddVehicleComponent(vehicleid, 1038); // roof
        AddVehicleComponent(vehicleid, 1079); // rim
        AddVehicleComponent(vehicleid, 1037); // exhaust
        AddVehicleComponent(vehicleid, 1041); // side
        AddVehicleComponent(vehicleid, 1153); // front
        AddVehicleComponent(vehicleid, 1148); // rear
        AddVehicleComponent(vehicleid, 1139); // Spoiler
        AddVehicleComponent(vehicleid, 1010); // Nitrous
        SendClientMessageToAll(0xFF0000FF, "The ChaseCar Respawned!!!"); //message
    }
    return 1;
}

public ccc() //public
{
    for(new i=0; i < MAX_PLAYERS; i++) //loop
    {
        if(IsPlayerInCar(i)) //if player is in car
        {
            if(GetPlayerVehicleID(i) == ccar) //if player car == ccar
            {
                GivePlayerMoney(i, 500); //gives player money
            }
        }
    }
}

stock IsPlayerInCar(playerid) //function
{
    new vehicleid = GetPlayerVehicleID(playerid); //gets the vehicle id
    if(!IsPlayerInAnyVehicle(playerid)) return 0; //if player aint in cat, return 0;
    for(new i = 0; i < 93; i++) //loop
    {
        if(GetVehicleModel(vehicleid) == AllCars[i]) //if the car is a car in allcars
        {
            return 1; //returns 1
        }
    }
    return 0; //returns 0
}
How can I cancel again the speedboost/jumpcar/flip while you are driving the ChaseCar?
Reply
#10

So you want to disable the commands when youre in a chasecar?
if so:
pawn Код:
if( GetPlayerVehicleID(playerid) == ChaseCarVariableHere || GetPlayerVehicleID(playerid) == ChaseCarVariableHere2 ) return SendClientMessage(playerid, -1, "You cant perform this while youre driving a chase car!");
That basicly checks the vehicle of the current player, and compares it to the ChaseCarVariabe, and if they compare, it will show him the message and stops the command.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)