SA-MP Forums Archive
My engine command is bugged! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: My engine command is bugged! (/showthread.php?tid=389992)



HELP! My engine command is bugged! - JoeySaladino - 04.11.2012

So, my problem here is, when you enter the car it actually just sets you uncontrollable, then you do /engine, you can move etc, but then when you do /engine and get out of the car, the player just teleports next to the car, or to the cars roof, and I really would like to make it, so the player goes into the car, the lights start, and the engine sounds comes up, and the same other way around, so the player can leave the car normally!


Код:
if(!strcmp(cmd, "/engine", true))
	{
	    if(IsPlayerConnected(playerid))
     {
			if(IsPlayerInAnyVehicle(playerid))
			{
			    if(IsADmv(idcar) || IsAHarvest(idcar) || IsADrugHarvest(idcar) || IsAPlane(idcar) || IsASweeper(idcar) || pveh == 510 || pveh == 462 || pveh == 481 || pveh == 509)
					return 1;
	        	if(Gas[idcar] == 0)
	        	    return SendClientMessage(playerid,COLOR_RED,"   No fuel in this vehicle!");
                if(dying[playerid] == 1)
                    return SendClientMessage(playerid,COLOR_GREY,"   Do not bug abuse!");
	    		if(!engineOn[idcar])
	    		{
         		if(GetPlayerState(playerid) != PLAYER_STATE_PASSENGER)
					{
					    new playerveh = GetPlayerVehicleID(playerid);
					    engineOn[idcar] = true;
					    PutPlayerInVehicle(playerid, playerveh, 0);
					    TogglePlayerControllable(playerid,1);
					    format(string, sizeof(string), "* %s spins the key and starts vehicle's engine.", sendername);
					    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
						return 1;
					}
					return 1;
				}
				else if(engineOn[idcar])
	    		{
	        		if(GetPlayerState(playerid) != PLAYER_STATE_PASSENGER)
					{
					    engineOn[idcar] = false;
					    TogglePlayerControllable(playerid, 0);
					    format(string, sizeof(string), "* %s spins the key and turns off the engine of the vehicle.", sendername);
					    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
						return 1;
					}
					return 1;
				}
			}
	    }
	    return 1;
	}
Thanks!

OH and I also have this on OnPlayerStateChange



Код:
 new string[256];
	new pveh = GetVehicleModel(GetPlayerVehicleID(playerid));
	new vehicle = GetPlayerVehicleID(playerid);
	if(oldstate == PLAYER_STATE_ONFOOT && (newstate == PLAYER_STATE_PASSENGER || newstate == PLAYER_STATE_DRIVER))
	    AffectVehicleDamageToPlayer(playerid,vehicle,1);
	if((oldstate == PLAYER_STATE_PASSENGER || oldstate == PLAYER_STATE_DRIVER) && newstate == PLAYER_STATE_ONFOOT)
	    AffectVehicleDamageToPlayer(playerid,vehicle,0);
    if(newstate == PLAYER_STATE_DRIVER)
	{
		if(dying[playerid] == 1){RemovePlayerFromVehicle(playerid); TogglePlayerControllable(playerid, 0); ApplyAnimation(playerid,"PED","KO_skid_front",4.1,0,1,1,1,0); }
	}
	if(newstate == PLAYER_STATE_ONFOOT && SeatBelt[playerid]==true)
    {
    	SeatBelt[playerid]=false;
    	format(string, sizeof(string), "* %s unbuckles his/her seat belt", GetPlayerNameEx(playerid));
		ProxDetector(15.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
	}
	if(IsADmv(vehicle) || IsAHarvest(vehicle) || IsADrugHarvest(vehicle) || IsAPlane(vehicle) || IsASweeper(vehicle) || pveh == 510 || pveh == 462 || pveh == 481 || pveh == 509)
	{	}
	else if(newstate == PLAYER_STATE_DRIVER && engineOn[vehicle] == 1)
	{
		TogglePlayerControllable(playerid,1);//allow driving - engine on
	}
	else if(newstate == PLAYER_STATE_DRIVER && engineOn[vehicle] == 0)
	{
		TogglePlayerControllable(playerid,0);//dosn't allow driving - engine off
		SendClientMessage(playerid, COLOR_WHITE,"To start the engine use '/engine' ");



Re: My engine command is bugged! - verlaj - 04.11.2012

I think problem is with OnPlayerStateChange(not sure)

try using
pawn Код:
OnPlayerEnterVehicle



Re: My engine command is bugged! - JoeySaladino - 04.11.2012

What should I put? Any hints or tips?


Re: My engine command is bugged! - JoeySaladino - 04.11.2012

Okay so, this is what I have in OnPlayerEnterVehicle, yeah the problem is the Toggleplayercontrollable(,0)


Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	if(PlayerInfo[playerid][pJailed] == 2)
	{
	    new string[256];
	    SendClientMessage(playerid, COLOR_LIGHTRED, "~ Do not bug abuse! ~");
	    new Float:cx, Float:cy, Float:cz;
		GetPlayerPos(playerid, cx, cy, cz);
		SetPlayerPos(playerid, cx,  cy, cz);
		new giveplayer[MAX_PLAYER_NAME];
		GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
		format(string, sizeof(string), "[SERVER]: %s has been trying to prisonbreak from admin jail!", giveplayer);
		ABroadCast(COLOR_YELLOW,string,1);
	}
    if (dying[playerid] == 1)
	{
		SendClientMessage(playerid, COLOR_GRAD2, "~ You can't drive when you are dying! ~");
		TogglePlayerControllable(playerid, 1);
		ApplyAnimation(playerid,"PED","KO_skid_front",4.1,0,1,1,1,0);
	}
	if(gTeam[playerid] >= 1||gTeam[playerid] >= 3||gTeam[playerid] >= 4)
	{
		if (IsACopCar(vehicleid) && !ispassenger)
		{
			if(IsACop(playerid) || IsASheriff(playerid)) {}
		    else {
				//WantedPoints[playerid]+=2;
				//SetPlayerCriminal(playerid,255, "Stealing A Police Vehicle");
				new Float:cx, Float:cy, Float:cz;
				GetPlayerPos(playerid, cx, cy, cz);
				SetPlayerPos(playerid, cx,  cy, cz);
			}
		}
		if(IsAGarageCar(vehicleid) && !ispassenger)
		{
		    if(IsAGarageMan(playerid)) {}
		    else {
		        new Float:cx, Float:cy, Float:cz;
				GetPlayerPos(playerid, cx, cy, cz);
				SetPlayerPos(playerid, cx,  cy, cz);
      		}
		}
		if (IsASheriffCar(vehicleid) && !ispassenger)
		{
			if(IsASheriff(playerid) || IsACop(playerid)) {}
		    else {
				new Float:cx, Float:cy, Float:cz;
				GetPlayerPos(playerid, cx, cy, cz);
				SetPlayerPos(playerid, cx,  cy, cz);
			}
		}
  		if(!ispassenger)
    	{
        for(new i=0; i<MAX_PLAYERS; i++)
        {
            if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER)
            {
                new Float:cx, Float:cy, Float:cz;
                GetPlayerPos(playerid, cx, cy, cz);
                SetPlayerPos(playerid, cx,  cy, cz);
                SendClientMessage(playerid,COLOR_GRAD2," Someone is driving this vehicle, you must take it properly !");
            }
        }
    }
Any idea how to fix it?


Re: My engine command is bugged! - JoeySaladino - 05.11.2012

bump