@@ -16,6 +16,7 @@ enum E_STATSINFO {
16
16
m_iFog,
17
17
m_iFogType,
18
18
Float: m_flSpeed,
19
+ Float: m_flPreSpeed,
19
20
Float: m_flOldSpeed,
20
21
Float: m_flMaxPreStrafe,
21
22
Float: m_flFallTime,
@@ -31,6 +32,7 @@ new g_sStatsInfo[MAX_PLAYERS + 1][E_STATSINFO];
31
32
32
33
enum E_PLAYERINFO {
33
34
m_iFlags,
35
+ m_iOldFlags,
34
36
m_iMoveType,
35
37
m_iButtons,
36
38
m_iOldButtons
@@ -39,7 +41,7 @@ enum E_PLAYERINFO {
39
41
new g_sPlayerInfo[MAX_PLAYERS + 1 ][E_PLAYERINFO];
40
42
41
43
public plugin_init () {
42
- register_plugin (" PreFog" , " 2.0.2 " , " WessTorn" ); // Спасибо: FAME, Destroman, Borjomi, Denzer, Albertio
44
+ register_plugin (" PreFog" , " 2.0.3 " , " WessTorn" ); // Спасибо: FAME, Destroman, Borjomi, Denzer, Albertio
43
45
44
46
register_clcmd (" say /showpre" , " cmdShowPre" )
45
47
register_clcmd (" say /pre" , " cmdShowPre" )
@@ -70,15 +72,20 @@ public rgPlayerPreThink(id) {
70
72
g_sPlayerInfo[id][m_iOldButtons] = get_entvar (id, var_oldbuttons);
71
73
g_sPlayerInfo[id][m_iFlags] = get_entvar (id, var_flags);
72
74
g_sPlayerInfo[id][m_iMoveType] = get_entvar (id, var_movetype);
73
- g_sStatsInfo[id][m_flSpeed] = get_speed (id, g_sPlayerInfo[id][m_iFlags]);
74
75
g_sStatsInfo[id][m_flMaxPreStrafe] = get_maxspeed (id);
76
+ g_sStatsInfo[id][m_flSpeed] = get_speed (id);
75
77
76
78
new is_spec_user[MAX_PLAYERS + 1 ];
77
79
for (new i = 1 ; i <= MaxClients; i++ ) {
78
80
is_spec_user[i] = is_user_spectating_player (i, id);
79
81
}
80
82
81
83
if (g_sPlayerInfo[id][m_iFlags] & FL_ONGROUND) {
84
+ if (! (g_sPlayerInfo[id][m_iOldFlags] & FL_ONGROUND)) {
85
+ g_sStatsInfo[id][m_flPreSpeed] = g_sStatsInfo[id][m_flSpeed];
86
+ }
87
+
88
+
82
89
if (g_sStatsInfo[id][m_bFirstFallGround] == true && get_gametime () - g_sStatsInfo[id][m_flFallTime] > 0 .5 ) {
83
90
g_sStatsInfo[id][m_bFirstFallGround] = false ;
84
91
g_sStatsInfo[id][m_bShowFirst] = true ;
@@ -188,10 +195,10 @@ public rgPlayerPreThink(id) {
188
195
if (i == id || is_spec_user[i]) {
189
196
if (g_sStatsInfo[id][m_iFogType] == 1 ) {
190
197
set_hudmessage (0 , 250 , 60 , - 1 .0 , 0 .64 , 0 , 0 .0 , 1 .0 , 0 .1 , 0 .0 , 2 );
191
- ShowSyncHudMsg (i, g_iHudObject, " %d %s ^n%.2f " , g_sStatsInfo[id][m_iFog], g_szFogType[g_sStatsInfo[id][m_iFogType]], g_sStatsInfo[id][m_flSpeed ]);
198
+ ShowSyncHudMsg (i, g_iHudObject, " %d %s ^n%.2f ^n %.2f " , g_sStatsInfo[id][m_iFog], g_szFogType[g_sStatsInfo[id][m_iFogType]], g_sStatsInfo[id][m_flPreSpeed], g_sStatsInfo[id][m_flOldSpeed ]);
192
199
} else {
193
200
set_hudmessage (250 , 250 , 250 , - 1 .0 , 0 .64 , 0 , 0 .0 , 1 .0 , 0 .1 , 0 .0 , 2 );
194
- ShowSyncHudMsg (i, g_iHudObject, " %d %s ^n%.2f " , g_sStatsInfo[id][m_iFog], g_szFogType[g_sStatsInfo[id][m_iFogType]], g_sStatsInfo[id][m_flSpeed ]);
201
+ ShowSyncHudMsg (i, g_iHudObject, " %d %s ^n%.2f ^n %.2f " , g_sStatsInfo[id][m_iFog], g_szFogType[g_sStatsInfo[id][m_iFogType]],g_sStatsInfo[id][m_flPreSpeed], g_sStatsInfo[id][m_flOldSpeed ]);
195
202
}
196
203
}
197
204
}
@@ -201,6 +208,7 @@ public rgPlayerPreThink(id) {
201
208
g_sStatsInfo[id][m_iFog] = 0 ;
202
209
}
203
210
211
+ g_sPlayerInfo[id][m_iOldFlags] = g_sPlayerInfo[id][m_iFlags]
204
212
g_sStatsInfo[id][m_flOldSpeed] = g_sStatsInfo[id][m_flSpeed];
205
213
206
214
return HC_CONTINUE;
@@ -222,23 +230,23 @@ stock is_user_spectating_player(spectator, player) {
222
230
return 0 ;
223
231
}
224
232
225
- stock Float: get_speed (id, iFlags ) {
233
+ stock Float: get_speed (id) {
226
234
static Float: flVelocity[3 ];
227
235
get_entvar (id, var_velocity, flVelocity);
228
236
229
- if (iFlags & FL_ONGROUND && iFlags & FL_INWATER )
230
- flVelocity[ 2 ] = 0 . 0 ;
231
- if (flVelocity[ 2 ] != 0 )
232
- flVelocity[ 2 ] -= flVelocity[ 2 ] ;
237
+ new Float: flNorma = floatpower (flVelocity[ 0 ], 2 . 0 ) + floatpower (flVelocity[ 1 ], 2 . 0 )
238
+
239
+ if (flNorma > 0 . 0 )
240
+ return floatsqroot (flNorma) ;
233
241
234
- return vector_length (flVelocity);
242
+ return 0 . 0
235
243
}
236
244
237
245
stock Float: get_maxspeed (id) {
238
- new iMaxSpeed ;
239
- iMaxSpeed = get_entvar (id, var_maxspeed);
246
+ new Float: flMaxSpeed ;
247
+ flMaxSpeed = get_entvar (id, var_maxspeed);
240
248
241
- return iMaxSpeed * 1 .2 ;
249
+ return flMaxSpeed * 1 .2 ;
242
250
}
243
251
244
252
stock bool: isUserSurfing (id) {
0 commit comments