C#:
using System.Collections.Generic;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
namespace Oxide.Plugins
{
[Info("MBCoins", "Barry_Allenn", "1.5.0")]
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));
}
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();
}
private void API_PUT_BALANCE_MINUS(ulong player, float money)
{
DataMBCoins[player] -= money;
WriteData();
}
[HookMethod("AddBalance")]
public bool AddBalance(ulong playerId, float amount)
{
if (amount <= 0)
return false;
RegisteredDataUser(playerId);
API_PUT_BALANCE_PLUS(playerId, amount);
return true;
}
[HookMethod("RemoveBalance")]
public bool RemoveBalance(ulong playerId, float amount)
{
if (amount <= 0)
return false;
RegisteredDataUser(playerId);
if (API_GET_BALANCE(playerId) < amount)
return false;
API_PUT_BALANCE_MINUS(playerId, amount);
return true;
}
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();
public Dictionary<ulong, float> DataMBCoins = new Dictionary<ulong, float>();
void ReadData()
{
DataMBCoins = Oxide.Core.Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, float>>("MBSystem/MBCoins/DataMBCoins");
}
void WriteData() {
Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("MBSystem//MBCoins/DataMBCoins", DataMBCoins);
}
}
}