This commit is contained in:
night0721 2022-02-01 22:00:50 +08:00
parent 3a40501762
commit 1a3e93ddf9
6 changed files with 1044 additions and 14 deletions

78
CODM/loadout.js Normal file
View file

@ -0,0 +1,78 @@
const { MessageEmbed } = require("discord.js"); //@night0721 You need to make this
const items = require("../../util/Data/loadout.json");
module.exports = {
name: "class",
description: "Generate A Random Loadout",
category: "CODM",
run: async (client, interaction) => {
// const data = async () => {
// const d = await model.findOne({});
// const types = d.Categories;
// const names = d.Primary;
// const category = types[Math.floor(Math.random() * types.length)];
// const weapons = names[0][category];
// return `${weapons[Math.floor(Math.random() * weapons.length)]}`;
// };
// const primary_weapon = await data();
// const primary = primary_weapon.replace(/[ -]/g, "_").replace(/\./g, "");
// const slots = shuffle(Object.keys(Attachments[primary][0]));
// const slot_1 = slots.next().value,
// slot_2 = slots.next().value,
// slot_3 = slots.next().value,
// slot_4 = slots.next().value,
// slot_5 = slots.next().value;
const result = new MessageEmbed()
.setColor(client.color)
.setFooter(`Made by ${client.author}`)
.setURL(client.web)
.setTitle(`🎲 A Randomly Generated Loadout 🎲`)
.setDescription(
`This loadout is a randomly generated, Also try, \`\`\`\`/gun\`\`\`\` to get a randomally generated primary weapon gunsmith build`
)
.addFields(
{
name: `Secondary Weapon`,
value: ``,
inline: true,
},
{
name: `Operator Skill`,
value: ``,
inline: true,
},
{
name: `Scorestreak`, // 3 perks
value: ``,
inline: true,
},
{
name: `Red Perk`,
value: ``,
inline: true,
},
{
name: `Green Perk`,
value: ``,
inline: true,
},
{
name: `Blue Perk`,
value: ``,
inline: true,
}
)
.setTimestamp();
interaction.followUp({ embeds: [result] });
// function* shuffle(array) {
// let i = array.length;
// while (i--) {
// yield array.splice(Math.floor(Math.random() * (i + 1)), 1)[0];
// }
// }
// function getAttachment(gun, slot) {
// const ca = Attachments[gun][0][slot];
// return ca[Math.floor(Math.random() * ca.length)];
// }
},
};

774
CODM/new-stats.js Normal file
View file

