300 {
301 ItemManager.GetInstance().HideDropzones();
302 ItemManager.GetInstance().SetIsDragging( false );
303 SlotsIcon slots_icon;
305 int slot_id = -1;
306 bool is_reserved = false;
308 receiver.GetUserData(slots_icon);
309 float stackable = 0.0;
310 InventoryLocation il = new InventoryLocation;
311
312 if( slots_icon )
313 {
318 }
319
321 if( !item )
322 {
323 return;
324 }
326
328 if( !item.GetInventory().CanRemoveEntity() || !player.CanManipulateInventory() )
329 return;
330
332 Weapon_Base wpn;
333 Magazine mag;
334 if( Class.CastTo(wpn,
m_Entity ) && Class.CastTo(mag, item ) )
335 {
336 if( player.GetWeaponManager().CanAttachMagazine( wpn, mag ) )
337 {
338 player.GetWeaponManager().AttachMagazine( mag );
339 }
340 }
341 else if( receiver_item && !is_reserved )
342 {
343 if( (
ItemBase.Cast( receiver_item ) ).CanBeCombined(
ItemBase.Cast( item ) ) )
344 {
345 (
ItemBase.Cast( receiver_item ) ).CombineItemsClient(
ItemBase.Cast( item ) );
346 }
347 else if( GameInventory.CanSwapEntitiesEx( receiver_item, item ) )
348 {
349 if( !receiver_item.GetInventory().CanRemoveEntity() )
350 return;
352 }
353 else if( receiver_item.GetInventory().CanAddAttachment( item ) )
354 {
355 player.PredictiveTakeEntityToTargetAttachment(receiver_item, item);
356 }
357 }
358 else if( attached_entity && slot_id != -1 && attached_entity.GetInventory().CanAddAttachmentEx( item, slot_id ) )
359 {
361 stackable = item_base.GetTargetQuantityMax( slot_id );
362
363 if( stackable == 0 || stackable >= item_base.GetQuantity() )
364 {
365 player.PredictiveTakeEntityToTargetAttachmentEx(attached_entity, item, slot_id);
366 }
367 else if( stackable != 0 && stackable < item_base.GetQuantity() )
368 {
369 item_base.SplitIntoStackMaxClient(
m_Entity, slot_id );
370 }
371 }
372 else if(attached_entity && slot_id == -1 && attached_entity.GetInventory().FindFreeLocationFor(item,
FindInventoryLocationType.ATTACHMENT,il))
373 {
375 stackable = item_base.GetTargetQuantityMax( il.
GetSlot() );
376
377 if( stackable == 0 || stackable >= item_base.GetQuantity() )
378 {
379 player.PredictiveTakeEntityToTargetAttachmentEx(attached_entity, item, il.
GetSlot());
380 }
381 else if( stackable != 0 && stackable < item_base.GetQuantity() )
382 {
384 }
385 }
386
387
388
389
390 }
class GP5GasMask extends MaskBase ItemBase
FindInventoryLocationType
flags for searching locations in inventory
EntityAI GetItemPreviewItem(Widget w)
proto native DayZPlayer GetPlayer()
proto native int GetSlot()
returns slot id if current type is Attachment
proto native CGame GetGame()