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

◆ ExecuteHandEventCommandClient()

bool ExecuteHandEventCommandClient ( 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 строка 2170

2171 {
2172 HandEventBase e = HandEventBase.CreateHandEventFromContext(ctx);
2174
2175 e.m_IsJuncture = true;
2176 e.m_IsRemote = false;
2177
2178 EntityAI itemSrc = e.GetSrcEntity();
2179 EntityAI itemDst = e.GetSecondSrcEntity();
2180
2181#ifdef ENABLE_LOGGING
2183 {
2184 Debug.InventoryMoveLog("STS = " + e.m_Player.GetSimulationTimeStamp() + " event= " + e.DumpToString(), "HAND_EVENT" , "n/a", "ExecuteHandEventCommandClient", e.m_Player.ToString() );
2185 }
2186#endif
2187
2188
2189 if (itemSrc)
2190 {
2191 //???
2192 RemoveMovableOverride(itemSrc);
2193 }
2194 if (itemDst)
2195 {
2196 //???
2197 RemoveMovableOverride(itemDst);
2198 }
2199
2200 InventoryValidation validation = new InventoryValidation();
2201 validation.m_IsJuncture = true;
2202 validation.m_IsRemote = false;
2203 validation.m_Mode = InventoryMode.JUNCTURE;
2204
2205 if (!e.CheckRequestEx(validation))//??? This should be remove in refactor, but for drop it has some functionality
2206 {
2207#ifdef ENABLE_LOGGING
2209 {
2210 Debug.InventoryMoveLog("Failed - CheckRequest", "HAND_EVENT" , "n/a", "ExecuteHandEventCommandClient", e.m_Player.ToString() );
2211 }
2212#endif
2213
2215
2216 ctx = new ScriptInputUserData();
2218
2219#ifdef ENABLE_LOGGING
2221 {
2222 syncDebugPrint("[cheat] ExecuteHandEventCommandClient man=" + Object.GetDebugName(GetManOwner()) + " STS = " + GetDayZPlayerOwner().GetSimulationTimeStamp() + " is cheating with cmd=" + typename.EnumToString(InventoryCommandType, InventoryCommandType.HAND_EVENT) + " event=" + e.DumpToString());
2223 }
2224#endif
2225
2226 return true;
2227 }
2228
2230 if (!e.CanPerformEventEx(validation))//??? This should be remove in refactor, but for drop it has some functionality
2231 {
2232#ifdef ENABLE_LOGGING
2234 {
2235 Debug.InventoryMoveLog("Failed - CanPerformEvent", "HAND_EVENT" , "n/a", "ExecuteHandEventCommandClient", e.m_Player.ToString() );
2236 }
2237#endif
2238
2240
2241 ctx = new ScriptInputUserData();
2243
2244#ifdef ENABLE_LOGGING
2246 {
2247 syncDebugPrint("[desync] ExecuteHandEventCommandClient man=" + Object.GetDebugName(GetManOwner()) + " CANNOT do cmd=HAND_EVENT e=" + e.DumpToString());
2248 }
2249#endif
2250
2251 return true;
2252 }
2253
2254#ifdef ENABLE_LOGGING
2256 {
2257 Debug.InventoryMoveLog("Success", "HAND_EVENT" , "n/a", "ExecuteHandEventCommandClient", e.m_Player.ToString() );
2258 }
2259#endif
2260
2261 return e.m_Player.GetHumanInventory().ProcessHandEvent(e);
2262 }
void syncDebugPrint(string s)
InventoryCommandType
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
void RemoveMovableOverride(EntityAI item)
Определения DayZPlayerInventory.c:3683
DayZPlayer GetDayZPlayerOwner()
Определения DayZPlayerInventory.c:170
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 EntityAI GetSecondSrcEntity()
Определения Hand_Events.c:610
override string DumpToString()
Определения Hand_Events.c:333
override void ClearInventoryReservation()
Определения Hand_Events.c:724
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(), HandEventBase::ClearInventoryReservation(), HandEventBase::DumpToString(), GetDayZPlayerOwner(), HandEventBase::GetSecondSrcEntity(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), LogManager::IsSyncLogEnable(), InventoryValidation::m_IsJuncture, InventoryValidation::m_IsRemote, InventoryValidation::m_Mode, RemoveMovableOverride(), InventoryInputUserData::SerializeHandEvent() и syncDebugPrint().

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