2 changes: 1 addition & 1 deletion fxmanifest.lua
Expand Up @@ -2,7 +2,7 @@ fx_version 'cerulean'
game 'gta5'

repository 'https://github.com/TFNRP/axonbody3'
version '0.0.1'
version '0.2.0'
author 'Reece Stokes <hagen@hyena.gay>'

client_script {
Expand Down
4,472 changes: 4,472 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

36 changes: 36 additions & 0 deletions package.json
@@ -0,0 +1,36 @@
{
"name": "axonbody3",
"version": "1.0.0",
"description": "FiveM Axon Body 3",
"private": true,
"main": "",
"types": "./typings/index.d.ts",
"scripts": {
"test": "npm run lint",
"lint": "eslint static && stylelint static",
"lint:fix": "eslint static --fix && stylelint static --fix"
},
"repository": {
"type": "git",
"url": "git+https://github.com/TFNRP/axonbody3.git"
},
"author": "Reece Stokes <hagen@hyena.gay>",
"license": "MIT",
"bugs": {
"url": "https://github.com/TFNRP/axonbody3/issues"
},
"homepage": "https://github.com/TFNRP/axonbody3#readme",
"devDependencies": {
"@types/howler": "^2.1.1",
"@types/jquery": "^3.5.13",
"eslint": "^8.7.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
"stylelint": "^14.2.0",
"stylelint-config-standard": "^24.0.0",
"typescript": "^4.5.4"
},
"engines": {
"node": "^17"
}
}
42 changes: 1 addition & 41 deletions static/index.html
Expand Up @@ -8,47 +8,7 @@
integrity="sha512-6+YN/9o9BWrk6wSfGxQGpt3EUK6XeHi6yeHV+TYD2GR0Sj/cggRpXr1BrAQf0as6XslxomMUxXp2vIl+fv0QRA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link href="./style.css" rel="stylesheet">
<script>
var offset = 0,
setoffset = 0,
utc = false,
player = new Howl({ src: ['./beep.wav'] }),
serial = '6039',
keys = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

for (var i = 0; i < 4; i++) {
serial += keys.charAt(Math.floor(Math.random() * (keys.length)));
}

setInterval(() => {
const now = new Date();
let offset = now.getTimezoneOffset() / -60;
now.setTime(now.getTime() + offset * 60);
if (
now.getTimezoneOffset() <
Math.max(
new Date(now.getFullYear(), 0, 1).getTimezoneOffset(),
new Date(now.getFullYear(), 6, 1).getTimezoneOffset()
)
) offset += 1;
const iso = new Date(now.getTime() + (offset * 36e5)).toISOString();
$('#date').text(`${iso.substring(0, 10)} ${iso.substring(11, 19)} ${offset < 0 ? '-' : '+'}${Math.abs(offset).toString().padEnd(3, '0').padStart(4, '0')}`);
}, 1e3)

$(() => {
window.addEventListener('message', function (event) {
if ('AxonUIPresence' in event.data) {
$('#ui').css('display', event.data.AxonUIPresence ? 'block' : 'none');
}

if ('AxonBeep' in event.data) {
player.volume(event.data.AxonBeep.volume);
player.play();
}
});
$('#text').text('AXON BODY 3 X' + serial);
});
</script>
<script src="./index.js"></script>
</head>

<body>
Expand Down
47 changes: 47 additions & 0 deletions static/index.js
@@ -0,0 +1,47 @@
/// <reference types="howler"/>
/// <reference types="jquery"/>

'use strict';

var player = new Howl({ src: ['./beep.wav'] }),
serial = '6039',
keys = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

for (var i = 0; i < 4; i++) {
serial += keys.charAt(Math.floor(Math.random() * keys.length));
}
setInterval(() => {
const now = new Date();
let offset = now.getTimezoneOffset() / -60;
now.setTime(now.getTime() + offset * 60);
if (
now.getTimezoneOffset() <
Math.max(
new Date(now.getFullYear(), 0, 1).getTimezoneOffset(),
new Date(now.getFullYear(), 6, 1).getTimezoneOffset(),
)
) {
offset += 1;
}
const iso = new Date(now.getTime() + offset * 36e5).toISOString();
$('#date').text(
`${iso.substring(0, 10)} ${iso.substring(11, 19)} ${offset < 0 ? '-' : '+'}${Math.abs(offset)
.toString()
.padEnd(3, '0')
.padStart(4, '0')}`,
);
}, 1e3);

$(() => {
window.addEventListener('message', event => {
if ('AxonUIPresence' in event.data) {
$('#ui').css('display', event.data.AxonUIPresence ? 'block' : 'none');
}

if ('AxonBeep' in event.data) {
player.volume(event.data.AxonBeep.volume);
player.play();
}
});
$('#text').text(`AXON BODY 3 X${serial}`);
});
83 changes: 45 additions & 38 deletions static/style.css
@@ -1,70 +1,77 @@
@font-face {
font-family:"Klartext Mono Bold";
font-family: "Klartext Mono Bold";
src: url("KlartextMonoBold.ttf") format("truetype");
}

p {
display:inline;
text-align:left;
font-family:"Klartext Mono Bold", monospace;
font-weight:600;
font-style:normal;
text-shadow:-1px -1px 0 black,
1px -1px 0 black,
-1px 1px 0 black,
1px 1px 0 black;
color:rgb(255,255,255);
font-size:1.2vw;
margin:1%;
display: inline;
text-align: left;
font-family: "Klartext Mono Bold", monospace;
font-weight: 600;
font-style: normal;
text-shadow:
-1px -1px 0 black,
1px -1px 0 black,
-1px 1px 0 black,
1px 1px 0 black;
color: rgb(255 255 255);
font-size: 1.2vw;
margin: 1%;
}

body {
user-select:none;
overflow:hidden;
user-select: none;
overflow: hidden;
}

p,button,div,svg,img,input,select {
position:absolute;
p,
button,
div,
svg,
img,
input,
select {
position: absolute;
}

#ui {
display:none;
display: none;
}

#date {
top:3vw;
left:79.5vw;
width:17vw;
top: 3vw;
left: 79.5vw;
width: 17vw;
}

#text {
top:4.2vw;
left:79.5vw;
width:17vw;
top: 4.2vw;
left: 79.5vw;
width: 17vw;
}

#logo {
top:2.6vw;
left:95vw;
width:3.5vw;
height:3.5vw;
top: 2.6vw;
left: 95vw;
width: 3.5vw;
height: 3.5vw;
}

svg {
display:none;
top:2.5vw;
left:81vw;
width:18vw;
height:3.8vw;
z-index:-1;
display: none;
top: 2.5vw;
left: 81vw;
width: 18vw;
height: 3.8vw;
z-index: -1;
}

rect {
fill:rgb(40,40,40);
width:100%;
height:100%;
fill: rgb(40 40 40);
width: 100%;
height: 100%;
}

img {
opacity: .75;
opacity: 0.75;
}