Skip to content

Commit e12478d

Browse files
committed
1.1.0
1 parent 63e4af7 commit e12478d

6 files changed

Lines changed: 126 additions & 2 deletions

File tree

Binary file not shown.
Binary file not shown.

.vs/SimpleEcon/v17/.futdcache.v2

0 Bytes
Binary file not shown.

SimpleEcon/Config.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public class Config
1919
public bool giveRewardsForPlaytime { get; set; } = false;
2020
public int rewardtimer { get; set; } = 5;
2121

22+
public double DropOnDeath { get; set; } = 0;
23+
2224
public void Write()
2325
{
2426
string path = Path.Combine(TShock.SavePath, "SimpleEcon.json");

SimpleEcon/EconPlayer.cs

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ public class EconPlayer
1717

1818
public float balance { get; set; }
1919

20+
public float RetrieveBalance()
21+
{
22+
return this.balance;
23+
}
24+
2025
public EconPlayer(string playerName, TSPlayer player)
2126
{
2227
this.name = playerName;
@@ -72,6 +77,46 @@ public static void UpdatePlayerBalance(string name, float am)
7277
return;
7378
}
7479

75-
80+
81+
public static void UpdatePlayerBalance(EconPlayer ply, float am)
82+
{
83+
var p = SimpleEcon.econPlayers.Find(p => p.name == ply.name);
84+
p.balance = am;
85+
SimpleEcon.dbManager.SavePlayer(p);
86+
return;
87+
}
88+
89+
public static void SubtractPlayerBalance(EconPlayer ply, float toRemove)
90+
{
91+
var p = SimpleEcon.econPlayers.Find(p => p.name == ply.name);
92+
p.balance -= toRemove;
93+
if(p.balance <= 0)
94+
{
95+
p.balance = 0;
96+
}
97+
SimpleEcon.dbManager.SavePlayer(p);
98+
return;
99+
}
100+
101+
public static void AddPlayerBalance(EconPlayer ply, float toAdd)
102+
{
103+
var p = SimpleEcon.econPlayers.Find(p => p.name == ply.name);
104+
p.balance += toAdd;
105+
if (p.balance <= 0)
106+
{
107+
p.balance = 0;
108+
}
109+
SimpleEcon.dbManager.SavePlayer(p);
110+
return;
111+
}
112+
113+
public static void ResetPlayerBalance(EconPlayer ply)
114+
{
115+
var p = SimpleEcon.econPlayers.Find(p => p.name == ply.name);
116+
p.balance = 0;
117+
SimpleEcon.dbManager.SavePlayer(p);
118+
return;
119+
}
120+
76121
}
77122
}

SimpleEcon/SimpleEcon.cs

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace SimpleEcon
1818
public class SimpleEcon : TerrariaPlugin
1919
{
2020
public override string Name => "Simple Economy";
21-
public override Version Version => new Version(1, 0, 3);
21+
public override Version Version => new Version(1, 1, 0);
2222
public override string Author => "Average";
2323
public override string Description => "A simple, light-weight economy TShock V5 plugin that can also be utilized by other plugins. No bullshit dependecies!";
2424
public static List<EconPlayer> econPlayers = new List<EconPlayer>();
@@ -62,6 +62,7 @@ public override void Initialize()
6262
}
6363
dbManager = new Database(_db);
6464
TShockAPI.Hooks.PlayerHooks.PlayerPostLogin += PlayerJoin;
65+
TShockAPI.GetDataHandlers.KillMe += PlayerDead;
6566
ServerApi.Hooks.ServerLeave.Register(this, PlayerLeave);
6667
ServerApi.Hooks.GameInitialize.Register(this, Loaded);
6768
ServerApi.Hooks.NetSendData.Register(this, OnNpcStrike);
@@ -75,10 +76,32 @@ private void Loaded(EventArgs args)
7576
Commands.ChatCommands.Add(new Command("se.user", BalTop, "baltop", "ecotop", "top"));
7677
Commands.ChatCommands.Add(new Command("se.user", PayUser, "pay", "transfer"));
7778
Commands.ChatCommands.Add(new Command("se.admin", GiveBal, "givebal", "gbal"));
79+
Commands.ChatCommands.Add(new Command("se.admin", TakeBal, "takebal", "tbal"));
80+
Commands.ChatCommands.Add(new Command("se.admin", ResetBal, "takebal", "tbal"));
7881

