Can now access stats

This commit is contained in:
2018-10-29 09:02:12 +11:00
parent ccefdff498
commit e62b030ab3
3 changed files with 45 additions and 25 deletions

View File

@@ -140,7 +140,7 @@ function processBasicCommands(client, message) {
return true; return true;
case "wallet": //DEBUGGING case "wallet": //DEBUGGING
shared.OnServerData("account", (amount) => { shared.OnServerData("wallet", (amount) => {
shared.SendPublicMessage(client, message.channel, "Wallet: " + amount); shared.SendPublicMessage(client, message.channel, "Wallet: " + amount);
}, message.author.id); }, message.author.id);
return true; return true;

View File

@@ -135,7 +135,7 @@ exports.ProcessGiveCommand = function(client, message, args, dialog) {
dataRequest.OnServerData("transfer", handleResponse, message.author.id, targetMember.id, amount); dataRequest.OnServerData("transfer", handleResponse, message.author.id, targetMember.id, amount);
} }
dataRequest.OnServerData("account", handleResponse, message.author.id); dataRequest.OnServerData("wallet", handleResponse, message.author.id);
} }
//ProcessStatsCommand //ProcessStatsCommand
@@ -182,9 +182,9 @@ exports.PrintStats = function(client, member, channel, stats) {
// Forms stats into a string // Forms stats into a string
let levelText = `:level: **${stats.level}**`; //NOTE: I don't like backticks let levelText = `:level: **${stats.level}**`; //NOTE: I don't like backticks
let levelProgress = `(${stats.levelPercent}%)`; let levelProgress = `(${stats.levelProgress}%)`;
let crystalText = `:crystals: **${stats.wallet}**`; let crystalText = `:crystals: **${stats.wallet}**`;
let cannisterText = `:cannister: **${stats.statPoints}**`; let cannisterText = `:cannister: **${stats.upgradePoints}**`;
let userStats = "```" + `STR: ${stats.strength} | SPD: ${stats.speed} | STAM: ${stats.stamina}/${stats.maxStamina} | HP: ${stats.health}/${stats.maxHealth}` + "```"; let userStats = "```" + `STR: ${stats.strength} | SPD: ${stats.speed} | STAM: ${stats.stamina}/${stats.maxStamina} | HP: ${stats.health}/${stats.maxHealth}` + "```";
// Says level is maxed out if it is LVL 30+ // Says level is maxed out if it is LVL 30+
@@ -222,13 +222,13 @@ exports.HandleLevelUp = function(client, member, channel, dialog) {
} }
// Sees if the user is supposed to level up // Sees if the user is supposed to level up
let handleResponse = function(response, level, statPoints) { let handleResponse = function(response, level, upgradePoints) {
//handle levelling up //handle levelling up
if (response === "levelUp" || response === "RankUp") { if (response === "levelUp" || response === "RankUp") {
if (level >= process.env.RANK_3_THRESHOLD) { if (level >= process.env.RANK_3_THRESHOLD) {
shared.SendPublicMessage(client, member.user, channel, dialog("levelUpCap", dialog("levelUpCapRemark"), level)); shared.SendPublicMessage(client, member.user, channel, dialog("levelUpCap", dialog("levelUpCapRemark"), level));
} else { } else {
shared.SendPublicMessage(client, member.user, channel, dialog("LevelUp", dialog("levelUpRemark"), level, statPoints)); shared.SendPublicMessage(client, member.user, channel, dialog("LevelUp", dialog("levelUpRemark"), level, upgradePoints));
} }
} }
} }

View File

@@ -45,7 +45,7 @@ io.on("connection", async (socket) => {
socket.on("updateStamina", handleUpdateStamina); socket.on("updateStamina", handleUpdateStamina);
socket.on("conversion", handleConversion); socket.on("conversion", handleConversion);
socket.on("checkin", handleCheckin); socket.on("checkin", handleCheckin);
socket.on("account", handleAccount); socket.on("wallet", handleWallet);
socket.on("transfer", handleTransfer); socket.on("transfer", handleTransfer);
socket.on("userStats", handleUserStats); socket.on("userStats", handleUserStats);
socket.on("addXP", handleAddXP); socket.on("addXP", handleAddXP);
@@ -144,7 +144,7 @@ async function handleCheckin({ data }, fn) {
} }
//handle account requests //handle account requests
async function handleAccount({ data }, fn) { async function handleWallet({ data }, fn) {
//data[0] = ID of the person to check //data[0] = ID of the person to check
let query = `SELECT wallet FROM users WHERE userID='${data[0]}' LIMIT 1;`; let query = `SELECT wallet FROM users WHERE userID='${data[0]}' LIMIT 1;`;
@@ -206,24 +206,29 @@ async function handleUserStats({ data }, fn) {
console.log("received a userStats request..."); console.log("received a userStats request...");
//data[0] = user ID //data[0] = user ID
//NOTE: build a temporary structure to pass back //parameters to fn: stat structure
let stats = {
strength: 0,
speed: 0,
stamina: 0,
health: 0,
maxStamina: 0,
maxHealth: 0,
wallet: 0,
experience: 0,
level: 0,
levelPercent: 0,
statPoints: 0
};
if (fn) { let query = `SELECT level, experience, maxHealth, health, maxStamina, stamina, strength, speed, upgradePoints, wallet FROM users WHERE userID='${data[0]}' LIMIT 1;`;
fn(stats); return dbConnection.query(query, (err, result) => {
} if (err) throw err;
let stats = {
level: result[0].level,
experience: result[0].experience,
levelProgress: calculateLevelProgress(result[0].experience),
maxHealth: result[0].maxHealth,
health: result[0].health,
maxStamina: result[0].maxStamina,
stamina: result[0].stamina,
strength: result[0].strength,
speed: result[0].speed,
upgradePoints: result[0].upgradePoints,
wallet: result[0].wallet
};
//TODO: log this
return fn(stats);
});
} }
//DEBUGGING? //DEBUGGING?
@@ -243,3 +248,18 @@ async function handleLevelUp({ data }, fn) {
fn("none", 0, 0); //["none", "levelUp"], level, statPoints fn("none", 0, 0); //["none", "levelUp"], level, statPoints
} }
} }
//utility functions
function calculateLevel(experience) {
const levelBase = 1.2;
return levelBase * Math.sqrt(experience);
}
function calculateLevelProgress(experience) {
let level = calculateLevel(experience);
let base = Math.floor(level);
let decimal = level - base;
return Math.floor(decimal * 100); //percentage
}