DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ HandleStoreCartridge()

static bool HandleStoreCartridge ( DayZPlayer player,
Weapon_Base weapon,
int muzzleIndex,
float damage,
string cartTypeName,
string magTypeName,
bool CanDrop = true )
static

find suitable heap / mag

create a new one in inventory

drop on ground

См. определение в файле DayZPlayerUtils.c строка 294

295 {
296 if (damage < 1.0)
297 {
299 array<Magazine> magazines = new array<Magazine>();
300 if (DayZPlayerUtils.FindMagazinesForAmmo(player, magTypeName, magazines))
301 {
302 int healthLevel = -1;
303 float testHeatlh = 1 - damage;
304 foreach (Magazine magazine : magazines)
305 {
306 if (healthLevel == -1)
307 {
308 if (magazine.CanAddCartridges(1))
309 {
310 int numberOfHealthLevels = magazine.GetNumberOfHealthLevels();
311 for (int i = 1; i < numberOfHealthLevels; i++)
312 {
313 if (magazine.GetHealthLevelValue(i) < testHeatlh)
314 {
315 healthLevel = i - 1;
316 break;
317 }
318 }
319 }
320 }
321
322 if (magazine.GetHealthLevel() == healthLevel)
323 {
324 if (magazine.ServerStoreCartridge(damage, cartTypeName))
325 return true;
326 }
327 }
328 }
329
331 InventoryLocation inventoryLocation = new InventoryLocation();
332 if (player.GetInventory().FindFirstFreeLocationForNewEntity(magTypeName, FindInventoryLocationType.ANY, inventoryLocation))
333 {
334 EntityAI entityInventory = SpawnEntity(magTypeName, inventoryLocation, ECE_IN_INVENTORY, RF_DEFAULT);
335 if (entityInventory && entityInventory.IsInherited(Magazine))
336 {
337 Magazine magazineInventory;
338 if (Class.CastTo(magazineInventory, entityInventory))
339 {
340 magazineInventory.ServerSetAmmoCount(0);
341 magazineInventory.SetHealth("", "", (1 - damage) * magazineInventory.GetMaxHealth());
342 if (magazineInventory.ServerStoreCartridge(damage, cartTypeName))
343 return true;
344 }
345 }
346 }
347
349 if (CanDrop)
350 return HandleDropCartridge(player, damage, cartTypeName, magTypeName);
351 }
352
353 return false;
354 }
proto native void SpawnEntity(string sClassName, vector vPos, float fRange, int iCount)
Spawn an entity through CE.
const int ECE_IN_INVENTORY
Определения CentralEconomy.c:36
const int RF_DEFAULT
Определения CentralEconomy.c:65
void DayZPlayerUtils()
cannot be instantiated
Определения DayZPlayerUtils.c:465
static bool HandleDropCartridge(DayZPlayer player, float damage, string cartTypeName, string magTypeName)
Определения DayZPlayerUtils.c:275
FindInventoryLocationType
flags for searching locations in inventory
Определения InventoryLocation.c:17
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения Building.c:6
InventoryLocation.
Определения InventoryLocation.c:29
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.

Перекрестные ссылки Class::CastTo(), DayZPlayerUtils(), ECE_IN_INVENTORY, HandleDropCartridge(), RF_DEFAULT и SpawnEntity().