C#:
using System.Collections.Generic;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
namespace Oxide.Plugins
{
[Info("MBCoins", "Barry_Allenn", "12.3")]
class MBCoins : RustPlugin
{
//апи пополнить забрать взять
[ConsoleCommand("mb.give")]
void cmdMoneyGive(ConsoleSystem.Arg args)
{
if (!args.IsAdmin) return;
var player = args.Args[0];
var much = args.Args[1];
API_PUT_BALANCE_PLUS(ulong.Parse(player), float.Parse(much));
Puts($"Баланс видан {player} - {much} MBCoins");
}
private float API_GET_BALANCE(ulong player)
{
if (!DataMBCoins.ContainsKey(player))
return 0;
return DataMBCoins[player];
}
[HookMethod("GetPlayerBalance")]
public float GetPlayerBalance(ulong playerId)
{
return API_GET_BALANCE(playerId);
}
private void API_PUT_BALANCE_PLUS(ulong player, float money)
{
DataMBCoins[player] += money;
WriteData();
AnoncePlayer(player, $"Вам зачислено {money} MBCoins!");
}
private void API_PUT_BALANCE_MINUS(ulong player, float money)
{
DataMBCoins[player] -= money;
WriteData();
AnoncePlayer(player, $"C баланса списано {money} MBCoins!");
}
private BasePlayer FindPlayer(string nameOrId)
{
foreach (var check in BasePlayer.activePlayerList)
{
if (check.displayName.ToLower().Contains(nameOrId.ToLower()) || check.userID.ToString() == nameOrId)
return check;
}
return null;
}
private void AnoncePlayer(ulong player, string txt)
{
BasePlayer playerBS = FindPlayer(player.ToString());
if(playerBS == null) return;
playerBS.ChatMessage(txt);
}
void OnPlayerConnected(BasePlayer player)
{
RegisteredDataUser(player.userID);
}
void RegisteredDataUser(ulong player)
{
if (!player.IsSteamId()) return;
if (!DataMBCoins.ContainsKey(player))
DataMBCoins.Add(player, 0);
}
void OnServerInitialized()
{
foreach(BasePlayer player in BasePlayer.activePlayerList)
OnPlayerConnected(player);
timer.Every(360f, WriteData);
}
void Unload() => WriteData();
private void OnServerShutdown() => Unload();
private void Init() => ReadData();
[JsonProperty("Система экономики")] public Dictionary<ulong, float> DataMBCoins = new Dictionary<ulong, float>();
void ReadData()
{
DataMBCoins = Oxide.Core.Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, float>>("MBSystem/DataMBCoins");
}
void WriteData() {
Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("MBSystem/DataMBCoins", DataMBCoins);
}
}
}