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

◆ OnExecuteServer()

override void ActionEmptyMagazine::OnExecuteServer ( ActionData action_data)
inlineprivate

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

75 {
76 EmptyMagazineActionData emActionData = EmptyMagazineActionData.Cast(action_data);
77
78 Magazine mag;
79 if (!Class.CastTo(mag, action_data.m_MainItem))
80 return;
81
82 float dmg;
83 string ammoType;
84
85 if (!mag.ServerAcquireCartridgeEx(dmg,ammoType))
86 return;
87
88 mag.ApplyManipulationDamage();
89
90 string magazineTypeName;
91 g_Game.ConfigGetText( "CfgAmmo " + ammoType + " spawnPileType" , magazineTypeName);
92
93 if (!DayZPlayerUtils.HandleStoreCartridge(action_data.m_Player, NULL, -1, dmg, ammoType, magazineTypeName, false))
94 {
95 array<Magazine> piles;
96 vector playerPosition = action_data.m_Player.GetPosition();
97 vector posHead = MiscGameplayFunctions.GetPlayerHeadPosition(action_data.m_Player);
98 vector posTarget = playerPosition + (action_data.m_Player.GetDirection() * DEFAULT_SPAWN_DISTANCE);
99
100 if (!emActionData.m_magazinePile)
101 {
102 piles = MiscGameplayFunctions.CreateMagazinePilesDispersed(magazineTypeName, posHead, posTarget, UAItemsSpreadRadius.NARROW, 1, dmg, action_data.m_Player);
103 if (piles.Count() > 0)
104 emActionData.m_magazinePile = piles[0];
105 }
106 else
107 {
108 if (emActionData.m_magazinePile.GetAmmoMax() > emActionData.m_magazinePile.GetAmmoCount() && emActionData.m_magazinePile.GetType() == magazineTypeName && (vector.DistanceSq(action_data.m_Player.GetPosition(), emActionData.m_magazinePile.GetPosition()) < (UAMaxDistances.DEFAULT * UAMaxDistances.DEFAULT)))
109 {
110 emActionData.m_magazinePile.ServerStoreCartridgeEx(dmg,ammoType);
111 }
112 else
113 {
114 piles = MiscGameplayFunctions.CreateMagazinePilesFromBulletDispersed(ammoType, posHead, posTarget, UAItemsSpreadRadius.VERY_NARROW, 1, dmg, action_data.m_Player);
115 if (piles.Count() > 0)
116 emActionData.m_magazinePile = piles[0];
117 }
118 }
119 }
120 }
DayZGame g_Game
Определения DayZGame.c:4074
void DayZPlayerUtils()
cannot be instantiated
Определения DayZPlayerUtils.c:465
string ammoType
Определения DustKickupEffects.c:24
const float DEFAULT_SPAWN_DISTANCE
Определения RecipeBase.c:3
PlayerBase m_Player
Определения ActionBase.c:40
ItemBase m_MainItem
Определения ActionBase.c:35
Magazine m_magazinePile
Определения ActionEmptyMagazine.c:3

Перекрестные ссылки ammoType, Class::CastTo(), DayZPlayerUtils(), UAMaxDistances::DEFAULT, DEFAULT_SPAWN_DISTANCE, vector::DistanceSq(), g_Game, EmptyMagazineActionData::m_magazinePile, ActionData::m_MainItem, ActionData::m_Player, UAItemsSpreadRadius::NARROW и UAItemsSpreadRadius::VERY_NARROW.