| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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" | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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}`); | ||
| }); |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,70 +1,77 @@ | ||
| @font-face { | ||
| 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%; | ||
| } | ||
|
|
||
| body { | ||
| user-select: none; | ||
| overflow: hidden; | ||
| } | ||
|
|
||
| p, | ||
| button, | ||
| div, | ||
| svg, | ||
| img, | ||
| input, | ||
| select { | ||
| position: absolute; | ||
| } | ||
|
|
||
| #ui { | ||
| display: none; | ||
| } | ||
|
|
||
| #date { | ||
| top: 3vw; | ||
| left: 79.5vw; | ||
| width: 17vw; | ||
| } | ||
|
|
||
| #text { | ||
| top: 4.2vw; | ||
| left: 79.5vw; | ||
| width: 17vw; | ||
| } | ||
|
|
||
| #logo { | ||
| 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; | ||
| } | ||
|
|
||
| rect { | ||
| fill: rgb(40 40 40); | ||
| width: 100%; | ||
| height: 100%; | ||
| } | ||
|
|
||
| img { | ||
| opacity: 0.75; | ||
| } |