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

◆ OnInventoryCheck()

override bool OnInventoryCheck ( int userDataType,
ParamsReadContext ctx )
protected

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

5004 {
5005 if (userDataType == INPUT_UDT_INVENTORY_CHECK)
5006 {
5007 bool correct = true;
5008
5009 int count;
5010 array<EntityAI> itemsToRepair = new array<EntityAI>;
5011 InventoryLocation clientIl = new InventoryLocation;
5013 DayZPlayer player = GetDayZPlayerOwner();
5014
5015
5016 if(!ctx.Read(count))
5017 return false;
5018
5019 if (count > INVENTORY_REPAIR_MAX_ITEMS)
5020 return false;
5021
5022 for (int i = 0; i < count; i++)
5023 {
5024 if(!clientIl.ReadFromContext(ctx))
5025 {
5026 return false;
5027 }
5028
5029 EntityAI item = clientIl.GetItem();
5030 if (!item)
5031 continue;
5032
5033 Man itemOwner = item.GetHierarchyRootPlayer();
5034 if (itemOwner != player && vector.Distance(player.GetPosition(), item.GetPosition()) > INVENTORY_REPAIR_MAX_DISTANCE)
5035 continue;
5036
5037 item.GetInventory().GetCurrentInventoryLocation(realIl);
5038
5039 if(clientIl != realIl)
5040 {
5041 itemsToRepair.Insert(item);
5042 correct = false;
5043 }
5044 }
5045
5046 if (itemsToRepair.Count())
5047 {
5048 #ifdef DIAG_DEVELOPER
5049 if (PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug)).IsDesyncRepairEnable())
5050 {
5051 #endif
5053 #ifdef DIAG_DEVELOPER
5054 }
5055 #endif
5056 }
5057
5058 return correct;
5059 }
5060 return false;
5061 }
const int INPUT_UDT_INVENTORY_CHECK
static const int INVENTORY_REPAIR_MAX_ITEMS
MAx distance for itme to be repair (without it it can be use for getting position from server)
Определения DayZPlayerInventory.c:164
DayZPlayer GetDayZPlayerOwner()
Определения DayZPlayerInventory.c:170
static const float INVENTORY_REPAIR_MAX_DISTANCE
Определения DayZPlayerInventory.c:163
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:326
Определения DayZPlayerImplement.c:87
static void SendServerInventoryCheck(array< EntityAI > items, DayZPlayer player)
Определения InventoryInputUserData.c:44
bool ReadFromContext(ParamsReadContext ctx)
Определения InventoryLocation.c:310
proto native EntityAI GetItem()
returns item of current inventory location
InventoryLocation.
Определения InventoryLocation.c:30
proto bool Read(void value_in)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
Определения EnConvert.c:119

Перекрестные ссылки vector::Distance(), GetDayZPlayerOwner(), InventoryLocation::GetItem(), GetPlugin(), INPUT_UDT_INVENTORY_CHECK, INVENTORY_REPAIR_MAX_DISTANCE, INVENTORY_REPAIR_MAX_ITEMS, Serializer::Read(), InventoryLocation::ReadFromContext() и InventoryInputUserData::SendServerInventoryCheck().

Используется в ManBase::OnInputUserDataProcess().