Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
transfervalues.c
Go to the documentation of this file.
1
class
TransferValues
extends
Managed
2
{
3
const
int
TYPE_HEALTH
= 1;
4
const
int
TYPE_BLOOD
= 2;
5
6
const
float
VALUE_CHECK_INTERVAL
= 5;
7
const
float
SENSITIVTY_PERCENTAGE
= 1;
//how much the value needs to change up/down from previous update to trigger a new update(in percent)
8
9
const
int
BLOOD_THRESHOLD_LOW
= 3000;
10
PlayerBase
m_Player
;
11
float
m_TimeSinceLastTick
=
VALUE_CHECK_INTERVAL
+ 1;
12
13
float
m_LastHealthUpdate
;
14
float
m_LastBloodUpdate
;
15
16
//float m_CumulatedHealthDiff;
17
//float m_CumulatedBloodDiff;
18
19
float
m_HealthMaxValue
;
20
float
m_BloodMaxValue
;
21
22
float
m_BloodClient
;
23
float
m_HealthClient
;
24
25
protected
bool
m_InitialSyncSent
;
26
27
void
TransferValues
(
PlayerBase
player)
28
{
29
m_Player
= player;
30
m_InitialSyncSent
=
false
;
31
Init
();
32
}
33
34
void
Init
()
35
{
36
m_LastHealthUpdate
= 0;
37
m_LastBloodUpdate
= 0;
38
m_HealthMaxValue
=
m_Player
.GetMaxHealth(
""
,
"Health"
);
39
m_BloodMaxValue
=
m_Player
.GetMaxHealth(
""
,
"Blood"
);
40
m_BloodClient
= 0;
41
m_HealthClient
= 0;
42
}
43
44
void
OnScheduledTick
(
float
deltatime)
45
{
46
#ifdef DIAG_DEVELOPER
47
#ifndef SERVER
48
ShowDebugValues
(
DiagMenu
.
GetBool
(
DiagMenuIDs
.TRANSFER_VALUES_SHOW));
49
#endif
50
#endif
51
52
if
(
g_Game
.IsClient() )
return
;
53
54
m_TimeSinceLastTick
+= deltatime;
55
56
if
(!
m_InitialSyncSent
)
57
{
58
SendInitValues
();
59
}
60
else
if
(
m_TimeSinceLastTick
>
VALUE_CHECK_INTERVAL
)
61
{
62
/*
63
Print(m_TimeSinceLastTick.ToString());
64
Print(VALUE_CHECK_INTERVAL.ToString());
65
Print("--------------");
66
*/
67
m_TimeSinceLastTick
= 0;
68
CheckValues
();
69
70
// send sync junctures if necessary
71
// TODO: !!!! event is sent too often, please fix it
72
/*
73
float damage = 1 - m_Player.GetHealth("", "") / 100;
74
DayZPlayerSyncJunctures.SendInjury(m_Player, true, damage);
75
*/
76
}
77
}
78
79
void
CheckValues
()
80
{
81
CheckHealth
();
82
CheckBlood
();
83
}
84
85
float
GetBlood
()
86
{
87
return
m_BloodClient
;
88
89
}
90
91
float
GetHealth
()
92
{
93
return
m_HealthClient
;
94
}
95
96
void
CheckHealth
()
97
{
98
float
health_current =
m_Player
.GetHealth(
""
,
"Health"
);
99
float
health_normalized = health_current /
m_HealthMaxValue
;
100
float
difference_normalized = health_normalized -
m_LastHealthUpdate
;
101
float
diff_abs =
Math
.
AbsFloat
(difference_normalized);
102
103
if
( diff_abs > (
SENSITIVTY_PERCENTAGE
/ 100 ) )
104
{
105
SendValue
(
TYPE_HEALTH
, health_normalized);
106
m_LastHealthUpdate
= health_normalized;
107
}
108
}
109
110
void
CheckBlood
()
111
{
112
float
blood_current =
m_Player
.GetHealth(
""
,
"Blood"
);
113
//float blood_normalized = blood_current / m_BloodMaxValue;
114
float
blood_normalized =
Math
.
InverseLerp
(
BLOOD_THRESHOLD_LOW
,
m_BloodMaxValue
, blood_current);
115
blood_normalized =
Math
.
Clamp
(blood_normalized,0,1);
116
float
difference_normalized = blood_normalized -
m_LastBloodUpdate
;
117
float
diff_abs =
Math
.
AbsFloat
(difference_normalized);
118
119
if
( diff_abs > (
SENSITIVTY_PERCENTAGE
/100 ) )
120
{
121
SendValue
(
TYPE_BLOOD
, blood_normalized);
122
m_LastBloodUpdate
= blood_normalized;
123
}
124
}
125
127
void
SendInitValues
()
128
{
129
m_InitialSyncSent
=
true
;
130
131
//HP
132
float
health_current =
m_Player
.GetHealth(
""
,
"Health"
);
133
float
health_normalized = health_current /
m_HealthMaxValue
;
134
SendValue
(
TYPE_HEALTH
, health_normalized);
135
m_LastHealthUpdate
= health_normalized;
136
137
//Blood
138
float
blood_current =
m_Player
.GetHealth(
""
,
"Blood"
);
139
float
blood_normalized =
Math
.
InverseLerp
(
BLOOD_THRESHOLD_LOW
,
m_BloodMaxValue
, blood_current);
140
blood_normalized =
Math
.
Clamp
(blood_normalized,0,1);
141
SendValue
(
TYPE_BLOOD
, blood_normalized);
142
m_LastBloodUpdate
= blood_normalized;
143
}
144
145
void
SendValue
(
int
value_type,
float
value)
146
{
147
CachedObjectsParams
.
PARAM2_INT_FLOAT
.param1 = value_type;
148
CachedObjectsParams
.
PARAM2_INT_FLOAT
.param2 = value;
149
150
g_Game
.RPCSingleParam(
m_Player
,
ERPCs
.RPC_DAMAGE_VALUE_SYNC,
CachedObjectsParams
.
PARAM2_INT_FLOAT
,
true
,
m_Player
.GetIdentity());
151
}
152
153
void
ReceiveValue
(
int
value_type,
float
value)
154
{
155
if
( value_type ==
TYPE_HEALTH
)
156
{
157
m_HealthClient
= value;
158
}
159
else
if
( value_type ==
TYPE_BLOOD
)
160
{
161
m_BloodClient
= value;
162
}
163
}
164
165
void
OnRPC
(
ParamsReadContext
ctx)
166
{
167
ctx.
Read
(
CachedObjectsParams
.
PARAM2_INT_FLOAT
);
168
169
int
value_type =
CachedObjectsParams
.
PARAM2_INT_FLOAT
.param1;
170
float
value =
CachedObjectsParams
.
PARAM2_INT_FLOAT
.param2;
171
172
ReceiveValue
(value_type, value);
173
}
174
175
void
ShowDebugValues
(
bool
show)
176
{
177
#ifdef DIAG_DEVELOPER
178
if
( show )
179
{
180
DbgUI
.
BeginCleanupScope
();
181
DbgUI
.
Begin
(
"Values"
, 50, 50);
182
183
DbgUI
.
Text
(
"Blood: "
+
m_BloodClient
.ToString());
184
DbgUI
.
Text
(
"Health: "
+
m_HealthClient
.ToString());
185
186
DbgUI
.
End
();
187
DbgUI
.
EndCleanupScope
();
188
}
189
else
190
{
191
DbgUI
.
BeginCleanupScope
();
192
DbgUI
.
Begin
(
"Values"
, 50, 50);
193
DbgUI
.
End
();
194
DbgUI
.
EndCleanupScope
();
195
}
196
#endif
197
}
198
}
CachedObjectsParams
Definition
utilityclasses.c:10
CachedObjectsParams::PARAM2_INT_FLOAT
static ref Param2< int, float > PARAM2_INT_FLOAT
Definition
utilityclasses.c:17
DbgUI
Definition
dbgui.c:60
DiagMenu
Definition
endebug.c:241
Managed
TODO doc.
Definition
enscript.c:118
Managed::SendInitValues
void SendInitValues()
Sends values on object creation.
Definition
transfervalues.c:127
Managed::Init
static void Init()
Definition
pperequesterbank.c:51
Managed::m_HealthClient
float m_HealthClient
Definition
transfervalues.c:23
Managed::TYPE_BLOOD
const int TYPE_BLOOD
Definition
transfervalues.c:4
Managed::Init
void Init()
Definition
transfervalues.c:34
Managed::GetBlood
float GetBlood()
Definition
transfervalues.c:85
Managed::TYPE_HEALTH
const int TYPE_HEALTH
Definition
transfervalues.c:3
Managed::ReceiveValue
void ReceiveValue(int value_type, float value)
Definition
transfervalues.c:153
Managed::m_BloodMaxValue
float m_BloodMaxValue
Definition
transfervalues.c:20
Managed::m_HealthMaxValue
float m_HealthMaxValue
Definition
transfervalues.c:19
Managed::m_Player
PlayerBase m_Player
Definition
transfervalues.c:10
Managed::SENSITIVTY_PERCENTAGE
const float SENSITIVTY_PERCENTAGE
Definition
transfervalues.c:7
Managed::GetHealth
float GetHealth()
Definition
transfervalues.c:91
Managed::m_LastHealthUpdate
float m_LastHealthUpdate
Definition
transfervalues.c:13
Managed::OnScheduledTick
void OnScheduledTick(float deltatime)
Definition
transfervalues.c:44
Managed::m_BloodClient
float m_BloodClient
Definition
transfervalues.c:22
Managed::SendValue
void SendValue(int value_type, float value)
Definition
transfervalues.c:145
Managed::CheckBlood
void CheckBlood()
Definition
transfervalues.c:110
Managed::BLOOD_THRESHOLD_LOW
const int BLOOD_THRESHOLD_LOW
Definition
transfervalues.c:9
Managed::m_LastBloodUpdate
float m_LastBloodUpdate
Definition
transfervalues.c:14
Managed::CheckHealth
void CheckHealth()
Definition
transfervalues.c:96
Managed::OnRPC
void OnRPC(ParamsReadContext ctx)
Definition
transfervalues.c:165
Managed::VALUE_CHECK_INTERVAL
const float VALUE_CHECK_INTERVAL
Definition
transfervalues.c:6
Managed::m_TimeSinceLastTick
float m_TimeSinceLastTick
Definition
transfervalues.c:11
Managed::ShowDebugValues
void ShowDebugValues(bool show)
Definition
transfervalues.c:175
Managed::CheckValues
void CheckValues()
Definition
transfervalues.c:79
Managed::m_InitialSyncSent
bool m_InitialSyncSent
Definition
transfervalues.c:25
Managed::TransferValues
void TransferValues(PlayerBase player)
Definition
transfervalues.c:27
Math
Definition
enmath.c:7
PlayerBase
Definition
playerbaseclient.c:2
Serializer::Read
proto bool Read(void value_in)
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
DiagMenuIDs
DiagMenuIDs
Definition
ediagmenuids.c:2
ERPCs
ERPCs
Definition
erpcs.c:2
ParamsReadContext
Serializer ParamsReadContext
Definition
gameplay.c:15
DbgUI::Begin
static proto native void Begin(string windowTitle, float x=0, float y=0)
DbgUI::BeginCleanupScope
static proto void BeginCleanupScope()
DbgUI::Text
static proto native void Text(string label)
DbgUI::EndCleanupScope
static proto native void EndCleanupScope()
DbgUI::End
static proto native void End()
DiagMenu::GetBool
static proto bool GetBool(int id, bool reverse=false)
Get value as bool from the given script id.
Math::Clamp
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'.
Math::InverseLerp
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
Math::AbsFloat
static proto float AbsFloat(float f)
Returns absolute value.
Games
Dayz
scripts
4_world
classes
transfervalues.c
Generated by
1.17.0