About Reputation Master
Adds a reputation system, similar to the well-known Infestation Survivor Stories(The WarZ).
More information on how the plugin works can be found at the bottom in the "Principle of work" section.
- The ability to create an unlimited number of reputations. The only condition is that their value ranges must not overlap;
- The ability to flexibly customize the bar for each reputation;
- The ability to automatically reset reputations upon detecting a wipe;
- The ability to set a prefix for reputations;
- The ability to show your reputation by waving to players;
- The ability to see a player's reputation when aiming at them with scope items. Unfortunately, the reputation will also be displayed if a player is in certain bushes;
- The ability to see the reputation of all players in the bandit zone;
- The ability to prohibit players with a certain reputation from entering safe zones (except for the bandit zone). Also, notifying players about it;
- The ability to set fake reputations to confuse players.
- reputationmaster.vip - Provides the ability to set a fake rank value.
- reputationmaster.admin - Provides the ability to set or reset reputation value to other players.
{
"Chat command": "rep",
"Is it worth enabling GameTips for messages?": true,
"Is it worth using the AdvancedStatus plugin?": true,
"Is it worth using ddraw to display reputation? NOTE: To use, an administrator flag is required, which is granted before rendering and revoked immediately after issuing the command": true,
"Is it worth displaying reputation when aiming at a player with a scope(ddraw should be enabled)? NOTE: The player's reputation may be displayed in certain bushes": true,
"Is it worth resetting reputations upon detecting a wipe?": true,
"Is it worth forbidding bandits from visiting safe zones(except for Banditcamp)?": true,
"The time in seconds during which a bandit can stay in the safe zone(except for Banditcamp) before being killed, making their loot available to everyone": 10.0,
"The prefab name for the effect when a bandit is killed in the safe zone. An empty string disables the effect": "assets/prefabs/misc/xmas/advent_calendar/effects/open_advent.prefab",
"The time in seconds during which self-defense will be active for a lawman after being attacked by another lawman": 900,
"The minimum value limit for fake reputation": -10000.0,
"The maximum value limit for fake reputation": 10000.0,
"UI. Position - Left to Right": true,
"UI. Position - AnchorMin": "1 0.9",
"UI. Position - AnchorMax": "1 0.9",
"UI. Position - OffsetMin": "-208 -15",
"UI. Position - OffsetMax": "-16 15",
"UI. Reputation Positive Value Image - URL": "https://i.imgur.com/HKqyHO8.png",
"UI. Reputation Negative Value Image - URL": "https://i.imgur.com/mMdm55h.png",
"UI. Added Value Sound - Prefab Name. An empty string disables the effect": "assets/bundled/prefabs/fx/notice/item.select.fx.prefab",
"Wipe ID": null,
"Version": {
"Major": 0,
"Minor": 1,
"Patch": 4
}
}
Note:
- To use ddraw, an administrator flag is required, which is granted before rendering and revoked immediately after issuing the command.
- The player's reputation may be displayed in certain bushes.
[ { "Name": "Assassin", "Prefix": "⁎✧⁎ ", "MinValue": -3.40282347E+38, "MaxValue": -1000.0, "Reward": 20.0, "LawmanPenalty": 0.0, "AllowSafeZone": false, "BarSettings": { "Order": 20, "Height": 26, "Main_Color(Hex or RGBA)": "#FF341E", "Main_Transparency": 0.6, "Main_Material": "", "Image_Url": "https://i.imgur.com/CdDKpwv.png", "Image_Local(Leave empty to use Image_Url)": "", "Image_Sprite(Leave empty to use Image_Local or Image_Url)": "", "Image_IsRawImage": false, "Image_Color(Hex or RGBA)": "#FF341E", "Image_Transparency": 1.0, "Is it worth enabling an outline for the image?": false, "Image_Outline_Color(Hex or RGBA)": "0.1 0.3 0.8 0.9", "Image_Outline_Transparency": 0.0, "Image_Outline_Distance": "0.75 0.75", "Text_Size": 14, "Text_Color(Hex or RGBA)": "#FF341E", "Text_Font(https://umod.org/guides/rust/basic-concepts-of-gui#fonts)": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the text?": false, "Text_Outline_Color(Hex or RGBA)": "#000000", "Text_Outline_Transparency": 1.0, "Text_Outline_Distance": "0.75 0.75", "SubText_Size": 12, "SubText_Color(Hex or RGBA)": "#FF341E", "SubText_Font": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the sub text?": false, "SubText_Outline_Color(Hex or RGBA)": "0.5 0.6 0.7 0.5", "SubText_Outline_Transparency": 0.0, "SubText_Outline_Distance": "0.75 0.75" } }, ... { "Name": "Civilian", "Prefix": "", "MinValue": -4.99, "MaxValue": 9.99, "Reward": 1.0, "LawmanPenalty": -1.0, "AllowSafeZone": true, "BarSettings": { "Order": 20, "Height": 26, "Main_Color(Hex or RGBA)": "#5EC0CA", "Main_Transparency": 0.6, "Main_Material": "", "Image_Url": "https://i.imgur.com/cgi9T1D.png", "Image_Local(Leave empty to use Image_Url)": "", "Image_Sprite(Leave empty to use Image_Local or Image_Url)": "", "Image_IsRawImage": false, "Image_Color(Hex or RGBA)": "#5EC0CA", "Image_Transparency": 1.0, "Is it worth enabling an outline for the image?": false, "Image_Outline_Color(Hex or RGBA)": "0.1 0.3 0.8 0.9", "Image_Outline_Transparency": 0.0, "Image_Outline_Distance": "0.75 0.75", "Text_Size": 14, "Text_Color(Hex or RGBA)": "#5EC0CA", "Text_Font(https://umod.org/guides/rust/basic-concepts-of-gui#fonts)": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the text?": false, "Text_Outline_Color(Hex or RGBA)": "#000000", "Text_Outline_Transparency": 1.0, "Text_Outline_Distance": "0.75 0.75", "SubText_Size": 12, "SubText_Color(Hex or RGBA)": "#5EC0CA", "SubText_Font": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the sub text?": false, "SubText_Outline_Color(Hex or RGBA)": "0.5 0.6 0.7 0.5", "SubText_Outline_Transparency": 0.0, "SubText_Outline_Distance": "0.75 0.75" } }, ... { "Name": "Paragon", "Prefix": "⋆☆⋆ ", "MinValue": 1000.0, "MaxValue": 3.40282347E+38, "Reward": 20.0, "LawmanPenalty": -125.0, "AllowSafeZone": true, "BarSettings": { "Order": 20, "Height": 26, "Main_Color(Hex or RGBA)": "#0AFBFB", "Main_Transparency": 0.6, "Main_Material": "", "Image_Url": "https://i.imgur.com/6yzrXE0.png", "Image_Local(Leave empty to use Image_Url)": "", "Image_Sprite(Leave empty to use Image_Local or Image_Url)": "", "Image_IsRawImage": false, "Image_Color(Hex or RGBA)": "#0AFBFB", "Image_Transparency": 1.0, "Is it worth enabling an outline for the image?": false, "Image_Outline_Color(Hex or RGBA)": "0.1 0.3 0.8 0.9", "Image_Outline_Transparency": 0.0, "Image_Outline_Distance": "0.75 0.75", "Text_Size": 14, "Text_Color(Hex or RGBA)": "#0AFBFB", "Text_Font(https://umod.org/guides/rust/basic-concepts-of-gui#fonts)": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the text?": false, "Text_Outline_Color(Hex or RGBA)": "#000000", "Text_Outline_Transparency": 1.0, "Text_Outline_Distance": "0.75 0.75", "SubText_Size": 12, "SubText_Color(Hex or RGBA)": "#0AFBFB", "SubText_Font": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the sub text?": false, "SubText_Outline_Color(Hex or RGBA)": "0.5 0.6 0.7 0.5", "SubText_Outline_Transparency": 0.0, "SubText_Outline_Distance": "0.75 0.75" } } ]
- MinRange, MaxRange - Range of values for the group rank;
- Name - Name of the rank;
- Reward - Reward for killing or reviving(divided by 2) a player in this rank. If the initiating player has IsLawman = true, the value will be positive, otherwise, it will be negative;
- LawmanPenalty - Penalty for a peaceful player of this rank, for killing another peaceful player. If the target did not initiate this pvp first;
- AllowSafeZone - Is this rank allowed to visit Safe Zones (except Bandit Camp)? The "Forbid bandits from visiting the SafeZone (except for Banditcamp)" config should be set to true.
Path: *SERVER*\oxide\data\ReputationMaster\ReputationRanks.json
EN: { "CmdNotAllowed": "You do not have permissions to use this command!", "CmdPlayerNotFound": "Player '{0}' not found! You must provide the player's name or ID.", "CmdMultiplePlayers": "Multiple players found: {0}", "CmdAdmin": "Available admin commands:\n\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>fake *floatValue* *nameOrId*(optional)</color> - Set a fake reputation for yourself or the specified player\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>set *floatValue* *nameOrId*(optional)</color> - Set a reputation value for yourself or the specified player\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>info *nameOrId*(optional)</color> - Get full information about your reputation or the reputation of the specified player\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>reset all/*nameOrId*</color> - Reset the reputation of all players or the specified player\n\n--------------------------------------------------", "CmdMain": "Available commands:\n\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>fake *floatValue*</color> - Set a fake reputation\n\n--------------------------------------------------", "CmdFakePlayer": "Player '{0}' has been assigned a new fake reputation value: {1}({2})!", "CmdFakeNPC": "NPC '{0}' has been assigned a new fake reputation value: {1}({2})!", "CmdFakeSelf": "A new fake reputation value has been successfully set: {0}({1})!", "CmdSetPlayer": "Player '{0}' has been assigned a new reputation value: {1}({2})!", "CmdSetNPC": "NPC '{0}' has been assigned a new reputation value: {1}({2})!", "CmdInfoPlayer": "Player '{0}' reputation:\n<color=#D1AB9A>Reputation</color> - {1} ({2})\n<color=#D1AB9A>Fake Reputation</color> - {3} ({4})\n<color=#D1AB9A>Last Helper</color> - {5}\n\n--------------------------------------------------", "CmdInfoNPC": "NPC '{0}' reputation:\n<color=#D1AB9A>Reputation</color> - {1}({2})\n<color=#D1AB9A>Fake Reputation</color> - {3}({4})\n<color=#D1AB9A>Last Helper</color> - {5}\n\n--------------------------------------------------", "CmdResetAll": "{0} reputations have been successfully reset!", "CmdResetPlayer": "Player '{0}' reputation has been successfully reset!", "MsgReputation": "Reputation", "MsgShowPlayerReputation": "Player '{0}' reputation: {1}({2})", "MsgNewReputation": "Congratulations! You have received the reputation '{0}'!", "MsgSelfDefense": "You attacked a peaceful player '{0}'({1}) first. If they kill you within {2} minutes, they will not receive a penalty", "MsgSelfDefenseNoPenalty": "You killed a peaceful player '{0}'({1}). However, since they attacked you first, you will not be penalized", "MsgLawmanEnterBanditZone": "You have entered the Bandit Camp! Stay vigilant, this place is full of thugs!", "MsgLawmanLeaveBanditZone": "You have left the Bandit Camp! We recommend avoiding this area!", "MsgBanditEnterBanditZone": "Welcome to the Bandit Camp! We are glad to have you back!", "MsgBanditLeaveBanditZone": "You have left the Bandit Camp! We hope to see you again soon!", "MsgBanditEnterSafeZone": "You are not welcome here! If you do not leave this place, you will be killed in {0} seconds!", "MsgBanditLeaveSafeZone": "Do not come back here! People like you belong in the Bandit Camp!" } RU: { "CmdNotAllowed": "У вас недостаточно прав для использования этой команды!", "CmdPlayerNotFound": "Игрок '{0}' не найден! Вы должны указать имя или ID игрока.", "CmdMultiplePlayers": "Найдено несколько игроков: {0}", "CmdAdmin": "Доступные админ команды:\n\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>fake *дробноеЗначение* *имяИлиАйди*(опционально)</color> - Установить ложную репутацию себе или указанному игроку\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>set *дробноеЗначение* *имяИлиАйди*(опционально)</color> - Установить репутацию себе или указанному игроку\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>info *имяИлиАйди*(опционально)</color> - Получить всю информацию о своей репутации или репутации указанного игрока\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>reset all/*имяИлиАйди*</color> - Сбросить репутацию всем игрокам или указанному игроку\n\n--------------------------------------------------", "CmdMain": "Доступные команды:\n\n<color=#D1CBCB>/rep</color> <color=#D1AB9A>fake *дробноеЗначение*</color> - Установить ложную репутацию\n\n--------------------------------------------------", "CmdFakePlayer": "Игроку '{0}' установлено новое ложное значение репутации: {1}({2})!", "CmdFakeNPC": "Боту '{0}' установлено новое ложное значение репутации: {1}({2})!", "CmdFakeSelf": "Новое значение ложной репутации успешно установлено: {0}({1})!", "CmdSetPlayer": "Игроку '{0}' установлено новое значение репутации: {1}({2})!", "CmdSetNPC": "Боту '{0}' установлено новое значение репутации: {1}({2})!", "CmdInfoPlayer": "Репутация игрока '{0}':\n<color=#D1AB9A>Репутация</color> - {1}({2})\n<color=#D1AB9A>Ложная репутация</color> - {3}({4})\n<color=#D1AB9A>Последний помощник</color> - {5}\n\n--------------------------------------------------", "CmdInfoNPC": "Репутация бота '{0}':\n<color=#D1AB9A>Репутация</color> - {1}({2})\n<color=#D1AB9A>Ложная репутация</color> - {3}({4})\n<color=#D1AB9A>Последний помощник</color> - {5}\n\n--------------------------------------------------", "CmdResetAll": "Успешно сброшено {0} репутаций!", "CmdResetPlayer": "Репутация игрока '{0}' успешно сброшена!", "MsgReputation": "Репутация", "MsgShowPlayerReputation": "Репутация игрока '{0}': {1}({2})", "MsgNewReputation": "Поздравляем! Вы получили репутацию '{0}'!", "MsgSelfDefense": "Вы первым атаковали мирного игрока '{0}'({1}). Если он вас убьет в течении {2} минут, то не получит штрафа", "MsgSelfDefenseNoPenalty": "Вы убили мирного игрока '{0}'({1}). Но так как он первым вас атаковал, вас не накажут", "MsgLawmanEnterBanditZone": "Вы пришли в Лагерь Бандитов! Будьте бдительны, здесь полно разных отморозков!", "MsgLawmanLeaveBanditZone": "Вы покинули Лагерь Бандитов! Советуем обходить это место!", "MsgBanditEnterBanditZone": "Добро пожаловать в Лагерь Бандитов! Мы рады вашему возвращению!", "MsgBanditLeaveBanditZone": "Вы покинули Лагерь Бандитов! Надеемся на скорое ваше возвращение!", "MsgBanditEnterSafeZone": "Вам здесь не рады! Если вы не покинете это место, то вас убьет через {0} секунд!", "MsgBanditLeaveSafeZone": "Больше сюда не возвращайтесь! Таким как вы место в Лагере Бандитов!" }
- fake *floatValue* - Set a fake reputation for yourself or the specified player. Permission "reputationmaster.vip" or "reputationmaster.admin" required
- fake *floatValue* *nameOrId*(optional) - Set a fake reputation for yourself or the specified player. Permission "reputationmaster.admin" required;
- set *floatValue* *nameOrId*(optional) - Set a reputation value for yourself or the specified player. Permission "reputationmaster.admin" required;
- info *nameOrId*(optional) - Get full information about your reputation or the reputation of the specified player. Permission "reputationmaster.admin" required;
- reset all/*nameOrId* - Reset the reputation of all players or the specified player. Permission "reputationmaster.admin" required.
Example:
- /rep fake 150
- /rep fake -40 iiiaka
- /rep set 23 iiiaka
-
ReputationValueUpdated:
- Called after the player's reputation value has changed. Works only for players that are not NPCs.
void ReputationValueUpdated(ulong userID, string repName, float repValue) { Puts($"{userID} updated a reputation value to {repValue}. Current reputation rank is {repName}."); }
-
ReputationUpdated:
- Called after the player receives a new reputation rank. Works only for players that are not NPCs.
void ReputationUpdated(ulong userID, string oldRep, string newRep, bool isLawman, bool allowSafeZone, float repValue) { Puts($"{userID} has updated their rank from {oldRep} to {newRep}. Is peaceful: {isLawman}\nSafe Zones: {allowSafeZone}\nReputation Value: {repValue}"); }
[PluginReference] private Plugin ReputationMaster;
There are 4 api methods:
GetReputationValue:
Used to retrieve the reputation value, real or fake. Returns null on failure.
To call the GetReputationValue method, you need to pass 2 parameters:
- userID as a ulong;
-
realRep as a bool. What reputation value to get, real or fake? This parameter is optional.
(float)(ReputationMaster?.Call("GetReputationValue", player.userID, true) ?? 0f);
GetReputationName:
Used to retrieve the reputation name, real or fake. Returns an empty string on failure.
To call the GetReputationName method, you need to pass 2 parameters:
- userID as a ulong;
-
realRep as a bool. What reputation name to get, real or fake? This parameter is optional.
(string)(ReputationMaster?.Call("GetReputationName", player.userID, true) ?? string.Empty);
SetReputationValue:
Used to retrieve the reputation name, real or fake. Returns a false on failure.
To call the SetReputationValue method, you need to pass 3 parameters:
-
Available options:
- userID as a ulong or a string;
- player as a BasePlayer.
- newValue as float;
-
realRep as a bool. What reputation value to get, real or fake? This parameter is optional.
(bool)(ReputationMaster?.Call("SetReputationValue", player.UserIDString, 150f, true) ?? false);//(string)userID (bool)(ReputationMaster?.Call("SetReputationValue", player.userID, 150f, true) ?? false);//(ulong)userID (bool)(ReputationMaster?.Call("SetReputationValue", player, 150f, true) ?? false);//(BasePlayer)player ***recommended option***
SetReputationValues:
Used to retrieve the reputation name, real or fake. Returns a false on failure.
To call the SetReputationValues method, you need to pass 3 parameters:
-
Available options:
- userID as a ulong or a string;
- player as a BasePlayer.
- value as float;
-
fakeValue as a float.
(bool)(ReputationMaster?.Call("SetReputationValues", player.UserIDString, 150f, 50f) ?? false);//(string)userID (bool)(ReputationMaster?.Call("SetReputationValues", player.userID, 150f, 50f) ?? false);//(ulong)userID (bool)(ReputationMaster?.Call("SetReputationValues", player, 150f, 50f) ?? false);//(BasePlayer)player ***recommended option***
You can create as many reputation ranks as you want, but there are only two main groups:
- Lawmen(peaceful or civilians);
- Outlaws(bandits).
Each kill has a different scores depending of the reputation rank of the victim and attacker. For exampe, if you are a Civilian, you will receive:
- Paragon: -20
- Vigilant: -15
- Guardian: -10
- Lawman: -4
- Deputy: -3
- Constable: -2
- Civillian: -1
- Thug: +2
- Outlaw: +3
- Bandit: +4
- Hitman: +10
- Villain: +15
- Assassin: +20
Reviving:
For reviving a player, you will receive a reward divided by 2. If the target is a lawman, the reward will be positive, else if a target is a bandit, it will be negative. Also, this is the only way out of bandit rank for bandits.
Outlaw:
When you reach the outlaw reputation, you have no more back! Except for reviving a peaceful player.
You can kill other bandits but still counting as negative reputation! So, after you reach the outlaw reputation rank, scores by killing a player of a certain reputation will be as follows(negative reward value) :
- Paragon: -20
- Vigilant: -15
- Guardian: -10
- Lawman: -4
- Deputy: -3
- Constable: -2
- Civillian: -1
- Thug: -2
- Outlaw: -3
- Bandit: -4
- Hitman: -10
- Villain: -15
- Assassin: -20
Lawman:
The scores will be as follows for each kill a outlaw reputation ranks(positive reward value) :
- Assassin: +20
- Villain: +15
- Hitman: +10
- Bandit: +4
- Outlaw: +3
- Thug: +2
But for killing a peaceful player, you will receive penalties based on your rank. A list of penalties for each reputation rank:
- Paragon: -125
- Vigilante: -60
- Guardian: -40
- Lawman: -15
- Deputy: -2
- Constable: -1
- Civilian: -1
There is also a self-defense system that works as follows: If a peaceful player initiates an attack on another peaceful player, a timer of 15 minutes(sets from config) is activated, during which the victim can kill the attacker without penalties.
So, it's very hard to become a lawman, and it's very easy to get out from lawman.