@ -0,0 +1,774 @@
const { MessageEmbed } = require("discord.js");
const moment = require("moment");
const axios = require("axios");
module.exports = {
name: "stats",
description: "Check Stats of a Weapon by SOD",
usage: "[Weapon Name]",
category: "CODM",
options: [
{
type: "SUB_COMMAND",
name: "assault_rifle",
description: "Get a Stats for Assault Rifle",
options: [
{
type: 3,
name: "Weapon",
description: "Name of the Gun",
required: true,
choices: [
{
name: "Type 25",
value: "A01",
},
{
name: "M16",
value: "A02",
},
{
name: "AK117",
value: "A03",
},
{
name: "AK-47",
value: "A04",
},
{
name: "ASM10",
value: "A05",
},
{
name: "M4",
value: "A06",
},
{
name: "BK57",
value: "A07",
},
{
name: "LK24",
value: "A08",
},
{
name: "ICR-1",
value: "A09",
},
{
name: "Man-o-War",
value: "A10",
},
{
name: "KN-44",
value: "A11",
},
{
name: "HBRa3",
value: "A12",
},
{
name: "HVK-30",
value: "A13",
},
{
name: "DR-H",
value: "A14",
},
{
name: "Peacekeeper MK2",
value: "A15",
},
{
name: "FR .556",
value: "A16",
},
{
name: "AS VAL",
value: "A17",
},
{
name: "CR-56 AMAX",
value: "A18",
},
{
name: "M13",
value: "A19",
},
{
name: "Swordfish",
value: "A20",
},
{
name: "Kilo 141",
value: "A21",
},
],
},
],
},
{
type: "SUB_COMMAND",
name: "sub_machine_gun",
description: "Get a Stats for Sub Machine Gun",
options: [
{
type: 3,
name: "Weapon",
description: "Name of the Gun",
required: true,
choices: [
{
name: "RUS-79u",
value: "D01",
},
{
name: "Chicom",
value: "D02",
},
{
name: "PDW-57",
value: "D03",
},
{
name: "Razorback",
value: "D04",
},
{
name: "MSMC",
value: "D05",
},
{
name: "HG40",
value: "D06",
},
{
name: "Pharo",
value: "D07",
},
{
name: "GKS",
value: "D08",
},
{
name: "Cordite",
value: "D09",
},
{
name: "QQ9",
value: "D10",
},
{
name: "Fennec",
value: "D11",
},
{
name: "AGR 556",
value: "D12",
},
{
name: "QXR",
value: "D13",
},
{
name: "PP19 Bizon",
value: "D14",
},
{
name: "MX9",
value: "D15",
},
{
name: "CBR4",
value: "D16",
},
{
name: "PPSh 41",
value: "D17",
},
],
},
],
},
{
type: "SUB_COMMAND",
name: "sniper_rifle",
description: "Get a Stats for Sniper Rifle",
options: [
{
type: 3,
name: "Weapon",
description: "Name of the Gun",
required: true,
choices: [
// {
// name: "XPR-50",
// value: "B01",
// },
{
name: "Arctic .50",
value: "B02",
},
{
name: "M21 EBR",
value: "B03",
},
{
name: "DL Q33",
value: "B04",
},
{
name: "Locus",
value: "B05",
},
// {
// name: "NA-45",
// value: "B06",
// },
{
name: "Outlaw",
value: "B07",
},
{
name: "Rytec AMR",
value: "B08",
},
{
name: "SVD",
value: "B09",
},
],
},
],
},
{
type: "SUB_COMMAND",
name: "light_machine_gun",
description: "Get a Stats for Light Machine Gun",
options: [
{
type: 3,
name: "Weapon",
description: "Name of the Gun",
required: true,
choices: [
{
name: "S36",
value: "C01",
},
{
name: "UL736",
value: "C02",
},
{
name: "RPD",
value: "C03",
},
{
name: "M4 LMG",
value: "C04",
},
{
name: "Chopper",
value: "C05",
},
{
name: "Holger 26",
value: "C06",
},
{
name: "Hades",
value: "C07",
},
{
name: "PKM",
value: "C08",
},
],
},
],
},
{
type: "SUB_COMMAND",
name: "shotgun",
description: "Get a Stats for Shotgun",
options: [
{
type: 3,
name: "Weapon",
description: "Name of the Gun",
required: true,
choices: [
{
name: "HS2126",
value: "E01",
},
{
name: "BY15",
value: "E02",
},
{
name: "HS0405",
value: "E03",
},
{
name: "Striker",
value: "E04",
},
{
name: "KRM_262",
value: "E05",
},
{
name: "Echo",
value: "E06",
},
{
name: "R9-0",
value: "E07",
},
],
},
],
},
{
type: "SUB_COMMAND",
name: "marksman_rifle",
description: "Get a Stats for Marksman Rifle",
options: [
{
type: 3,
name: "Weapon",
description: "Name of the Gun",
required: true,
choices: [
{
name: "Kilo Bolt-Action",
value: "F01",
},
{
name: "SKS",
value: "F02",
},
{
name: "SP-R 208",
value: "F03",
},
{
name: "MK2",
value: "F04",
},
],
},
],
},
{
type: "SUB_COMMAND",
name: "pistol",
description: "Get a Stats for Pistol",
options: [
{
type: 3,
name: "Weapon",
description: "Name of the Gun",
required: true,
choices: [
{
name: "J358",
value: "G01",
},
{
name: "MW11",
value: "G02",
},
{
name: ".50 GS",
value: "G03",
},
{
name: "Renetti",
value: "G04",
},
{
name: "Shorty",
value: "G05",
},
{
name: "Crossbow",
value: "G06",
},
],
},
],
},
],
// It's not complete, Still work in progress.
run: async (client, interaction, args) => {
const cwts = args[1];
const data = await axios
.get(`${process.env.api}/api/v1/codm/builds?cwts=${cwts}`, {
headers: {
Authorization: process.env.CODM_API_KEY,
},
})
.then((res) => res.data)
.catch((e) => null);
if (!data?.ID) {
const embed = new MessageEmbed()
.setDescription(
`<:nyx_not_available:897378400031879188> Sorry, We currently don't have Stats for this Weapon`
)
.setColor(client.color);
interaction.followUp({ embeds: [embed] });
} else {
const embed = new MessageEmbed()
.setTitle(
`${data.author} Statistical Breakdown`
)
.setColor(16580400)
.setImage(data.imageUrl)
.setFooter(
`Stats Curtosy of Round Table`,
)
// .setFooter(
// `Stats Curtosy of Stats on Duty`,
// )
.setDescription(
`<:nyx_description:897379659665264650> **Description** \n${data.description}`
)
.addFields(
{
name: ":id: CWTS:",
value: `\`\`\`\n${data.cwts}\n\`\`\``,
inline: true,
},
{
name: "<a:lastupdate:897381474330873887> Last Updated:",
value: `\`\`\`\n${moment(Date.parse(data.lastUpdate)).format(
"MMMM Do YYYY"
)}\n\`\`\``,
inline: true,
},
{
name: "Basic Stats",
value: `\`\`\`\n
BSA Score: ${data.bsa_score}
Hipfire Score: ${data.hipfire_score}
Rate of Fire\t\t\t\t: ${data.rof}
Penetration Level\t\t: ${data.penetration}
Firing Mode\t\t\t\t\t: Full Auto
\n\`\`\``,
inline: false,
},
{
name: "Handling & Mobility",
value: `\`\`\`\n
Drop Time : 416.6 ms
Raise Time : 650 ms
Sprinting Speed : 6.09 m/s
Walking Speed : 4.51 m/s
Sprint-to-Fire Time : 165 ms
\n\`\`\``,
inline: false,
},
{
name: "Ammunation Stats",
value: `\`\`\`\n
Magazine : 30
Reserve : 120
Reload Type : Magazine
Cancel Reload Time : 1.9 s
Reload Time : 2.3 s
Full Reload Time : 3.2 s
\n\`\`\``,
inline: false,
},
{
name: ":paperclip: Attachments:",
value: arr.join("\n"),
},
{
name: "<a:tags:897034924140404776> Tags",
value: data.tags.join(", "),
}
)
.setURL(client.web);
interaction.followUp({ embeds: [embed] });
}
},
};
// @night0721 Damage profile will be avalable by different command
// recoilAvailable = false;
// hasError = false;
// console.log(args);
// const repEmb = statsHandler(args.join(" ").replace("\n", " "));
// if (hasError) {
// interaction.followUp({ embeds: [repEmb] });
// }
// if (recoilAvailable) {
// repEmb.fields.push({
// name: "**Recoil Graph**",
// value:
// "```\nThe Recoil graph below is dynamic (change based on attachment equipped)```",
// });
// const recoilImageLink = await chart.getShortUrl();
// repEmb.image = { url: recoilImageLink };
// }
// interaction.followUp({ embeds: [repEmb] });
// },
// }
// run: async (client, interaction, args) => {
// recoilAvailable = false;
// hasError = false;
// console.log(args);
// const repEmb = statsHandler(args.join(" ").replace("\n", " "));
// if (hasError) {
// interaction.followUp({ embeds: [repEmb] });
// }
// if (recoilAvailable) {
// repEmb.fields.push({
// name: "**Recoil Graph**",
// value:
// "```\nThe Recoil graph below is dynamic (change based on attachment equipped)```",
// });
// const recoilImageLink = await chart.getShortUrl();
// repEmb.image = { url: recoilImageLink };
// }
// interaction.followUp({ embeds: [repEmb] });
// },
// };
// function inpHandler(inpmsg) {
// statsHandler(inpmsg.split("+")[0]);
// }
// function statsHandler(inpmsg) {
// let statsNames = [
// "Pellets",
// "Detonation Range",
// "Explosion Radius",
// "Explosion Damage",
// "Firing Mode",
// "Rate of Fire",
// "Bullet in Burst",
// "Time Between Burst",
// "Bullet Speed",
// "Penetration Level",
// "Bullet Spread",
// "Idle Sway",
// "Hipfire Pellet Spread",
// "ADS Pellet Spread",
// "ADS Time",
// "Sprint-to-Fire Time",
// "ADS Zoom",
// "Magazine",
// "Reserve",
// "Reload Type",
// "Cancel Reload Time",
// "Reload Time",
// "Full Reload Time",
// "Drop Time",
// "Raise Time",
// "Sprinting Speed",
// "Walking Speed",
// "Straifing Speed",
// "Damage per Tick",
// "Number of Ticks",
// "Time Between Ticks",
// "Breath Hold Time",
// "shouldNeverHappen0",
// "shouldNeverHappen1",
// "shouldNeverHappen2",
// "shouldNeverHappen3",
// "shouldNeverHappen4",
// ],
// out = [];
// currGun = common.weaponIdentifier(inpmsg);
// if (typeof currGun == "string") {
// hasError = true;
// return currGun;
// }
// currStats = currGun.stats;
// currDRM = currGun.drm[0];
// currAttachments = [];
// currAttachments = common.attachmentsIdentifier(
// inpmsg,
// currGun.aments,
// currStats
// );
// if (typeof currAttachments == "string") {
// hasError = true;
// return currAttachments;
// }
// currRecoilArr = [1, 1, currGun.stats[17]];
// if (currAttachments.length != 0) {
// const totalEffects = common.totaler(currAttachments);
// currStats = common.updateStatswithEffects(totalEffects, currStats);
// currRecoilArr = [totalEffects[2], totalEffects[3], currGun.stats[17]]; // must happen after currStats update
// currDRM = currGun.drm[totalEffects[37]];
// currDRM.range = currDRM.range.map(x =>
// Math.round(x * (1 + totalEffects[13] / 100))
// );
// out = common.attachmentHandler(totalEffects, currStats);
// }
// function statsWorker() {
// if (currStats[19] === 2) {
// currStats[21] =
// currStats[20] + currStats[21] * currStats[17] + currStats[22];
// currStats[20] = 0;
// currStats[22] = 0;
// }
// currStats[25] = (currStats[25] * currStats[26]) / 100;
// const outReady = currStats.map((x, i) =>
// x ? statsNames[i].padEnd(24) + ":".padEnd(3) + beautifier(i) : ""
// );
// out = [
// ...[
// "Basic Stats",
// "ADS Stats",
// "Bullet Stats",
// "Magazine",
// "Handling Stats",
// "Mobility Stats",
// "Miscellaneous Stats",
// ].map((x, i) =>
// fieldMaker(
// x,
// [
// [04, 05, 09],
// [14, 16, 11, 31],
// [00, 06, 07, 08, 10, 12, 13],
// [17, 18, 19, 20, 21, 22],
// [23, 24],
// [25, 26, 27, 15],
// [28, 29, 30, 01, 02, 03],
// ][i]
// )
// ),
// ...out,
// ];
// function fieldMaker(inpName, inpIndx) {
// inpIndx = inpIndx.filter(x => outReady[x]);
// return inpIndx.length
// ? {
// name: "**" + inpName + "**",
// value: "```\n" + inpIndx.map(x => outReady[x]).join("\n") + "```",
// }
// : "";
// }
// }
// statsWorker();
// function beautifier(j) {
// switch (j) {
// case 04:
// return data.firingModes[currStats[j] - 1];
// case 09:
// return data.penetrationLevels[currStats[j] - 1];
// case 19:
// return data.reloadTypes[currStats[j] - 1];
// case 08:
// if (currStats[j] == -1) {
// return "Infinity";
// } else {
// return parseFloat(currStats[j].toFixed(2)).toString() + " m/s";
// }
// case 03:
// return parseFloat(currStats[j].toFixed(2))
// .toString()
// .replace(".", " ~ ");
// default:
// return parseFloat(currStats[j].toFixed(2)).toString() + addUnit(j);
// }
// function addUnit(j) {
// switch (j) {
// case 07:
// case 14:
// case 15:
// case 23:
// case 24:
// case 31:
// return " ms";
// case 27:
// case 28:
// case 25:
// case 26:
// return " m/s";
// case 20:
// case 21:
// case 22:
// return " s";
// case 16:
// return "%";
// case 06:
// return " Rounds";
// case 05:
// return " RPM";
// default:
// return "";
// }
// }
// }
// interpretion = currGun.gunname + common.interpretioner(currAttachments);
// if (currGun.recoil.hr.length > 2) {
// chart = common.recoilHandler(
// currGun.recoil.hr,
// currGun.recoil.vr,
// currRecoilArr[0],
// currRecoilArr[1],
// currRecoilArr[2]
// );
// recoilAvailable = true;
// } else {
// recoilAvailable = false;
// }
// if (chart == "none") {
// recoilAvailable = false;
// }
// if (chart == "err" || currAttachments == "err") {
// hasError = true;
// return "Cocaineeee";
// }
// const dmg =
// common.damageHandler(
// currDRM.damage,
// currDRM.range,
// 1,
// 100,
// 60000 / currStats[5],
// currStats[7],
// currStats[6],
// currStats[0]
// ) || "```This should never happen```";
// out = [
// currGun.description
// ? {
// name: "**Description:**",
// value: "```\n" + currGun.description + "```",
// }
// : {},
// { name: "**Damage Profile:**", value: dmg },
// ...out,
// ];
// out = out.filter(x => x.value);
// return {
// title: interpretion,
// color: 5814783,
// fields: out,
// footer: {
// text: "[OUTDATED] All data courtesy of Project Lighthouse 2.0 and CoDM Research Crew",
// icon_url:
// "https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png",
// },
// };

