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 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 resetting reputations upon detecting a wipe?": true,
"Use ddraw command, for displaying the rank? 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,
"The time of self-defense for a lawman against an attack by another lawman(in seconds)": 900,
"Forbid bandits from visiting the SafeZone(except for Banditcamp)?": true,
"The time(in seconds) a bandit can stay in the SafeZone before being killed, and anyone can loot their loot": 10.0,
"The prefab name of the effect upon killing a bandit in the SafeZone": "assets/prefabs/misc/xmas/advent_calendar/effects/open_advent.prefab",
"The minimum value for fake reputation": -10000,
"The maximum value for fake reputation": 10000,
"Is it worth using the AdvancedStatus plugin?": true,
"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": "assets/bundled/prefabs/fx/notice/item.select.fx.prefab",
"Wipe ID": null,
"Version": {
"Major": 0,
"Minor": 1,
"Patch": 3
}
}
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", "MinRange": -3.40282347E+38, "MaxRange": -1000.0, "Reward": 20.0, "Penalty": 0.0, "IsLawman": false, "AllowSafeZone": false, "Bar": { "Order": 20, "Height": 30, "Main_Color": "#FF341E", "Main_Transparency": 0.6, "Main_Material": "", "Image_URL": "https://i.imgur.com/CdDKpwv.png", "Image_Sprite": "", "Image_IsRawImage": false, "Image_Color": "#FF341E", "Text_Size": 14, "Text_Color": "#FF341E", "Text_Font": "RobotoCondensed-Bold.ttf", "SubText_Size": 12, "SubText_Color": "#FF341E", "SubText_Font": "RobotoCondensed-Bold.ttf" } }, ... { "Name": "Civilian", "MinRange": -4.99, "MaxRange": 9.99, "Reward": 1.0, "Penalty": -1.0, "IsLawman": true, "AllowSafeZone": true, "Bar": { "Order": 20, "Height": 30, "Main_Color": "#5EC0CA", "Main_Transparency": 0.6, "Main_Material": "", "Image_URL": "https://i.imgur.com/cgi9T1D.png", "Image_Sprite": "", "Image_IsRawImage": false, "Image_Color": "#5EC0CA", "Text_Size": 14, "Text_Color": "#5EC0CA", "Text_Font": "RobotoCondensed-Bold.ttf", "SubText_Size": 12, "SubText_Color": "#5EC0CA", "SubText_Font": "RobotoCondensed-Bold.ttf" } }, ... { "Name": "Paragon", "MinRange": 1000.0, "MaxRange": 3.40282347E+38, "Reward": 20.0, "Penalty": -125.0, "IsLawman": true, "AllowSafeZone": true, "Bar": { "Order": 20, "Height": 30, "Main_Color": "#0AFBFB", "Main_Transparency": 0.6, "Main_Material": "", "Image_URL": "https://i.imgur.com/6yzrXE0.png", "Image_Sprite": "", "Image_IsRawImage": false, "Image_Color": "#0AFBFB", "Text_Size": 14, "Text_Color": "#0AFBFB", "Text_Font": "RobotoCondensed-Bold.ttf", "SubText_Size": 12, "SubText_Color": "#0AFBFB", "SubText_Font": "RobotoCondensed-Bold.ttf" } } ]
- 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;
- Penalty - Penalty for a peaceful player of this rank, for killing another peaceful player. If the target did not initiate this pvp first;
- IsLawman - Does the rank apply to peaceful players?
- 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\ReputationsData.json
EN:
{
"MsgNotAllowed": "You do not have permissions to use this command!",
"MsgPlayerNotFound": "The specified player was not found!",
"MsgPlayerMoreThanOne": "More than one player found!",
"MsgResetAllValues": "Successfully reset {0} reputations!",
"MsgResetPlayerValue": "{0}'s reputation successfully reset!",
"MsgFakeValueSucceeded": "Value {0} successfully set as fake!",
"MsgFakeValueFailed": "You need to specify a digit value for the fake reputation.",
"MsgBanditZoneSet": "Position {0} successfully set for Bandit Camp!",
"MsgBanditZoneFailed": "Failed to set {0} as the position for the Bandit Camp!",
"MsgPlayerNewValue": "Player {0} assigned a new reputation value: {1}({2})!",
"MsgPlayerNewValueWrong": "Incorrect format! Example: '/rep *userNameOrId* *value*'.",
"MsgReputation": "Reputation",
"MsgNewReputation": "Congratulations! You've reached a new reputation rank {0}!",
"MsgKillNoPenalty": "You have killed {0}({1}). However, since he attacked you first, you will not be penalized.",
"MsgLawmanToLawman": "You attacked {0}({1}) first. If he kills you within {2} minutes, he will not receive a penalty.",
"MsgBanditEnterSafeZone": "You are not welcome here! If you do not leave this place, you will be killed in {0} seconds.",
"MsgBanditLeaveSafeZone": "Do not return here anymore! Individuals like you belong in the Bandit Camp!",
"MsgLawmanEnterBanditZone": "You've entered the Bandit Camp! Be cautious, there are plenty of outlaws around here!",
"MsgLawmanLeaveBanditZone": "You've left the Bandit Camp! We recommend avoiding this place.",
"MsgBanditEnterBanditZone": "Welcome to the Bandit Camp! Make yourself at home!",
"MsgBanditLeaveBanditZone": "You've left the Bandit Camp! We hope for your swift return!",
"MsgShowPlayerReputation": "{0}'s rank is {1}({2})."
}
RU:
{
"MsgNotAllowed": "У вас недостаточно прав для использования этой команды!",
"MsgPlayerNotFound": "Указанный игрок не найден!",
"MsgPlayerMoreThanOne": "Найдено игроков больше чем один!",
"MsgResetAllValues": "Успешно сброшено {0} репутаций!",
"MsgResetPlayerValue": "Репутация игрока {0} успешно сброшена!",
"MsgFakeValueSucceeded": "Ложное значение {0} успешно установлено!",
"MsgFakeValueFailed": "Вам необходимо указать числовое значение ложной репутации.",
"MsgBanditZoneSet": "Позиция {0}, успешно установлена для Лагеря Бандитов!",
"MsgBanditZoneFailed": "{0} не удалось установить как позицию для Лагеря Бандитов!",
"MsgPlayerNewValue": "Игроку {0} установлено новое значение репутации: {1}({2})!",
"MsgPlayerNewValueWrong": "Не верный формат! Пример: '/rep *имяИлиИд* *значение*'.",
"MsgReputation": "Репутация",
"MsgNewReputation": "Поздравляем! Вы получили новый ранг репутации {0}!",
"MsgKillNoPenalty": "Вы убили {0}({1}). Но так как он первым вас атаковал, вас не накажут.",
"MsgLawmanToLawman": "Вы первым атаковали {0}({1}). Если он вас убьет в течении {2} минут, то не получит штрафа.",
"MsgBanditEnterSafeZone": "Вам здесь не рады! Если вы не покинете это место, то вас убьет через {0} секунд.",
"MsgBanditLeaveSafeZone": "Больше сюда не возвращайтесь! Таким как вы место в Лагере Бандитов!",
"MsgLawmanEnterBanditZone": "Вы пришли в Лагерь Бандитов! Будьте бдительны, здесь полно отморозков!",
"MsgLawmanLeaveBanditZone": "Вы покинули Лагерь Бандитов! Советуем обходить это место.",
"MsgBanditEnterBanditZone": "Добро пожаловать в Лагерь Бандитов! Будьте как дома!",
"MsgBanditLeaveBanditZone": "Вы покинули Лагерь Бандитов! Надеемся на скорое ваше возвращение!",
"MsgShowPlayerReputation": "Ранг игрока {0}: {1}({2})."
}
- fake *value* - Sets a fake reputation value for display to other players. Permissions "reputationmaster.vip" or "reputationmaster.admin" required.
-
reset *userNameOrID* - Resets the reputation of the specified player. Permission "reputationmaster.admin" required.
- reset all - Resets the reputation of all players. Permission "reputationmaster.admin" required.
- *userNameOrID* *value* - Sets a new reputation value for the specified player. Permission "reputationmaster.admin" required.
Example: /rep fake 150
-
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}"); }
- (float) GetReputationValue(ulong userID) - Returns the reputation value of the specified player. Returns null if the player is not found.
- (string) GetReputationName(ulong userID) - Returns the reputation name of the specified player. Returns null if the player is not found.
- (bool) GiveReputationNPC(BasePlayer npc, float value, float fakeValue = 0f) - Sets the reputation for NPCs. Returns true if successful, and false otherwise.
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.