I'm making CarDamage include. This is his(sorry for English):
Код:
/*
* Wersja: VehicleDamageModule 0.5
* Credits: Filip 'KaSkA3eR' Czechowicz
*/
#define FULL 0
#define POPED 1
#define DAMAGED 1
#define SHAKED 2
#define REMOVED 3
#define F_L_TIRE 0
#define B_L_TIRE 1
#define F_R_TIRE 2
#define B_R_TIRE 3
#define F_L_LIGHT 0
#define B_L_LIGHT 1
#define F_R_LIGHT 2
#define B_R_LIGHT 3
#define FRONT_PANEL 6
#define BACK_PANEL 7
getPanel(vehid, panelid)
{
new panels,doors,lights,tires,p1,p2,ret;
GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
decode_panels(panels, p1, p2);
switch(panelid)
{
case FRONT_PANEL:
{
ret = p1;
}
case BACK_PANEL:
{
ret = p2;
}
}
return ret;
}
setPanel(vehid, panelid, status)
{
new panels,doors,lights,tires,p1,p2;
GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
decode_panels(panels, p1, p2);
switch(panelid)
{
case FRONT_PANEL:
{
panels = encode_panels(0, 0, 0, 0, 0, status, p2);
}
case BACK_PANEL:
{
panels = encode_panels(0, 0, 0, 0, 0, p1, status);
}
}
UpdateVehicleDamageStatus(vehid, panels, doors, lights, tires);
return 1;
}
getLight(vehid, lightid)
{
new panels,doors,lights,tires,l1,l2,l3,l4,ret;
GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
decode_lights(lights, l1, l2, l3, l4);
switch(lightid)
{
case F_L_LIGHT:
{
ret = l1;
}
case B_L_LIGHT:
{
ret = l2;
}
case F_R_LIGHT:
{
ret = l3;
}
case B_R_LIGHT:
{
ret = l4;
}
}
return ret;
}
setLight(vehid, lightid, status)
{
new panels,doors,lights,tires,l1,l2,l3,l4;
GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
decode_lights(lights, l1, l2, l3, l4);
switch(lightid)
{
case F_L_LIGHT:
{
lights = encode_lights(status, l2, l3, l4);
}
case B_L_LIGHT:
{
lights = encode_lights(l1, status, l3, l4);
break;
}
case F_R_LIGHT:
{
lights = encode_lights(l1, l2, status, l4);
}
case B_R_LIGHT:
{
lights = encode_lights(l1, l2, l3, status);
}
}
UpdateVehicleDamageStatus(vehid, panels, doors, lights, tires);
return 1;
}
getTire(vehid, tireid)
{
new panels,doors,lights,tires,t1,t2,t3,t4,ret;//121 line
GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
decode_tires(tires, t1, t2, t3, t4);//123
switch(tireid)//124
{//125
case F_L_TIRE:
{
ret = t1;
}
case B_L_TIRE:
{
ret = t2;
}
case F_R_TIRE:
{
ret = t3;
}
case B_R_TIRE:
{
ret = t4;
}
}
return ret;
}
setTire(vehid, tireid, stat)
{
new panels,doors,lights,tires,t1,t2,t3,t4;
GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
t1 = getTire(vehid, F_L_TIRE);
t2 = getTire(vehid, B_L_TIRE);//151
t3 = getTire(vehid, F_R_TIRE);
t4 = getTire(vehid, B_R_TIRE);//153
switch(tireid)//154
{//155
case F_L_TIRE:
{
UpdateVehicleDamageStatus(vehid, panels, doors, lights, encode_tires(stat, t2, t3, t4));
}
case B_L_TIRE:
{
UpdateVehicleDamageStatus(vehid, panels, doors, lights, encode_tires(t1, stat, t3, t4));
}
case F_R_TIRE:
{
UpdateVehicleDamageStatus(vehid, panels, doors, lights, encode_tires(t1, t2, stat, t4));
}
case B_R_TIRE:
{
UpdateVehicleDamageStatus(vehid, panels, doors, lights, encode_tires(t1, t2, t3, stat));
}
}
return 1;
}
decode_lights(lights, &light1, &light2, &light3, &light4)
{
light1 = lights & 1;
light2 = lights >> 1 & 1;
light3 = lights >> 2 & 1;
light4 = lights >> 3 & 1;
}
decode_panels(panels, &front_bumper, &rear_bumper)
{
front_bumper= panels >> 20 & 15;
rear_bumper = panels >> 24 & 15;
}
decode_doors(doors, &bonnet, &boot, &driver_door, &passenger_door)
{
bonnet = doors & 7;
boot = doors >> 8 & 7;
driver_door = doors >> 16 & 7;
passenger_door = doors >> 24 & 7;
}
decode_tires(tires, &tire1, &tire2, &tire3, &tire4)
{
tire1 = tires & 1;
tire2 = tires >> 1 & 1;
tire3 = tires >> 2 & 1;
tire4 = tires >> 3 & 1;
}
encode_tires(tire1, tire2, tire3, tire4)
{
return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
}
encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper)
{
return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24);
}
encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door)
{
#pragma unused behind_driver_door
#pragma unused behind_passenger_door
return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24);
}
encode_lights(light1, light2, light3, light4)
{
return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3);
}