Add project files.

This commit is contained in:
Wizzy69
2022-01-07 20:26:10 +02:00
parent 8b8d4c7147
commit 84ee5c6235
53 changed files with 3544 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>E:\DiscordBot\BUILDS\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\PluginManager\PluginManager.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,55 @@
using Discord;
using Discord.Commands;
using Discord.WebSocket;
using PluginManager.Interfaces;
using PluginManager.LanguageSystem;
using System;
public class level : DBCommand
{
public string Command => "rank";
public string Description => "Display your current level";
public string Usage => "rank";
public bool canUseDM => false;
public bool canUseServer => true;
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
{
try
{
int cLv = Data.GetLevel(message.Author.Id);
Int64 cEXP = Data.GetExp(message.Author.Id);
Int64 rEXP = Data.GetReqEXP(message.Author.Id);
var embed = new EmbedBuilder()
{
Title = "Leveling System",
Description = message.Author.Mention
};
embed.WithColor(Color.Blue);
embed.AddField("Level", cLv);
embed.AddField("Current EXP", cEXP);
embed.AddField("Required Exp to Level up", rEXP);
embed.WithCurrentTimestamp();
await message.Channel.SendMessageAsync(embed: embed.Build());
}
catch
{
if (Language.ActiveLanguage != null)
await message.Channel.SendMessageAsync(Language.ActiveLanguage.LanguageWords["DB_COMMAND_RANK_NO_RANK"]);
else await message.Channel.SendMessageAsync("You are unranked now. Please type a message in chat that is not a command and try again this command");
return;
}
}
}

View File

@@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
public class Core
{
public static Dictionary<ulong, string> playerMessages = new Dictionary<ulong, string>();
private static readonly string folder = @".\Data\Resources\LevelingSystem\";
public static int GetLevel(ulong id) => int.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[0].Split('=')[1]);
public static Int64 GetExp(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[1].Split('=')[1]);
public static Int64 GetReqEXP(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[2].Split('=')[1]);
public static void SaveData(ulong id, int lv, Int64 cexp, Int64 rexp)
{
Directory.CreateDirectory(folder);
File.WriteAllText(Path.Combine(folder, id.ToString() + ".data"), $"Level={lv},EXP={cexp},REXP={rexp}");
}
private static Int64 NextLevelXP(int level)
{
return (level * level) + 2 * level + 75;
}
public static (bool, int) MessageSent(ulong id, int messageLength)
{
WaitForTimeToRemoveFromList(id, 60);
if (!File.Exists(Path.Combine(folder, id.ToString() + ".data")))
{
SaveData(id, 0, 0, 0);
}
Int64 cEXp = GetExp(id);
Int64 rExp = GetReqEXP(id);
int random = new System.Random().Next(3, 6) + messageLength;
cEXp += random;
if (cEXp >= rExp)
{
cEXp = cEXp - rExp;
int lv = GetLevel(id);
rExp = NextLevelXP(lv);
lv++;
SaveData(id, lv, cEXp, rExp);
return (true, lv);
}
SaveData(id, GetLevel(id), cEXp, rExp);
return (false, -1);
}
public static async void WaitForTimeToRemoveFromList(ulong id, int time_seconds)
{
await Task.Delay(time_seconds * 1000);
playerMessages.Remove(id);
}
}

View File

@@ -0,0 +1,24 @@
using Discord.WebSocket;
using System;
using System.IO;
public static class Data
{
private static readonly string folder = @".\Data\Resources\LevelingSystem\";
public static void registerPlayer(SocketGuildUser user)
{
ulong id = user.Id;
Directory.CreateDirectory(folder);
File.WriteAllText(Path.Combine(folder, id.ToString() + ".data"), "Level=0,EXP=0,REXP=100");
}
public static int GetLevel(ulong id) => int.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[0].Split('=')[1]);
public static Int64 GetExp(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[1].Split('=')[1]);
public static Int64 GetReqEXP(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[2].Split('=')[1]);
}