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

◆ ExecuteHandEventCommandServer()

bool ExecuteHandEventCommandServer ( inout Serializer ctx)
protected

'HandEventBase.CheckRequestEx' updates failure reason

if it already happened on server, remote just needs to comply

'HandEventBase.CanPerformEventEx' updates failure reason

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

2048 {
2049 HandEventBase e = HandEventBase.CreateHandEventFromContext(ctx);
2050
2051 e.m_IsJuncture = true;
2052 e.m_IsRemote = false;
2053
2054 EntityAI itemSrc = e.GetSrcEntity();
2055 EntityAI itemDst = e.GetSecondSrcEntity();
2056
2057#ifdef ENABLE_LOGGING
2059 {
2060 Debug.InventoryMoveLog("STS = " + e.m_Player.GetSimulationTimeStamp() + " event= " + e.DumpToString(), "HAND_EVENT" , "n/a", "ExecuteHandEventCommandServer", e.m_Player.ToString() );
2061 }
2062#endif
2063
2064
2065 if (itemSrc)
2066 {
2067 //???
2068 RemoveMovableOverride(itemSrc);
2069 }
2070 if (itemDst)
2071 {
2072 //???
2073 RemoveMovableOverride(itemDst);
2074 }
2075
2076 InventoryValidation validation = new InventoryValidation();
2077 validation.m_IsJuncture = true;
2078 validation.m_IsRemote = false;
2079 validation.m_Mode = InventoryMode.JUNCTURE;
2080
2081 if (!e.CheckRequestEx(validation))//??? This should be remove in refactor, but for drop it has some functionality
2082 {
2083#ifdef ENABLE_LOGGING
2085 {
2086 Debug.InventoryMoveLog("Failed - CheckRequest", "HAND_EVENT" , "n/a", "ExecuteHandEventCommandServer", e.m_Player.ToString() );
2087 }
2088#endif
2089
2091
2092 ctx = new ScriptInputUserData();
2094
2095#ifdef ENABLE_LOGGING
2097 {
2098 syncDebugPrint("[cheat] ExecuteHandEventCommandServer man=" + Object.GetDebugName(GetManOwner()) + " STS = " + GetDayZPlayerOwner().GetSimulationTimeStamp() + " is cheating with cmd=" + typename.EnumToString(InventoryCommandType, InventoryCommandType.HAND_EVENT) + " event=" + e.DumpToString());
2099 }
2100#endif
2101
2102 return true;
2103 }
2104
2106 if (!e.CanPerformEventEx(validation))//??? This should be remove in refactor, but for drop it has some functionality
2107 {
2108#ifdef ENABLE_LOGGING
2110 {
2111 Debug.InventoryMoveLog("Failed - CanPerformEvent", "HAND_EVENT" , "n/a", "ExecuteHandEventCommandServer", e.m_Player.ToString() );
2112 }
2113#endif
2114
2116
2117 ctx = new ScriptInputUserData();
2119
2120#ifdef ENABLE_LOGGING
2122 {
2123 syncDebugPrint("[desync] ExecuteHandEventCommandServer man=" + Object.GetDebugName(GetManOwner()) + " CANNOT do cmd=HAND_EVENT e=" + e.DumpToString());
2124 }
2125#endif
2126
2127 return true;
2128 }
2129
2130 bool hasJuncture = false;
2131
2132 if (itemSrc != null && itemDst != null)
2133 {
2134 hasJuncture = g_Game.HasInventoryJuncture(GetDayZPlayerOwner(), itemSrc) && g_Game.HasInventoryJuncture(GetDayZPlayerOwner(), itemDst);
2135 }
2136 else if (itemSrc != null)
2137 {
2138 hasJuncture = g_Game.HasInventoryJuncture(GetDayZPlayerOwner(), itemSrc);
2139 }
2140 else if (itemDst != null)
2141 {
2142 hasJuncture = g_Game.HasInventoryJuncture(GetDayZPlayerOwner(), itemDst);
2143 }
2144
2145 if (!hasJuncture)
2146 {
2147#ifdef ENABLE_LOGGING
2149 {
2150 Debug.InventoryMoveLog("Failed - missing juncture", "HAND_EVENT", "n/a", "ExecuteHandEventCommandServer", GetDayZPlayerOwner().ToString() );
2151 }
2152#endif
2153 return false;
2154 }
2155
2156 //???
2157 CheckForRope(e.GetSrc(), e.GetDst());
2158
2159
2160#ifdef ENABLE_LOGGING
2162 {
2163 Debug.InventoryMoveLog("Success", "HAND_EVENT" , "n/a", "ExecuteHandEventCommandServer", e.m_Player.ToString() );
2164 }
2165#endif
2166
2167 return e.m_Player.GetHumanInventory().ProcessHandEvent(e);
2168 }
void syncDebugPrint(string s)
InventoryCommandType
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
DayZGame g_Game
Определения DayZGame.c:4074
void CheckForRope(InventoryLocation src, InventoryLocation dst)
Определения DayZPlayerInventory.c:3698
void RemoveMovableOverride(EntityAI item)
Определения DayZPlayerInventory.c:3683
DayZPlayer GetDayZPlayerOwner()
Определения DayZPlayerInventory.c:170
proto string ToString()
static void InventoryMoveLog(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Определения 3_Game/DayZ/tools/Debug.c:198
Определения 3_Game/DayZ/tools/Debug.c:2
override InventoryLocation GetDst()
Определения Hand_Events.c:215
override EntityAI GetSecondSrcEntity()
Определения Hand_Events.c:610
override string DumpToString()
Определения Hand_Events.c:333
override bool CanPerformEventEx(InventoryValidation validation)
Определения Hand_Events.c:238
Abstracted event, not to be used, only inherited.
Определения Hand_Events.c:212
static void SerializeHandEvent(ParamsWriteContext ctx, HandEventBase e)
hand
Определения InventoryInputUserData.c:105
static bool IsSyncLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:789
static bool IsInventoryMoveLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:759
Определения ObjectTyped.c:2
Определения gameplay.c:121

Перекрестные ссылки HandEventBase::CanPerformEventEx(), CheckForRope(), HandEventBase::DumpToString(), g_Game, GetDayZPlayerOwner(), HandEventBase::GetDst(), HandEventBase::GetSecondSrcEntity(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), LogManager::IsSyncLogEnable(), InventoryValidation::m_IsJuncture, InventoryValidation::m_IsRemote, InventoryValidation::m_Mode, RemoveMovableOverride(), InventoryInputUserData::SerializeHandEvent(), syncDebugPrint() и ToString().

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