DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PresetHandlers.c
См. документацию.
1#ifdef DEVELOPER
2//----------------------------------------------------------
3//Class names need to match the preset name + _Preset suffix
4//----------------------------------------------------------
5
6
7//TEMPLATE:
8/*
9
10class Farmer_Preset extends PresetSpawnBase
11{
12 override void OnPresetSpawn(PlayerBase player)
13 {
14 //m_ItemsInventory -> contains all items in player inventory
15 }
16}
17
18*/
19
20//---------------------------------------------
21class FreshSpawn_Preset extends PresetSpawnBase
22{
23 override void OnPresetSpawn(PlayerBase player)
24 {
25 FindAndTakeToHandsFromInventory("Plum");
26 }
27}
28
29//---------------------------------------------
30class Farmer_Preset extends PresetSpawnBase
31{
32 override void OnPresetSpawn(PlayerBase player)
33 {
34 EntityAI mask = FindItem("AirborneMask");
35 }
36}
37
38//---------------------------------------------
39class Fisherman_Preset extends PresetSpawnBase
40{
41 override void OnPresetSpawn(PlayerBase player)
42 {
43 EntityAI entAI;
44
45 entAI = FindItem("FishingRod");
46 player.SetQuickBarEntityShortcut(entAI,0);
47
48 entAI = FindItem("ImprovisedFishingRod");
49 player.SetQuickBarEntityShortcut(entAI,1);
50
51 entAI = FindItem("Rag");
52 player.SetQuickBarEntityShortcut(entAI,2);
53
54 entAI = FindItem("FieldShovel");
55 player.SetQuickBarEntityShortcut(entAI,3);
56
57 entAI = FindItem("HuntingKnife");
58 player.SetQuickBarEntityShortcut(entAI,4);
59 }
60}
61
62//---------------------------------------------
63class AntiHazard_Preset extends PresetSpawnBase
64{
65 override void OnPresetSpawn(PlayerBase player)
66 {
67 EntityAI mask = FindItem("AirborneMask");
68
69 if (mask)
70 {
71 auto debugParams = DebugSpawnParams.WithPlayer(player);
72 mask.OnDebugSpawnEx(debugParams);
73 }
74 }
75}
76
77//---------------------------------------------
78class Update117_Preset extends PresetSpawnBase
79{
80 vector randompos;
81 override void OnPresetSpawn(PlayerBase player)
82 {
83 randompos = player.GetPosition();
84 foreach (EntityAI itm : m_ItemsPreset)
85 {
86 if (itm)
87 {
88 vector itempos;
89 itempos[0] = Math.RandomFloat(-1,1);
90 itempos[2] = Math.RandomFloat(-1,1);
91
92 ItemBase itmBase = ItemBase.Cast(itm);
93
94 itmBase.SetPosition(randompos + itempos);
95 itmBase.SetQuantity(100);
96 }
97 }
98 }
99}
100
101//---------------------------------------------
102class Update118_Preset extends PresetSpawnBase
103{
104 vector randompos;
105 override void OnPresetSpawn(PlayerBase player)
106 {
107 randompos = player.GetPosition();
108 foreach (EntityAI itm : m_ItemsPreset)
109 {
110 if (itm)
111 {
112 vector itempos;
113 itempos[0] = Math.RandomFloat(-1,1);
114 itempos[2] = Math.RandomFloat(-1,1);
115
116 ItemBase itmBase = ItemBase.Cast(itm);
117
118 itmBase.SetPosition(randompos + itempos);
119 itmBase.SetQuantity(100);
120 }
121 }
122 }
123}
124
125//---------------------------------------------
126class BBMaterials_Preset extends PresetSpawnBase
127{
128 vector randompos;
129 override void OnPresetSpawn(PlayerBase player)
130 {
131 randompos = player.GetPosition();
132 foreach (EntityAI itm : m_ItemsPreset)
133 {
134 if (itm)
135 {
136 vector itempos;
137 itempos[0] = Math.RandomFloat(-1,1);
138 itempos[2] = Math.RandomFloat(-1,1);
139 itm.SetPosition(randompos + itempos);
140 }
141 }
142 }
143}
144
145//---------------------------------------------
146class Military_Light_Preset extends PresetSpawnBase
147{
148 override void OnPresetSpawn(PlayerBase player)
149 {
150 EntityAI weapon = FindItem("AK101");
151
152 auto debugParams = DebugSpawnParams.WithPlayer(player);
153 weapon.OnDebugSpawnEx(debugParams);
154
155 FindAndTakeToHandsFromInventory("AK101");
156 }
157}
158
159
160
161
162//---------------------------------------------
163//------------------ BASE ---------------------
164//---------------------------------------------
165
166class PresetSpawnBase
167{
168 ref array<EntityAI> m_ItemsInventory = new array<EntityAI>;//inventory items
169 HumanInventory m_Inventory;
170 PlayerBase m_Player;
171 array<EntityAI> m_ItemsPreset;//all items spawned from this preset
172 //---------------------------------------------
173
174 void Init(PlayerBase player)
175 {
176 m_Player = player;
177 m_Inventory = player.GetHumanInventory();
178 m_ItemsPreset = player.m_PresetItems;
179 m_Inventory.EnumerateInventory(InventoryTraversalType.INORDER, m_ItemsInventory);
180 OnPresetSpawn(player);
181
182 foreach (auto item:m_ItemsPreset)
183 {
184 Print(item);
185 }
186 }
187
188 //---------------------------------------------
189
190 void OnPresetSpawn(PlayerBase player)
191 {
192
193 }
194 //---------------------------------------------
195
196 void TakeToHands(EntityAI item)
197 {
198 if (GetGame().IsMultiplayer() && m_Player.GetInstanceType() != DayZPlayerInstanceType.INSTANCETYPE_SERVER)//throws assert otherwise
199 return;
200 if (GetGame().IsDedicatedServer())
201 {
202 m_Player.TakeEntityToHandsImpl(InventoryMode.SERVER, item);
203 }
204 else
205 {
206 m_Player.TakeEntityToHandsImpl(InventoryMode.PREDICTIVE, item);
207 }
208
209 }
210
211 void FindAndTakeToHandsFromInventory(string classname)
212 {
213 m_Inventory.EnumerateInventory(InventoryTraversalType.INORDER, m_ItemsInventory);
214 foreach(EntityAI item:m_ItemsInventory)
215 {
216 if (item.ClassName() == classname)
217 {
218 TakeToHands(item);
219 return;
220 }
221 }
222 }
223
224 EntityAI FindItem(string classname)
225 {
226 m_Inventory.EnumerateInventory(InventoryTraversalType.INORDER, m_ItemsInventory);
227 foreach(EntityAI item:m_ItemsInventory)
228 {
229 if (item.ClassName() == classname)
230 {
231 return item;
232 }
233 }
234 return null;
235 }
236
237}
238
239#endif
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
Определения Inventory.c:22
class LogManager EntityAI
override Widget Init()
Определения DayZGame.c:127
class GP5GasMask extends MaskBase ItemBase
DayZPlayer m_Player
Определения Hand_Events.c:42
enum ScreenWidthType m_Inventory
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
Определения PileOfWoodenPlanks.c:88
DayZPlayerInstanceType
defined in C++
Определения dayzplayer.c:1068
InventoryTraversalType
tree traversal type, for more see http://en.wikipedia.org/wiki/Tree_traversal
Определения gameplay.c:6
proto native CGame GetGame()
proto void Print(void var)
Prints content of variable to console/log.