Last active
June 14, 2017 12:48
-
-
Save dubbeh/59cd06dc15dd1fad17d98cee53cfa718 to your computer and use it in GitHub Desktop.
Guild Wars 2 API server Victory Points and Kill/Death lookup utilising JavaScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Guild Wars 2 War Score Lookup Script | |
* | |
* Coded by dubbeh | |
* | |
* Licensed under the GPLv3 | |
* | |
*/ | |
var RED_WORLD_INDEX = 1; | |
var BLUE_WORLD_INDEX = 2; | |
var GREEN_WORLD_INDEX = 3; | |
var gw2_worlds; | |
var gw2_world_name; | |
var gw2_world_obj; | |
var gw2_matchup_id; | |
var gw2_matchup_info; | |
function gw2api_get_matchup_scores(world_name) { | |
gw2_world_name = world_name; | |
axios.get("https://api.guildwars2.com/v2/worlds?ids=all") | |
.then(gw2api_got_worlds) | |
.catch(function (error) { | |
console.log("GW2API: " + error); | |
}); | |
} | |
function gw2api_got_worlds(response) { | |
if (response.status == 200 && response.statusText == 'OK') { | |
gw2_worlds = response.data; | |
gw2_world_obj = gw2api_get_world_object_from_name(gw2_world_name); | |
if (gw2_world_obj) { | |
axios.get("https://api.guildwars2.com/v2/wvw/matches/overview?world=" + gw2_world_obj.id) | |
.then(gw2api_got_machup_overview) | |
.catch(function (error) { | |
console.log("GW2API: " + error); | |
}); | |
} else { | |
console.log("GW2API : Unable to find world with name '" + gw2_world_name + "'."); | |
} | |
} | |
} | |
function gw2api_got_machup_overview(response) { | |
if (response.status == 200 && response.statusText == 'OK') { | |
gw2_matchup_overview = response.data; | |
axios.get("https://api.guildwars2.com/v2/wvw/matches/" + gw2_matchup_overview.id) | |
.then(gw2api_got_matchup_info) | |
.catch(function (error) { | |
console.log("GW2API: " + error); | |
}); | |
} | |
} | |
function gw2api_got_matchup_info(response) { | |
if (response.status == 200 && response.statusText == 'OK') { | |
gw2_matchup_info = response.data; | |
gw2api_write_matchup_stats(); | |
} | |
} | |
function gw2api_write_matchup_stats() { | |
document.getElementById("gw2results").innerHTML = | |
"<font color=\"red\">" + | |
gw2api_get_matchup_world_name_list(RED_WORLD_INDEX) + | |
" (VP:" + gw2api_get_world_victory_points(RED_WORLD_INDEX) + | |
" K/D:" + gw2api_get_world_kd(RED_WORLD_INDEX) + ") " + | |
"</font>" + | |
" - " + | |
"<font color=\"blue\">" + | |
gw2api_get_matchup_world_name_list(BLUE_WORLD_INDEX) + | |
" (VP:" + gw2api_get_world_victory_points(BLUE_WORLD_INDEX) + | |
" K/D:" + gw2api_get_world_kd(BLUE_WORLD_INDEX) + ") " + | |
"</font>" + | |
" - " + | |
"<font color=\"green\">" + | |
gw2api_get_matchup_world_name_list(GREEN_WORLD_INDEX) + | |
" (VP:" + gw2api_get_world_victory_points(GREEN_WORLD_INDEX) + | |
" K/D:" + gw2api_get_world_kd(GREEN_WORLD_INDEX) + ")" + | |
"</font>"; | |
} | |
function gw2api_get_world_object_from_id(world_id) { | |
for (var i in gw2_worlds) { | |
if (gw2_worlds[i].id == world_id) { | |
return gw2_worlds[i]; | |
} | |
} | |
return 0; | |
} | |
function gw2api_get_world_object_from_name(world_name) { | |
for (var i in gw2_worlds) { | |
if (gw2_worlds[i].name == world_name) { | |
return gw2_worlds[i]; | |
} | |
} | |
return 0; | |
} | |
function gw2api_get_matchup_world_name_list(world_colour_index) { | |
var primary_world; | |
var size; | |
var world_list = ""; | |
if (world_colour_index == RED_WORLD_INDEX) { | |
primary_world = gw2api_get_world_object_from_id(gw2_matchup_overview.worlds.red); | |
size = gw2_matchup_info.all_worlds.red.length; | |
} else if (world_colour_index == BLUE_WORLD_INDEX) { | |
primary_world = gw2api_get_world_object_from_id(gw2_matchup_overview.worlds.blue); | |
size = gw2_matchup_info.all_worlds.blue.length; | |
} else if (world_colour_index == GREEN_WORLD_INDEX) { | |
primary_world = gw2api_get_world_object_from_id(gw2_matchup_overview.worlds.green); | |
size = gw2_matchup_info.all_worlds.green.length; | |
} else { | |
console.log("GW2 API: Unknown world_colour_index"); | |
return world_list; | |
} | |
if (size > 1) { | |
world_list += primary_world.name + " + "; | |
for (var i = 0; i < size; i++) { | |
if ((gw2_matchup_info.all_worlds.red[i] == primary_world.id) || | |
(gw2_matchup_info.all_worlds.blue[i] == primary_world.id) || | |
(gw2_matchup_info.all_worlds.green[i] == primary_world.id)) { | |
continue; | |
} else if (i == size - 2) { | |
if (world_colour_index == RED_WORLD_INDEX) { | |
world_list += gw2api_get_world_object_from_id(gw2_matchup_info.all_worlds.red[i]).name; | |
} else if (world_colour_index == BLUE_WORLD_INDEX) { | |
world_list += gw2api_get_world_object_from_id(gw2_matchup_info.all_worlds.blue[i]).name; | |
} else if (world_colour_index == GREEN_WORLD_INDEX) { | |
world_list += gw2api_get_world_object_from_id(gw2_matchup_info.all_worlds.green[i]).name; | |
} | |
} else { | |
if (world_colour_index == RED_WORLD_INDEX) { | |
world_list += gw2api_get_world_object_from_id(gw2_matchup_info.all_worlds.red[i]).name + " + "; | |
} else if (world_colour_index == BLUE_WORLD_INDEX) { | |
world_list += gw2api_get_world_object_from_id(gw2_matchup_info.all_worlds.blue[i]).name + " + "; | |
} else if (world_colour_index == GREEN_WORLD_INDEX) { | |
world_list += gw2api_get_world_object_from_id(gw2_matchup_info.all_worlds.green[i]).name + " + "; | |
} | |
} | |
} | |
return world_list; | |
} | |
return primary_world.name; | |
} | |
function gw2api_get_world_total_kills(world_colour_index) { | |
if (world_colour_index == RED_WORLD_INDEX) { | |
return gw2_matchup_info.kills.red; | |
} else if (world_colour_index == BLUE_WORLD_INDEX) { | |
return gw2_matchup_info.kills.blue; | |
} else if (world_colour_index == GREEN_WORLD_INDEX) { | |
return gw2_matchup_info.kills.green; | |
} | |
return 0; | |
} | |
function gw2api_get_world_total_deaths(world_colour_index) { | |
if (world_colour_index == RED_WORLD_INDEX) { | |
return gw2_matchup_info.deaths.red; | |
} else if (world_colour_index == BLUE_WORLD_INDEX) { | |
return gw2_matchup_info.deaths.blue; | |
} else if (world_colour_index == GREEN_WORLD_INDEX) { | |
return gw2_matchup_info.deaths.green; | |
} | |
return 0; | |
} | |
function gw2api_get_world_victory_points(world_colour_index) { | |
if (world_colour_index == RED_WORLD_INDEX) { | |
return gw2_matchup_info.victory_points.red; | |
} else if (world_colour_index == BLUE_WORLD_INDEX) { | |
return gw2_matchup_info.victory_points.blue; | |
} else if (world_colour_index == GREEN_WORLD_INDEX) { | |
return gw2_matchup_info.victory_points.green; | |
} | |
} | |
function gw2api_get_world_kd(world_colour_index) { | |
if (world_colour_index == RED_WORLD_INDEX) { | |
return (gw2api_get_world_total_kills(RED_WORLD_INDEX) / gw2api_get_world_total_deaths(RED_WORLD_INDEX)).toFixed(2); | |
} else if (world_colour_index == BLUE_WORLD_INDEX) { | |
return (gw2api_get_world_total_kills(BLUE_WORLD_INDEX) / gw2api_get_world_total_deaths(BLUE_WORLD_INDEX)).toFixed(2); | |
} else if (world_colour_index == GREEN_WORLD_INDEX) { | |
return (gw2api_get_world_total_kills(GREEN_WORLD_INDEX) / gw2api_get_world_total_deaths(GREEN_WORLD_INDEX)).toFixed(2); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"/> | |
<script src="https://unpkg.com/axios/dist/axios.min.js"></script> | |
<script src="js/gw2api.js"></script> | |
<title>GW2 API World Scores</title> | |
</head> | |
<body> | |
<script> | |
gw2api_get_matchup_scores ("Vabbi"); | |
</script> | |
<p id="gw2results">Syncing...</p> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment