OnPlayerUpdate(...
new Float:health;
new veh;
veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
if(health < 251)
{
SetVehicleHealth(veh,251);
}
new currentveh, Float:angle; currentveh = GetPlayerVehicleID(playerid);
GetVehicleZAngle(currentveh, angle);
SetVehicleZAngle(currentveh, angle);
return NisiAdmin(playerid);
public OnVehicleDamageStatusUpdate(vehicleid, playerid) //Get called every time a vehicle health changes (I think)
{
new Float:health; //Creating a variable for the car's health
GetVehicleHealth(vehicleid,health); //Storing the actual health of the vehicle in the variable
if(health < 250.0) //Checkin if the health is lower than 400.0 (1000.0 is the max, somewhere around 400.0, it catches fire)
{
new engine, lights, alarm, doors, bonnet, boot, objective; //Creating variable's for the vehicle's parameters (doors, bonnet, engine, etc)
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); //Getting the vehicle's parameters)
SetVehicleParamsEx(vehicleid, 0, 0, 0, doors, bonnet, boot, objective); //Turning off the engine
SetVehicleHealth(vehicleid,251.0);
SendClientMessage(playerid, 0xFF0000FF, "Your car is broken.");
return 1;
}
return 1;
}
forward CarCheckTimer();
public OnGameModeInit()
{
SetTimer(CarCheckTimer, 2000, true);
}
public CarCheckTimer();
{
for(new i=0; i<MAX_VEHICLES; i++)
{
new Float:vhealth;
GetVehicleHealth(v,vhealth);
if(vhealth < 250.0)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(v, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(v, VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
SetVehicleHealth(v,251.0);
SendClientMessage(playerid, 0xFF0000FF, "Your car is broken.");
return 1;
}
return 1;
}
}
#include <a_samp>
new
engine, lights, alarm, doors, bonnet, boot, objective;
public OnGameModeInit()
{
SetTimer("CarCheckTimer", 1000, true);
}
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
new
Float:health;
GetVehicleHealth(vehicleid, health);
if(health < 250.0) {
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, 0, 0, 0, doors, bonnet, boot, objective);
SetVehicleHealth(vehicleid, 251.0);
SendClientMessage(playerid, -1, "Your car is broken.");
return 1;
}
return 1;
}
forward CarCheckTimer(playerid);
public CarCheckTimer(playerid)
{
for(new i=0; i<MAX_VEHICLES; i++) {
new
Float:vhealth, veh;
veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, vhealth);
if(vhealth < 250.0) {
GetVehicleParamsEx(veh, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(veh, VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
SetVehicleHealth(veh, 251.0);
SendClientMessage(playerid, -1, "Your car is broken.");
return 1;
}
}
return 1;
}
//..Some code
new PlayerTime[MAX_PLAYERS], PlayerState[MAX_PLAYERS], Float:PlayerVehicleHP[MAX_PLAYERS], bool:UsableVehicle[MAX_VEHICLES];
stock IsVehicleUsable(vehicleid) return ((vehicleid > 0 && vehicleid < MAX_VEHICLES+1) ? UsableVehicle[vehicleid-1] : false);
stock MakeVehicleUsable(vehicleid) if(vehicleid > 0 && vehicleid < MAX_VEHICLES+1) UsableVehicle[vehicleid-1] = true;
stock MakeVehicleUnusable(vehicleid) if(vehicleid > 0 && vehicleid < MAX_VEHICLES+1) UsableVehicle[vehicleid-1] = false;
public OnPlayerDisconnect(playerid, reason)
{
//...
PlayerTime[playerid] = 0;
PlayerState[playerid] = 0;
PlayerVehicleHP[playerid] = 0;
//...
return 1;
}
public OnPlayerUpdate(playerid)
{
new tick = GetTickCount();
if(PlayerTime[playerid] >= tick) return 1; //Prevents script overkill (will delay up to < 1ms)
PlayerTime[playerid] = tick;
//...
new pvID = GetPlayerVehicleID(playerid);
if(pvID != 0)
{
new Float:pvHP;
GetVehicleHealth(pvID, pvHP);
if(PlayerVehicleHP[playerid] != pvHP)
{
if(pvHP < 251.0 && IsVehicleUsable(pvID))
{
MakeVehicleUnusable(vehicleid);
new Float:angle;
GetVehicleZAngle(pvID, angle);
SetVehicleZAngle(pvID, angle);
SetVehicleAngularVelocity(pvID, 0.0, 0.0, 0.0);
SetVehicleHealth(pvID, 251.0);
new vParams[7];
GetVehicleParamsEx(pvID, vParams[0], vParams[1], vParams[2], vParams[3], vParams[4], vParams[5], vParams[6]);
SetVehicleParamsEx(pvID, 0, 0, vParams[2], vParams[3], vParams[4], vParams[5], vParams[6]);
}
else if(pvHP >= 251.0 && !IsVehicleUsable(pvID))
{
MakeVehicleUsable(vehicleid);
new vParams[7];
GetVehicleParamsEx(pvID, vParams[0], vParams[1], vParams[2], vParams[3], vParams[4], vParams[5], vParams[6]);
SetVehicleParamsEx(pvID, 1, 1, vParams[2], vParams[3], vParams[4], vParams[5], vParams[6]);
}
PlayerVehicleHP[playerid] = pvHP;
}
}
else if(PlayerVehicleHP[playerid] != 0.0) PlayerVehicleHP[playerid] = 0.0;
return 1;
}
//..Some code
forward CarCheckTimer();
public OnGameModeInit()
{
SetTimer(CarCheckTimer, 2000, true);
}
public CarCheckTimer();
{
for(new i=0; i<MAX_VEHICLES; i++)
{
new Float:vhealth;
GetVehicleHealth(v,vhealth);
if(vhealth < 250.0)
{
new eng, lig, ala, doo, bon, boo, objt;
GetVehicleParamsEx(v, eng, lig, ala, doo, bon, boo, objte);
SetVehicleParamsEx(v, VEHICLE_PARAMS_OFF, lig, ala, doo, bon, boo, objt);
SetVehicleHealth(v,251.0);
SendClientMessage(playerid, 0xFF0000FF, "Your car is broken.");
return 1;
}
return 1;
}
}
Kostas, same as above
![]() |
new bool:Broken[9000];
(...)
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
// Setup local variables
new engine, lights, alarm, doors, bonnet, boot, objective;
(...)
if (Broken[vehicleid]==false){
// Start the engine and turn on the lights
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, 1, 1, alarm, doors, bonnet, boot, objective);
}
(...)
return 1;
}
(...)
public CarCheckTimer(playerid)
{
for(new i=0; i<MAX_VEHICLES; i++) {
new Float:vhealth, vehicleid, Float:x = 0.0, Float:y = 0.0, Float:z = 0.0;
vehicleid = GetPlayerVehicleID(playerid);
(...)
Broken[vehicleid] = true;
SendClientMessage(playerid, -1, "Your car is broken.");
return 1;
}
}
return 1;
}
error 033: array must be indexed (variable "Broken")