This repository was archived by the owner on Dec 6, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathFeexExp.cs
More file actions
171 lines (157 loc) · 10.2 KB
/
FeexExp.cs
File metadata and controls
171 lines (157 loc) · 10.2 KB
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
using Rocket.API;
using Rocket.API.Collections;
using Rocket.API.Serialisation;
using Rocket.Core.Plugins;
using Rocket.Unturned.Chat;
using Rocket.Unturned.Events;
using Rocket.Unturned.Player;
using Rocket.Unturned.Skills;
using System;
using UnityEngine;
namespace Freenex.FeexExp
{
public class RocketLogger : Rocket.Core.Logging.Logger { }
public class FeexExp : RocketPlugin<FeexExpConfiguration>
{
public static FeexExp Instance;
public override TranslationList DefaultTranslations
{
get
{
return new TranslationList() {
{"general_not_found","Player not found."},
{"general_invalid_parameter","Invalid parameter."},
{"exp_self","You gave yourself {0} experience."},
{"exp_give_player","{1} gave you {0} experience."},
{"exp_give_caller","You gave {1} {0} experience."},
{"exp_give_player_console","You've got {0} experience."},
{"exp_transfer_player","{1} gave you {0} experience."},
{"exp_transfer_caller","You gave {1} {0} experience."},
{"exp_transfer_not_enough","You don't have {0} experience."},
{"exp_onrevive","You received {0} experience."},
{"exp_onkill_true","You killed {0} and received {1} experience."},
{"exp_onkill_false","You killed {0} but received no experience."}
};
}
}
protected override void Load()
{
Instance = this;
UnturnedPlayerEvents.OnPlayerDeath += UnturnedPlayerEvents_OnPlayerDeath;
UnturnedPlayerEvents.OnPlayerRevive += UnturnedPlayerEvents_OnPlayerRevive;
RocketLogger.Log("Freenex's FeexExp has been loaded!");
}
protected override void Unload()
{
UnturnedPlayerEvents.OnPlayerDeath -= UnturnedPlayerEvents_OnPlayerDeath;
UnturnedPlayerEvents.OnPlayerRevive -= UnturnedPlayerEvents_OnPlayerRevive;
RocketLogger.Log("Freenex's FeexExp has been unloaded!");
}
void UnturnedPlayerEvents_OnPlayerDeath(UnturnedPlayer player, SDG.Unturned.EDeathCause cause, SDG.Unturned.ELimb limb, Steamworks.CSteamID murderer)
{
if (Instance.Configuration.Instance.EnableCustomLosePercentage)
{
FeexExpPlayerComponent tmpComponent = player.GetComponent<FeexExpPlayerComponent>();
tmpComponent.Agriculture = player.GetSkillLevel(UnturnedSkill.Agriculture);
tmpComponent.Cardio = player.GetSkillLevel(UnturnedSkill.Cardio);
tmpComponent.Cooking = player.GetSkillLevel(UnturnedSkill.Cooking);
tmpComponent.Crafting = player.GetSkillLevel(UnturnedSkill.Crafting);
tmpComponent.Dexerity = player.GetSkillLevel(UnturnedSkill.Dexerity);
tmpComponent.Diving = player.GetSkillLevel(UnturnedSkill.Diving);
tmpComponent.Engineer = player.GetSkillLevel(UnturnedSkill.Engineer);
tmpComponent.Exercise = player.GetSkillLevel(UnturnedSkill.Exercise);
tmpComponent.Fishing = player.GetSkillLevel(UnturnedSkill.Fishing);
tmpComponent.Healing = player.GetSkillLevel(UnturnedSkill.Healing);
tmpComponent.Immunity = player.GetSkillLevel(UnturnedSkill.Immunity);
tmpComponent.Mechanic = player.GetSkillLevel(UnturnedSkill.Mechanic);
tmpComponent.Outdoors = player.GetSkillLevel(UnturnedSkill.Outdoors);
tmpComponent.Overkill = player.GetSkillLevel(UnturnedSkill.Overkill);
tmpComponent.Parkour = player.GetSkillLevel(UnturnedSkill.Parkour);
tmpComponent.Sharpshooter = player.GetSkillLevel(UnturnedSkill.Sharpshooter);
tmpComponent.Sneakybeaky = player.GetSkillLevel(UnturnedSkill.Sneakybeaky);
tmpComponent.Strength = player.GetSkillLevel(UnturnedSkill.Strength);
tmpComponent.Survival = player.GetSkillLevel(UnturnedSkill.Survival);
tmpComponent.Toughness = player.GetSkillLevel(UnturnedSkill.Toughness);
tmpComponent.Vitality = player.GetSkillLevel(UnturnedSkill.Vitality);
tmpComponent.Warmblooded = player.GetSkillLevel(UnturnedSkill.Warmblooded);
}
UnturnedPlayer UPmurderer = UnturnedPlayer.FromCSteamID(murderer);
try
{
if (player.Id == UPmurderer.Id) { return; }
}
catch { return; }
foreach (Permission playerPermission in UPmurderer.GetPermissions())
{
if (playerPermission.Name.ToLower().Contains("exp.onkill."))
{
string[] permissionExpArray = playerPermission.Name.ToLower().Replace("exp.onkill.", string.Empty).Split('.');
uint permissionExp;
uint permissionPercentage = 100;
bool isNumeric = uint.TryParse(permissionExpArray[0], out permissionExp);
if (!isNumeric) { RocketLogger.LogError(permissionExpArray[0] + " is not numeric."); return; }
if (permissionExpArray.Length == 2)
{
bool isPercentageNumeric = uint.TryParse(permissionExpArray[1], out permissionPercentage);
if (!isPercentageNumeric) { RocketLogger.LogError(permissionExpArray[1] + " is not numeric."); }
}
System.Random rand = new System.Random();
int chance = rand.Next(1, 101);
if (chance <= permissionPercentage)
{
UPmurderer.Experience = UPmurderer.Experience + permissionExp;
UnturnedChat.Say(UPmurderer, FeexExp.Instance.Translations.Instance.Translate("exp_onkill_true", player.CharacterName, permissionExp));
}
else
{
UnturnedChat.Say(UPmurderer, FeexExp.Instance.Translations.Instance.Translate("exp_onkill_false", player.CharacterName));
}
}
}
}
void UnturnedPlayerEvents_OnPlayerRevive(UnturnedPlayer player, Vector3 position, byte revive)
{
if (Instance.Configuration.Instance.EnableCustomLosePercentage)
{
FeexExpPlayerComponent tmpComponent = player.GetComponent<FeexExpPlayerComponent>();
decimal losePercentage = (100 - Instance.Configuration.Instance.CustomLosePercentage) / 100;
player.SetSkillLevel(UnturnedSkill.Agriculture, Convert.ToByte(Math.Floor(tmpComponent.Agriculture * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Cardio, Convert.ToByte(Math.Floor(tmpComponent.Cardio * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Cooking, Convert.ToByte(Math.Floor(tmpComponent.Cooking * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Crafting, Convert.ToByte(Math.Floor(tmpComponent.Crafting * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Dexerity, Convert.ToByte(Math.Floor(tmpComponent.Dexerity * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Diving, Convert.ToByte(Math.Floor(tmpComponent.Diving * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Engineer, Convert.ToByte(Math.Floor(tmpComponent.Engineer * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Exercise, Convert.ToByte(Math.Floor(tmpComponent.Exercise * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Fishing, Convert.ToByte(Math.Floor(tmpComponent.Fishing * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Healing, Convert.ToByte(Math.Floor(tmpComponent.Healing * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Immunity, Convert.ToByte(Math.Floor(tmpComponent.Immunity * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Mechanic, Convert.ToByte(Math.Floor(tmpComponent.Mechanic * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Outdoors, Convert.ToByte(Math.Floor(tmpComponent.Outdoors * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Overkill, Convert.ToByte(Math.Floor(tmpComponent.Overkill * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Parkour, Convert.ToByte(Math.Floor(tmpComponent.Parkour * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Sharpshooter, Convert.ToByte(Math.Floor(tmpComponent.Sharpshooter * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Sneakybeaky, Convert.ToByte(Math.Floor(tmpComponent.Sneakybeaky * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Strength, Convert.ToByte(Math.Floor(tmpComponent.Strength * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Survival, Convert.ToByte(Math.Floor(tmpComponent.Survival * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Toughness, Convert.ToByte(Math.Floor(tmpComponent.Toughness * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Vitality, Convert.ToByte(Math.Floor(tmpComponent.Vitality * losePercentage)));
player.SetSkillLevel(UnturnedSkill.Warmblooded, Convert.ToByte(Math.Floor(tmpComponent.Warmblooded * losePercentage)));
}
foreach (Permission playerPermission in player.GetPermissions())
{
if (playerPermission.Name.ToLower().Contains("exp.onrevive."))
{
uint permissionExp;
bool isNumeric = uint.TryParse(playerPermission.Name.ToLower().Replace("exp.onrevive.", string.Empty), out permissionExp);
if (isNumeric)
{
player.Experience = player.Experience + permissionExp;
UnturnedChat.Say(player, FeexExp.Instance.Translations.Instance.Translate("exp_onrevive", permissionExp));
}
else { RocketLogger.LogError(playerPermission + " is not numeric."); }
}
}
}
}
}