Need help with the engine -
Don_Cage - 26.03.2013
Hello, Whenever a player is in a vehicle that have engine off he is freezed and must turn on the engine before he can look around etc, I want the players to be able to look around with the mouse but not be able to drive even tho the engine is off. here is the public
pawn Код:
public Startup(playerid, vehicleid)
{
new pveh = GetVehicleModel(GetPlayerVehicleID(playerid));
new newcar = GetPlayerVehicleID(playerid);
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER || engineOn[vehicleid])
{
//I do nothing!
}
else if(PlayerInfo[playerid][pAdminDuty] == 1)
{
if(engineOn[vehicleid] == 0)
{
engineOn[vehicleid] = 1;
}
TogglePlayerControllable(playerid, true);
}
else if(IsModelAPlane(vehicleid) || IsModelAHeli(vehicleid))
{
if(engineOn[vehicleid] == 0)
{
engineOn[vehicleid] = 1;
}
TogglePlayerControllable(playerid, true);
}
else if(IsPlayerInAnyVehicle(playerid) && !vehicleEntered[playerid][vehicleid] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pveh != 510 && pveh != 462 && newcar != 59 && newcar != 60 && !IsAHarvest(newcar) && !IsADrugHarvest(newcar) && !IsASweeper(newcar) && !IsASalesVehicle(newcar))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Attention! Type /engine to start your engine!");
TogglePlayerControllable(playerid, false);
vehicleEntered[playerid][vehicleid] = true;
gEngine[playerid] = 0;
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,0,lights,alarm,doors,bonnet,boot,objective);
if(PlayerInfo[playerid][pSpeedo] == 1)
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "You Can Type /speedo To Enable/Disable The Speedometer!");
}
if(IsModelABike(GetPlayerVehicleID(playerid)))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Helmet or Else you can get Ticked! (/helmet)");
}
else
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Seat Belt or Else you can get Ticked! (/belt)");
}
}
else if(IsPlayerInAnyVehicle(playerid) && !engineOn[vehicleid] && vehicleEntered[playerid][vehicleid] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pveh != 510 && pveh != 462 && newcar != 59 && newcar != 60 && !IsAHarvest(newcar) && !IsADrugHarvest(newcar) && !IsASweeper(newcar))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Attention! Type /engine to start your engine!");
TogglePlayerControllable(playerid, false);
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "You Can Type /speedo To Enable/Disable The Speedometer!");
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Seatbelt/Helmet or Else you can get Ticked! (/belt)");
}
}
Re: Need help with the engine -
Joshman543 - 26.03.2013
pawn Код:
public Startup(playerid, vehicleid)
{
new pveh = GetVehicleModel(GetPlayerVehicleID(playerid));
new newcar = GetPlayerVehicleID(playerid);
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER || engineOn[vehicleid])
{
//I do nothing!
}
else if(PlayerInfo[playerid][pAdminDuty] == 1)
{
if(engineOn[vehicleid] == 0)
{
engineOn[vehicleid] = 1;
}
}
else if(IsModelAPlane(vehicleid) || IsModelAHeli(vehicleid))
{
if(engineOn[vehicleid] == 0)
{
engineOn[vehicleid] = 1;
}
}
else if(IsPlayerInAnyVehicle(playerid) && !vehicleEntered[playerid][vehicleid] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pveh != 510 && pveh != 462 && newcar != 59 && newcar != 60 && !IsAHarvest(newcar) && !IsADrugHarvest(newcar) && !IsASweeper(newcar) && !IsASalesVehicle(newcar))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Attention! Type /engine to start your engine!");
vehicleEntered[playerid][vehicleid] = true;
gEngine[playerid] = 0;
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,0,lights,alarm,doors,bonnet,boot,objective);
if(PlayerInfo[playerid][pSpeedo] == 1)
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "You Can Type /speedo To Enable/Disable The Speedometer!");
}
if(IsModelABike(GetPlayerVehicleID(playerid)))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Helmet or Else you can get Ticked! (/helmet)");
}
else
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Seat Belt or Else you can get Ticked! (/belt)");
}
}
else if(IsPlayerInAnyVehicle(playerid) && !engineOn[vehicleid] && vehicleEntered[playerid][vehicleid] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pveh != 510 && pveh != 462 && newcar != 59 && newcar != 60 && !IsAHarvest(newcar) && !IsADrugHarvest(newcar) && !IsASweeper(newcar))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Attention! Type /engine to start your engine!");
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "You Can Type /speedo To Enable/Disable The Speedometer!");
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Seatbelt/Helmet or Else you can get Ticked! (/belt)");
}
}
Don't know why you had toggleplayercontrollable in an engine command.
Re: Need help with the engine -
Don_Cage - 26.03.2013
When I press 's' and go to reverse the engine starts and you can drive again.. Also when I turn off the engine I get freezed.
pawn Код:
public Startup(playerid, vehicleid)
{
new pveh = GetVehicleModel(GetPlayerVehicleID(playerid));
new newcar = GetPlayerVehicleID(playerid);
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER || engineOn[vehicleid])
{
//I do nothing!
}
else if(PlayerInfo[playerid][pAdminDuty] == 1)
{
if(engineOn[vehicleid] == 0)
{
engineOn[vehicleid] = 1;
}
}
else if(IsModelAPlane(vehicleid) || IsModelAHeli(vehicleid))
{
if(engineOn[vehicleid] == 0)
{
engineOn[vehicleid] = 1;
}
}
else if(IsPlayerInAnyVehicle(playerid) && !vehicleEntered[playerid][vehicleid] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pveh != 510 && pveh != 462 && newcar != 59 && newcar != 60 && !IsAHarvest(newcar) && !IsADrugHarvest(newcar) && !IsASweeper(newcar) && !IsASalesVehicle(newcar))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Attention! Type /engine to start your engine!");
vehicleEntered[playerid][vehicleid] = true;
gEngine[playerid] = 0;
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,0,lights,alarm,doors,bonnet,boot,objective);
if(PlayerInfo[playerid][pSpeedo] == 1)
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "You Can Type /speedo To Enable/Disable The Speedometer!");
}
if(IsModelABike(GetPlayerVehicleID(playerid)))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Helmet or Else you can get Ticked! (/helmet)");
}
else
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Seat Belt or Else you can get Ticked! (/belt)");
}
}
else if(IsPlayerInAnyVehicle(playerid) && !engineOn[vehicleid] && vehicleEntered[playerid][vehicleid] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pveh != 510 && pveh != 462 && newcar != 59 && newcar != 60 && !IsAHarvest(newcar) && !IsADrugHarvest(newcar) && !IsASweeper(newcar))
{
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Attention! Type /engine to start your engine!");
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "You Can Type /speedo To Enable/Disable The Speedometer!");
SendClientMessage(playerid, COLOR_LIGHT_BLUE, "Remember: Use your Seatbelt/Helmet or Else you can get Ticked! (/belt)");
}
}
and here is the command
pawn Код:
if(!strcmp(cmd, "/engine", true))
{
if(IsPlayerInAnyVehicle(playerid))
{
if(IsPlayerConnected(playerid))
{
if(!engineOn[GetPlayerVehicleID(playerid)])
{
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return 1;
if(pveh == 510 || pveh == 462 || pveh == 481 || pveh == 509) return 1;
if(IsARentableCar(idcar))
{
if(HireCar[playerid] != idcar) return 1;
}
if(IsAHarvest(idcar)) return 1;
if(IsADrugHarvest(idcar)) return 1;
if(IsASweeper(idcar)) return 1;
if(IsASalesVehicle(idcar)) return 1;
if(CanTurnEngine[playerid] != idcar && CanTurnEngine[playerid] == 9999)
return SendClientMessage(playerid, COLOR_GREY,"* You cannot turn this car's engine!");
new plname[MAX_PLAYER_NAME];
GetPlayerName(playerid, plname, sizeof(plname));
format(string, sizeof(string), "*{FFFFFF} %s spins a key and Turns his car Engine {00FF00}ON.", plname);
ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
if(PlayerInfo[playerid][pAdmin] < 1337 && PlayerInfo[playerid][pAdminDuty] == 1)
{
SetTimerEx("StartingTheVehicle",0,0,"i",playerid);
}
else
{
SetTimerEx("StartingTheVehicle",0,0,"i",playerid);
}
gEngine[playerid] = 1;
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,1,lights,alarm,doors,bonnet,boot,objective);
// engineOn[GetPlayerVehicleID(playerid)] = true;
new y, m, d;
new h,mi,s;
getdate(y,m,d);
gettime(h,mi,s);
format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] %s [CMD] -> /engine",d,m,y,h,mi,s,sendername);
CommandLog(string);
return 1;
}
else if(engineOn[GetPlayerVehicleID(playerid)])
{
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return 1;
if(pveh == 510 || pveh == 462 || pveh == 481 || pveh == 509) return 1;
if(IsARentableCar(idcar))
if(IsASalesVehicle(idcar))
{
if(HireCar[playerid] != idcar) return 1;
}
if(IsAHarvest(idcar)) return 1;
if(IsADrugHarvest(idcar)) return 1;
if(IsASweeper(idcar)) return 1;
if(CanTurnEngine[playerid] != idcar && CanTurnEngine[playerid] == 9999)
return SendClientMessage(playerid, COLOR_GREY,"* You cannot turn this car's engine!");
format(string, sizeof(string), "*{FFFFFF} %s Spins His key And turns {FF0000}Off {FFFFFF}the Engine ", sendername);
ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
gEngine[playerid] = 0;
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,0,lights,alarm,doors,bonnet,boot,objective);
engineOn[GetPlayerVehicleID(playerid)] = false;
TogglePlayerControllable(playerid, 0);//// ath the dealship's in the game, you can go there and try to get a car, buy when you do /v it spawns you a car, but you can take it away, idk how you can buy it,can you fix it where they cant leave with the car, they have to buy it first?
new y, m, d;
new h,mi,s;
getdate(y,m,d);
gettime(h,mi,s);
format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] %s [CMD] -> /engine",d,m,y,h,mi,s,sendername);
CommandLog(string);
return 1;
}
}
}
return 1;
}
Re: Need help with the engine -
Don_Cage - 27.03.2013
bump
Re: Need help with the engine -
Don_Cage - 27.03.2013
bump
Re: Need help with the engine -
Konstantinos - 27.03.2013
Use only GetVehicleParamsEx to turn the engine off and don't use this function (TogglePlayerControllable) to freeze/unfreeze player either in the callback or in the command.
Re: Need help with the engine -
Don_Cage - 27.03.2013
I dont know what those are so could you show an example?
Re: Need help with the engine -
Don_Cage - 28.03.2013
bump
Re: Need help with the engine -
Scenario - 28.03.2013
https://sampwiki.blast.hk/wiki/GetVehicleParamsEx
https://sampwiki.blast.hk/wiki/SetVehicleParamsEx
^^ those two functions will give you the ability toggle the vehicle's engine
https://sampwiki.blast.hk/wiki/TogglePlayerControllable - you have this function somewhere in your "engine system" that is causing players to be frozen so they can't look around
Re: Need help with the engine -
Don_Cage - 28.03.2013
I still dont get it :/