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

◆ HandleHandEvent()

void HandleHandEvent ( DeferredEvent deferred_event)
protected

Default structure suffices

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

2343 {
2345 InventoryValidation validation = new InventoryValidation();
2346
2347 DeferredHandEvent deferred_hand_event = DeferredHandEvent.Cast(deferred_event);
2348 if (deferred_hand_event)
2349 {
2350 #ifdef ENABLE_LOGGING
2352 {
2353 Debug.InventoryHFSMLog("STS = " + GetDayZPlayerOwner().GetSimulationTimeStamp(), "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2354 }
2355 #endif
2356
2358 {
2359 hndDebugPrint("[inv] HumanInventory::HandEvent(" + typename.EnumToString(InventoryMode, deferred_hand_event.m_mode) + ") ev=" + deferred_hand_event.m_event.DumpToString());
2360 }
2361
2362 switch (deferred_hand_event.m_mode)
2363 {
2364 case InventoryMode.PREDICTIVE:
2365 #ifdef ENABLE_LOGGING
2367 {
2368 Debug.InventoryHFSMLog("PREDICTIVE", "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2369 }
2370 #endif
2371
2372 deferred_hand_event.ClearInventoryReservation(this);
2373 if (deferred_hand_event.m_event.CanPerformEventEx(validation))
2374 {
2376 ProcessHandEvent(deferred_hand_event.m_event);
2377 }
2378 break;
2379
2380 case InventoryMode.JUNCTURE:
2381 #ifdef ENABLE_LOGGING
2383 {
2384 Debug.InventoryHFSMLog("JUNCTURE", "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2385 }
2386 #endif
2387
2388 deferred_hand_event.ClearInventoryReservation(this);
2389 if (deferred_hand_event.m_event.CanPerformEventEx(validation))
2390 {
2391 deferred_hand_event.ReserveInventory(this);
2393
2394 //Functionality to prevent desync when two players perform interfering action at the same time
2395 EntityAI itemSrc = deferred_hand_event.m_event.GetSrcEntity();
2396 EntityAI itemDst = null;
2397 if (deferred_hand_event.m_event.GetDst())
2398 itemDst = deferred_hand_event.m_event.GetDst().GetItem();
2399 if (itemSrc)
2400 EnableMovableOverride(itemSrc);
2401 if (itemDst)
2402 EnableMovableOverride(itemDst);
2403 }
2404 break;
2405
2406 case InventoryMode.LOCAL:
2407 #ifdef ENABLE_LOGGING
2409 {
2410 Debug.InventoryHFSMLog("LOCAL", "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2411 }
2412 #endif
2413
2414 deferred_hand_event.ClearInventoryReservation(this);
2415 ProcessHandEvent(deferred_hand_event.m_event);
2416 //PostHandEvent(deferred_hand_event.m_event);
2417 break;
2418
2419 case InventoryMode.SERVER:
2420 #ifdef ENABLE_LOGGING
2422 {
2423 Debug.InventoryHFSMLog("SERVER", "n/a" , "n/a", "HandleHandEvent", GetDayZPlayerOwner().ToString());
2424 }
2425
2427 {
2428 hndDebugPrint("[inv] DZPI::HandEvent(" + typename.EnumToString(InventoryMode, deferred_hand_event.m_mode) + ")");
2429 }
2430 #endif
2431
2432 if (!deferred_hand_event.m_event.IsServerSideOnly())
2433 {
2434 if (GetDayZPlayerOwner().IsAlive())
2435 {
2437 }
2438 else
2439 {
2441 }
2442 }
2443 else
2444 {
2445 ProcessHandEvent(deferred_hand_event.m_event);
2446 }
2447 break;
2448
2449 default:
2450 Error("HumanInventory::HandEvent - Invalid mode");
2451 }
2452 }
2453 }
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
void EnableMovableOverride(EntityAI item)
Определения DayZPlayerInventory.c:1627
DayZPlayer GetDayZPlayerOwner()
Определения DayZPlayerInventory.c:168
static void SendServerHandEventViaJuncture(notnull DayZPlayer player, HandEventBase e)
Определения DayZPlayerInventory.c:2071
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)
Определения 3_Game/tools/Debug.c:147
Определения 3_Game/tools/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
override InventoryLocation GetDst()
Определения Hand_Events.c:212
override bool IsServerSideOnly()
Определения Hand_Events.c:744
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
static bool IsInventoryHFSMLogEnable()
Определения 3_Game/tools/Debug.c:668
Определения 3_Game/tools/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().