DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
CraftRag.c
См. документацию.
1class CraftRag extends RecipeBase
2{
3 override void Init()
4 {
5 m_Name = "#STR_CraftRag0";
6 m_IsInstaRecipe = false; // should this recipe be performed instantly without animation
7 m_AnimationLength = 1; // animation length in relative time units
8
9 //conditions
10 m_MinDamageIngredient[0] = -1; // -1 = disable check
11 m_MaxDamageIngredient[0] = 3; // -1 = disable check
12 m_MinQuantityIngredient[0] = -1; // -1 = disable check
13 m_MaxQuantityIngredient[0] = -1; // -1 = disable check
14
19
20 //----------------------------------------------------------------------------------------------------------------------
21 //INGREDIENTS
22 //ingredient 1
23 InsertIngredient(0,"Sickle"); // you can insert multiple ingredients this way
24 InsertIngredient(0,"Hacksaw");
25 InsertIngredient(0,"HandSaw");
26 InsertIngredient(0,"KitchenKnife");
27 InsertIngredient(0,"SteakKnife");
28 InsertIngredient(0,"HayHook");
29 InsertIngredient(0,"StoneKnife");
30 InsertIngredient(0,"Cleaver");
31 InsertIngredient(0,"CombatKnife");
32 InsertIngredient(0,"Jambiya");
33 InsertIngredient(0,"HuntingKnife");
34 InsertIngredient(0,"KukriKnife");
35 InsertIngredient(0,"FangeKnife");
36 InsertIngredient(0,"Machete");
37 InsertIngredient(0,"CrudeMachete");
38 InsertIngredient(0,"OrientalMachete");
39 InsertIngredient(0,"Screwdriver");
40 InsertIngredient(0,"Crowbar");
41 InsertIngredient(0,"Pickaxe");
42 InsertIngredient(0,"WoodAxe");
43 InsertIngredient(0,"Hatchet");
44 InsertIngredient(0,"FirefighterAxe");
45 InsertIngredient(0,"Sword");
46 InsertIngredient(0,"AK_Bayonet");
47 InsertIngredient(0,"M9A1_Bayonet");
48 InsertIngredient(0,"Mosin_Bayonet");
49 InsertIngredient(0,"SKS_Bayonet");
50 InsertIngredient(0,"FarmingHoe");
51 InsertIngredient(0,"Shovel");
52 InsertIngredient(0,"FieldShovel");
53 InsertIngredient(0,"BoneKnife");
54 InsertIngredient(0,"Iceaxe");
55 InsertIngredient(0,"BrickTrowel");
56 InsertIngredient(0,"Scimitar");
57 InsertIngredient(0,"DonerKnife");
58 InsertIngredient(0,"BrickTrowel");
59 InsertIngredient(0,"Akinaka");
60
61 m_IngredientAddHealth[0] = -2; // 0 = do nothing
62 m_IngredientSetHealth[0] = -1; // -1 = do nothing
63 m_IngredientAddQuantity[0] = 0; // 0 = do nothing
64 m_IngredientDestroy[0] = false; // true = destroy, false = do nothing
65
66
67 //ingredient 2
68 InsertIngredientEx(1,"Inventory_Base","Rags_craft"); //you can insert multiple ingredients this way
69
73 m_IngredientDestroy[1] = true;
74
75 //----------------------------------------------------------------------------------------------------------------------
76 //RESULTS
77 //result1
78 AddResult("Rag");//add results here
79
80 m_ResultSetFullQuantity[0] = false; // true = set full quantity, false = do nothing
81 m_ResultSetQuantity[0] = -1; // -1 = do nothing
82 m_ResultSetHealth[0] = -1; // -1 = do nothing
83 m_ResultInheritsHealth[0] = 1; // (value) == -1 means do nothing; a (value) >= 0 means this result will inherit health from ingredient number (value);(value) == -2 means this result will inherit health from all ingredients averaged(result_health = combined_health_of_ingredients / number_of_ingredients)
84 m_ResultInheritsColor[0] = -1; // (value) == -1 means do nothing; a (value) >= 0 means this result classname will be a composite of the name provided in AddResult method and config value "color" of ingredient (value)
85 m_ResultToInventory[0] = -2; // (value) == -2 spawn result on the ground;(value) == -1 place anywhere in the players inventory, (value) >= 0 means switch position with ingredient number(value)
86 m_ResultReplacesIngredient[0] = -1; // (value) == -1 means do nothing; a value >= 0 means this result will transfer item propertiesvariables, attachments etc.. from an ingredient value
87 }
88
89 //final check for recipe's validity
90 override bool CanDo(ItemBase ingredients[], PlayerBase player)
91 {
92 ItemBase ingredient2 = ingredients[1];
93 return ingredient2.ConfigGetFloat("ragQuantity") > 0 && (ingredient2.GetHierarchyRootPlayer() || !ingredient2.GetInventory().IsAttachment());
94 }
95
96 //gets called upon recipe's completion
97 override void Do(ItemBase ingredients[], PlayerBase player,array<ItemBase> results, float specialty_weight)
98 {
99 ItemBase sourceItem = ingredients[1];
100 //drop inventory contents
101 MiscGameplayFunctions.DropAllItemsInInventoryInBounds(sourceItem, Vector(0.5, 0, 0.5));
102
103 //spawn additional fullstacks and adjusy leftover qty
104 int targetQty = sourceItem.ConfigGetFloat("ragQuantity");
105 ItemBase firstResult = results[0];
106 int qtyMax = firstResult.GetQuantityMax();
107 int qtyMin = firstResult.GetQuantityMin();
108 int stackCount = (int)Math.Ceil(targetQty / qtyMax);
109
110 ItemBase result;
111 if (stackCount > 1)
112 {
113 for (int i = 1; i < stackCount; ++i)
114 {
115 result = ItemBase.Cast(player.SpawnEntityOnGroundRaycastDispersed(firstResult.GetType()));
116 if (result)
117 MiscGameplayFunctions.TransferItemProperties(sourceItem, result, true, true, true, true);
118 }
119 firstResult.SetQuantity((int)Math.ModFloat(targetQty, qtyMax));
120 }
121 else
122 {
123 firstResult.SetQuantity((int)Math.Clamp(targetQty, qtyMin, qtyMax));
124 }
125 }
126};
ActionOverrideData int
string m_Name
Определения 3_Game/DayZ/InventoryItemType.c:34
int m_ResultReplacesIngredient[MAXIMUM_RESULTS]
Определения RecipeBase.c:62
int m_ResultToInventory[MAXIMUM_RESULTS]
Определения RecipeBase.c:59
float m_IngredientAddHealth[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:49
bool m_IsInstaRecipe
Определения RecipeBase.c:40
float m_IngredientSetHealth[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:51
int m_ResultInheritsHealth[MAXIMUM_RESULTS]
Определения RecipeBase.c:60
void AddResult(string item)
Определения RecipeBase.c:198
void InsertIngredientEx(int index, string ingredient, string soundCategory, DayZPlayerConstants uid=BASE_CRAFT_ANIMATION_ID, bool showItem=false)
Определения RecipeBase.c:164
int m_ResultInheritsColor[MAXIMUM_RESULTS]
Определения RecipeBase.c:61
float m_MinDamageIngredient[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:45
float m_MaxQuantityIngredient[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:44
float m_ResultSetQuantity[MAXIMUM_RESULTS]
Определения RecipeBase.c:56
bool m_ResultSetFullQuantity[MAXIMUM_RESULTS]
Определения RecipeBase.c:55
void InsertIngredient(int index, string ingredient, DayZPlayerConstants uid=BASE_CRAFT_ANIMATION_ID, bool showItem=false)
Определения RecipeBase.c:159
float m_ResultSetHealth[MAXIMUM_RESULTS]
Определения RecipeBase.c:57
float m_AnimationLength
Определения RecipeBase.c:38
float m_MaxDamageIngredient[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:46
float m_IngredientAddQuantity[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:50
float m_MinQuantityIngredient[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:43
bool m_IngredientDestroy[MAX_NUMBER_OF_INGREDIENTS]
Определения RecipeBase.c:52
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
Определения PileOfBricks.c:64
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
override bool CanDo(ItemBase ingredients[], PlayerBase player)
Определения CraftRag.c:90
override void Do(ItemBase ingredients[], PlayerBase player, array< ItemBase > results, float specialty_weight)
Определения CraftRag.c:97
override void Init()
Определения CraftRag.c:3
Определения AttachHolster.c:2
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto float ModFloat(float x, float y)
Returns the floating-point remainder of x/y rounded towards zero.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static proto float Ceil(float f)
Returns ceil of value.