Skip to content

TerraPlugins/TerraEconomy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TerraEconomy

TShock Economy plugin, currently under development.

Index

Commands:

Command Permission Arguments Description
/cscript TerraEconomy.admin script_name Creates a script in the tshock/terra_scripts folder

Script Documentation

Utility Classes (using TerraEconomy.Util;)

DBHelper (Database) Class Source

To use the database class in your script you need the following:

using TShockAPI.DB;
using MySql.Data.MySqlClient;

// If using async methods:
// using System.Threading.Tasks;

Note: TerraEconomy automatically uses SQlite or MySQL based on what TShock actually uses.

Then you will be able to access the following methods:

bool DBHelper.CreateTable(SqlTable table);
bool DBHelper.CreateTableAsync(SqlTable table);

int DBHelper.Query(string query, params object[] args);
int DBHelper.QueryAsync(string query, params object[] args);

QueryResult DBHelper.QueryResult(string query, params object[] args);
QueryResult DBHelper.QueryResultAsync(string query, params object[] args);

Transaction Class Source

Class public properties:

public int RecieverID { get; set; }
public int SenderID { get; set; } // -1 = NPC
public float Amount { get; set; }
public string Message { get; set; }
public string Hash { get; set; }
public DateTime Date { get; set; }
public bool IsMobKill { get; set; }

Class public methods:

// Constructor
public Transaction(int reciever, int sender, float amount, string message);
// Note: date is in ticks
public Transaction(int reciever, int sender, float amount, string message, long date);

// Returns the latest transactions ordered by the date.
public static IEnumerable<Transaction> GetTransactionsBySender(int sender, int limit = 100);
public static IEnumerable<Transaction> GetTransactionsByReceiver(int reciever, int limit = 100);

public async Task InsertToDBAsync();
public void InsertToDB();

public static Transaction TransactionFromQueryResult(QueryResult t)

BankAccount Class Source

Class public properties:

public int UserID { get; set; }
public float Balance { get; set; }
// Constructor
public BankAccount(int userid, float balance = 0);

public static BankAccount GetByUserID(int userid);
public static async Task<BankAccount> GetByUserIDAsync(int userid);

public Transaction[] GetLastTransactions(int limit = 10);
public bool CanPay(int amount);

public void Update(); // Updates the BankAccount in the database.
public async Task UpdateAsync();

public async Task InsertToDBAsync();
public void InsertToDB();

TerraEconomy Hooks Source

BankAccount Hooks Class Source

// Invoked when a transaction happens
public static event TransactionEvent OnTransaction;
// Invoked when the player logs in his bank account (TShock Login).
public static event BankAccountLogin OnBankAccountLogin;
// Invoked when the player logs out.
public static event BankAccountLogin OnBankAccountLogout;

// Delegates
public delegate void TransactionEvent(TSPlayer sender, Transaction t);
public delegate void BankAccountLogin(TSPlayer sender, BankAccount account);

// Usage:
TerraEconomy.Hooks.BankHooks.OnTransaction += MyMethod;

TShock Hooks

You can hook to any tshock hook within your script:

using TShockAPI;
TShockAPI.Hooks.PlayerHooks.PlayerChat += PlayerHooks_PlayerChat;

Full Script Example

TODO: Finish the example script

using System;

using TShockAPI;
using TShockAPI.DB;
using Newtonsoft.Json;

using MySql.Data.MySqlClient;

using TerraEconomy;
using TerraEconomy.Util;

public class Experience : TeconomyScript
{
    public override async void Initialize()
    {
        await DBHelper.CreateTableAsync(new SqlTable("Experience",
                new SqlColumn("UserID", MySqlDbType.Int32) { NotNull = true },
                new SqlColumn("Level", MySqlDbType.Int32) { DefaultValue = "1" },
                new SqlColumn("XP", MySqlDbType.Int64) { DefaultValue = "0" }
                ));

        TShockAPI.Hooks.PlayerHooks.PlayerChat += PlayerHooks_PlayerChat;
        TerraEconomy.Hooks.BankHooks.OnTransaction += OnTransaction;
    }

    public override void Dispose(bool disposing)
    {
        if (disposing)
        {
            TShockAPI.Hooks.PlayerHooks.PlayerChat -= PlayerHooks_PlayerChat;
            TerraEconomy.Hooks.BankHooks.OnTransaction -= OnTransaction;
        }
    }

    private void PlayerHooks_PlayerChat(TShockAPI.Hooks.PlayerChatEventArgs e)
    {
    }

    private void OnTransaction(TSPlayer sender, Transaction t)
    {
        // TShock.Log.ConsoleInfo(t.ToString());
    }
}

About

TShock Economy plugin, currently under development.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages