From a0ccffe7a0e9947790900566c3fb4f781aad996b Mon Sep 17 00:00:00 2001 From: Vaker Date: Tue, 26 Mar 2019 21:14:22 +0300 Subject: [PATCH 1/4] Updated RefuelAndRepair function (1.02 gonna bring a lot of new cars ^^) --- .../scripts/5_Mission/ZomBerryStockFnc.c | 55 ++++++++++++------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c b/ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c index 2234fb3..d52eb7c 100644 --- a/ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c +++ b/ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c @@ -229,41 +229,58 @@ class ZomberryStockFunctions { return; } - autoptr TStringArray attachments = { - "SparkPlug", "CarRadiator", "CarBattery", "GlowPlug", "TruckExhaust", "TruckBattery", "EngineBelt", - "HatchbackHood", "CivSedanHood", "CivSedanTrunk", "V3SHood", "BusHood", "HeadlightH7", "HatchbackTrunk", - "HatchbackWheel", "CivSedanWheel", "V3SWheel", "V3SWheelDouble", "TransitBusWheel", "TransitBusWheelDouble", - "HatchbackDoors_Driver", "HatchbackDoors_CoDriver", "CivVanDoors_Driver", "CivVanDoors_CoDriver", "V3SDoors_Driver", - "BusDoors_Left", "BusDoors_Right", "CivSedanDoors_BackLeft", "CivSedanDoors_BackRight", "V3SDoors_CoDriver", - }; + TStringArray slotsCar = new TStringArray; + TStringArray slotsTemp = new TStringArray; + string strName, strNameTemp; + + Car toBeFixed; + ItemBase attachmentTemp; ref array nearest_objects = new array; ref array proxy_cargos = new array; - Car toBeFixed; + int i, j, m, sc; vector position = GetPosSafe(target); GetGame().GetObjectsAtPosition ( position, 15, nearest_objects, proxy_cargos ); - for (int i = 0; i < nearest_objects.Count(); ++i) { + for (i = 0; i < nearest_objects.Count(); ++i) { if (nearest_objects[i].IsKindOf("CarScript")) { toBeFixed = Car.Cast(nearest_objects[i]); //Repair - int slotsCount = toBeFixed.GetInventory().GetAttachmentSlotsCount(); + GetGame().ConfigGetTextArray("CfgVehicles " + toBeFixed.GetType() + " attachments", slotsCar); + ZomberryBase.DebugLog(2, "ZomBerryFncDbg", "RefuelAndRepair: Fixing " + toBeFixed.GetType()); + + sc = GetGame().ConfigGetChildrenCount("CfgVehicles"); + for (j = 0; j < sc; j++) { + GetGame().ConfigGetChildName("CfgVehicles", j, strName ); + strNameTemp = strName; strNameTemp.ToLower(); - for (int m = 0; m < attachments.Count(); ++m) { - EntityAI attachment = EntityAI.Cast( GetGame().CreateObject(attachments[m], vector.Zero, false, false, false) ); + if (!GetGame().IsKindOf(strNameTemp, "Inventory_Base") || strNameTemp.Contains("ruined")) continue; - ZomberryBase.Log( "ZomberryFncDbg", "RefuelAndRepair: trying " + attachments[m]); + if (GetGame().ConfigGetType("CfgVehicles " + strName + " inventorySlot") == CT_ARRAY) { + GetGame().ConfigGetTextArray("CfgVehicles " + strName + " inventorySlot", slotsTemp); + } else { + GetGame().ConfigGetText("CfgVehicles " + strName + " inventorySlot", strNameTemp); + slotsTemp.Insert(strNameTemp); + } - if (!attachment) continue; - while (toBeFixed.GetInventory().CanAddAttachment(attachment)) { //TOBEFIXED: Known possible 'NULL pointer to instance' - //Print("[ZomberryFnc] RefuelAndRepair: attached " + attachments[m]); - toBeFixed.GetInventory().CreateAttachment(attachments[m]); + for (m = 0; m < slotsTemp.Count(); m++) { + if (slotsCar.Find(slotsTemp[m]) != -1) { + Class.CastTo(attachmentTemp, toBeFixed.FindAttachmentBySlotName(slotsTemp[m])); + if (attachmentTemp) { + if (attachmentTemp.GetHealth01() > 0.75) continue; + ZomberryBase.DebugLog(2, "ZomBerryFncDbg", "RefuelAndRepair: " + attachmentTemp.GetType() + " (" + attachmentTemp.GetHealth().ToString() + " HP) - detached"); + toBeFixed.GetInventory().DropEntity(InventoryMode.PREDICTIVE, toBeFixed, attachmentTemp); + } + + ZomberryBase.DebugLog(2, "ZomBerryFncDbg", "RefuelAndRepair: Found and attached " + strName); + toBeFixed.GetInventory().CreateInInventory(strName); + } } - attachment.Delete(); + slotsTemp.Clear(); } - toBeFixed.SetPosition(toBeFixed.GetPosition() + Vector(0, 0.3, 0)); + toBeFixed.SetHealth("Engine", "", toBeFixed.GetMaxHealth("Engine", "")); //Refuel float fuelReq = toBeFixed.GetFluidCapacity( CarFluid.FUEL ) - (toBeFixed.GetFluidCapacity( CarFluid.FUEL ) * toBeFixed.GetFluidFraction( CarFluid.FUEL )); From 3bdcf56c0da6d89ff0c4054ba664e3d5d571ec26 Mon Sep 17 00:00:00 2001 From: Vaker Date: Tue, 26 Mar 2019 22:27:08 +0300 Subject: [PATCH 2/4] Fix for unwanted RIPAZHA --- ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c b/ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c index d52eb7c..1887435 100644 --- a/ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c +++ b/ZomBerry/Addons/scripts/5_Mission/ZomBerryStockFnc.c @@ -270,6 +270,8 @@ class ZomberryStockFunctions { if (attachmentTemp.GetHealth01() > 0.75) continue; ZomberryBase.DebugLog(2, "ZomBerryFncDbg", "RefuelAndRepair: " + attachmentTemp.GetType() + " (" + attachmentTemp.GetHealth().ToString() + " HP) - detached"); toBeFixed.GetInventory().DropEntity(InventoryMode.PREDICTIVE, toBeFixed, attachmentTemp); + attachmentTemp.SetPosition("0 0 0"); + GetGame().ObjectDelete(attachmentTemp); } ZomberryBase.DebugLog(2, "ZomBerryFncDbg", "RefuelAndRepair: Found and attached " + strName); From 41cf16a83248fd9a1eaadf6c2fbec0f50555e6ba Mon Sep 17 00:00:00 2001 From: Vaker Date: Wed, 27 Mar 2019 22:31:49 +0300 Subject: [PATCH 3/4] Whitelisted scout mag, versioning --- ZomBerry/Addons/scripts/5_Mission/ZomBerryMenu.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/ZomBerry/Addons/scripts/5_Mission/ZomBerryMenu.c b/ZomBerry/Addons/scripts/5_Mission/ZomBerryMenu.c index 0bc488f..72b141c 100644 --- a/ZomBerry/Addons/scripts/5_Mission/ZomBerryMenu.c +++ b/ZomBerry/Addons/scripts/5_Mission/ZomBerryMenu.c @@ -745,8 +745,6 @@ class ZomberryMenu extends UIScriptedMenu { if ( scope == 0 ) continue; - if ( strName == "Mag_Scout_5Rnd") continue; // fix crash for this dumb item. dont spawn it - string strNameLower = strName; strNameLower.ToLower(); From ef21fb0fb27c9029486492054a73b136259092b5 Mon Sep 17 00:00:00 2001 From: Vaker Date: Wed, 27 Mar 2019 23:12:08 +0300 Subject: [PATCH 4/4] Versioning --- ZomBerry/Addons/scripts/5_Mission/ZomBerry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ZomBerry/Addons/scripts/5_Mission/ZomBerry.c b/ZomBerry/Addons/scripts/5_Mission/ZomBerry.c index 8c5f98f..5f14a75 100644 --- a/ZomBerry/Addons/scripts/5_Mission/ZomBerry.c +++ b/ZomBerry/Addons/scripts/5_Mission/ZomBerry.c @@ -1,4 +1,4 @@ -static string g_zbryVer = "0.5.8"; +static string g_zbryVer = "0.5.9s"; class ZomberryBase { protected string remoteZbryVer = g_zbryVer;