-
Notifications
You must be signed in to change notification settings - Fork 0
/
rrm_friction.sp
92 lines (72 loc) · 1.79 KB
/
rrm_friction.sp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// Copyright (C) 2024 Katsute | Licensed under CC BY-NC-SA 4.0
#pragma semicolon 1
#define RRM_VERSION "1.0"
#include <sourcemod>
#include <sdkhooks>
#include <tf2attributes>
#include <tf2>
#include <tf2_stocks>
#include <rrm>
#pragma newdecls required
int gEnabled = 0;
float gMul = 0.0;
ConVar cMin = null, cMax = null;
float gMin = 0.0, gMax = 0.0;
public Plugin myinfo =
{
name = "[RRM] Friction Modifier",
author = "Katsute",
description = "Modifier changes friction.",
version = "1.0"
};
public void OnPluginStart()
{
cMin = CreateConVar("rrm_friction_min", "0.1", "Minimum value for the random number generator.");
cMax = CreateConVar("rrm_friction_max", "1.0", "Maximum value for the random number generator.");
cMin.AddChangeHook(OnConvarChanged);
cMax.AddChangeHook(OnConvarChanged);
gMin = cMin.FloatValue;
gMax = cMax.FloatValue;
if(RRM_IsRegOpen())
RegisterModifiers();
AutoExecConfig(true, "rrm_friction", "rrm");
}
public void OnPluginEnd()
{
DisableEffect();
}
public int RRM_OnRegOpen()
{
RegisterModifiers();
}
void RegisterModifiers()
{
RRM_Register("Friction", gMin, gMax, false, RRM_Callback_Effect);
}
public void OnConvarChanged(Handle convar, char[] oldValue, char[] newValue){
if (StrEqual(oldValue, newValue, true))
return;
float fNewValue = StringToFloat(newValue);
if(convar == cMin)
gMin = fNewValue;
else if(convar == cMax)
gMax = fNewValue;
}
public int RRM_Callback_Effect(bool enable, float value)
{
gEnabled = enable;
gMul = value;
if(gEnabled)
EnableEffect();
else
DisableEffect();
return enable;
}
void EnableEffect()
{
ServerCommand("sv_friction %f", 4 * gMul);
}
void DisableEffect()
{
ServerCommand("sv_friction 4");
}