View file

@ -4,6 +4,7 @@ const axios = require("axios");
module.exports = {
name: "build",
description: "Get gunsmith builds",
usage: "[Weapon Name] [Author] [Tag]",
type: "CHAT_INPUT",
category: "CODM",
options: [
@ -106,7 +107,7 @@ module.exports = {
},
{
type: 3,
name: "youtuber",
name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@ -233,7 +234,7 @@ module.exports = {
},
{
type: 3,
name: "youtuber",
name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@ -324,7 +325,7 @@ module.exports = {
},
{
type: 3,
name: "youtuber",
name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@ -407,7 +408,7 @@ module.exports = {
},
{
type: 3,
name: "youtuber",
name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@ -471,7 +472,7 @@ module.exports = {
value: "E04",
},
{
name: "KRM_262",
name: "KRM 262",
value: "E05",
},
{
@ -486,7 +487,7 @@ module.exports = {
},
{
type: 3,
name: "youtuber",
name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@ -549,7 +550,7 @@ module.exports = {
},
{
type: 3,
name: "youtuber",
name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@ -557,6 +558,10 @@ module.exports = {
name: "path.exe",
value: "path.exe",
},
// {
// name: "Stats On Duty",
// value: "sod",
// },
],
},
{
@ -620,7 +625,7 @@ module.exports = {
},
{
type: 3,
name: "youtuber",
name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@ -628,6 +633,10 @@ module.exports = {
name: "path.exe",
value: "path.exe",
},
// {
// name: "Stats On Duty",
// value: "sod",
// },
],
},
{

View file

@ -132,7 +132,9 @@ module.exports = {
const embed = new MessageEmbed()
.setTitle(d.name)
.setURL(d.preview_video)
.setDescription(`\`\`\`${d.description}\`\`\``)
.setDescription(
`<:nyx_description:897379659665264650> **Description** \`\`\`\n${d.description}\`\`\``
)
.addFields(
{
name: "Cost",
@ -148,11 +150,6 @@ module.exports = {
: "<a:nyx_checkmark:897240322411724841> Yes"
}`,
inline: true,
},
{
name: "More Info",
value: `\`\`\`${d.special ? d.special : "None"}\`\`\``,
inline: false,
}
)
.setThumbnail(d.preview)

74
util/Data/cwts.json Normal file
View file

@ -0,0 +1,74 @@
{
"A01": "Type 25",
"A02": "M16",
"A03": "AK117",
"A04": "AK-47",
"A05": "ASM10",
"A06": "M4",
"A07": "BK57",
"A08": "LK24",
"A09": "ICR-1",
"A10": "Man-o-War",
"A11": "KN-44",
"A12": "HBRa3",
"A13": "HVK-30",
"A14": "DR-H",
"A15": "Peacekeeper MK2",
"A16": "FR .556",
"A17": "AS VAL",
"A18": "CR-56 AMAX",
"A19": "M13",
"A20": "Swordfish",
"A21": "Kilo 141",
"B01": "XPR-50",
"B02": "Arctic .50",
"B03": "M21 EBR",
"B04": "DL Q33",
"B05": "Locus",
"B06": "NA-45",
"B07": "Outlaw",
"B08": "Rytec AMR",
"B09": "SVD",
"C01": "S36",
"C02": "UL736",
"C03": "RPD",
"C04": "M4 LMG",
"C05": "Chopper",
"C06": "Holger 26",
"C07": "Hades",
"C08": "PKM",
"D01": "RUS-79u",
"D02": "Chicom",
"D03": "PDW-57",
"D04": "Razorback",
"D05": "MSMC",
"D06": "HG40",
"D07": "Pharo",
"D08": "GKS",
"D09": "Cordite",
"D10": "QQ9",
"D11": "Fennec",
"D12": "AGR 556",
"D13": "QXR",
"D14": "PP19 Bizon",
"D15": "MX9",
"D16": "CBR4",
"D17": "PPSh 41",
"E01": "HS2126",
"E02": "BY15",
"E03": "HS0405",
"E04": "Striker",
"E05": "KRM 262",
"E06": "Echo",
"E07": "R9-0",
"F01": "Kilo Bolt-Action",
"F02": "SKS",
"F03": "SP-R 208",
"F04": "MK2",
"G01": "J358",
"G02": "MW11",
"G03": ".50 GS",
"G04": "Renetti",
"G05": "Shorty",
"G06": "Crossbow"
}

98
util/Data/loadout.json Normal file
View file

@ -0,0 +1,98 @@
{
"secondary": [
"Knife / Base Melee",
"Axe",
"Shovel",
"Baseball Bat",
"Nunchucks",
"Prizefighter",
"Wrench",
"Sickle",
"Machete",
"Katana",
"FHJ-18",
"SMRS",
"D13 Sector",
"Thumper"
],
"perk_1": [
"Fast Recover",
"Persistence",
"Flak Jacket",
"Skulker",
"Agile",
"Lightweight",
"Restock",
"Tactician",
"Overclock",
"Martyrdom",
"Iron Lungs"
],
"perk_2": [
"Vulture",
"Toughness",
"Tracker",
"Ghost",
"Cold Blooded",
"Hard Wired",
"Quick Fix",
"Amped",
"Recon",
"Gung-Ho"
],
"perk_3": [
"Hard Line",
"Demo Expert",
"Tactical Mask",
"Alert",
"Engineer",
"Dead Silence",
"Shrapnel",
"Hard Alert",
"Launcher Plus"
],
"scorestreek": [
"Shield Turret",
"UAV",
"Shock RC",
"Hunter Killer Drone",
"Care Package",
"Counter UAV",
"MQ-27 Dragonfire",
"SAM Turret",
"Predator Missile",
"Hawk X3",
"Sentry Gun",
"Lightning Strike",
"Orbital Laser",
"XS1 Goliath",
"Cluster Strike",
"Chopper Gunner",
"Stealth Chopper",
"Swarm",
"Napalm",
"Advance UAV",
"EMP Systems",
"VTOL"
],
"operator_skill": [
"Purifier",
"War Machine",
"Death Machine",
"Tranform Shield",
"K9 UNIT",
"Sparrow",
"Tempest",
"H.I.V.E. ",
"Gravity Spikes",
"Annihilator",
"Shadow Blade",
"Equalizer",
"Ballistic Shield",
"Gravity Vortex Gun",
"Bull Charge",
"Kinetic Armor",
"TAK-5",
"Munitions Box"
]
}