// Объявляем глобально
// Константы если необходимо заменяешь на свои
new player_shot_id[MAX_PLAYERS];
new vehicle_death_id[MAX_VEHICLES];
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
if (hittype == BULLET_HIT_TYPE_VEHICLE)
{
static Float:X, Float:Y, Float:Z; //Show in the petrol tank - It also works when the player is inside.
GetVehicleModelInfo(GetVehicleModel(hitid), VEHICLE_MODEL_INFO_PETROLCAP, X, Y, Z);
if (VectorSize(fX-X, fY-Y, fZ-Z) < 0.15)
{
SetVehicleHealth(hitid, 0.0);
// Записываем полученные значения в нужную ячейку
player_shot_id[playerid] = playerid;
vehicle_death_id[hitid] = hitid;
return 1;
}
//Shot in empty vehicle
for (new i = GetPlayerPoolSize(); i > -1; i--)
{
if (GetPlayerVehicleID(i) == hitid && GetPlayerVehicleSeat(i) == 0)
{
return 1;
}
}
GetVehicleHealth(hitid, X);
if (X > 0)
{
switch (weaponid)
{
case 0..15: SetVehicleHealth(hitid, X - 10);
case 22..23: SetVehicleHealth(hitid, X - 15);
case 24: SetVehicleHealth(hitid, X - 50);
case 25..27: SetVehicleHealth(hitid, X - 30);
case 28,29,32: SetVehicleHealth(hitid, X - 5);
case 30,31: SetVehicleHealth(hitid, X - 10);
case 33,34: SetVehicleHealth(hitid, X - 40);
case 35..38: SetVehicleHealth(hitid, X - 80);
default: return 1;
}
}
}
return 1;
}
PHP Code:
|
public OnVehicleDeath(vehicleid, killerid)
{
if (vehicleid == vehicle_death_id[vehicleid] && killerid == player_shot_id[killerid])
{
...
}
}
Я предпалагаю, что вот так
PHP Code:
|
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
if(hittype == BULLET_HIT_TYPE_VEHICLE)
{
static Float:X, Float:Y, Float:Z; //Show in the petrol tank - It also works when the player is inside.
GetVehicleModelInfo(GetVehicleModel(hitid), VEHICLE_MODEL_INFO_PETROLCAP, X, Y, Z);
if(VectorSize(fX-X, fY-Y, fZ-Z) < 0.15)
{
SetVehicleHealth(hitid, 0.0);
EmptyVeh[hitid] = hitid;
KillerVeh[playerid] = playerid;
return 1;
}
//Shot in empty vehicle
for(new i = GetPlayerPoolSize(); i > -1; i--)
{
if(GetPlayerVehicleID(i) == hitid && GetPlayerVehicleSeat(i) == 0)
return 1;
}
GetVehicleHealth(hitid, X);
EmptyVeh[hitid] = hitid;
KillerVeh[playerid] = playerid;
if(X > 0)
{
switch(weaponid)
{
case 0 .. 15: SetVehicleHealth(hitid, X - 10);
case 22 .. 23: SetVehicleHealth(hitid, X - 15);
case 24: SetVehicleHealth(hitid, X - 50);
case 25 .. 27: SetVehicleHealth(hitid, X - 30);
case 28, 29, 32: SetVehicleHealth(hitid, X - 5);
case 30, 31: SetVehicleHealth(hitid, X - 10);
case 33, 34: SetVehicleHealth(hitid, X - 40);
case 35 .. 38: SetVehicleHealth(hitid, X - 80);
default: return 1;
}
}
}
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
if (vehicleid == EmptyVeh[vehicleid])
{
if (killerid == vehicleid)
{
SetVehicleToRespawn(vehicleid);
}
}
return 1;
}
if (VectorSize(fX-X, fY-Y, fZ-Z) < 0.15)
if (VectorSize(fX-X, fY-Y, fZ-Z) < 0.15)
{
SetVehicleHealth(hitid, 0.0);
EmptyVeh[hitid] = hitid;
KillerVeh[playerid] = playerid;
print("DEBUG 1");
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
if (vehicleid == EmptyVeh[vehicleid])
{
if (killerid == vehicleid)
{
SetVehicleToRespawn(vehicleid);
print("DEBUG 2");
}
}
return 1;
}
printf("DEBUG OnVehicleDeath(vehicleid = %d, killerid = %d)", vehicleid, killerid);
printf("DEBUG EmptyVeh[%d] = %d | KillerVeh[%d] = %d", hitid, EmptyVeh[hitid], playerid, KillerVeh[playerid]);