1st commit
This commit is contained in:
Generated
+8
@@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
@@ -0,0 +1,61 @@
|
||||
from flask import Flask, render_template, jsonify
|
||||
import json
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Load the data from the JSON file
|
||||
with open('data.json') as f:
|
||||
guns = json.load(f)
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
||||
|
||||
@app.route('/api/guns', methods=['GET'])
|
||||
def get_guns():
|
||||
updated_guns = []
|
||||
for gun in guns:
|
||||
# Calculate RPS, DPS, DPM, avgDPS
|
||||
rps = gun['rpm'] / 60
|
||||
dps = gun['damage'] * rps
|
||||
reload_time_min = gun['reload_time'] / 60
|
||||
dpm = (gun['mag_size'] * gun['damage']) / (reload_time_min + (gun['mag_size'] / gun['rpm']))
|
||||
avg_dps = dpm / 60
|
||||
|
||||
# Add calculated stats to the gun data
|
||||
gun.update({
|
||||
'rps': rps,
|
||||
'dps': dps,
|
||||
'dpm': dpm,
|
||||
'avg_dps': avg_dps
|
||||
})
|
||||
updated_guns.append(gun)
|
||||
|
||||
return jsonify(updated_guns)
|
||||
|
||||
@app.route('/calculator')
|
||||
def calculator():
|
||||
return render_template('calculator.html')
|
||||
|
||||
|
||||
def dps_calculation(damage, extra_dmg_percent, rpm, extra_fire_rate):
|
||||
dps = damage * (extra_dmg_percent / 100 + 1) * (rpm * (extra_fire_rate / 100 + 1) / 60)
|
||||
return round(dps, 2)
|
||||
|
||||
|
||||
def dpm_calculation(reload_time, extra_reload_speed, rpm, damage, extra_dmg_percent, mag_size, extra_fire_rate):
|
||||
adjusted_reload_time = reload_time * (extra_reload_speed / 100 + 1)
|
||||
adjusted_fire_rate = rpm * (extra_fire_rate / 100 + 1)
|
||||
total_damage_per_mag = damage * (extra_dmg_percent / 100 + 1) * mag_size
|
||||
dpm = total_damage_per_mag / ((adjusted_reload_time / 60) + (mag_size / adjusted_fire_rate))
|
||||
return round(dpm, 2)
|
||||
|
||||
|
||||
def average_dpm_calculation():
|
||||
dpm = float(dpm_calculation())
|
||||
return round(dpm / 60, 2)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
||||
@@ -0,0 +1,882 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "G18",
|
||||
"damage": 32,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 550,
|
||||
"mag_size": 18,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "M1911",
|
||||
"damage": 37,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 580,
|
||||
"mag_size": 8,
|
||||
"reload_time": 1.15,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "M9A",
|
||||
"damage": 31,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 850,
|
||||
"mag_size": 15,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "M1911MK2",
|
||||
"damage": 48,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 720,
|
||||
"mag_size": 16,
|
||||
"reload_time": 3,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "Luger",
|
||||
"damage": 58,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 500,
|
||||
"mag_size": 8,
|
||||
"reload_time": 1.95,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "AK47",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 600,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.1,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "G36",
|
||||
"damage": 42,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 700,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.4,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "CRL10",
|
||||
"damage": 75,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 400,
|
||||
"mag_size": 24,
|
||||
"reload_time": 2.6,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "BRH17",
|
||||
"damage": 58,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 670,
|
||||
"mag_size": 30,
|
||||
"reload_time": 3.25,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "M4",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 700,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.35,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "M1",
|
||||
"damage": 425,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 60,
|
||||
"mag_size": 8,
|
||||
"reload_time": 2.8,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "R870",
|
||||
"damage": 92,
|
||||
"damage_multiplier": 6,
|
||||
"rpm": 70,
|
||||
"mag_size": 12,
|
||||
"reload_time": 12,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "R870 (1 Pellet Hit DPS/DPM)",
|
||||
"damage": 92,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 70,
|
||||
"mag_size": 12,
|
||||
"reload_time": 12,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "Scattergun",
|
||||
"damage": 110,
|
||||
"damage_multiplier": 4,
|
||||
"rpm": 300,
|
||||
"mag_size": 7,
|
||||
"reload_time": 4,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "Scattergun (1 Pellet Hit DPS/DPM)",
|
||||
"damage": 58,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 300,
|
||||
"mag_size": 7,
|
||||
"reload_time": 4.5,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "Shorty",
|
||||
"damage": 29,
|
||||
"damage_multiplier": 4,
|
||||
"rpm": 185,
|
||||
"mag_size": 8,
|
||||
"reload_time": 3.5,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "Shorty (1 Pellet Hit DPS/DPM)",
|
||||
"damage": 29,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 185,
|
||||
"mag_size": 8,
|
||||
"reload_time": 3.5,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "AA12",
|
||||
"damage": 22,
|
||||
"damage_multiplier": 4,
|
||||
"rpm": 300,
|
||||
"mag_size": 20,
|
||||
"reload_time": 2.2,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "AA12 (1 Pellet Hit DPS/DPM)",
|
||||
"damage": 22,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 300,
|
||||
"mag_size": 20,
|
||||
"reload_time": 2.2,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "P90",
|
||||
"damage": 32,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 900,
|
||||
"mag_size": 50,
|
||||
"reload_time": 3,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "Thompson",
|
||||
"damage": 38,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 750,
|
||||
"mag_size": 50,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "Uzi",
|
||||
"damage": 20,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 850,
|
||||
"mag_size": 32,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "Vector",
|
||||
"damage": 32,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 1050,
|
||||
"mag_size": 33,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "MP5",
|
||||
"damage": 23,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 800,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.1,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "U10",
|
||||
"damage": 18,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 750,
|
||||
"mag_size": 65,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "MPX",
|
||||
"damage": 28,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 780,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.65,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "UMP45",
|
||||
"damage": 28,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 600,
|
||||
"mag_size": 25,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "Prototype",
|
||||
"damage": 21,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 800,
|
||||
"mag_size": 25,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "Prototype (Overcharged)",
|
||||
"damage": 21,
|
||||
"damage_multiplier": 1.35,
|
||||
"rpm": 800,
|
||||
"mag_size": 25,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "MP40",
|
||||
"damage": 50,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 550,
|
||||
"mag_size": 32,
|
||||
"reload_time": 3,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "PKM",
|
||||
"damage": 41,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 750,
|
||||
"mag_size": 100,
|
||||
"reload_time": 5.5,
|
||||
"gunytpe": "LMG"
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "M249",
|
||||
"damage": 42,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 850,
|
||||
"mag_size": 100,
|
||||
"reload_time": 6,
|
||||
"gunytpe": "LMG"
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "T49",
|
||||
"damage": 48,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 780,
|
||||
"mag_size": 125,
|
||||
"reload_time": 5.5,
|
||||
"gunytpe": "LMG"
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "T32",
|
||||
"damage": 52,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 700,
|
||||
"mag_size": 50,
|
||||
"reload_time": 3.25,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "Improved T49",
|
||||
"damage": 48,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 850,
|
||||
"mag_size": 125,
|
||||
"reload_time": 5.5,
|
||||
"gunytpe": "LMG"
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "Improved T32",
|
||||
"damage": 52,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 750,
|
||||
"mag_size": 50,
|
||||
"reload_time": 3.25,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "AMR 12.7",
|
||||
"damage": 1000,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 30,
|
||||
"mag_size": 5,
|
||||
"reload_time": 3.5,
|
||||
"gunytpe": "RIFLE?"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "Golden Thompson",
|
||||
"damage": 44,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 800,
|
||||
"mag_size": 50,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "MilTech SMGs",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 900,
|
||||
"mag_size": 64,
|
||||
"reload_time": 4,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "Eradicator",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 1000,
|
||||
"mag_size": 50,
|
||||
"reload_time": 2.45,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "A10",
|
||||
"damage": 1000,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 3000,
|
||||
"mag_size": 10000000000000000000,
|
||||
"reload_time": 0,
|
||||
"gunytpe": "SPECIAL"
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "Turret (Manual)",
|
||||
"damage": 100,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 500,
|
||||
"mag_size": 650,
|
||||
"reload_time": 0,
|
||||
"gunytpe": "SPECIAL"
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"name": "Turret (Automatic)",
|
||||
"damage": 100,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 300,
|
||||
"mag_size": 650,
|
||||
"reload_time": 0,
|
||||
"gunytpe": "SPECIAL"
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"name": "Improved G18",
|
||||
"damage": 38,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 650,
|
||||
"mag_size": 18,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"name": "Silenced G18",
|
||||
"damage": 38,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 550,
|
||||
"mag_size": 18,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"name": "RC12",
|
||||
"damage": 50,
|
||||
"damage_multiplier": 4,
|
||||
"rpm": 225,
|
||||
"mag_size": 10,
|
||||
"reload_time": 5,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"name": "RC12 (1 pellet hit)",
|
||||
"damage": 50,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 225,
|
||||
"mag_size": 10,
|
||||
"reload_time": 5,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"name": "MRL4",
|
||||
"damage": 48.5,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 550,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.35,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"name": "Improved MRL4",
|
||||
"damage": 48.5,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 600,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.35,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"name": "K4LAS",
|
||||
"damage": 45,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 600,
|
||||
"mag_size": 32,
|
||||
"reload_time": 2.45,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"name": "Improved K4LAS",
|
||||
"damage": 45,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 650,
|
||||
"mag_size": 32,
|
||||
"reload_time": 2.45,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"name": "MK49",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 625,
|
||||
"mag_size": 100,
|
||||
"reload_time": 4.5,
|
||||
"gunytpe": "LMG"
|
||||
},
|
||||
{
|
||||
"id": 53,
|
||||
"name": "Improved MK49",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 700,
|
||||
"mag_size": 100,
|
||||
"reload_time": 4.5,
|
||||
"gunytpe": "LMG"
|
||||
},
|
||||
{
|
||||
"id": 54,
|
||||
"name": "Improved P90",
|
||||
"damage": 32,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 800,
|
||||
"mag_size": 50,
|
||||
"reload_time": 2.6,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 55,
|
||||
"name": "STEN Gun",
|
||||
"damage": 50,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 550,
|
||||
"mag_size": 32,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 56,
|
||||
"name": "Akimbo G18",
|
||||
"damage": 52,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 700,
|
||||
"mag_size": 34,
|
||||
"reload_time": 3.5,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 57,
|
||||
"name": "ASR",
|
||||
"damage": 100,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 440,
|
||||
"mag_size": 18,
|
||||
"reload_time": 3.5,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 58,
|
||||
"name": "Improved ASR",
|
||||
"damage": 100,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 540,
|
||||
"mag_size": 18,
|
||||
"reload_time": 3.5,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 59,
|
||||
"name": "Improved G36",
|
||||
"damage": 42,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 780,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.25,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"name": "Akimbo Voids",
|
||||
"damage": 15,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 900,
|
||||
"mag_size": 26,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "SMG?"
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"name": "Improved Akimbo Voids",
|
||||
"damage": 38,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 1200,
|
||||
"mag_size": 26,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SMG?"
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"name": "Improved MP5",
|
||||
"damage": 34,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 800,
|
||||
"mag_size": 30,
|
||||
"reload_time": 1.5,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"name": "LTL Laser",
|
||||
"damage": 28,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 200,
|
||||
"mag_size": 2,
|
||||
"reload_time": 3,
|
||||
"gunytpe": "SPECIAL"
|
||||
},
|
||||
{
|
||||
"id": 64,
|
||||
"name": "Improved Vector",
|
||||
"damage": 36,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 1050,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 65,
|
||||
"name": "T45",
|
||||
"damage": 28,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 850,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 66,
|
||||
"name": "Improved T45",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 850,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 67,
|
||||
"name": "Freeze Ray",
|
||||
"damage": 2,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 600,
|
||||
"mag_size": 20,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "SPECIAL"
|
||||
},
|
||||
{
|
||||
"id": 68,
|
||||
"name": "Freeze Rifle",
|
||||
"damage": 4,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 650,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.35,
|
||||
"gunytpe": "SPECIAL"
|
||||
},
|
||||
{
|
||||
"id": 69,
|
||||
"name": "R416",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 830,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 70,
|
||||
"name": "Improved R416",
|
||||
"damage": 44,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 900,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 71,
|
||||
"name": "Flare Gun",
|
||||
"damage": 125,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 480,
|
||||
"mag_size": 1,
|
||||
"reload_time": 1,
|
||||
"gunytpe": "SPECIAL"
|
||||
},
|
||||
{
|
||||
"id": 72,
|
||||
"name": "Improved BRH17",
|
||||
"damage": 58,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 700,
|
||||
"mag_size": 30,
|
||||
"reload_time": 3.25,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 73,
|
||||
"name": "Deagle",
|
||||
"damage": 70,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 400,
|
||||
"mag_size": 18,
|
||||
"reload_time": 2.1,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 74,
|
||||
"name": "Akimbo Deagles",
|
||||
"damage": 70,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 400,
|
||||
"mag_size": 36,
|
||||
"reload_time": 3.5,
|
||||
"gunytpe": "PISTOL"
|
||||
},
|
||||
{
|
||||
"id": 75,
|
||||
"name": "CRL11",
|
||||
"damage": 130,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 300,
|
||||
"mag_size": 10,
|
||||
"reload_time": 3,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 76,
|
||||
"name": "Scan Rifle",
|
||||
"damage": 30,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 700,
|
||||
"mag_size": 10,
|
||||
"reload_time": 2,
|
||||
"gunytpe": "RIFLE?"
|
||||
},
|
||||
{
|
||||
"id": 77,
|
||||
"name": "PPSH41",
|
||||
"damage": 28,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 1000,
|
||||
"mag_size": 71,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "UNKOWN"
|
||||
},
|
||||
{
|
||||
"id": 78,
|
||||
"name": "AK74M",
|
||||
"damage": 40,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 690,
|
||||
"mag_size": 30,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 79,
|
||||
"name": "Akimbo Uzi",
|
||||
"damage": 38,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 800,
|
||||
"mag_size": 64,
|
||||
"reload_time": 4,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 80,
|
||||
"name": "Akimbo MP5",
|
||||
"damage": 42,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 800,
|
||||
"mag_size": 60,
|
||||
"reload_time": 4,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 81,
|
||||
"name": "Improved Thompson",
|
||||
"damage": 38,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 800,
|
||||
"mag_size": 50,
|
||||
"reload_time": 2.5,
|
||||
"gunytpe": "SMG"
|
||||
},
|
||||
{
|
||||
"id": 82,
|
||||
"name": "RV9",
|
||||
"damage": 100,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 400,
|
||||
"mag_size": 12,
|
||||
"reload_time": 2.6,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 83,
|
||||
"name": "SPAS-12",
|
||||
"damage": 24,
|
||||
"damage_multiplier": 8,
|
||||
"rpm": 150,
|
||||
"mag_size": 8,
|
||||
"reload_time": 2.2,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 84,
|
||||
"name": "Akimbo Shotguns",
|
||||
"damage": 51,
|
||||
"damage_multiplier": 8,
|
||||
"rpm": 200,
|
||||
"mag_size": 1000000000000000000000000000000000000000000000000000000000000000,
|
||||
"reload_time": 0,
|
||||
"gunytpe": "SHOTGUN"
|
||||
},
|
||||
{
|
||||
"id": 85,
|
||||
"name": "SK17",
|
||||
"damage": 58,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 900,
|
||||
"mag_size": 30,
|
||||
"reload_time": 4,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 86,
|
||||
"name": "Type49",
|
||||
"damage": 999,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 9999,
|
||||
"mag_size": 999,
|
||||
"reload_time": 1,
|
||||
"gunytpe": "RIFLE"
|
||||
},
|
||||
{
|
||||
"id": 87,
|
||||
"name": "M32",
|
||||
"damage": 500,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 9999,
|
||||
"mag_size": 6,
|
||||
"reload_time": 12,
|
||||
"gunytpe": "SPECIAL"
|
||||
},
|
||||
{
|
||||
"id": 88,
|
||||
"name": "M32NL",
|
||||
"damage": 1,
|
||||
"damage_multiplier": 1,
|
||||
"rpm": 9999,
|
||||
"mag_size": 6,
|
||||
"reload_time": 12,
|
||||
"gunytpe": "SPECIAL"
|
||||
}
|
||||
]
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
function filterTable() {
|
||||
const input = document.getElementById('search');
|
||||
const filter = input.value.toLowerCase();
|
||||
const table = document.getElementById('gun-stats');
|
||||
const tr = table.getElementsByTagName('tr');
|
||||
|
||||
for (let i = 1; i < tr.length; i++) {
|
||||
const td = tr[i].getElementsByTagName('td')[1];
|
||||
if (td) {
|
||||
const txtValue = td.textContent || td.innerText;
|
||||
if (txtValue.toLowerCase().indexOf(filter) > -1) {
|
||||
tr[i].style.display = '';
|
||||
} else {
|
||||
tr[i].style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
fetch('/api/guns')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
populateTable(data);
|
||||
});
|
||||
});
|
||||
|
||||
function populateTable(data) {
|
||||
const table = document.getElementById('gun-stats').getElementsByTagName('tbody')[0];
|
||||
table.innerHTML = ''; // Clear existing table data
|
||||
data.forEach(gun => {
|
||||
const row = table.insertRow();
|
||||
row.insertCell(0).innerText = gun.id;
|
||||
row.insertCell(1).innerText = gun.name;
|
||||
row.insertCell(2).innerText = gun.damage;
|
||||
row.insertCell(3).innerText = gun.damage_multiplier;
|
||||
row.insertCell(4).innerText = gun.rpm;
|
||||
row.insertCell(5).innerText = gun.mag_size;
|
||||
row.insertCell(6).innerText = gun.reload_time;
|
||||
row.insertCell(7).innerText = gun.guntype;
|
||||
row.insertCell(8).innerText = gun.rps.toFixed(2);
|
||||
row.insertCell(9).innerText = gun.dps.toFixed(2);
|
||||
row.insertCell(10).innerText = gun.dpm.toFixed(2);
|
||||
row.insertCell(11).innerText = gun.avg_dps.toFixed(2);
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
.background_image {
|
||||
background-image: url("img/trlbg1.jpg");
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
th, td {
|
||||
padding: 8px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 5px 10px;
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #45a049;
|
||||
}
|
||||
|
||||
input {
|
||||
padding: 5px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#result {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#search {
|
||||
width: 33%;
|
||||
padding: 6px;
|
||||
border: 2px black solid;
|
||||
margin-top: 8px;
|
||||
margin-right: 16px;
|
||||
font-size: 17px;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||
<title>Gun Stats</title>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
<form action="/action_page.php">
|
||||
<label for="rpm">Damage:</label>
|
||||
<input type="text" id="dmg" name="fname"><br><br>
|
||||
<label for="rpm">RPM:</label>
|
||||
<input type="text" id="rpm" name="lname"><br><br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Gun Stats</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav>
|
||||
<a class="index-nav" href="{{ url_for('calculator') }}">Calculator</a>
|
||||
</nav>
|
||||
</header>
|
||||
<main>
|
||||
<h1>Gun Stats</h1>
|
||||
<div>
|
||||
<input type="text" id="search" placeholder="Search by name" onkeyup="filterTable()">
|
||||
</div>
|
||||
<table id="gun-stats">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Name</th>
|
||||
<th>Damage</th>
|
||||
<th>Damage multiplier</th>
|
||||
<th>Rounds per minute</th>
|
||||
<th>Magazine Size</th>
|
||||
<th>Reload time</th>
|
||||
<th>Gun type</th>
|
||||
<th>RPS</th>
|
||||
<th>DPS</th>
|
||||
<th>DPM</th>
|
||||
<th>Avg DPS</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- Gun stats will be populated here -->
|
||||
</tbody>
|
||||
</table>
|
||||
<script src="{{ url_for('static', filename='populateTable.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='filterTable.js') }}"></script>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user