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

◆ HandleSwapEntities()

void HandleSwapEntities ( DeferredEvent deferred_event)
protected

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

1900 {
1901 DeferredSwapEntities deferred_swap_entities = DeferredSwapEntities.Cast(deferred_event);
1902 if( deferred_swap_entities )
1903 {
1904 deferred_swap_entities.ClearInventoryReservation(this);
1905 InventoryLocation src1, src2, dst1, dst2;
1906 if (GameInventory.MakeSrcAndDstForSwap(deferred_swap_entities.m_item1, deferred_swap_entities.m_item2, src1, src2, dst1, dst2))
1907 {
1909 {
1910 inventoryDebugPrint("[inv] I::Swap(" + typename.EnumToString(InventoryMode, deferred_swap_entities.m_mode) + ") src1=" + InventoryLocation.DumpToStringNullSafe(src1) + " src2=" + InventoryLocation.DumpToStringNullSafe(src2) + " dst1=" + InventoryLocation.DumpToStringNullSafe(deferred_swap_entities.m_dst1) + " dst2=" + InventoryLocation.DumpToStringNullSafe(deferred_swap_entities.m_dst2));
1911 }
1912
1913 switch (deferred_swap_entities.m_mode)
1914 {
1915 case InventoryMode.PREDICTIVE:
1916 if (CanSwapEntitiesEx(deferred_swap_entities.m_dst1.GetItem(),deferred_swap_entities.m_dst2.GetItem()) )
1917 {
1918 InventoryInputUserData.SendInputUserDataSwap(src1, src2, deferred_swap_entities.m_dst1, deferred_swap_entities.m_dst2);
1919 LocationSwap(src1, src2, deferred_swap_entities.m_dst1, deferred_swap_entities.m_dst2);
1920 }
1921 else
1922 {
1923 #ifdef ENABLE_LOGGING
1925 {
1926 Debug.InventoryMoveLog("Can not swap (PREDICTIVE) STS = " + GetDayZPlayerOwner().GetSimulationTimeStamp() + " item1 = " + deferred_swap_entities.m_dst1.GetItem() + " item2 = " + deferred_swap_entities.m_dst2.GetItem() + " dst=" + InventoryLocation.DumpToStringNullSafe(deferred_swap_entities.m_dst2), "n/a" , "n/a", "ForceSwapEntities", GetDayZPlayerOwner().ToString() );
1927 }
1928 #endif
1929 }
1930 break;
1931
1932 case InventoryMode.JUNCTURE:
1933 if (CanSwapEntitiesEx(deferred_swap_entities.m_dst1.GetItem(),deferred_swap_entities.m_dst2.GetItem()) )
1934 {
1935 DayZPlayer player = GetGame().GetPlayer();
1936 player.GetHumanInventory().AddInventoryReservationEx(deferred_swap_entities.m_dst1.GetItem(), deferred_swap_entities.m_dst1, GameInventory.c_InventoryReservationTimeoutShortMS);
1937 player.GetHumanInventory().AddInventoryReservationEx(deferred_swap_entities.m_dst2.GetItem(), deferred_swap_entities.m_dst2, GameInventory.c_InventoryReservationTimeoutShortMS);
1938 EnableMovableOverride(deferred_swap_entities.m_dst1.GetItem());
1939 EnableMovableOverride(deferred_swap_entities.m_dst2.GetItem());
1940 InventoryInputUserData.SendInputUserDataSwap(src1, src2, deferred_swap_entities.m_dst1, deferred_swap_entities.m_dst2);
1941 }
1942 else
1943 {
1944 #ifdef ENABLE_LOGGING
1946 {
1947 Debug.InventoryMoveLog("Can not swap (JUNCTURE) STS = " + GetDayZPlayerOwner().GetSimulationTimeStamp() + " item1 = " + deferred_swap_entities.m_dst1.GetItem() + " item2 = " + deferred_swap_entities.m_dst2.GetItem() + " dst=" + InventoryLocation.DumpToStringNullSafe(deferred_swap_entities.m_dst2), "n/a" , "n/a", "ForceSwapEntities", GetDayZPlayerOwner().ToString() );
1948 }
1949 #endif
1950 }
1951 break;
1952
1953 case InventoryMode.LOCAL:
1954 break;
1955
1956 default:
1957 Error("SwapEntities - HandEvent - Invalid mode");
1958 }
1959 }
1960 else
1961 Error("SwapEntities - MakeSrcAndDstForSwap - no inv loc");
1962 }
1963 }
void inventoryDebugPrint(string s)
Определения Debug.c:19
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
proto string ToString()
proto native DayZPlayer GetPlayer()
static void InventoryMoveLog(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Определения Debug.c:137
Определения Debug.c:2
InventoryMode m_mode
Определения DayZPlayerInventory.c:4
EntityAI m_item1
Определения DayZPlayerInventory.c:42
ref InventoryLocation m_dst1
Определения DayZPlayerInventory.c:44
EntityAI m_item2
Определения DayZPlayerInventory.c:43
override void ClearInventoryReservation(HumanInventory inventory)
Определения DayZPlayerInventory.c:75
ref InventoryLocation m_dst2
Определения DayZPlayerInventory.c:45
const int c_InventoryReservationTimeoutShortMS
Определения Inventory.c:713
static bool MakeSrcAndDstForSwap(notnull EntityAI item1, notnull EntityAI item2, out InventoryLocation src1, out InventoryLocation src2, out InventoryLocation dst1, out InventoryLocation dst2)
helper function for swap
Определения Inventory.c:1209
script counterpart to engine's class Inventory
Определения Inventory.c:79
static void SendInputUserDataSwap(notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap=false)
Определения InventoryInputUserData.c:48
static string DumpToStringNullSafe(InventoryLocation loc)
Определения InventoryLocation.c:226
proto native EntityAI GetItem()
returns item of current inventory location
InventoryLocation.
Определения InventoryLocation.c:29
static bool IsInventoryMoveLogEnable()
Определения Debug.c:648
Определения Debug.c:594
proto native CGame GetGame()
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90

Перекрестные ссылки GameInventory::c_InventoryReservationTimeoutShortMS, DeferredSwapEntities::ClearInventoryReservation(), InventoryLocation::DumpToStringNullSafe(), EnableMovableOverride(), Error(), GetDayZPlayerOwner(), GetGame(), InventoryLocation::GetItem(), CGame::GetPlayer(), inventoryDebugPrint(), Debug::InventoryMoveLog(), LogManager::IsInventoryMoveLogEnable(), DeferredSwapEntities::m_dst1, DeferredSwapEntities::m_dst2, DeferredSwapEntities::m_item1, DeferredSwapEntities::m_item2, DeferredEvent::m_mode, GameInventory::MakeSrcAndDstForSwap(), InventoryInputUserData::SendInputUserDataSwap() и ToString().

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