var locales = {} var memberRanks = [] var inviteData = {} var playerId = 0 var playerData = {} var crewList = [] var playerCrew = {} var closestPlayers = [] $(function () { function closePage() { $("body").hide() closeMenus() closeLists() $.post(`https://${GetParentResourceName()}/close`) } function closeMenus() { $(".create-crew").fadeOut(100) $(".invite-menu").fadeOut(100) $(".leave-crew").fadeOut(100) $(".delete-crew").fadeOut(100) $(".sec-bg").fadeOut(100) } function closeLists() { $(".bottom").show() $(".close-btn").show() $(".crew-members").hide() $(".crew-list").hide() $(".back-btn").hide() } var notifyCount = 0 function notify(type, message) { const notifyId = ++notifyCount $(".notify").append(`
${type.toUpperCase()}
${message}
`) setTimeout( () => $(`div[data-notifyId="${notifyId}"`).fadeOut(1000, function () { $(this).remove() }), 5000 ) } function calculateTotalKD(crew) { let kills = 0 let deaths = 0 crew.members.forEach((member) => { kills += member.kills deaths += member.deaths }) return { kills, deaths, } } function getRankNumber(crewId) { let no = crewList.length + 1 crewList .sort((a, b) => calculateTotalKD(b).kills - calculateTotalKD(a).kills) .forEach((crew, i) => { if (crew.id == crewId) { no = i + 1 } }) return no } function hasPermission(target, permission) { if (!isObjectEmpty(playerCrew) && !isObjectEmpty(playerData) && target.token != playerData.token) { if (playerCrew.leader == playerData.token) return true return ( memberRanks[playerData.rank - 1].permissions && memberRanks[playerData.rank - 1].permissions.includes(permission) && playerCrew.leader != target.token && target.rank < playerData.rank ) } return false } function openInviteMenu() { $(".notify").hide() $(".top").hide() $(".bottom").hide() $(".overlay").hide() $(".bg").hide() $(".close-btn").fadeOut(100) const locale = $(".invite-crew .title").data("locale") $(".invite-crew .title").text( (locales[locale] || "Unknown Locale") .replace("{crew}", inviteData.crewName) .replace("{player}", inviteData.senderName) ) $(".invite-crew").fadeIn(100) } function closeInviteMenu() { closePage() $(".notify").show() $(".top").show() $(".bottom").show() $(".overlay").show() $(".bg").show() $(".close-btn").show() $(".invite-crew").fadeOut(100) } $(window).on( "message", function ({ originalEvent: { data: { action, data }, }, }) { switch (action) { case "OPEN_UI": $("body").fadeIn(100) break case "INIT_DATA": let inviteHtml = "" if (!areArraysEqual(closestPlayers, data.closestPlayers)) { closestPlayers = data.closestPlayers closestPlayers.forEach((player) => { if (player.distance < 5.0) { inviteHtml += `
${player.name}
${("00" + player.server_id).slice(-3)}ID
` } }) $(".invite-menu .players").html(inviteHtml) $(".invite-menu .players .player-wrapper").click(function () { //const childs = $(this).children() //const id = parseInt(childs[2].textContent.slice(0, 3)) $.post( `https://${GetParentResourceName()}/invite`, JSON.stringify($(this).data("playerid")) ) }) } if (!areObjectsEqual(playerCrew, data.crew)) { playerCrew = data.crew $("#create-crew").addClass("disabled") $("#invite").addClass("disabled") $("#player-list").addClass("disabled") $("#leave").addClass("disabled") $("#leave").show() $("#delete").hide() $(".only-leader").hide() if (isObjectEmpty(playerCrew)) { playerData = {} $("#create-crew").removeClass("disabled") } else { playerData = playerCrew.members.find((member) => member.server_id == playerId) $("#leave").removeClass("disabled") $("#player-list").removeClass("disabled") let playerRank = playerData.rank if (playerRank == 0) { $("#leave").hide() $("#delete").show() $("#invite").removeClass("disabled") $(".only-leader").show() } let memberListHtml = "" playerCrew.members .sort((a, b) => a.rank - b.rank) .forEach((member) => { const rank = playerCrew.leader == member.token ? "Leder" : memberRanks[member.rank - 1]?.name || "Medlem" const actions = [] if (hasPermission(member, "promote")) { if (member.rank < memberRanks.length) actions[0] = `` if (member.rank > 1) actions[2] = `` } if (hasPermission(member, "kick")) actions[1] = `` memberListHtml += ` ${member.name} ${rank} ${actions.join("")} ${member.kills} ${member.deaths} ` }) $("#member-list").html(memberListHtml) $("#kick-member").click(function () { $.post( `https://${GetParentResourceName()}/kickMember`, JSON.stringify($(this).data("token")) ) }) $("#upgrade-member, #downgrade-member").click(function () { $.post( `https://${GetParentResourceName()}/promoteMember`, JSON.stringify({ targetToken: $(this).data("token"), rankUp: $(this).attr("id") == "upgrade-member", }) ) }) } } if (!areObjectsEqual(crewList, data.crewList)) { crewList = data.crewList let sorted = crewList.sort((a, b) => calculateTotalKD(b).kills - calculateTotalKD(a).kills) let crewListHtml = "" for (let i = 0; i < 10; i++) { const crew = sorted[i] if (crew) { crewListHtml += ` ${i + 1} ${crew.name} ${epochToDate(crew.created_at)} ${crew.members.length} ${calculateTotalKD(crew).kills} ` } } if (!isObjectEmpty(playerCrew)) { crewListHtml += ` #${getRankNumber(playerCrew.id)} ${playerCrew.name} ${epochToDate(playerCrew.created_at)} ${playerCrew.members.length} ${calculateTotalKD(playerCrew).kills} ` } $("#crew-list").html(crewListHtml) } break case "INVITED": inviteData = { crewName: data.crewName, senderName: data.senderName, } openInviteMenu() $("body").fadeIn(100) break case "NOTIFY": notify(data.type, data.message) break default: break } } ) $("#create-crew").click(function () { $(".sec-bg").fadeIn(100) $(".create-crew").fadeIn(100) }) $(".create-crew .create").click(function () { closeMenus() const crewName = $(".input-crew").val() if (crewName == "") { notify("error", locales["CrewNameEmpty"]) return } if (crewName.length < 4) { notify("error", locales["CrewNameMinLength"]) return } if (crewName.length > 12) { notify("error", locales["CrewNameMaxLength"]) return } $.post(`https://${GetParentResourceName()}/create`, JSON.stringify(crewName)) $(".input-crew").val("") }) $("#invite").click(function () { $(".sec-bg").fadeIn(100) $(".invite-menu").fadeIn(100) }) $("#player-list").click(function () { $(".bottom").hide() $(".crew-members").show() $(".close-btn").hide() $(".back-btn").show() }) $("#scoreboard").click(function () { $(".bottom").hide() $(".crew-list").show() $(".close-btn").hide() $(".back-btn").show() }) $("#leave").click(function () { $(".sec-bg").fadeIn(100) $(".leave-crew").fadeIn(100) }) $("#delete").click(function () { $(".sec-bg").fadeIn(100) $(".delete-crew").fadeIn(100) }) $(".btn-accept").click(function () { const target = $(this).data("target") switch (target) { case "join": closeInviteMenu() $.post(`https://${GetParentResourceName()}/join`, JSON.stringify(inviteData.crewName)) break case "leave": case "delete": closeMenus() $.post(`https://${GetParentResourceName()}/leave`) break } //closePage(); }) $(".btn-cancel").click(function () { const target = $(this).data("target") if (target == "join") closeInviteMenu() else closeMenus() }) $(".sec-bg").click(closeMenus) $(".back-btn").click(closeLists) $(".close-btn").click(closePage) $(window).on("keydown", function ({ originalEvent: { key } }) { if (key == "Escape") { if ($(".sec-bg").css("display") != "none") closeMenus() else if ($(".back-btn").css("display") != "none") closeLists() else closePage() } }) $.post(`https://${GetParentResourceName()}/loaded`, function (data) { locales = data.locales playerId = data.playerId memberRanks = data.memberRanks for (const locale in locales) { $(`*[data-locale="${locale}"]`).text(locales[locale]) } }) })