7982
rewardsManager();
8083
}
8184

85+
public void PlayerDead(object sender, GetDataHandlers.KillMeEventArgs args)
86+
{
87+
if (args.Player.IsLoggedIn && config.DropOnDeath > 0)
88+
{
89+
90+
EconPlayer p = PlayerManager.GetPlayer(args.Player.Name);
91+
var toLose = (float)(p.balance * config.DropOnDeath);
92+
p.balance -= toLose;
93+
if (config.announceMobDrops)
94+
{
95+
args.Player.SendMessage($"You lost {toLose} {((toLose == 0) ? config.currencyNameSingular : config.currencyNamePlural) } from dying!", Color.Orange);
96+
return;
97+
}
98+
}
99+
else
100+
{
101+
return;
102+
}
103+
}
104+
82105
public async void rewardsManager()
83106
{
84107
if (config.giveRewardsForPlaytime == true)
@@ -255,6 +278,60 @@ private void GiveBal(CommandArgs args)
255278

256279
}
257280

281+
private void ResetBal(CommandArgs args)
282+
{
283+
if (args.Parameters.Count == 0)
284+
{
285+
args.Player.SendErrorMessage("Please enter a player name! /resetbal <user> <amount>");
286+
return;
287+
}
288+
if (args.Parameters.Count == 1)
289+
{
290+
args.Player.SendErrorMessage($"Please enter a quantity to send! /resetbal {args.Parameters[0]} <amount>");
291+
return;
292+
}
293+
294+
TSPlayer player = TSPlayer.FindByNameOrID(args.Parameters[0])[0];
295+
if (player == null)
296+
{
297+
args.Player.SendErrorMessage("Invalid player!");
298+
return;
299+
}
300+
float amount = float.Parse(args.Parameters[1]);
301+
PlayerManager.GetPlayer(player.Name).balance = 0;
302+
dbManager.SaveAllPlayers();
303+
player.SendErrorMessage($"The moderator {args.Player.Name} has reset your balance! Your new balance is: {PlayerManager.GetPlayer(player.Name).balance} {(PlayerManager.GetPlayer(player.Name).balance == 1 ? config.currencyNameSingular : config.currencyNamePlural)}");
304+
return;
305+
306+
}
307+
308+
private void TakeBal(CommandArgs args)
309+
{
310+
if (args.Parameters.Count == 0)
311+
{
312+
args.Player.SendErrorMessage("Please enter a player name! /tbal <user> <amount>");
313+
return;
314+
}
315+
if (args.Parameters.Count == 1)
316+
{
317+
args.Player.SendErrorMessage($"Please enter a quantity to take away from the player! /tbal {args.Parameters[0]} <amount>");
318+
return;
319+
}
320+
321+
TSPlayer player = TSPlayer.FindByNameOrID(args.Parameters[0])[0];
322+
if (player == null)
323+
{
324+
args.Player.SendErrorMessage("Invalid player!");
325+
return;
326+
}
327+
float amount = float.Parse(args.Parameters[1]);
328+
PlayerManager.GetPlayer(player.Name).balance -= amount;
329+
dbManager.SaveAllPlayers();
330+
player.SendErrorMessage($"The moderator {args.Player.Name} has manipulated your currency and removed {amount} {(amount == 1 ? config.currencyNameSingular : config.currencyNamePlural)} from your account! Your new balance is: {PlayerManager.GetPlayer(player.Name).balance} {(PlayerManager.GetPlayer(player.Name).balance == 1 ? config.currencyNameSingular : config.currencyNamePlural)}");
331+
return;
332+
333+
}
334+
258335
private void PayUser(CommandArgs args)
259336
{
260337
if(args.Parameters.Count == 0)

0 commit comments

Comments
 (0)