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

◆ HandleHandEvent()

void HandleHandEvent ( DeferredEvent deferred_event)
protected

Default structure suffices

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

2333 {
2335 InventoryValidation validation();
2336
2337 DeferredHandEvent deferred_hand_event = DeferredHandEvent.Cast(deferred_event);
2338 if (deferred_hand_event)
2339 {
2340 #ifdef ENABLE_LOGGING
2342 {
2343 Debug.InventoryHFSMLog("STS = " + GetDayZPlayerOwner().GetSimulationTimeStamp(), "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2344 }
2345 #endif
2346
2348 {
2349 hndDebugPrint("[inv] HumanInventory::HandEvent(" + typename.EnumToString(InventoryMode, deferred_hand_event.m_mode) + ") ev=" + deferred_hand_event.m_event.DumpToString());
2350 }
2351
2352 switch (deferred_hand_event.m_mode)
2353 {
2354 case InventoryMode.PREDICTIVE:
2355 #ifdef ENABLE_LOGGING
2357 {
2358 Debug.InventoryHFSMLog("PREDICTIVE", "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2359 }
2360 #endif
2361
2362 deferred_hand_event.ClearInventoryReservation(this);
2363 if (deferred_hand_event.m_event.CanPerformEventEx(validation))
2364 {
2366 ProcessHandEvent(deferred_hand_event.m_event);
2367 }
2368 break;
2369
2370 case InventoryMode.JUNCTURE:
2371 #ifdef ENABLE_LOGGING
2373 {
2374 Debug.InventoryHFSMLog("JUNCTURE", "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2375 }
2376 #endif
2377
2378 deferred_hand_event.ClearInventoryReservation(this);
2379 if (deferred_hand_event.m_event.CanPerformEventEx(validation))
2380 {
2381 deferred_hand_event.ReserveInventory(this);
2383
2384 //Functionality to prevent desync when two players perform interfering action at the same time
2385 EntityAI itemSrc = deferred_hand_event.m_event.GetSrcEntity();
2386 EntityAI itemDst = null;
2387 if (deferred_hand_event.m_event.GetDst())
2388 itemDst = deferred_hand_event.m_event.GetDst().GetItem();
2389 if (itemSrc)
2390 EnableMovableOverride(itemSrc);
2391 if (itemDst)
2392 EnableMovableOverride(itemDst);
2393 }
2394 break;
2395
2396 case InventoryMode.LOCAL:
2397 #ifdef ENABLE_LOGGING
2399 {
2400 Debug.InventoryHFSMLog("LOCAL", "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2401 }
2402 #endif
2403
2404 deferred_hand_event.ClearInventoryReservation(this);
2405 ProcessHandEvent(deferred_hand_event.m_event);
2406 //PostHandEvent(deferred_hand_event.m_event);
2407 break;
2408
2409 case InventoryMode.SERVER:
2410 #ifdef ENABLE_LOGGING
2412 {
2413 Debug.InventoryHFSMLog("SERVER", "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2414 }
2415
2417 {
2418 hndDebugPrint("[inv] DZPI::HandEvent(" + typename.EnumToString(InventoryMode, deferred_hand_event.m_mode) + ")");
2419 }
2420 #endif
2421
2422 if (!deferred_hand_event.m_event.IsServerSideOnly())
2423 {
2424 if (GetDayZPlayerOwner().IsAlive())
2425 {
2427 }
2428 else
2429 {
2431 }
2432 }
2433 else
2434 {
2435 ProcessHandEvent(deferred_hand_event.m_event);
2436 }
2437 break;
2438
2439 default:
2440 Error("HumanInventory::HandEvent - Invalid mode");
2441 }
2442 }
2443 }
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
Определения Inventory.c:22
void EnableMovableOverride(EntityAI item)
Определения DayZPlayerInventory.c:1617
DayZPlayer GetDayZPlayerOwner()
Определения DayZPlayerInventory.c:168
static void SendServerHandEventViaJuncture(notnull DayZPlayer player, HandEventBase e)
Определения DayZPlayerInventory.c:2061
proto string ToString()
void hndDebugPrint(string s)
Определения HandFSM.c:1
static void InventoryHFSMLog(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Определения Debug.c:147
Определения Debug.c:2
InventoryMode m_mode
Определения DayZPlayerInventory.c:4
override bool ReserveInventory(HumanInventory inventory)
Определения DayZPlayerInventory.c:133
ref HandEventBase m_event
Определения DayZPlayerInventory.c:126
override void ClearInventoryReservation(HumanInventory inventory)
Определения DayZPlayerInventory.c:138
Определения Building.c:6
override InventoryLocation GetDst()
Определения Hand_Events.c:212
override bool IsServerSideOnly()
Определения Hand_Events.c:718
override string DumpToString()
Определения Hand_Events.c:332
override bool CanPerformEventEx(InventoryValidation validation)
Определения Hand_Events.c:235
static void SendInputUserDataHandEvent(HandEventBase e)
Определения InventoryInputUserData.c:79
static void SendServerHandEventViaInventoryCommand(notnull Man player, HandEventBase e)
Определения InventoryInputUserData.c:90
proto native EntityAI GetItem()
returns item of current inventory location
Определения Inventory.c:44
static bool IsInventoryHFSMLogEnable()
Определения Debug.c:668
Определения Debug.c:594
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90

Перекрестные ссылки HandEventBase::CanPerformEventEx(), DeferredHandEvent::ClearInventoryReservation(), HandEventBase::DumpToString(), EnableMovableOverride(), Error(), GetDayZPlayerOwner(), HandEventBase::GetDst(), InventoryLocation::GetItem(), hndDebugPrint(), Debug::InventoryHFSMLog(), LogManager::IsInventoryHFSMLogEnable(), HandEventBase::IsServerSideOnly(), DeferredHandEvent::m_event, DeferredEvent::m_mode, DeferredHandEvent::ReserveInventory(), InventoryInputUserData::SendInputUserDataHandEvent(), InventoryInputUserData::SendServerHandEventViaInventoryCommand(), SendServerHandEventViaJuncture() и ToString().

Используется в HandleInventoryManipulation().