08.11.2017, 10:57
Пытаюсь по отдельности ремонтировать каждый поврежденный элемент автомобиля. Текущий статус элемента определяется без проблем, и без проблем чинится каждый элемент только при условии, что другие элементы - не повреждены. Если повреждено более двух элементов - визуально ремонт не выполняется, но статус повреждения изменяется
Другими словами:
Переходить к костылям или все же что то здесь упущено?
Другими словами:
Quote:
Всем доброго времени суток! Проблема такая, когда я пытаюсь отремантировать двери или бампера с помощью этой функции (которая в названии темы), то реакции нет. Причём нет именно тогда, когда сломоно что-то ещё. Если же к примеру сломана одна дверь или 2 двери на одной стороне, то они ремонтируются. Идея заключается в том что бы каждая деталь автомобиля востонавливалась отдельно. Исключая конечно же задние двери, так как их состояние нельзя определить. |
PHP код:
stock RepairVehicleElement(vehicleid, type_element, element, newstate)
{
new p, d, l, t;
new door_bonnet, door_boot, door_driver, door_passenger;
new front_left_panel, front_right_panel, rear_left_panel, rear_right_panel, windshield, front_bumper, rear_bumper;
new rear_right_tire, front_right_tire, rear_left_tire, front_left_tire;
GetVehicleDamageStatus(vehicleid, p, d, l, t);
if(type_element == 1)
{
decode_panels(p, front_left_panel, front_right_panel, rear_left_panel, rear_right_panel, windshield, front_bumper, rear_bumper);
if(element == 1) { p = encode_panels(newstate, front_right_panel, rear_left_panel, rear_right_panel, windshield, front_bumper, rear_bumper); }
else if(element == 2) { p = encode_panels(front_left_panel, newstate, rear_left_panel, rear_right_panel, windshield, front_bumper, rear_bumper); }
else if(element == 3) { p = encode_panels(front_left_panel, front_right_panel, newstate, rear_right_panel, windshield, front_bumper, rear_bumper); }
else if(element == 4) { p = encode_panels(front_left_panel, front_right_panel, rear_left_panel, newstate, windshield, front_bumper, rear_bumper); }
else if(element == 5) { p = encode_panels(front_left_panel, front_right_panel, rear_left_panel, rear_right_panel, newstate, front_bumper, rear_bumper); }
else if(element == 6) { p = encode_panels(front_left_panel, front_right_panel, rear_left_panel, rear_right_panel, windshield, newstate, rear_bumper); l = encode_lights(0, 0, 0, 0); }
else if(element == 7) { p = encode_panels(front_left_panel, front_right_panel, rear_left_panel, rear_right_panel, windshield, front_bumper, newstate); }
}
else if(type_element == 2)
{
decode_doors(d, door_bonnet, door_boot, door_driver, door_passenger);
if(element == 1) { d = encode_doors(newstate, door_boot, door_driver, door_passenger, 0, 0); }
else if(element == 2) { d = encode_doors(door_bonnet, newstate, door_driver, door_passenger, 0, 0); }
else if(element == 3) { d = encode_doors(door_bonnet, door_boot, newstate, door_passenger, 0, 0); }
else if(element == 4) { d = encode_doors(door_bonnet, door_boot, door_driver, newstate, 0, 0); }
}
else if(type_element == 3)
{
decode_tires(t, rear_right_tire, front_right_tire, rear_left_tire, front_left_tire);
if(element == 1) { t = encode_tires(newstate, front_right_tire, rear_left_tire, front_left_tire); }
else if(element == 2) { t = encode_tires(rear_right_tire, newstate, rear_left_tire, front_left_tire); }
else if(element == 3) { t = encode_tires(rear_right_tire, front_right_tire, newstate, front_left_tire); }
else if(element == 4) { t = encode_tires(rear_right_tire, front_right_tire, rear_left_tire, newstate); }
}
UpdateVehicleDamageStatus(vehicleid, p, d, l, t);
return 1;
}