DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
PluginHorticulture.c
Go to the documentation of this file.
1class PluginHorticulture extends PluginBase
2{
4
6 {
7 m_PlantMaterials = new map<string, ref PlantMaterialHealth>;
8
10 }
11
13 {
14 string cfg_access = "CfgHorticulture"; // it is stored in dz\gear\cultivation\cfgHorticulture.hpp
15 int cfg_horticulture_count = GetGame().ConfigGetChildrenCount( cfg_access );
16
17 for ( int i = 0; i < cfg_horticulture_count; i++ )
18 {
19 string cfg_class_name = "";
20 GetGame().ConfigGetChildName( cfg_access, i, cfg_class_name );
21 string cfg_class_access = cfg_access + " " + cfg_class_name;
22
23 int cfg_class_count = GetGame().ConfigGetChildrenCount( cfg_class_access );
24
25 for ( int j = 0; j < cfg_class_count; j++ )
26 {
27 string cfg_subclass_name = "";
28 GetGame().ConfigGetChildName( cfg_class_access, j, cfg_subclass_name );
29 string cfg_subclass_access = cfg_class_access + " " + cfg_subclass_name;
30
31 int cfg_subclass_count = GetGame().ConfigGetChildrenCount( cfg_subclass_access );
32
33 PlantMaterialHealth plantMaterialHealth = NULL;
34
35 if ( cfg_class_name == "Plants" )
36 {
37 plantMaterialHealth = new PlantMaterialHealth;
38 m_PlantMaterials.Set( cfg_subclass_name, plantMaterialHealth );
39 }
40
41 for ( int k = 0; k < cfg_subclass_count; k++ )
42 {
43 string cfg_variable_name = "";
44 GetGame().ConfigGetChildName( cfg_subclass_access, k, cfg_variable_name );
45 string cfg_variable_access = cfg_subclass_access + " " + cfg_variable_name;
46
47 if ( cfg_class_name == "Plants" )
48 {
49 string string_param = "";
50 GetGame().ConfigGetText( cfg_variable_access, string_param );
51
52 if ( cfg_variable_name == "infestedTex" )
53 {
54 plantMaterialHealth.m_InfestedTex = string_param;
55 }
56 else if ( cfg_variable_name == "infestedMat" )
57 {
58 plantMaterialHealth.m_InfestedMat = string_param;
59 }
60 else if ( cfg_variable_name == "healthyTex" )
61 {
62 plantMaterialHealth.m_HealthyTex = string_param;
63 }
64 else if ( cfg_variable_name == "healthyMat" )
65 {
66 plantMaterialHealth.m_HealthyMat = string_param;
67 }
68 }
69 }
70 }
71 }
72 }
73
74 string GetPlantType( Object obj )
75 {
76 string seed_type = obj.GetType();
77
78 string plant_type = "";
79 GetGame().ConfigGetText( "cfgVehicles " + seed_type + " Horticulture PlantType", plant_type );
80
81 return plant_type;
82 }
83
84 float GetSurfaceFertility( string surface_type )
85 {
86 float fertility = 0.8;
87 if ( surface_type == "hlina" || surface_type == "CRGrass1" || surface_type == "CRGrass2" || surface_type == "CRForest1" || surface_type == "CRForest2" || surface_type == "CRGrit1" )
88 {
89 fertility = 0.8;
90 }
91
92 return fertility;
93 }
94
95 bool GiveWormsToPlayer( PlayerBase player, float chance )
96 {
97 if ( Math.RandomFloat01() <= chance )
98 {
99 ItemBase item = ItemBase.Cast( player.GetHumanInventory().CreateInInventory("Food_Worm") );
100 item.SetQuantity( 1 );
101 return true;
102 }
103
104 return false;
105 }
106
108 {
109 if ( m_PlantMaterials.Contains(plant_type) )
110 {
111 return m_PlantMaterials.Get(plant_type);
112 }
113
114 return NULL;
115 }
116}
proto native int ConfigGetChildrenCount(string path)
Get count of subclasses in config class on path.
proto bool ConfigGetText(string path, out string value)
Get string value from config on path.
proto bool ConfigGetChildName(string path, int index, out string name)
Get name of subclass in config class on path.
Definition EnMath.c:7
float GetSurfaceFertility(string surface_type)
string GetPlantType(Object obj)
bool GiveWormsToPlayer(PlayerBase player, float chance)
void PluginHorticulture()
ref map< string, ref PlantMaterialHealth > m_PlantMaterials
PlantMaterialHealth GetPlantMaterial(string plant_type)
proto native CGame GetGame()
static float RandomFloat01()
Returns a random float number between and min [inclusive] and max [inclusive].
Definition EnMath.c:106