Showing preview only (483K chars total). Download the full file or copy to clipboard to get everything.
Repository: overextended/ox_core
Branch: main
Commit: d20de0b00419
Files: 102
Total size: 454.8 KB
Directory structure:
gitextract_tzxqlagq/
├── .editorconfig
├── .github/
│ ├── actions/
│ │ └── bump-package-version.js
│ └── workflows/
│ └── release.yml
├── .gitignore
├── .npmignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── biome.json
├── build.js
├── client/
│ ├── config.ts
│ ├── death.ts
│ ├── index.ts
│ ├── player/
│ │ ├── index.ts
│ │ └── status.ts
│ ├── spawn.ts
│ ├── tsconfig.json
│ ├── utils.ts
│ └── vehicle/
│ ├── index.ts
│ └── parser.ts
├── common/
│ ├── config.ts
│ ├── data/
│ │ ├── hospitals.json
│ │ ├── vehicleStats.json
│ │ └── vehicles.json
│ ├── index.ts
│ ├── locales.ts
│ ├── tsconfig.json
│ └── vehicles.ts
├── lib/
│ ├── client/
│ │ ├── index.ts
│ │ ├── init.lua
│ │ ├── player.lua
│ │ └── player.ts
│ ├── index.ts
│ ├── init.lua
│ ├── server/
│ │ ├── account.lua
│ │ ├── account.ts
│ │ ├── index.ts
│ │ ├── init.lua
│ │ ├── player.lua
│ │ ├── player.ts
│ │ ├── vehicle.lua
│ │ └── vehicle.ts
│ └── tsconfig.json
├── locales/
│ ├── ar.json
│ ├── bg.json
│ ├── cs.json
│ ├── da.json
│ ├── de.json
│ ├── en.json
│ ├── es.json
│ ├── et.json
│ ├── fr.json
│ ├── hu.json
│ ├── it.json
│ ├── jp.json
│ ├── lt.json
│ ├── nl.json
│ ├── no.json
│ ├── pl.json
│ ├── ro.json
│ ├── ru.json
│ ├── sk.json
│ ├── tr.json
│ ├── zh-cn.json
│ └── zh-tw.json
├── package.json
├── server/
│ ├── accounts/
│ │ ├── class.ts
│ │ ├── db.ts
│ │ ├── index.ts
│ │ └── roles.ts
│ ├── bridge/
│ │ ├── index.ts
│ │ ├── npwd.ts
│ │ └── ox_inventory.ts
│ ├── classInterface.ts
│ ├── commands.ts
│ ├── config.ts
│ ├── db/
│ │ ├── config.ts
│ │ ├── index.ts
│ │ ├── pool.ts
│ │ └── schema.ts
│ ├── groups/
│ │ ├── db.ts
│ │ └── index.ts
│ ├── index.ts
│ ├── player/
│ │ ├── class.ts
│ │ ├── commands.ts
│ │ ├── db.ts
│ │ ├── events.ts
│ │ ├── index.ts
│ │ ├── license.ts
│ │ ├── loading.ts
│ │ └── status.ts
│ ├── tsconfig.json
│ ├── utils.ts
│ └── vehicle/
│ ├── class.ts
│ ├── commands.ts
│ ├── db.ts
│ ├── events.ts
│ ├── index.ts
│ └── parser.ts
├── sql/
│ └── install.sql
├── tsconfig.json
└── types/
└── index.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = crlf
charset = utf-8
insert_final_newline = true
max_line_length = 120
[*.lua]
indent_size = 4
max_line_length = 160
================================================
FILE: .github/actions/bump-package-version.js
================================================
const packageJson = await Bun.file('./package.json').json();
const newVersion = process.env.TGT_RELEASE_VERSION;
packageJson.version = newVersion.replace('v', '');
await Bun.write('./package.json', JSON.stringify(packageJson, null, 2));
================================================
FILE: .github/workflows/release.yml
================================================
name: Create release
on:
push:
tags:
- "v*.*.*"
permissions:
id-token: write # Required for OIDC
contents: write
jobs:
create-release:
if: github.actor_id != 278903378
runs-on: ubuntu-latest
steps:
- name: Install zip
run: sudo apt install zip
- name: Install Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Generate GitHub App token
id: app_token
uses: tibdex/github-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Get latest code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.repository.default_branch }}
token: ${{ steps.app_token.outputs.token }}
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "24"
- name: Install Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Bump package version
run: bun run .github/actions/bump-package-version.js
env:
TGT_RELEASE_VERSION: ${{ github.ref_name }}
- name: Push version bump change
uses: EndBug/add-and-commit@v9
with:
add: package.json
push: true
default_author: github_actions
message: "chore: bump version to ${{ github.ref_name }}"
- name: Build
run: |
bun install --frozen-lockfile
bun run build
env:
TGT_RELEASE_VERSION: ${{ github.ref_name }}
- name: Bundle files
run: |
mkdir -p ./temp/ox_core/common
cp ./{LICENSE,README.md,fxmanifest.lua} ./temp/ox_core
cp -r ./{lib,locales,sql,dist} ./temp/ox_core
cp -r ./common/data ./temp/ox_core/common/data
cd ./temp && zip -r ../ox_core.zip ./ox_core
- name: Publish package to npm registry
run: npm publish --access public
- name: Create release
uses: "marvinpinto/action-automatic-releases@v1.2.1"
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
prerelease: false
files: ox_core.zip
- name: Update tag
uses: EndBug/latest-tag@v1
with:
ref: ${{ github.ref_name }}
================================================
FILE: .gitignore
================================================
# ignore
node_modules
dist
fxmanifest.lua
.yarn.installed
*.zip
**.d.ts
*.tgz
*.tsbuildinfo
/package/
/temp/
# keep
!./build.js
================================================
FILE: .npmignore
================================================
!/package/
!**.d.ts
!**.js
================================================
FILE: CONTRIBUTING.md
================================================
## Found a bug?
- Check if the bug has already been reported under under [Issues](https://github.com/overextended/ox_core/issues).
- If an **active** issue matches your own, provide additional information on the existing issue.
- If there is no **open** issue related to the bug, create a new issue. Include a **descriptive title and clear description** with as much relevant information as possible, and include **code samples** or **reproduction steps**.
- Use the relevant bug report template when creating an issue.
## Patched a bug?
- Open a new pull request including **only** the related changes.
- Clearly describe the problem being fixed, and the solution. If the patch resolves any issues, mention them in the description.
## Want to share an improvement or add a new feature?
- Create an issue discussing the change and wait for feedback.
- If you've already worked on the change you can submit a **draft** pull request for feedback and review.
- Not all features and changes are desired! Changes may be messy, poorly-planned, incomplete, or simply incompatible with our design philosophy.
## Is your change cosmetic (e.g. formatting)?
- We will not accept pull requests that do not make substantial changes to the stability or functionality of the resource.
## Submitting pull requests
- Fork the repo and create a new branch.
- If relevant, include example code to demonstrate your changes.
- If you have modified or changed APIs, submit the changes to our [documentation](https://github.com/overextended/docs).
- Ensure your coding style is consistent with the project.
================================================
FILE: LICENSE
================================================
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
================================================
FILE: README.md
================================================
# ox_core
A modern FiveM framework.




## 🔗 Links
- 📚 [Documentation](https://overextended.dev/ox_core)
- For installation, setup, and everything else.
- 🧾 [txAdmin recipe](https://github.com/overextended/txAdminRecipe)
- Install and configure ox_core in minutes.
- 📦 [npm](https://www.npmjs.com/package/@overextended/ox_core)
- Use our npm package to create JavaScript resources using ox_core.
- 🛤️ [Cfx.re](https://forum.cfx.re/t/pre-release-ox-core-player-and-vehicle-management/5253275)
- See our release thread for discussions or other information.
## Third-party resources
When releasing a resource using the this framework _do not use the ox prefix_. This creates confusion about the creator of the resource, and causes conflicts between similarly named resources.
## Copyright
Copyright © 2024 Overextended <https://github.com/overextended>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
================================================
FILE: biome.json
================================================
{
"files": {
"include": ["./client/*.ts", "./common/*.ts", "./server/*.ts"],
"ignore": ["**/*.d.ts"]
},
"linter": {
"enabled": false,
"rules": {
"suspicious": {
"noConfusingLabels": "off",
"noAssignInExpressions": "off",
"noExplicitAny": "off",
"noFallthroughSwitchClause": "off",
"noGlobalIsNan": "off",
"noControlCharactersInRegex": "off"
},
"correctness": {
"noUnusedLabels": "off",
"noVoidTypeReturn": "off"
},
"style": {
"useEnumInitializers": "off",
"noNonNullAssertion": "off",
"noParameterAssign": "off",
"noArguments": "off",
"noUnusedTemplateLiteral": {
"fix": "safe"
}
},
"performance": {
"noDelete": "off"
},
"complexity": {
"noForEach": "off",
"noUselessConstructor": "off",
"noStaticOnlyClass": "off",
"noThisInStatic": "off"
}
}
},
"formatter": {
"enabled": true,
"formatWithErrors": false,
"ignore": [],
"attributePosition": "auto",
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 120,
"lineEnding": "lf"
},
"javascript": {
"formatter": {
"arrowParentheses": "always",
"bracketSameLine": false,
"bracketSpacing": true,
"jsxQuoteStyle": "single",
"quoteProperties": "asNeeded",
"quoteStyle": "single",
"semicolons": "always",
"trailingCommas": "all"
}
},
"json": {
"formatter": {
"trailingCommas": "none"
}
}
}
================================================
FILE: build.js
================================================
//@ts-check
import { createBuilder, createFxmanifest } from "@overextended/fx-utils";
import { spawn } from "child_process";
const watch = process.argv.includes("--watch");
function exec(command) {
return new Promise((resolve) => {
const child = spawn(command, { stdio: "inherit", shell: true });
child.on("exit", (code) => {
resolve(code === 0);
});
});
}
if (!watch) {
const tsc = await exec(`tsc --build ${watch ? "--watch --preserveWatchOutput" : ""} && tsc-alias`);
if (!tsc) process.exit(0);
}
createBuilder(
watch,
{
dropLabels: !watch ? ["DEV"] : undefined,
},
[
{
name: "server",
options: {
platform: "node",
target: ["node22"],
format: "cjs",
entryPoints: [`./server/index.ts`],
},
},
{
name: "client",
options: {
platform: "browser",
target: ["es2023"],
format: "iife",
entryPoints: [`./client/index.ts`],
},
},
],
async (files) => {
await createFxmanifest({
client_scripts: [files.client],
server_scripts: [files.server],
files: ["lib/init.lua", "lib/client/**.lua", "locales/*.json", "common/data/*.json"],
dependencies: ["/server:12913", "/onesync"],
metadata: { node_version: "22" },
});
},
);
================================================
FILE: client/config.ts
================================================
export * from '../common/config';
export const DEATH_SYSTEM = GetConvarInt('ox:deathSystem', 1) === 1;
export const CHARACTER_SELECT = GetConvarInt('ox:characterSelect', 1) === 1;
export const SPAWN_LOCATION = JSON.parse(GetConvar('ox:spawnLocation', '[-258.211, -293.077, 21.6132, 206.0]'));
export const HOSPITAL_BLIPS = GetConvarInt('ox:hospitalBlips', 1) === 1;
================================================
FILE: client/death.ts
================================================
import { cache, requestAnimDict, sleep } from "@overextended/ox_lib/client";
import { Vector3, Vector4 } from "@nativewrappers/fivem";
import { OxPlayer } from "player";
import { DEATH_SYSTEM, DEBUG, HOSPITAL_BLIPS } from "config";
import { LoadDataFile } from "../common";
const hospitals: Vector4[] = LoadDataFile("hospitals").map((vec: number[]) => {
const hospital = Vector4.fromArray(vec);
if (HOSPITAL_BLIPS) {
const blip = AddBlipForCoord(hospital.x, hospital.y, hospital.z);
SetBlipSprite(blip, 61);
SetBlipDisplay(blip, 8);
SetBlipScale(blip, 0.8);
SetBlipColour(blip, 35);
SetBlipAsShortRange(blip, true);
}
return hospital;
});
const anims = [
["missfinale_c1@", "lying_dead_player0"],
["veh@low@front_ps@idle_duck", "sit"],
["dead", "dead_a"],
];
let playerIsDead = false;
async function ClearDeath(tickId: number, bleedOut: boolean) {
const anim = cache.vehicle ? anims[1] : anims[0];
clearTick(tickId);
if (bleedOut) {
const coords = Vector3.fromArray(GetEntityCoords(cache.ped, true));
let distance = 1000;
const hospital = hospitals.reduce((closest, hospital) => {
const hospitalDistance = coords.distance(hospital);
if (hospitalDistance > distance) return closest;
distance = hospitalDistance;
return hospital;
});
DoScreenFadeOut(500);
RequestCollisionAtCoord(hospital.x, hospital.y, hospital.z);
while (!IsScreenFadedOut()) await sleep(0);
StopAnimTask(cache.ped, anim[0], anim[1], 8.0);
SetEntityCoordsNoOffset(cache.ped, hospital.x, hospital.y, hospital.z, false, false, false);
SetEntityHeading(cache.ped, hospital.w);
SetGameplayCamRelativeHeading(0);
await sleep(500);
DoScreenFadeIn(500);
while (!IsScreenFadedIn()) await sleep(0);
} else {
StopAnimTask(cache.ped, anim[0], anim[1], 8.0);
}
ClearPedBloodDamage(cache.ped);
SetPlayerControl(cache.playerId, false, 0);
SetEveryoneIgnorePlayer(cache.playerId, false);
SetPlayerControl(cache.playerId, true, 0);
SetPlayerInvincible(cache.playerId, false);
for (let index = 0; index < anims.length; index++) RemoveAnimDict(anims[index][0]);
emit("ox:playerRevived");
}
const bleedOutTime = DEBUG ? 100 : 1000;
async function OnPlayerDeath() {
OxPlayer.state.set("isDead", true, true);
emit("ox_inventory:disarm");
emit("ox:playerDeath");
if (!DEATH_SYSTEM) return;
for (let index = 0; index < anims.length; index++) await requestAnimDict(anims[index][0]);
ShakeGameplayCam("DEATH_FAIL_IN_EFFECT_SHAKE", 1.0);
let bleedOut = 0;
const tickId = setTick(() => {
const anim = cache.vehicle ? anims[1] : anims[0];
if (!IsEntityPlayingAnim(cache.ped, anim[0], anim[1], 3))
TaskPlayAnim(cache.ped, anim[0], anim[1], 50.0, 8.0, -1, 1, 1.0, false, false, false);
DisableFirstPersonCamThisFrame();
bleedOut++;
if (bleedOut > bleedOutTime) ClearDeath(tickId, true);
});
const coords = GetEntityCoords(cache.ped, true);
const health = Math.floor(Math.max(100, GetEntityMaxHealth(cache.ped) * 0.8));
NetworkResurrectLocalPlayer(coords[0], coords[1], coords[2], GetEntityHeading(cache.ped), 0, false);
if (cache.vehicle) SetPedIntoVehicle(cache.ped, cache.vehicle, cache.seat as number);
SetEntityInvincible(cache.ped, true);
SetEntityHealth(cache.ped, health);
SetEveryoneIgnorePlayer(cache.playerId, true);
}
AddStateBagChangeHandler("isDead", `player:${cache.serverId}`, async (_bagName: string, _key: string, value: any) => {
playerIsDead = value;
});
function ResetDeathState() {
OxPlayer.state.set("isDead", false, true);
}
on("ox:playerLogout", ResetDeathState);
on("ox:playerRevived", ResetDeathState);
on("ox:playerLoaded", () => {
const id: CitizenTimer = setInterval(() => {
if (!OxPlayer.isLoaded) return clearInterval(id);
if (!playerIsDead && IsPedDeadOrDying(PlayerPedId(), true)) OnPlayerDeath();
}, 200);
});
================================================
FILE: client/index.ts
================================================
export * from '../common';
import { PLATE_PATTERN } from 'config';
import 'player';
import 'spawn';
import 'death';
import 'vehicle';
for (let i = 0; i < GetNumberOfVehicleNumberPlates(); i++) {
SetDefaultVehicleNumberPlateTextPattern(i, PLATE_PATTERN);
}
================================================
FILE: client/player/index.ts
================================================
import { netEvent } from 'utils';
import type { Character, Dict, OxGroup, OxStatus, PlayerMetadata } from 'types';
import { GetGroupPermissions } from '../../common';
export const Statuses: Dict<OxStatus> = {};
const callableMethods: Dict<true> = {};
class PlayerSingleton {
userId: number;
charId?: number;
stateId?: string;
#isLoaded: boolean;
#groups: Dict<number>;
#statuses: Dict<number>;
#metadata: Dict<any>;
#state: StateBagInterface;
constructor() {
this.#isLoaded = false;
this.#groups = {};
this.#statuses = {};
this.#metadata = {};
this.#state = LocalPlayer.state;
Object.entries(Object.getOwnPropertyDescriptors(this.constructor.prototype)).reduce(
(methods: { [key: string]: true }, [name, desc]) => {
if (name !== 'constructor' && desc.writable && typeof desc.value === 'function') methods[name] = true;
return methods;
},
callableMethods,
);
netEvent('ox:startCharacterSelect', (userId: number) => {
this.userId = userId;
for (const key in this.#groups) delete this.#groups[key];
for (const key in this.#metadata) delete this.#metadata[key];
});
netEvent('ox:setActiveCharacter', async (character: Character, groups: Record<string, number>) => {
OxPlayer.charId = character.charId;
OxPlayer.stateId = character.stateId;
for (const key in groups) this.#groups[key] = groups[key];
DEV: {
console.log(this);
console.log(this.#groups);
console.log(this.#statuses);
}
});
netEvent('ox:setPlayerData', (key: string, value: any) => {
if (!this.charId) return;
this.#metadata[key] = value;
emit(`ox:player:${key}`, value);
});
netEvent('ox:setPlayerStatus', (key: string, value: number, set?: boolean) => {
if (set) {
Statuses[key] = GlobalState[`status.${key}`];
}
this.#statuses[key] = value;
});
netEvent('ox:setGroup', (name: string, grade: number) => {
this.#groups[name] = grade;
});
exports('GetPlayer', () => this);
exports('GetPlayerCalls', () => callableMethods);
exports('CallPlayer', (method: string, ...args: any[]) => {
const fn = (this as any)[method];
if (!fn) return console.error(`cannot call method ${method} (method does not exist)`);
if (!callableMethods[method]) return console.error(`cannot call method ${method} (method is not exported)`);
return fn.bind(this)(...args); // why :\
});
}
get isLoaded() {
return this.#isLoaded;
}
set isLoaded(state: boolean) {
this.#isLoaded = state;
}
get state() {
return this.#state;
}
get<K extends string>(key: K | keyof PlayerMetadata): K extends keyof PlayerMetadata ? PlayerMetadata[K] : any;
get(key?: string) {
if (!key) return OxPlayer;
return this.#metadata[key];
}
getGroup(filter: string): number;
getGroup(filter: string[] | Record<string, number>): [string, number] | [];
getGroup(filter: string | string[] | Record<string, number>) {
if (typeof filter === 'string') {
return this.#groups[filter];
}
if (Array.isArray(filter)) {
for (const name of filter) {
const grade = this.#groups[name];
if (grade) return [name, grade];
}
} else if (typeof filter === 'object') {
for (const [name, requiredGrade] of Object.entries(filter)) {
const grade = this.#groups[name];
if (grade && (requiredGrade as number) <= grade) {
return [name, grade];
}
}
}
}
getGroupByType(type: string) {
const groupNames: string[] = GlobalState.groups;
const groups = groupNames.reduce((acc, groupName) => {
const group: OxGroup = GlobalState[`group.${groupName}`];
if (group.type === type) acc.push(groupName);
return acc;
}, [] as string[]);
return this.getGroup(groups);
}
getGroups() {
return this.#groups;
}
getStatus(name: string) {
return this.#statuses[name];
}
getStatuses() {
return this.#statuses;
}
setStatus(name: string, value: number) {
if (this.#statuses[name] === undefined) return false;
this.#statuses[name] = value < 0 ? 0 : value > 100 ? 100 : Number.parseFloat((value).toPrecision(8));
return true;
}
addStatus(name: string, value: number) {
if (this.#statuses[name] === undefined) return false;
const newValue = this.#statuses[name] + value;
this.#statuses[name] = newValue < 0 ? 0 : newValue > 100 ? 100 : Number.parseFloat((newValue).toPrecision(8));
return true;
}
removeStatus(name: string, value: number) {
if (this.#statuses[name] === undefined) return false;
const newValue = this.#statuses[name] - value;
this.#statuses[name] = newValue < 0 ? 0 : newValue > 100 ? 100 : Number.parseFloat((newValue).toPrecision(8));
return true;
}
hasPermission(permission: string): boolean {
const matchResult = permission.match(/^group\.([^.]+)\.(.*)/);
const groupName = matchResult?.[1];
permission = matchResult?.[2] ?? permission;
if (groupName) {
const grade = this.#groups[groupName];
if (!grade) return false;
const permissions = GetGroupPermissions(groupName);
for (let g = grade; g > 0; g--) {
const value = permissions[g] && permissions[g][permission];
if (value !== undefined) return value;
}
}
return false;
}
}
export const OxPlayer = new PlayerSingleton();
import './status';
================================================
FILE: client/player/status.ts
================================================
import { OxPlayer, Statuses } from 'player';
function UpdateStatuses() {
for (const name in Statuses) {
const status = Statuses[name];
if (!status?.onTick) continue;
const curValue = OxPlayer.getStatus(name) ?? status.default;
const newValue = curValue + status.onTick;
OxPlayer.setStatus(
name,
newValue < 0 ? 0 : newValue > 100 ? 100 : Number.parseFloat((newValue).toPrecision(8)),
);
}
emit('ox:statusTick', OxPlayer.getStatuses());
emitNet('ox:updateStatuses', OxPlayer.getStatuses());
}
on('ox:playerLoaded', () => {
const id: CitizenTimer = setInterval(() => {
if (!OxPlayer.isLoaded) return clearInterval(id);
UpdateStatuses();
}, 1000);
});
================================================
FILE: client/spawn.ts
================================================
import { sleep, waitFor } from "@overextended/ox_lib";
import { cache, inputDialog } from "@overextended/ox_lib/client";
import { OxPlayer } from "./player";
import { netEvent } from "utils";
import { CHARACTER_SELECT, SPAWN_LOCATION } from "config";
import locale from "../common/locales";
import type { Character, NewCharacter } from "types";
DoScreenFadeOut(0);
NetworkStartSoloTutorialSession();
setTimeout(() => emitNet("ox:playerJoined"));
async function StartSession() {
if (IsPlayerSwitchInProgress()) {
StopPlayerSwitch();
}
if (GetIsLoadingScreenActive()) {
SendLoadingScreenMessage('{"fullyLoaded": true}');
ShutdownLoadingScreenNui();
}
NetworkStartSoloTutorialSession();
DoScreenFadeOut(0);
ShutdownLoadingScreen();
SetPlayerControl(cache.playerId, false, 0);
SetPlayerInvincible(cache.playerId, true);
while (!OxPlayer.isLoaded) {
DisableAllControlActions(0);
ThefeedHideThisFrame();
HideHudAndRadarThisFrame();
await sleep(0);
}
NetworkEndTutorialSession();
SetPlayerControl(cache.playerId, true, 0);
SetPlayerInvincible(cache.playerId, false);
SetMaxWantedLevel(0);
NetworkSetFriendlyFireOption(true);
SetPlayerHealthRechargeMultiplier(cache.playerId, 0.0);
}
netEvent("ox:startCharacterSelect", async (_userId: number, characters: Character[]) => {
if (OxPlayer.isLoaded) {
OxPlayer.isLoaded = false;
emit("ox:playerLogout");
}
StartSession();
if (!CHARACTER_SELECT) return;
const character = characters[0];
const [x, y, z] = [
character?.x || SPAWN_LOCATION[0],
character?.y || SPAWN_LOCATION[1],
character?.z || SPAWN_LOCATION[2],
];
const heading = character?.heading || SPAWN_LOCATION[3];
RequestCollisionAtCoord(x, y, z);
FreezeEntityPosition(cache.ped, true);
SetEntityCoordsNoOffset(cache.ped, x, y, z, true, true, false);
SetEntityHeading(cache.ped, heading);
SwitchOutPlayer(cache.ped, 1 | 8192, 1);
while (GetPlayerSwitchState() !== 5) await sleep(0);
DoScreenFadeIn(200);
if (character) {
return emitNet("ox:setActiveCharacter", character.charId);
}
const input = await inputDialog(
locale("create_character"),
[
{
type: "input",
required: true,
icon: "user-pen",
label: locale("firstname"),
placeholder: "John",
},
{
type: "input",
required: true,
icon: "user-pen",
label: locale("lastname"),
placeholder: "Smith",
},
{
type: "select",
required: true,
icon: "circle-user",
label: locale("gender"),
options: [
{
label: locale("male"),
value: "male",
},
{
label: locale("female"),
value: "female",
},
{
label: locale("non_binary"),
value: "non_binary",
},
],
},
{
type: "date",
required: true,
icon: "calendar-days",
label: locale("date_of_birth"),
format: "YYYY-MM-DD",
min: "1900-01-01",
max: "2006-01-01",
default: "2006-01-01",
},
],
{
allowCancel: false,
},
);
if (!input) return;
emitNet("ox:setActiveCharacter", <NewCharacter>{
firstName: input[0] as string,
lastName: input[1] as string,
gender: input[2] as string,
date: input[3] as number,
});
});
netEvent("ox:setActiveCharacter", async (character: Character) => {
if (CHARACTER_SELECT) {
SwitchInPlayer(PlayerPedId());
SetGameplayCamRelativeHeading(0);
}
await waitFor(() => (IsScreenFadedIn() && !IsPlayerSwitchInProgress() ? true : undefined), "", 0);
SetEntityHealth(cache.ped, character.health ?? GetEntityMaxHealth(cache.ped));
SetPedArmour(cache.ped, character.armour ?? 0);
FreezeEntityPosition(cache.ped, false);
OxPlayer.isLoaded = true;
emit("playerSpawned");
emit("ox:playerLoaded", OxPlayer, character.isNew);
});
================================================
FILE: client/tsconfig.json
================================================
{
"extends": "../tsconfig.json",
"compilerOptions": {
"baseUrl": ".",
"types": ["@citizenfx/client"],
"composite": true,
"paths": {
"types": ["../types"]
}
},
"include": ["./", "../types", "../common/", "../locales/en.json"]
}
================================================
FILE: client/utils.ts
================================================
export function netEvent(event: string, fn: Function) {
onNet(event, (...args: any[]) => {
if ((source as any) !== '') fn(...args);
});
}
================================================
FILE: client/vehicle/index.ts
================================================
import { cache, onServerCallback, waitFor } from "@overextended/ox_lib/client";
import { Vector3 } from "@nativewrappers/fivem";
import { DEBUG } from "../config";
if (DEBUG) import("./parser");
onServerCallback("ox:getNearbyVehicles", (radius: number) => {
const nearbyEntities: number[] = [];
const playerCoords = Vector3.fromArray(GetEntityCoords(cache.ped, true));
(GetGamePool("CVehicle") as number[]).forEach((entityId) => {
const coords = Vector3.fromArray(GetEntityCoords(entityId, true));
const distance = coords.distance(playerCoords);
if (distance <= (radius ?? 2) && NetworkGetEntityIsNetworked(entityId)) nearbyEntities.push(VehToNet(entityId));
});
return nearbyEntities;
});
AddStateBagChangeHandler("initVehicle", "", async (bagName: string, key: string, value: any) => {
if (!value) return;
await waitFor(() => (!NetworkIsInTutorialSession() ? true : undefined), "", 0);
const entity = await waitFor(
async () => {
const entity = GetEntityFromStateBagName(bagName);
if (entity) return entity;
},
`failed to get entity from statebag name ${bagName}`,
10000,
);
if (!entity) return;
await waitFor(async () => {
if (!IsEntityWaitingForWorldCollision(entity)) return true;
});
if (NetworkGetEntityOwner(entity) !== cache.playerId) return;
SetVehicleOnGroundProperly(entity);
setTimeout(() => Entity(entity).state.set(key, null, true));
});
================================================
FILE: client/vehicle/parser.ts
================================================
import { cache, notify, onServerCallback, requestModel, sleep } from "@overextended/ox_lib/client";
import { GetTopVehicleStats, GetVehicleData } from "../../common/vehicles";
import type { VehicleData, VehicleTypes, VehicleCategories } from "types";
const PRICE_WEIGHTS: Record<VehicleTypes, number> = {
automobile: 1600,
bicycle: 150,
bike: 500,
boat: 6000,
heli: 90000,
plane: 16000,
quadbike: 1100,
train: 6000,
submarinecar: 26000,
submarine: 22000,
blimp: 14000,
trailer: 10000,
amphibious_automobile: 6400,
amphibious_quadbike: 4600,
};
const BATCH_SIZE = 10;
const vehicles = GetVehicleData();
function GetVehicleModels(parseAll: boolean): string[] {
return GetAllVehicleModels()
.filter((vehicle: string) => parseAll || !vehicles[vehicle])
.sort();
}
async function IsModelValid(hash: number): Promise<boolean> {
try {
await requestModel(hash, 10000);
return true;
} catch {
return false;
}
}
function SpawnVehicle(hash: number, coords: [number, number, number]): number {
const entity = CreateVehicle(hash, ...coords, 0, false, false);
SetPedIntoVehicle(cache.ped, entity, -1);
return entity;
}
function GetVehicleTypeEx(entity: number): VehicleTypes {
switch (GetVehicleTypeRaw(entity)) {
case 0:
default:
return "automobile";
case 1:
return "plane";
case 2:
return "trailer";
case 3:
return "quadbike";
case 5:
return "submarinecar";
case 6:
return "amphibious_automobile";
case 7:
return "amphibious_quadbike";
case 8:
return "heli";
case 9:
return "blimp";
case 11:
return "bike";
case 12:
return "bicycle";
case 13:
return "boat";
case 14:
return "train";
case 15:
return "submarine";
}
}
function ParseVehicleData(entity: number, hash: number, model: string): VehicleData {
let make = GetMakeNameFromVehicleModel(hash);
if (!make) make = GetMakeNameFromVehicleModel(model.replace(/\W/g, "")) || "";
const vehicleType = GetVehicleTypeEx(entity);
const vehicleCategory: VehicleCategories =
vehicleType === "heli" || vehicleType === "plane" || vehicleType === "blimp"
? "air"
: vehicleType === "boat" || vehicleType === "submarine"
? "sea"
: "land";
const data: VehicleData = {
acceleration: +GetVehicleModelAcceleration(hash).toFixed(4),
braking: +GetVehicleModelMaxBraking(hash).toFixed(4),
handling: +GetVehicleModelEstimatedAgility(hash).toFixed(4),
speed: +GetVehicleModelEstimatedMaxSpeed(hash).toFixed(4),
traction: +GetVehicleModelMaxTraction(hash).toFixed(4),
name: GetLabelText(GetDisplayNameFromVehicleModel(hash)),
make: make ? GetLabelText(make) : "",
class: GetVehicleClass(entity),
seats: GetVehicleModelNumberOfSeats(hash),
doors: GetNumberOfVehicleDoors(entity),
type: vehicleType,
price: 0,
category: vehicleCategory,
};
if (DoesVehicleHaveWeapons(entity)) data.weapons = true;
CalculateVehiclePrice(data, entity);
console.log(`^5Parsed valid model ${model} (${data.make || "?"} ${data.name})^0`);
return data;
}
function CalculateVehiclePrice(data: VehicleData, entity: number) {
let price = data.braking + data.acceleration + data.handling + data.speed;
if (GetVehicleHasKers(entity)) price *= 2;
if (GetHasRocketBoost(entity)) price *= 3;
if (GetCanVehicleJump(entity)) price *= 1.5;
if (GetVehicleHasParachute(entity)) price *= 1.5;
if (data.weapons) price *= 5;
data.price = Math.floor(price * (PRICE_WEIGHTS[data.type] ?? 1));
}
function CleanupVehicle(entity: number, coords: [number, number, number]) {
SetVehicleAsNoLongerNeeded(entity);
SetModelAsNoLongerNeeded(GetEntityModel(entity));
DeleteEntity(entity);
SetEntityCoordsNoOffset(cache.ped, ...coords, false, false, false);
}
/**
* An event only registered when DEBUG is enabled.
* Allows external scripts to freely modify vehicle data.
*/
on("ox:setVehicleData", (model: string, data: Record<string, any>) => {
if (!vehicles[model]) console.error(`Cannot set vehicle data for ${model} (invalid model)`);
Object.assign(vehicles[model], data);
});
onServerCallback("ox:generateVehicleData", async (parseAll: boolean) => {
const coords = GetEntityCoords(cache.ped, true) as [number, number, number];
const invalidVehicles: string[] = [];
const vehicleModels = GetVehicleModels(parseAll);
SetPlayerControl(cache.playerId, false, 1 << 8);
FreezeEntityPosition(cache.ped, true);
notify({ title: "Generating vehicle data", description: `${vehicleModels.length} models loaded.`, type: "inform" });
let parsed = 0;
for (let i = 0; i < vehicleModels.length; i += BATCH_SIZE) {
await Promise.all(
vehicleModels.slice(i, i + BATCH_SIZE).map(async (model) => {
model = model.toLowerCase();
const hash = GetHashKey(model);
const isValid = await IsModelValid(hash);
if (!isValid) return invalidVehicles.push(model);
try {
const entity = SpawnVehicle(hash, coords);
vehicles[model] = ParseVehicleData(entity, hash, model);
emit(`ox:parsedVehicle`, model, entity);
++parsed;
CleanupVehicle(entity, coords);
} catch {
invalidVehicles.push(model);
}
}),
);
}
SetPlayerControl(cache.playerId, true, 0);
FreezeEntityPosition(cache.ped, false);
notify({
title: "Generated vehicle data",
description: `Generated data for ${parsed}/${vehicleModels.length} models.`,
type: "success",
});
console.log(`^5Generated data for ${parsed}/${vehicleModels.length} models.^0`);
if (invalidVehicles.length)
console.log(
`^3Failed to parse data for ${invalidVehicles.length} invalid vehicles.\n${JSON.stringify(invalidVehicles, null, 2)}^0`,
);
await sleep(5000);
return [vehicles, GetTopVehicleStats(), invalidVehicles];
});
================================================
FILE: common/config.ts
================================================
export const SV_LAN = GetConvarInt('sv_lan', 0) === 1;
export const CHARACTER_SLOTS = GetConvarInt('ox:characterSlots', 1);
export const PLATE_PATTERN = GetConvar('ox:plateFormat', '........').toUpperCase();
export const DEFAULT_VEHICLE_STORE = GetConvar('ox:defaultVehicleStore', 'impound');
export const DEBUG = (() => {
DEV: return true;
//@ts-ignore
return SV_LAN || GetConvarInt('ox:debug', 0) === 1;
})();
================================================
FILE: common/data/hospitals.json
================================================
[
[340.5, -1396.8, 32.5, 60.1],
[-449.3, -340.2, 34.5, 76.2],
[295.6, -583.9, 43.2, 79.5],
[1840.1, 3670.7, 33.9, 207.6],
[1153.2, -1526.4, 34.8, 352.4],
[-244.7, 6328.3, 32.4, 242.1]
]
================================================
FILE: common/data/vehicleStats.json
================================================
{
"air": {
"acceleration": 21.56,
"braking": 22.417,
"handling": 21.56,
"speed": 109.7643,
"traction": 2.15
},
"land": {
"acceleration": 0.82,
"braking": 3.1,
"handling": 1.2,
"speed": 53.8674,
"traction": 3.2925
},
"sea": {
"acceleration": 18,
"braking": 0.4,
"handling": 18.38,
"speed": 46.6667,
"traction": 0
}
}
================================================
FILE: common/data/vehicles.json
================================================
{
"adder": {
"acceleration": 0.32,
"braking": 1,
"handling": 0.7,
"speed": 51.771,
"traction": 2.5,
"name": "Adder",
"make": "Truffade",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 86065,
"category": "land"
},
"airbus": {
"acceleration": 0.12,
"braking": 0.25,
"handling": 0.5,
"speed": 25.5809,
"traction": 1.45,
"name": "Airport Bus",
"make": "",
"class": 17,
"seats": 16,
"doors": 5,
"type": "automobile",
"price": 42321,
"category": "land"
},
"airtug": {
"acceleration": 0.06,
"braking": 0.3,
"handling": 0.44,
"speed": 10.9417,
"traction": 1.15,
"name": "Airtug",
"make": "",
"class": 11,
"seats": 2,
"doors": 1,
"type": "automobile",
"price": 18786,
"category": "land"
},
"akula": {
"acceleration": 5.88,
"braking": 3.592,
"handling": 5.88,
"speed": 61.0891,
"traction": 1.3,
"name": "Akula",
"make": "",
"class": 15,
"seats": 4,
"doors": 4,
"type": "heli",
"price": 34398495,
"category": "air",
"weapons": true
},
"akuma": {
"acceleration": 0.4,
"braking": 1.2,
"handling": 0.78,
"speed": 48.3333,
"traction": 2.15,
"name": "Akuma",
"make": "Dinka",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 25356,
"category": "land"
},
"aleutian": {
"acceleration": 0.2795,
"braking": 0.75,
"handling": 0.6595,
"speed": 39.6667,
"traction": 2.098,
"name": "Aleutian",
"make": "Vapid",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 66169,
"category": "land"
},
"alkonost": {
"acceleration": 13.524,
"braking": 11.1734,
"handling": 13.524,
"speed": 82.6192,
"traction": 1.85,
"name": "RO-86 Alkonost",
"make": "",
"class": 16,
"seats": 10,
"doors": 2,
"type": "plane",
"price": 1933449,
"category": "air"
},
"alpha": {
"acceleration": 0.33,
"braking": 1,
"handling": 0.71,
"speed": 49.5388,
"traction": 2.5,
"name": "Alpha",
"make": "Albany",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82526,
"category": "land"
},
"alphaz1": {
"acceleration": 20.58,
"braking": 20.58,
"handling": 20.58,
"speed": 100,
"traction": 1.15,
"name": "Alpha-Z1",
"make": "Buckingham",
"class": 16,
"seats": 1,
"doors": 1,
"type": "plane",
"price": 2587840,
"category": "air"
},
"ambulance": {
"acceleration": 0.18,
"braking": 0.6,
"handling": 0.56,
"speed": 39.9117,
"traction": 1.95,
"name": "Ambulance",
"make": "",
"class": 18,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 66002,
"category": "land"
},
"annihilator": {
"acceleration": 4.606,
"braking": 2.1766,
"handling": 4.606,
"speed": 47.2565,
"traction": 1.3,
"name": "Annihilator",
"make": "",
"class": 15,
"seats": 6,
"doors": 2,
"type": "heli",
"price": 26390295,
"category": "air",
"weapons": true
},
"annihilator2": {
"acceleration": 5.292,
"braking": 2.7894,
"handling": 5.292,
"speed": 52.7096,
"traction": 1.3,
"name": "Annihilator Stealth",
"make": "",
"class": 15,
"seats": 6,
"doors": 4,
"type": "heli",
"price": 29737349,
"category": "air",
"weapons": true
},
"apc": {
"acceleration": 0.21,
"braking": 0.2,
"handling": 0.59,
"speed": 23.0063,
"traction": 2.4,
"name": "APC",
"make": "HVY",
"class": 19,
"seats": 4,
"doors": 4,
"type": "amphibious_automobile",
"price": 768201,
"category": "land",
"weapons": true
},
"ardent": {
"acceleration": 0.285,
"braking": 0.9,
"handling": 0.665,
"speed": 47.791,
"traction": 2.65,
"name": "Ardent",
"make": "Ocelot",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 397128,
"category": "land",
"weapons": true
},
"armytanker": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5051,
"traction": 1.8,
"name": "Army Trailer",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5749,
"category": "land"
},
"armytrailer": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3,
"name": "Army Trailer",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5668,
"category": "land"
},
"armytrailer2": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3,
"name": "Army Trailer",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5668,
"category": "land"
},
"asbo": {
"acceleration": 0.234,
"braking": 0.47,
"handling": 0.614,
"speed": 38.0701,
"traction": 1.92,
"name": "Asbo",
"make": "Maxwell",
"class": 0,
"seats": 2,
"doors": 5,
"type": "automobile",
"price": 63020,
"category": "land"
},
"asea": {
"acceleration": 0.2,
"braking": 0.4,
"handling": 0.58,
"speed": 38.4289,
"traction": 2.05,
"name": "Asea",
"make": "Declasse",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 63374,
"category": "land"
},
"asea2": {
"acceleration": 0.2,
"braking": 0.4,
"handling": 0.58,
"speed": 38.4289,
"traction": 2.05,
"name": "Asea",
"make": "Declasse",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 63374,
"category": "land"
},
"asterope": {
"acceleration": 0.2,
"braking": 0.9,
"handling": 0.58,
"speed": 38.4289,
"traction": 2.5,
"name": "Asterope",
"make": "Karin",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 64174,
"category": "land"
},
"asterope2": {
"acceleration": 0.238,
"braking": 0.9,
"handling": 0.618,
"speed": 42.8105,
"traction": 2.335,
"name": "Asterope GZ",
"make": "Karin",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 71306,
"category": "land"
},
"astron": {
"acceleration": 0.324,
"braking": 0.48,
"handling": 0.704,
"speed": 49.5667,
"traction": 2.185,
"name": "Astron",
"make": "Pfister",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 81719,
"category": "land"
},
"autarch": {
"acceleration": 0.377,
"braking": 1.2,
"handling": 0.757,
"speed": 51.2899,
"traction": 2.705,
"name": "Autarch",
"make": "Overflod",
"class": 7,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 85798,
"category": "land"
},
"avarus": {
"acceleration": 0.27,
"braking": 1,
"handling": 0.65,
"speed": 44.1369,
"traction": 1.85,
"name": "Avarus",
"make": "LCC",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 23028,
"category": "land"
},
"avenger": {
"acceleration": 8.82,
"braking": 8.4657,
"handling": 8.82,
"speed": 95.9834,
"traction": 2.15,
"name": "Avenger",
"make": "Mammoth",
"class": 16,
"seats": 3,
"doors": 3,
"type": "plane",
"price": 9767128,
"category": "air",
"weapons": true
},
"avenger2": {
"acceleration": 8.82,
"braking": 8.4657,
"handling": 8.82,
"speed": 95.9834,
"traction": 2.15,
"name": "Avenger",
"make": "Mammoth",
"class": 16,
"seats": 3,
"doors": 3,
"type": "plane",
"price": 9767128,
"category": "air",
"weapons": true
},
"avenger3": {
"acceleration": 8.82,
"braking": 8.4657,
"handling": 8.82,
"speed": 95.9834,
"traction": 2.15,
"name": "Avenger",
"make": "Mammoth",
"class": 16,
"seats": 3,
"doors": 3,
"type": "plane",
"price": 9767128,
"category": "air",
"weapons": true
},
"avenger4": {
"acceleration": 8.82,
"braking": 8.4657,
"handling": 8.82,
"speed": 95.9834,
"traction": 2.15,
"name": "Avenger",
"make": "Mammoth",
"class": 16,
"seats": 3,
"doors": 3,
"type": "plane",
"price": 9767128,
"category": "air",
"weapons": true
},
"avisa": {
"acceleration": 10.5,
"braking": 0.4,
"handling": 10.88,
"speed": 25,
"traction": 0,
"name": "Avisa",
"make": "Kraken",
"class": 14,
"seats": 4,
"doors": 4,
"type": "submarine",
"price": 1029160,
"category": "sea"
},
"bagger": {
"acceleration": 0.21,
"braking": 1.2,
"handling": 0.59,
"speed": 37.8686,
"traction": 1.65,
"name": "Bagger",
"make": "Western",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 19934,
"category": "land"
},
"baletrailer": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3.3,
"name": "Baletrailer",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5668,
"category": "land"
},
"baller": {
"acceleration": 0.21,
"braking": 0.6,
"handling": 0.59,
"speed": 39.6177,
"traction": 1.9,
"name": "Baller",
"make": "Gallivanter",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 65628,
"category": "land"
},
"baller2": {
"acceleration": 0.27,
"braking": 0.6,
"handling": 0.65,
"speed": 45,
"traction": 2,
"name": "Baller",
"make": "Gallivanter",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74432,
"category": "land"
},
"baller3": {
"acceleration": 0.275,
"braking": 0.6,
"handling": 0.655,
"speed": 45,
"traction": 2,
"name": "Baller LE",
"make": "Gallivanter",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74448,
"category": "land"
},
"baller4": {
"acceleration": 0.27,
"braking": 0.57,
"handling": 0.65,
"speed": 45,
"traction": 2,
"name": "Baller LE LWB",
"make": "Gallivanter",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74384,
"category": "land"
},
"baller5": {
"acceleration": 0.27,
"braking": 0.58,
"handling": 0.65,
"speed": 45,
"traction": 2,
"name": "Baller LE (Armored)",
"make": "Gallivanter",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74400,
"category": "land"
},
"baller6": {
"acceleration": 0.265,
"braking": 0.55,
"handling": 0.645,
"speed": 45,
"traction": 2,
"name": "Baller LE LWB (Armored)",
"make": "Gallivanter",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74336,
"category": "land"
},
"baller7": {
"acceleration": 0.3025,
"braking": 0.7,
"handling": 0.6825,
"speed": 46.5833,
"traction": 2.2,
"name": "Baller ST",
"make": "Gallivanter",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 77229,
"category": "land"
},
"baller8": {
"acceleration": 0.295,
"braking": 0.9225,
"handling": 0.675,
"speed": 46.6667,
"traction": 2.283,
"name": "Baller ST-D",
"make": "Gallivanter",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 77694,
"category": "land"
},
"banshee": {
"acceleration": 0.34,
"braking": 1,
"handling": 0.82,
"speed": 47.5245,
"traction": 2.42,
"name": "Banshee",
"make": "Bravado",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79495,
"category": "land"
},
"banshee2": {
"acceleration": 0.3475,
"braking": 1,
"handling": 0.7275,
"speed": 44.7295,
"traction": 2.5,
"name": "Banshee 900R",
"make": "Bravado",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 74887,
"category": "land"
},
"banshee3": {
"acceleration": 0.3878,
"braking": 0.72,
"handling": 0.8478,
"speed": 53.8674,
"traction": 2.6065,
"name": "Banshee GTS",
"make": "Bravado",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 89316,
"category": "land"
},
"barracks": {
"acceleration": 0.11,
"braking": 0.3,
"handling": 0.49,
"speed": 32.4021,
"traction": 1.65,
"name": "Barracks",
"make": "",
"class": 19,
"seats": 10,
"doors": 4,
"type": "automobile",
"price": 53283,
"category": "land"
},
"barracks2": {
"acceleration": 0.23,
"braking": 1,
"handling": 0.61,
"speed": 35.7058,
"traction": 1.55,
"name": "Barracks Semi",
"make": "HVY",
"class": 19,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 60073,
"category": "land"
},
"barracks3": {
"acceleration": 0.11,
"braking": 0.3,
"handling": 0.49,
"speed": 32.4021,
"traction": 1.65,
"name": "Barracks",
"make": "",
"class": 19,
"seats": 10,
"doors": 4,
"type": "automobile",
"price": 53283,
"category": "land"
},
"barrage": {
"acceleration": 0.2225,
"braking": 0.85,
"handling": 0.6025,
"speed": 39.938,
"traction": 1.75,
"name": "Barrage",
"make": "",
"class": 19,
"seats": 4,
"doors": 4,
"type": "automobile",
"price": 332904,
"category": "land",
"weapons": true
},
"bati": {
"acceleration": 0.3,
"braking": 1.4,
"handling": 0.68,
"speed": 49.296,
"traction": 2.32,
"name": "Bati 801",
"make": "Pegassi",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 25838,
"category": "land"
},
"bati2": {
"acceleration": 0.3,
"braking": 1.4,
"handling": 0.68,
"speed": 49.296,
"traction": 2.32,
"name": "Bati 801RR",
"make": "Pegassi",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 25838,
"category": "land"
},
"benson": {
"acceleration": 0.16,
"braking": 0.25,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.75,
"name": "Benson",
"make": "Vapid",
"class": 20,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 60635,
"category": "land"
},
"benson2": {
"acceleration": 0.16,
"braking": 0.25,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.75,
"name": "Benson (Cluckin' Bell)",
"make": "Vapid",
"class": 20,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 60635,
"category": "land"
},
"besra": {
"acceleration": 21.07,
"braking": 18.4796,
"handling": 21.07,
"speed": 87.7058,
"traction": 2.15,
"name": "Besra",
"make": "Western",
"class": 16,
"seats": 1,
"doors": 1,
"type": "plane",
"price": 2373206,
"category": "air"
},
"bestiagts": {
"acceleration": 0.32,
"braking": 1,
"handling": 0.7,
"speed": 47.7946,
"traction": 2.42,
"name": "Bestia GTS",
"make": "Grotti",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79703,
"category": "land"
},
"bf400": {
"acceleration": 0.29,
"braking": 1.1,
"handling": 0.67,
"speed": 44.1479,
"traction": 2.15,
"name": "BF400",
"make": "Nagasaki",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 23103,
"category": "land"
},
"bfinjection": {
"acceleration": 0.22,
"braking": 0.62,
"handling": 0.6,
"speed": 40.7799,
"traction": 1.85,
"name": "Injection",
"make": "BF",
"class": 9,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 67551,
"category": "land"
},
"biff": {
"acceleration": 0.12,
"braking": 0.3,
"handling": 0.5,
"speed": 34.4979,
"traction": 1.65,
"name": "Biff",
"make": "HVY",
"class": 20,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 56668,
"category": "land"
},
"bifta": {
"acceleration": 0.26,
"braking": 0.7,
"handling": 0.64,
"speed": 45.1953,
"traction": 2.05,
"name": "Bifta",
"make": "BF",
"class": 9,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 74872,
"category": "land"
},
"bison": {
"acceleration": 0.2,
"braking": 0.6,
"handling": 0.58,
"speed": 37.5559,
"traction": 2.05,
"name": "Bison",
"make": "Bravado",
"class": 12,
"seats": 6,
"doors": 6,
"type": "automobile",
"price": 62297,
"category": "land"
},
"bison2": {
"acceleration": 0.2,
"braking": 0.6,
"handling": 0.58,
"speed": 37.5559,
"traction": 2.05,
"name": "Bison",
"make": "Bravado",
"class": 12,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 62297,
"category": "land"
},
"bison3": {
"acceleration": 0.2,
"braking": 0.6,
"handling": 0.58,
"speed": 37.5559,
"traction": 2.05,
"name": "Bison",
"make": "Bravado",
"class": 12,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 62297,
"category": "land"
},
"bjxl": {
"acceleration": 0.19,
"braking": 0.8,
"handling": 0.57,
"speed": 36.3729,
"traction": 2.05,
"name": "BeeJay XL",
"make": "Karin",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 60692,
"category": "land"
},
"blade": {
"acceleration": 0.324,
"braking": 0.8,
"handling": 0.704,
"speed": 42.2471,
"traction": 2.23,
"name": "Blade",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 70520,
"category": "land"
},
"blazer": {
"acceleration": 0.2,
"braking": 1,
"handling": 0.58,
"speed": 33.9831,
"traction": 2.6,
"name": "Blazer",
"make": "Nagasaki",
"class": 9,
"seats": 1,
"doors": 0,
"type": "quadbike",
"price": 39339,
"category": "land"
},
"blazer2": {
"acceleration": 0.12,
"braking": 0.8,
"handling": 0.5,
"speed": 24.7121,
"traction": 2,
"name": "Blazer Lifeguard",
"make": "Nagasaki",
"class": 9,
"seats": 1,
"doors": 0,
"type": "quadbike",
"price": 28745,
"category": "land"
},
"blazer3": {
"acceleration": 0.2,
"braking": 1,
"handling": 0.58,
"speed": 33.9831,
"traction": 2.6,
"name": "Hot Rod Blazer",
"make": "Nagasaki",
"class": 9,
"seats": 1,
"doors": 0,
"type": "quadbike",
"price": 39339,
"category": "land"
},
"blazer4": {
"acceleration": 0.25,
"braking": 1,
"handling": 0.63,
"speed": 38.876,
"traction": 2.7,
"name": "Street Blazer",
"make": "Nagasaki",
"class": 9,
"seats": 1,
"doors": 0,
"type": "quadbike",
"price": 44831,
"category": "land"
},
"blazer5": {
"acceleration": 0.272,
"braking": 1,
"handling": 0.652,
"speed": 40.8773,
"traction": 2.7,
"name": "Blazer Aqua",
"make": "Nagasaki",
"class": 9,
"seats": 1,
"doors": 0,
"type": "amphibious_quadbike",
"price": 984429,
"category": "land",
"weapons": true
},
"blimp": {
"acceleration": 5.684,
"braking": 3.9788,
"handling": 5.684,
"speed": 70,
"traction": 0.65,
"name": "Atomic Blimp",
"make": "",
"class": 16,
"seats": 4,
"doors": 4,
"type": "blimp",
"price": 1194855,
"category": "air"
},
"blimp2": {
"acceleration": 6.076,
"braking": 4.2532,
"handling": 6.076,
"speed": 70,
"traction": 0.65,
"name": "Xero Blimp",
"make": "",
"class": 16,
"seats": 4,
"doors": 4,
"type": "blimp",
"price": 1209672,
"category": "air"
},
"blimp3": {
"acceleration": 5.684,
"braking": 3.9788,
"handling": 5.684,
"speed": 70,
"traction": 0.65,
"name": "Blimp",
"make": "",
"class": 16,
"seats": 4,
"doors": 4,
"type": "blimp",
"price": 1194855,
"category": "air"
},
"blista": {
"acceleration": 0.23,
"braking": 0.6,
"handling": 0.61,
"speed": 41.9174,
"traction": 2.05,
"name": "Blista",
"make": "Dinka",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 69371,
"category": "land"
},
"blista2": {
"acceleration": 0.23,
"braking": 0.55,
"handling": 0.61,
"speed": 41.9174,
"traction": 2.1,
"name": "Blista Compact",
"make": "Dinka",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 69291,
"category": "land"
},
"blista3": {
"acceleration": 0.23,
"braking": 0.55,
"handling": 0.61,
"speed": 41.9174,
"traction": 2.1,
"name": "Go Go Monkey Blista",
"make": "Dinka",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 69291,
"category": "land"
},
"bmx": {
"acceleration": 0.16,
"braking": 3,
"handling": 0.54,
"speed": 14.5335,
"traction": 1.85,
"name": "BMX",
"make": "",
"class": 13,
"seats": 1,
"doors": 1,
"type": "bicycle",
"price": 2735,
"category": "land"
},
"boattrailer": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3.3,
"name": "Boat Trailer",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5668,
"category": "land"
},
"boattrailer2": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3.3,
"name": "Boat Trailer",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5668,
"category": "land"
},
"boattrailer3": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3.3,
"name": "Boat Trailer",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5668,
"category": "land"
},
"bobcatxl": {
"acceleration": 0.18,
"braking": 0.8,
"handling": 0.56,
"speed": 35.1601,
"traction": 1.95,
"name": "Bobcat XL",
"make": "Vapid",
"class": 12,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 58720,
"category": "land"
},
"bodhi2": {
"acceleration": 0.215,
"braking": 1.1,
"handling": 0.595,
"speed": 35.5074,
"traction": 2.25,
"name": "Bodhi",
"make": "Canis",
"class": 9,
"seats": 4,
"doors": 4,
"type": "automobile",
"price": 59867,
"category": "land"
},
"bombushka": {
"acceleration": 5.39,
"braking": 1.9682,
"handling": 5.39,
"speed": 36.5148,
"traction": 0.85,
"name": "RM-10 Bombushka",
"make": "",
"class": 16,
"seats": 6,
"doors": 3,
"type": "plane",
"price": 3941040,
"category": "air",
"weapons": true
},
"boor": {
"acceleration": 0.267,
"braking": 0.68,
"handling": 0.647,
"speed": 40.4296,
"traction": 2.065,
"name": "Boor",
"make": "Karin",
"class": 9,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 67237,
"category": "land"
},
"boxville": {
"acceleration": 0.11,
"braking": 0.25,
"handling": 0.49,
"speed": 28.6961,
"traction": 1.55,
"name": "Boxville",
"make": "Brute",
"class": 12,
"seats": 6,
"doors": 5,
"type": "automobile",
"price": 47273,
"category": "land"
},
"boxville2": {
"acceleration": 0.11,
"braking": 0.25,
"handling": 0.49,
"speed": 28.6961,
"traction": 1.55,
"name": "Boxville",
"make": "",
"class": 12,
"seats": 6,
"doors": 5,
"type": "automobile",
"price": 47273,
"category": "land"
},
"boxville3": {
"acceleration": 0.11,
"braking": 0.25,
"handling": 0.49,
"speed": 28.6961,
"traction": 1.55,
"name": "Boxville",
"make": "Brute",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 47273,
"category": "land"
},
"boxville4": {
"acceleration": 0.11,
"braking": 0.25,
"handling": 0.49,
"speed": 28.6961,
"traction": 1.55,
"name": "Boxville",
"make": "Brute",
"class": 12,
"seats": 6,
"doors": 5,
"type": "automobile",
"price": 47273,
"category": "land"
},
"boxville5": {
"acceleration": 0.32,
"braking": 0.35,
"handling": 0.7,
"speed": 39.4684,
"traction": 2.175,
"name": "Armored Boxville",
"make": "",
"class": 12,
"seats": 5,
"doors": 5,
"type": "automobile",
"price": 326707,
"category": "land",
"weapons": true
},
"boxville6": {
"acceleration": 0.11,
"braking": 0.25,
"handling": 0.49,
"speed": 28.6961,
"traction": 1.55,
"name": "Boxville (LSDS)",
"make": "Brute",
"class": 12,
"seats": 6,
"doors": 5,
"type": "automobile",
"price": 47273,
"category": "land"
},
"brawler": {
"acceleration": 0.28,
"braking": 0.88,
"handling": 0.66,
"speed": 46.6667,
"traction": 1.92,
"name": "Brawler",
"make": "Coil",
"class": 9,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 77578,
"category": "land"
},
"brickade": {
"acceleration": 0.2,
"braking": 0.4,
"handling": 0.58,
"speed": 32.8303,
"traction": 2,
"name": "Brickade",
"make": "MTL",
"class": 17,
"seats": 6,
"doors": 2,
"type": "automobile",
"price": 54416,
"category": "land"
},
"brickade2": {
"acceleration": 0.2,
"braking": 0.4,
"handling": 0.58,
"speed": 32.8303,
"traction": 2,
"name": "Brickade 6x6",
"make": "MTL",
"class": 17,
"seats": 6,
"doors": 2,
"type": "automobile",
"price": 54416,
"category": "land"
},
"brigham": {
"acceleration": 0.21,
"braking": 0.38,
"handling": 0.59,
"speed": 38.7112,
"traction": 1.905,
"name": "Brigham",
"make": "Albany",
"class": 4,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 63825,
"category": "land"
},
"brioso": {
"acceleration": 0.29,
"braking": 0.6,
"handling": 0.77,
"speed": 41.536,
"traction": 2.3,
"name": "Brioso R/A",
"make": "Grotti",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 69113,
"category": "land"
},
"brioso2": {
"acceleration": 0.179,
"braking": 0.25,
"handling": 0.559,
"speed": 32.9442,
"traction": 1.885,
"name": "Brioso 300",
"make": "Grotti",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 54291,
"category": "land"
},
"brioso3": {
"acceleration": 0.216,
"braking": 0.25,
"handling": 0.596,
"speed": 37.2714,
"traction": 1.995,
"name": "Brioso 300 Widebody",
"make": "Grotti",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 61333,
"category": "land"
},
"broadway": {
"acceleration": 0.195,
"braking": 0.32,
"handling": 0.575,
"speed": 37.4739,
"traction": 1.995,
"name": "Broadway",
"make": "Classique",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 61702,
"category": "land"
},
"bruiser": {
"acceleration": 0.26,
"braking": 0.5,
"handling": 0.64,
"speed": 38.4047,
"traction": 1.75,
"name": "Apocalypse Bruiser",
"make": "Benefactor",
"class": 9,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 63687,
"category": "land"
},
"bruiser2": {
"acceleration": 0.26,
"braking": 0.5,
"handling": 0.64,
"speed": 38.4047,
"traction": 1.75,
"name": "Future Shock Bruiser",
"make": "Benefactor",
"class": 9,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 63687,
"category": "land"
},
"bruiser3": {
"acceleration": 0.26,
"braking": 0.5,
"handling": 0.64,
"speed": 38.4047,
"traction": 1.75,
"name": "Nightmare Bruiser",
"make": "Benefactor",
"class": 9,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 63687,
"category": "land"
},
"brutus": {
"acceleration": 0.27,
"braking": 0.6,
"handling": 0.65,
"speed": 42.3068,
"traction": 2,
"name": "Apocalypse Brutus",
"make": "Declasse",
"class": 9,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 70122,
"category": "land"
},
"brutus2": {
"acceleration": 0.27,
"braking": 0.6,
"handling": 0.65,
"speed": 42.3068,
"traction": 2,
"name": "Future Shock Brutus",
"make": "Declasse",
"class": 9,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 70122,
"category": "land"
},
"brutus3": {
"acceleration": 0.27,
"braking": 0.6,
"handling": 0.65,
"speed": 42.3068,
"traction": 2,
"name": "Nightmare Brutus",
"make": "Declasse",
"class": 9,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 70122,
"category": "land"
},
"btype": {
"acceleration": 0.27,
"braking": 0.55,
"handling": 0.65,
"speed": 41.6667,
"traction": 2.1,
"name": "Roosevelt",
"make": "Albany",
"class": 5,
"seats": 6,
"doors": 5,
"type": "automobile",
"price": 69018,
"category": "land"
},
"btype2": {
"acceleration": 0.355,
"braking": 0.55,
"handling": 0.735,
"speed": 45,
"traction": 1.94,
"name": "Fränken Stange",
"make": "Albany",
"class": 5,
"seats": 4,
"doors": 4,
"type": "automobile",
"price": 74624,
"category": "land"
},
"btype3": {
"acceleration": 0.27,
"braking": 0.55,
"handling": 0.65,
"speed": 41.6667,
"traction": 2.1,
"name": "Roosevelt Valor",
"make": "Albany",
"class": 5,
"seats": 6,
"doors": 5,
"type": "automobile",
"price": 69018,
"category": "land"
},
"buccaneer": {
"acceleration": 0.28,
"braking": 0.8,
"handling": 0.66,
"speed": 46.1566,
"traction": 2.15,
"name": "Buccaneer",
"make": "Albany",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76634,
"category": "land"
},
"buccaneer2": {
"acceleration": 0.28,
"braking": 0.8,
"handling": 0.66,
"speed": 46.1566,
"traction": 2.15,
"name": "Buccaneer Custom",
"make": "Albany",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76634,
"category": "land"
},
"buffalo": {
"acceleration": 0.27,
"braking": 0.9,
"handling": 0.65,
"speed": 45.1527,
"traction": 2.45,
"name": "Buffalo",
"make": "Bravado",
"class": 6,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 75156,
"category": "land"
},
"buffalo2": {
"acceleration": 0.29,
"braking": 0.9,
"handling": 0.67,
"speed": 46.2816,
"traction": 2.45,
"name": "Buffalo S",
"make": "Bravado",
"class": 6,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 77026,
"category": "land"
},
"buffalo3": {
"acceleration": 0.31,
"braking": 1,
"handling": 0.69,
"speed": 48.1652,
"traction": 2.45,
"name": "Sprunk Buffalo",
"make": "Bravado",
"class": 6,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 80264,
"category": "land"
},
"buffalo4": {
"acceleration": 0.3425,
"braking": 0.95,
"handling": 0.7225,
"speed": 48.308,
"traction": 2.58,
"name": "Buffalo STX",
"make": "Bravado",
"class": 4,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 80516,
"category": "land"
},
"buffalo5": {
"acceleration": 0.382,
"braking": 0.985,
"handling": 0.842,
"speed": 49.8737,
"traction": 2.42,
"name": "Buffalo EVX",
"make": "Bravado",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83332,
"category": "land"
},
"bulldozer": {
"acceleration": 0.14,
"braking": 0.2,
"handling": 0.52,
"speed": 5,
"traction": 1.1,
"name": "Dozer",
"make": "HVY",
"class": 10,
"seats": 1,
"doors": 2,
"type": "automobile",
"price": 9376,
"category": "land"
},
"bullet": {
"acceleration": 0.33,
"braking": 0.8,
"handling": 0.71,
"speed": 49.7632,
"traction": 2.55,
"name": "Bullet",
"make": "Vapid",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 82565,
"category": "land"
},
"burrito": {
"acceleration": 0.16,
"braking": 0.6,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.95,
"name": "Burrito",
"make": "Declasse",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 61195,
"category": "land"
},
"burrito2": {
"acceleration": 0.16,
"braking": 0.6,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.95,
"name": "Bugstars Burrito",
"make": "Declasse",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 61195,
"category": "land"
},
"burrito3": {
"acceleration": 0.16,
"braking": 0.6,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.95,
"name": "Burrito",
"make": "Declasse",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 61195,
"category": "land"
},
"burrito4": {
"acceleration": 0.16,
"braking": 0.6,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.95,
"name": "Burrito",
"make": "Declasse",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 61195,
"category": "land"
},
"burrito5": {
"acceleration": 0.16,
"braking": 0.6,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.95,
"name": "Burrito",
"make": "Declasse",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 61195,
"category": "land"
},
"bus": {
"acceleration": 0.12,
"braking": 0.35,
"handling": 0.5,
"speed": 25.5809,
"traction": 1.45,
"name": "Bus",
"make": "",
"class": 17,
"seats": 16,
"doors": 5,
"type": "automobile",
"price": 42481,
"category": "land"
},
"buzzard": {
"acceleration": 5.39,
"braking": 3.1212,
"handling": 5.39,
"speed": 57.9072,
"traction": 1.3,
"name": "Buzzard Attack Chopper",
"make": "",
"class": 15,
"seats": 4,
"doors": 2,
"type": "heli",
"price": 32313780,
"category": "air",
"weapons": true
},
"buzzard2": {
"acceleration": 5.39,
"braking": 3.1212,
"handling": 5.39,
"speed": 57.9072,
"traction": 1.3,
"name": "Buzzard",
"make": "",
"class": 15,
"seats": 4,
"doors": 2,
"type": "heli",
"price": 32313780,
"category": "air",
"weapons": true
},
"cablecar": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Cable Car",
"make": "",
"class": 21,
"seats": 4,
"doors": 2,
"type": "train",
"price": 194680,
"category": "land"
},
"caddy": {
"acceleration": 0.3,
"braking": 0.2,
"handling": 0.68,
"speed": 21.6667,
"traction": 1.5,
"name": "Caddy",
"make": "",
"class": 11,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 36554,
"category": "land"
},
"caddy2": {
"acceleration": 0.3,
"braking": 0.2,
"handling": 0.68,
"speed": 21.6667,
"traction": 1.45,
"name": "Caddy",
"make": "",
"class": 11,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 36554,
"category": "land"
},
"caddy3": {
"acceleration": 0.3,
"braking": 0.2,
"handling": 0.68,
"speed": 21.3342,
"traction": 1.45,
"name": "Caddy",
"make": "",
"class": 11,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 36022,
"category": "land"
},
"calico": {
"acceleration": 0.3385,
"braking": 0.825,
"handling": 0.7185,
"speed": 49.4621,
"traction": 2.435,
"name": "Calico GTF",
"make": "Karin",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82150,
"category": "land"
},
"camper": {
"acceleration": 0.12,
"braking": 0.25,
"handling": 0.5,
"speed": 30.462,
"traction": 1.5,
"name": "Camper",
"make": "Brute",
"class": 12,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 50131,
"category": "land"
},
"caracara": {
"acceleration": 0.27,
"braking": 0.27,
"handling": 0.65,
"speed": 38.6133,
"traction": 2.25,
"name": "Caracara",
"make": "Vapid",
"class": 9,
"seats": 5,
"doors": 5,
"type": "automobile",
"price": 318426,
"category": "land",
"weapons": true
},
"caracara2": {
"acceleration": 0.27,
"braking": 0.3,
"handling": 0.65,
"speed": 39.2704,
"traction": 2.05,
"name": "Caracara 4x4",
"make": "Vapid",
"class": 9,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 64784,
"category": "land"
},
"carbonizzare": {
"acceleration": 0.35,
"braking": 0.8,
"handling": 0.73,
"speed": 48.3368,
"traction": 2.38,
"name": "Carbonizzare",
"make": "Grotti",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80346,
"category": "land"
},
"carbonrs": {
"acceleration": 0.3,
"braking": 1.3,
"handling": 0.68,
"speed": 47.0182,
"traction": 2.15,
"name": "Carbon RS",
"make": "Nagasaki",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 24649,
"category": "land"
},
"cargobob": {
"acceleration": 4.998,
"braking": 2.495,
"handling": 4.998,
"speed": 49.92,
"traction": 1.3,
"name": "Cargobob",
"make": "",
"class": 15,
"seats": 10,
"doors": 3,
"type": "heli",
"price": 5616990,
"category": "air"
},
"cargobob2": {
"acceleration": 4.998,
"braking": 2.495,
"handling": 4.998,
"speed": 49.92,
"traction": 1.3,
"name": "Cargobob",
"make": "",
"class": 15,
"seats": 10,
"doors": 3,
"type": "heli",
"price": 5616990,
"category": "air"
},
"cargobob3": {
"acceleration": 4.998,
"braking": 2.495,
"handling": 4.998,
"speed": 49.92,
"traction": 1.3,
"name": "Cargobob",
"make": "",
"class": 15,
"seats": 10,
"doors": 3,
"type": "heli",
"price": 5616990,
"category": "air"
},
"cargobob4": {
"acceleration": 4.998,
"braking": 2.495,
"handling": 4.998,
"speed": 49.92,
"traction": 1.3,
"name": "Cargobob",
"make": "",
"class": 15,
"seats": 2,
"doors": 3,
"type": "heli",
"price": 5616990,
"category": "air"
},
"cargobob5": {
"acceleration": 5.88,
"braking": 3.524,
"handling": 5.88,
"speed": 59.9315,
"traction": 1.3,
"name": "DH-7 Iron Mule",
"make": "Buckingham",
"class": 15,
"seats": 16,
"doors": 6,
"type": "heli",
"price": 6769394,
"category": "air"
},
"cargoplane": {
"acceleration": 6.174,
"braking": 4.8714,
"handling": 6.174,
"speed": 78.9023,
"traction": 0.85,
"name": "Cargo Plane",
"make": "",
"class": 16,
"seats": 2,
"doors": 4,
"type": "plane",
"price": 1537947,
"category": "air"
},
"cargoplane2": {
"acceleration": 6.174,
"braking": 4.8714,
"handling": 6.174,
"speed": 78.9023,
"traction": 0.85,
"name": "Cargo Plane",
"make": "",
"class": 16,
"seats": 5,
"doors": 4,
"type": "plane",
"price": 1537947,
"category": "air"
},
"casco": {
"acceleration": 0.32,
"braking": 0.6,
"handling": 0.7,
"speed": 50.3333,
"traction": 2.3,
"name": "Casco",
"make": "Lampadati",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83125,
"category": "land"
},
"castigator": {
"acceleration": 0.2905,
"braking": 0.76,
"handling": 0.6705,
"speed": 49.2117,
"traction": 2.264,
"name": "Castigator",
"make": "Canis",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 81492,
"category": "land"
},
"cavalcade": {
"acceleration": 0.2,
"braking": 0.6,
"handling": 0.58,
"speed": 38.4289,
"traction": 1.9,
"name": "Cavalcade",
"make": "Albany",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 63694,
"category": "land"
},
"cavalcade2": {
"acceleration": 0.2,
"braking": 0.6,
"handling": 0.58,
"speed": 38.4289,
"traction": 1.9,
"name": "Cavalcade",
"make": "Albany",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 63694,
"category": "land"
},
"cavalcade3": {
"acceleration": 0.2765,
"braking": 0.875,
"handling": 0.6565,
"speed": 40.6667,
"traction": 2.225,
"name": "Cavalcade XL",
"make": "Albany",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 67959,
"category": "land"
},
"cerberus": {
"acceleration": 0.19,
"braking": 0.25,
"handling": 0.57,
"speed": 37.2117,
"traction": 1.7,
"name": "Apocalypse Cerberus",
"make": "MTL",
"class": 20,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 305773,
"category": "land",
"weapons": true
},
"cerberus2": {
"acceleration": 0.19,
"braking": 0.25,
"handling": 0.57,
"speed": 37.2117,
"traction": 1.7,
"name": "Future Shock Cerberus",
"make": "MTL",
"class": 20,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 305773,
"category": "land",
"weapons": true
},
"cerberus3": {
"acceleration": 0.19,
"braking": 0.25,
"handling": 0.57,
"speed": 37.2117,
"traction": 1.7,
"name": "Nightmare Cerberus",
"make": "MTL",
"class": 20,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 305773,
"category": "land",
"weapons": true
},
"champion": {
"acceleration": 0.359,
"braking": 1.15,
"handling": 0.739,
"speed": 51.8663,
"traction": 2.5662,
"name": "Champion",
"make": "Dewbauchee",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 86582,
"category": "land"
},
"chavosv6": {
"acceleration": 0.274,
"braking": 0.69,
"handling": 0.654,
"speed": 46.6629,
"traction": 2.554,
"name": "Chavos V6",
"make": "Dinka",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 77249,
"category": "land"
},
"cheburek": {
"acceleration": 0.265,
"braking": 0.8,
"handling": 0.645,
"speed": 44.644,
"traction": 2.25,
"name": "Cheburek",
"make": "RUNE",
"class": 5,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74166,
"category": "land"
},
"cheetah": {
"acceleration": 0.32,
"braking": 0.8,
"handling": 0.7,
"speed": 50.0095,
"traction": 2.65,
"name": "Cheetah",
"make": "Grotti",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 82927,
"category": "land"
},
"cheetah2": {
"acceleration": 0.3,
"braking": 0.8,
"handling": 0.68,
"speed": 49.923,
"traction": 2.65,
"name": "Cheetah Classic",
"make": "Grotti",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82724,
"category": "land"
},
"chernobog": {
"acceleration": 0.12,
"braking": 0.1,
"handling": 0.5,
"speed": 22.5872,
"traction": 2,
"name": "Chernobog",
"make": "",
"class": 19,
"seats": 2,
"doors": 5,
"type": "automobile",
"price": 186457,
"category": "land",
"weapons": true
},
"chimera": {
"acceleration": 0.275,
"braking": 1,
"handling": 0.655,
"speed": 35.4249,
"traction": 2.1,
"name": "Chimera",
"make": "Nagasaki",
"class": 8,
"seats": 1,
"doors": 0,
"type": "quadbike",
"price": 41090,
"category": "land"
},
"chino": {
"acceleration": 0.2,
"braking": 0.6,
"handling": 0.58,
"speed": 35.2769,
"traction": 2.05,
"name": "Chino",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 58651,
"category": "land"
},
"chino2": {
"acceleration": 0.21,
"braking": 0.6,
"handling": 0.59,
"speed": 36.3465,
"traction": 2.07,
"name": "Chino Custom",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 60394,
"category": "land"
},
"cinquemila": {
"acceleration": 0.3535,
"braking": 0.975,
"handling": 0.7335,
"speed": 48.236,
"traction": 2.63,
"name": "Cinquemila",
"make": "Lampadati",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 80476,
"category": "land"
},
"cliffhanger": {
"acceleration": 0.318,
"braking": 1.1,
"handling": 0.698,
"speed": 49.1271,
"traction": 2.25,
"name": "Cliffhanger",
"make": "Western",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 25621,
"category": "land"
},
"clique": {
"acceleration": 0.3,
"braking": 0.85,
"handling": 0.68,
"speed": 45.9981,
"traction": 2.35,
"name": "Clique",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76524,
"category": "land"
},
"clique2": {
"acceleration": 0.198,
"braking": 0.35,
"handling": 0.578,
"speed": 33.1878,
"traction": 2.08,
"name": "Clique Wagon",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 5,
"type": "automobile",
"price": 54902,
"category": "land"
},
"club": {
"acceleration": 0.2375,
"braking": 0.72,
"handling": 0.6175,
"speed": 41.7599,
"traction": 2.05,
"name": "Club",
"make": "BF",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 69335,
"category": "land"
},
"coach": {
"acceleration": 0.12,
"braking": 0.25,
"handling": 0.5,
"speed": 25.5809,
"traction": 1.45,
"name": "Dashound",
"make": "",
"class": 17,
"seats": 10,
"doors": 2,
"type": "automobile",
"price": 42321,
"category": "land"
},
"cog55": {
"acceleration": 0.265,
"braking": 0.57,
"handling": 0.645,
"speed": 46.2961,
"traction": 2.2,
"name": "Cognoscenti 55",
"make": "Enus",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 76441,
"category": "land"
},
"cog552": {
"acceleration": 0.26,
"braking": 0.55,
"handling": 0.64,
"speed": 45.7596,
"traction": 2.2,
"name": "Cognoscenti 55 (Armored)",
"make": "Enus",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 75535,
"category": "land"
},
"cogcabrio": {
"acceleration": 0.26,
"braking": 0.6,
"handling": 0.64,
"speed": 45.1953,
"traction": 2.3,
"name": "Cognoscenti Cabrio",
"make": "Enus",
"class": 3,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74712,
"category": "land"
},
"cognoscenti": {
"acceleration": 0.26,
"braking": 0.55,
"handling": 0.64,
"speed": 45.7596,
"traction": 2.1,
"name": "Cognoscenti",
"make": "Enus",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 75535,
"category": "land"
},
"cognoscenti2": {
"acceleration": 0.255,
"braking": 0.52,
"handling": 0.635,
"speed": 45.2183,
"traction": 2.1,
"name": "Cognoscenti (Armored)",
"make": "Enus",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74605,
"category": "land"
},
"comet2": {
"acceleration": 0.34,
"braking": 0.8,
"handling": 0.72,
"speed": 50.1961,
"traction": 2.6,
"name": "Comet",
"make": "Pfister",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83289,
"category": "land"
},
"comet3": {
"acceleration": 0.34,
"braking": 0.8,
"handling": 0.72,
"speed": 50.1737,
"traction": 2.8,
"name": "Comet Retro Custom",
"make": "Pfister",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83253,
"category": "land"
},
"comet4": {
"acceleration": 0.2925,
"braking": 0.8,
"handling": 0.6725,
"speed": 47.166,
"traction": 2.1,
"name": "Comet Safari",
"make": "Pfister",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78289,
"category": "land"
},
"comet5": {
"acceleration": 0.32,
"braking": 1.2,
"handling": 0.7,
"speed": 46.8946,
"traction": 2.7,
"name": "Comet SR",
"make": "Pfister",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78583,
"category": "land"
},
"comet6": {
"acceleration": 0.346,
"braking": 0.88,
"handling": 0.726,
"speed": 50.1596,
"traction": 2.655,
"name": "Comet S2",
"make": "Pfister",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83378,
"category": "land"
},
"comet7": {
"acceleration": 0.3495,
"braking": 0.89,
"handling": 0.7295,
"speed": 50.3806,
"traction": 2.655,
"name": "Comet S2 Cabrio",
"make": "Pfister",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 83759,
"category": "land"
},
"conada": {
"acceleration": 5.6644,
"braking": 3.5215,
"handling": 5.6644,
"speed": 62.169,
"traction": 1.3,
"name": "Conada",
"make": "Buckingham",
"class": 15,
"seats": 4,
"doors": 2,
"type": "heli",
"price": 6931737,
"category": "air"
},
"conada2": {
"acceleration": 5.684,
"braking": 3.4855,
"handling": 5.684,
"speed": 61.3214,
"traction": 1.3,
"name": "Weaponized Conada",
"make": "Buckingham",
"class": 15,
"seats": 2,
"doors": 2,
"type": "heli",
"price": 34278704,
"category": "air",
"weapons": true
},
"contender": {
"acceleration": 0.26,
"braking": 0.6,
"handling": 0.64,
"speed": 41.3615,
"traction": 2.1,
"name": "Contender",
"make": "Vapid",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 68578,
"category": "land"
},
"coquette": {
"acceleration": 0.33,
"braking": 0.8,
"handling": 0.71,
"speed": 50.4563,
"traction": 2.55,
"name": "Coquette",
"make": "Invetero",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 83674,
"category": "land"
},
"coquette2": {
"acceleration": 0.34,
"braking": 0.5,
"handling": 0.72,
"speed": 49.5374,
"traction": 2.3,
"name": "Coquette Classic",
"make": "Invetero",
"class": 5,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 81755,
"category": "land"
},
"coquette3": {
"acceleration": 0.29,
"braking": 0.6,
"handling": 0.67,
"speed": 45.0781,
"traction": 2.25,
"name": "Coquette BlackFin",
"make": "Invetero",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74620,
"category": "land"
},
"coquette4": {
"acceleration": 0.32,
"braking": 0.6,
"handling": 0.7,
"speed": 48.8621,
"traction": 2.6,
"name": "Coquette D10",
"make": "Invetero",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80771,
"category": "land"
},
"coquette5": {
"acceleration": 0.278,
"braking": 0.6,
"handling": 0.658,
"speed": 47.3099,
"traction": 2.325,
"name": "Coquette D1",
"make": "Invetero",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78153,
"category": "land"
},
"coquette6": {
"acceleration": 0.325,
"braking": 0.7,
"handling": 0.705,
"speed": 49.3143,
"traction": 2.637,
"name": "Coquette D5",
"make": "Invetero",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81670,
"category": "land"
},
"corsita": {
"acceleration": 0.4,
"braking": 1.3,
"handling": 0.78,
"speed": 52.2801,
"traction": 2.726,
"name": "Corsita",
"make": "Lampadati",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 87616,
"category": "land"
},
"coureur": {
"acceleration": 0.37,
"braking": 0.8,
"handling": 0.81,
"speed": 46.6167,
"traction": 2.435,
"name": "La Coureuse",
"make": "Penaud",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 77754,
"category": "land"
},
"cruiser": {
"acceleration": 0.08,
"braking": 2.8,
"handling": 0.46,
"speed": 15,
"traction": 1.8,
"name": "Cruiser",
"make": "",
"class": 13,
"seats": 1,
"doors": 1,
"type": "bicycle",
"price": 2751,
"category": "land"
},
"crusader": {
"acceleration": 0.18,
"braking": 0.3,
"handling": 0.56,
"speed": 35.9639,
"traction": 1.9,
"name": "Crusader",
"make": "Canis",
"class": 19,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 59206,
"category": "land"
},
"cuban800": {
"acceleration": 5.88,
"braking": 4.5156,
"handling": 5.88,
"speed": 76.7957,
"traction": 2.15,
"name": "Cuban 800",
"make": "",
"class": 16,
"seats": 2,
"doors": 2,
"type": "plane",
"price": 1489140,
"category": "air"
},
"cutter": {
"acceleration": 0.16,
"braking": 0.3,
"handling": 0.54,
"speed": 12.7612,
"traction": 1.62,
"name": "Cutter",
"make": "HVY",
"class": 10,
"seats": 1,
"doors": 1,
"type": "automobile",
"price": 22017,
"category": "land"
},
"cyclone": {
"acceleration": 0.2725,
"braking": 1.2,
"handling": 0.6525,
"speed": 40.9219,
"traction": 2.25,
"name": "Cyclone",
"make": "Coil",
"class": 7,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 68875,
"category": "land"
},
"cypher": {
"acceleration": 0.326,
"braking": 0.7,
"handling": 0.706,
"speed": 45.5658,
"traction": 2.59,
"name": "Cypher",
"make": "Ubermacht",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75676,
"category": "land"
},
"daemon": {
"acceleration": 0.26,
"braking": 0.6,
"handling": 0.64,
"speed": 43.1425,
"traction": 1.85,
"name": "Daemon",
"make": "Western",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 22321,
"category": "land"
},
"daemon2": {
"acceleration": 0.262,
"braking": 0.6,
"handling": 0.642,
"speed": 43.3429,
"traction": 1.85,
"name": "Daemon",
"make": "Western",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 22423,
"category": "land"
},
"deathbike": {
"acceleration": 0.3125,
"braking": 1.1,
"handling": 0.6925,
"speed": 48.2865,
"traction": 2.05,
"name": "Apocalypse Deathbike",
"make": "Western",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 25195,
"category": "land"
},
"deathbike2": {
"acceleration": 0.3125,
"braking": 1.1,
"handling": 0.6925,
"speed": 48.2865,
"traction": 2.05,
"name": "Future Shock Deathbike",
"make": "Western",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 25195,
"category": "land"
},
"deathbike3": {
"acceleration": 0.3125,
"braking": 1.1,
"handling": 0.6925,
"speed": 48.2865,
"traction": 2.05,
"name": "Nightmare Deathbike",
"make": "Western",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 25195,
"category": "land"
},
"defiler": {
"acceleration": 0.405,
"braking": 1.2,
"handling": 0.785,
"speed": 48.8436,
"traction": 2.15,
"name": "Defiler",
"make": "Shitzu",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 25616,
"category": "land"
},
"deity": {
"acceleration": 0.2925,
"braking": 0.65,
"handling": 0.6725,
"speed": 44.3737,
"traction": 2.15,
"name": "Deity",
"make": "Enus",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 73581,
"category": "land"
},
"deluxo": {
"acceleration": 0.2275,
"braking": 0.7,
"handling": 0.6075,
"speed": 42.6766,
"traction": 2.05,
"name": "Deluxo",
"make": "Imponte",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 70738,
"category": "land"
},
"deveste": {
"acceleration": 0.42,
"braking": 1,
"handling": 0.85,
"speed": 52.6778,
"traction": 2.725,
"name": "Deveste Eight",
"make": "Principe",
"class": 7,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 87916,
"category": "land"
},
"deviant": {
"acceleration": 0.29,
"braking": 0.5,
"handling": 0.67,
"speed": 42.457,
"traction": 2.25,
"name": "Deviant",
"make": "Schyster",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 70267,
"category": "land"
},
"diablous": {
"acceleration": 0.312,
"braking": 1.2,
"handling": 0.692,
"speed": 47.2867,
"traction": 1.95,
"name": "Diabolus",
"make": "Principe",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 24745,
"category": "land"
},
"diablous2": {
"acceleration": 0.32,
"braking": 1.25,
"handling": 0.7,
"speed": 47.5333,
"traction": 2,
"name": "Diabolus Custom",
"make": "Principe",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 24901,
"category": "land"
},
"dilettante": {
"acceleration": 0.1,
"braking": 0.6,
"handling": 0.48,
"speed": 24.0066,
"traction": 1.76,
"name": "Dilettante",
"make": "Karin",
"class": 0,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 40298,
"category": "land"
},
"dilettante2": {
"acceleration": 0.1,
"braking": 0.6,
"handling": 0.48,
"speed": 24.0066,
"traction": 1.76,
"name": "Dilettante",
"make": "Karin",
"class": 0,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 40298,
"category": "land"
},
"dinghy": {
"acceleration": 16,
"braking": 0.4,
"handling": 16.38,
"speed": 41.6667,
"traction": 0,
"name": "Dinghy",
"make": "Nagasaki",
"class": 14,
"seats": 4,
"doors": 0,
"type": "boat",
"price": 2233400,
"category": "sea",
"weapons": true
},
"dinghy2": {
"acceleration": 16,
"braking": 0.4,
"handling": 16.38,
"speed": 41.6667,
"traction": 0,
"name": "Dinghy",
"make": "Nagasaki",
"class": 14,
"seats": 2,
"doors": 0,
"type": "boat",
"price": 446680,
"category": "sea"
},
"dinghy3": {
"acceleration": 16,
"braking": 0.4,
"handling": 16.38,
"speed": 41.6667,
"traction": 0,
"name": "Dinghy",
"make": "Nagasaki",
"class": 14,
"seats": 4,
"doors": 0,
"type": "boat",
"price": 2233400,
"category": "sea",
"weapons": true
},
"dinghy4": {
"acceleration": 16,
"braking": 0.4,
"handling": 16.38,
"speed": 41.6667,
"traction": 0,
"name": "Dinghy",
"make": "Nagasaki",
"class": 14,
"seats": 4,
"doors": 0,
"type": "boat",
"price": 2233400,
"category": "sea",
"weapons": true
},
"dinghy5": {
"acceleration": 16,
"braking": 0.4,
"handling": 16.38,
"speed": 41.6667,
"traction": 0,
"name": "Weaponized Dinghy",
"make": "Nagasaki",
"class": 14,
"seats": 5,
"doors": 0,
"type": "boat",
"price": 2233400,
"category": "sea",
"weapons": true
},
"dloader": {
"acceleration": 0.17,
"braking": 0.6,
"handling": 0.55,
"speed": 33.1998,
"traction": 1.7,
"name": "Duneloader",
"make": "Bravado",
"class": 9,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 55231,
"category": "land"
},
"docktrailer": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3.3,
"name": "NULL",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5668,
"category": "land"
},
"docktug": {
"acceleration": 0.2,
"braking": 0.5,
"handling": 0.58,
"speed": 24.6406,
"traction": 1.4,
"name": "Docktug",
"make": "",
"class": 11,
"seats": 1,
"doors": 1,
"type": "automobile",
"price": 41472,
"category": "land"
},
"dodo": {
"acceleration": 4.9,
"braking": 3.399,
"handling": 4.9,
"speed": 69.3676,
"traction": 2.15,
"name": "Dodo",
"make": "Mammoth",
"class": 16,
"seats": 4,
"doors": 4,
"type": "plane",
"price": 1321065,
"category": "air"
},
"dominator": {
"acceleration": 0.29,
"braking": 0.8,
"handling": 0.67,
"speed": 48.3333,
"traction": 2.25,
"name": "Dominator",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80149,
"category": "land"
},
"dominator10": {
"acceleration": 0.3,
"braking": 0.69,
"handling": 0.68,
"speed": 49.296,
"traction": 2.383,
"name": "Dominator FX",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81545,
"category": "land"
},
"dominator2": {
"acceleration": 0.31,
"braking": 0.9,
"handling": 0.69,
"speed": 49,
"traction": 2.3,
"name": "Pisswasser Dominator",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81440,
"category": "land"
},
"dominator3": {
"acceleration": 0.335,
"braking": 0.5,
"handling": 0.715,
"speed": 47.114,
"traction": 2.57,
"name": "Dominator GTX",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 77862,
"category": "land"
},
"dominator4": {
"acceleration": 0.375,
"braking": 0.8,
"handling": 0.755,
"speed": 48.4233,
"traction": 2.35,
"name": "Apocalypse Dominator",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 80565,
"category": "land"
},
"dominator5": {
"acceleration": 0.375,
"braking": 0.8,
"handling": 0.755,
"speed": 48.4233,
"traction": 2.35,
"name": "Future Shock Dominator",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 80565,
"category": "land"
},
"dominator6": {
"acceleration": 0.375,
"braking": 0.8,
"handling": 0.755,
"speed": 48.4233,
"traction": 2.35,
"name": "Nightmare Dominator",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 80565,
"category": "land"
},
"dominator7": {
"acceleration": 0.342,
"braking": 0.92,
"handling": 0.722,
"speed": 50.0913,
"traction": 2.535,
"name": "Dominator ASP",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83320,
"category": "land"
},
"dominator8": {
"acceleration": 0.3027,
"braking": 0.75,
"handling": 0.6827,
"speed": 45.9496,
"traction": 2.5,
"name": "Dominator GTT",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76295,
"category": "land"
},
"dominator9": {
"acceleration": 0.3448,
"braking": 0.93,
"handling": 0.7248,
"speed": 49.6897,
"traction": 2.545,
"name": "Dominator GT",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82702,
"category": "land"
},
"dorado": {
"acceleration": 0.2168,
"braking": 0.5,
"handling": 0.5968,
"speed": 42.173,
"traction": 1.845,
"name": "Dorado",
"make": "Bravado",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 69578,
"category": "land"
},
"double": {
"acceleration": 0.31,
"braking": 1.4,
"handling": 0.69,
"speed": 47.9473,
"traction": 2.18,
"name": "Double-T",
"make": "Dinka",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 25173,
"category": "land"
},
"drafter": {
"acceleration": 0.342,
"braking": 1,
"handling": 0.722,
"speed": 47.8784,
"traction": 2.695,
"name": "8F Drafter",
"make": "Obey",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79907,
"category": "land"
},
"draugur": {
"acceleration": 0.3425,
"braking": 0.484,
"handling": 0.7225,
"speed": 43.84,
"traction": 2.485,
"name": "Draugur",
"make": "Declasse",
"class": 9,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 72622,
"category": "land"
},
"driftcheburek": {
"acceleration": 0.7075,
"braking": 0.59,
"handling": 1.0875,
"speed": 44.4167,
"traction": 1.53,
"name": "Cheburek",
"make": "RUNE",
"class": 5,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74882,
"category": "land"
},
"driftcypher": {
"acceleration": 0.7075,
"braking": 0.83,
"handling": 1.0875,
"speed": 44.4167,
"traction": 1.53,
"name": "Cypher",
"make": "Ubermacht",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75266,
"category": "land"
},
"drifteuros": {
"acceleration": 0.711,
"braking": 0.85,
"handling": 1.091,
"speed": 44.95,
"traction": 1.53,
"name": "Euros",
"make": "Annis",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76163,
"category": "land"
},
"driftfr36": {
"acceleration": 0.7125,
"braking": 0.765,
"handling": 1.0925,
"speed": 44.3333,
"traction": 1.53,
"name": "FR36",
"make": "Fathom",
"class": 3,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75045,
"category": "land"
},
"driftfuto": {
"acceleration": 0.71,
"braking": 0.765,
"handling": 1.09,
"speed": 44.3333,
"traction": 1.53,
"name": "Futo GTX",
"make": "Karin",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75037,
"category": "land"
},
"driftfuto2": {
"acceleration": 0.71,
"braking": 0.66,
"handling": 1.09,
"speed": 44.3333,
"traction": 1.53,
"name": "Futo",
"make": "Karin",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74869,
"category": "land"
},
"driftjester": {
"acceleration": 0.706,
"braking": 0.875,
"handling": 1.086,
"speed": 44.1667,
"traction": 1.53,
"name": "Jester RR",
"make": "Dinka",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74933,
"category": "land"
},
"driftjester3": {
"acceleration": 0.711,
"braking": 0.65,
"handling": 1.091,
"speed": 44.6667,
"traction": 1.53,
"name": "Jester Classic",
"make": "Dinka",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75389,
"category": "land"
},
"driftnebula": {
"acceleration": 0.725,
"braking": 0.74,
"handling": 1.105,
"speed": 45.2667,
"traction": 1.53,
"name": "Nebula Turbo",
"make": "Vulcar",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76538,
"category": "land"
},
"driftremus": {
"acceleration": 0.712,
"braking": 0.87,
"handling": 1.092,
"speed": 46.2667,
"traction": 1.53,
"name": "Remus",
"make": "Annis",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78305,
"category": "land"
},
"driftsentinel": {
"acceleration": 0.716,
"braking": 0.85,
"handling": 1.096,
"speed": 44.6667,
"traction": 1.53,
"name": "Sentinel Classic Widebody",
"make": "Ubermacht",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75725,
"category": "land"
},
"drifttampa": {
"acceleration": 0.712,
"braking": 0.8,
"handling": 1.092,
"speed": 46.3333,
"traction": 1.53,
"name": "Drift Tampa",
"make": "Declasse",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 78299,
"category": "land"
},
"driftvorschlag": {
"acceleration": 0.7085,
"braking": 0.725,
"handling": 1.0885,
"speed": 45.0667,
"traction": 1.53,
"name": "Vorschlaghammer",
"make": "Benefactor",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 76141,
"category": "land"
},
"driftyosemite": {
"acceleration": 0.718,
"braking": 0.82,
"handling": 1.098,
"speed": 41.6667,
"traction": 1.53,
"name": "Drift Yosemite",
"make": "Declasse",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 70884,
"category": "land"
},
"driftzr350": {
"acceleration": 0.708,
"braking": 0.85,
"handling": 1.088,
"speed": 44.2667,
"traction": 1.53,
"name": "ZR350",
"make": "Annis",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75060,
"category": "land"
},
"dubsta": {
"acceleration": 0.2,
"braking": 0.8,
"handling": 0.58,
"speed": 37.5559,
"traction": 2.15,
"name": "Dubsta",
"make": "Benefactor",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 62617,
"category": "land"
},
"dubsta2": {
"acceleration": 0.2,
"braking": 0.8,
"handling": 0.58,
"speed": 37.5559,
"traction": 2.15,
"name": "Dubsta",
"make": "Benefactor",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 62617,
"category": "land"
},
"dubsta3": {
"acceleration": 0.28,
"braking": 0.6,
"handling": 0.66,
"speed": 38.8077,
"traction": 2,
"name": "Dubsta 6x6",
"make": "Benefactor",
"class": 9,
"seats": 6,
"doors": 6,
"type": "automobile",
"price": 64556,
"category": "land"
},
"dukes": {
"acceleration": 0.32,
"braking": 0.8,
"handling": 0.7,
"speed": 47.7946,
"traction": 2.25,
"name": "Dukes",
"make": "Imponte",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79383,
"category": "land"
},
"dukes2": {
"acceleration": 0.35,
"braking": 0.9,
"handling": 0.73,
"speed": 46.5269,
"traction": 2.26,
"name": "Duke O'Death",
"make": "Imponte",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 77611,
"category": "land"
},
"dukes3": {
"acceleration": 0.315,
"braking": 0.75,
"handling": 0.695,
"speed": 47.3507,
"traction": 2.2,
"name": "Beater Dukes",
"make": "Imponte",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78577,
"category": "land"
},
"dump": {
"acceleration": 0.19,
"braking": 0.3,
"handling": 0.57,
"speed": 14.3333,
"traction": 1.45,
"name": "Dump",
"make": "HVY",
"class": 10,
"seats": 1,
"doors": 1,
"type": "automobile",
"price": 24629,
"category": "land"
},
"dune": {
"acceleration": 0.25,
"braking": 0.63,
"handling": 0.63,
"speed": 38.876,
"traction": 2.2,
"name": "Dune Buggy",
"make": "BF",
"class": 9,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 64617,
"category": "land"
},
"dune2": {
"acceleration": 0.24,
"braking": 0.63,
"handling": 0.62,
"speed": 37.9382,
"traction": 2,
"name": "Space Docker",
"make": "",
"class": 9,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 63085,
"category": "land"
},
"dune3": {
"acceleration": 0.25,
"braking": 0.63,
"handling": 0.63,
"speed": 38.876,
"traction": 2.2,
"name": "Dune FAV",
"make": "BF",
"class": 9,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 323087,
"category": "land",
"weapons": true
},
"dune4": {
"acceleration": 0.324,
"braking": 1,
"handling": 0.704,
"speed": 49.2242,
"traction": 2.65,
"name": "Ramp Buggy",
"make": "",
"class": 9,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 82003,
"category": "land"
},
"dune5": {
"acceleration": 0.32,
"braking": 1,
"handling": 0.7,
"speed": 48.84,
"traction": 2.65,
"name": "Ramp Buggy",
"make": "",
"class": 9,
"seats": 2,
"doors": 0,
"type": "automobile",
"price": 81376,
"category": "land"
},
"duster": {
"acceleration": 4.9,
"braking": 3.399,
"handling": 4.9,
"speed": 69.3676,
"traction": 2.15,
"name": "Duster",
"make": "",
"class": 16,
"seats": 2,
"doors": 0,
"type": "plane",
"price": 1321065,
"category": "air"
},
"duster2": {
"acceleration": 6.566,
"braking": 5.9026,
"handling": 6.566,
"speed": 89.897,
"traction": 2.15,
"name": "Duster 300-H",
"make": "Western",
"class": 16,
"seats": 1,
"doors": 1,
"type": "plane",
"price": 1742905,
"category": "air"
},
"dynasty": {
"acceleration": 0.18,
"braking": 0.4,
"handling": 0.56,
"speed": 35.6353,
"traction": 1.7,
"name": "Dynasty",
"make": "Weeny",
"class": 5,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 58840,
"category": "land"
},
"elegy": {
"acceleration": 0.33,
"braking": 1,
"handling": 0.71,
"speed": 47.1697,
"traction": 2.7,
"name": "Elegy Retro Custom",
"make": "Annis",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78735,
"category": "land"
},
"elegy2": {
"acceleration": 0.33,
"braking": 0.5,
"handling": 0.71,
"speed": 48.6724,
"traction": 2.7,
"name": "Elegy RH8",
"make": "Annis",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80339,
"category": "land"
},
"ellie": {
"acceleration": 0.325,
"braking": 0.5,
"handling": 0.705,
"speed": 45.8341,
"traction": 2.55,
"name": "Ellie",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75782,
"category": "land"
},
"emerus": {
"acceleration": 0.378,
"braking": 1.2,
"handling": 0.758,
"speed": 50.8594,
"traction": 2.78,
"name": "Emerus",
"make": "Progen",
"class": 7,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 85112,
"category": "land"
},
"emperor": {
"acceleration": 0.14,
"braking": 0.6,
"handling": 0.52,
"speed": 33.8088,
"traction": 1.9,
"name": "Emperor",
"make": "Albany",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 56110,
"category": "land"
},
"emperor2": {
"acceleration": 0.14,
"braking": 0.6,
"handling": 0.52,
"speed": 33.8088,
"traction": 1.9,
"name": "Emperor",
"make": "Albany",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 56110,
"category": "land"
},
"emperor3": {
"acceleration": 0.14,
"braking": 0.6,
"handling": 0.52,
"speed": 33.8088,
"traction": 1.9,
"name": "Emperor",
"make": "Albany",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 56110,
"category": "land"
},
"enduro": {
"acceleration": 0.3,
"braking": 1.05,
"handling": 0.68,
"speed": 39.6667,
"traction": 2.16,
"name": "Enduro",
"make": "Dinka",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 20848,
"category": "land"
},
"entity2": {
"acceleration": 0.355,
"braking": 1,
"handling": 0.735,
"speed": 53.7141,
"traction": 2.77,
"name": "Entity XXR",
"make": "Overflod",
"class": 7,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 89286,
"category": "land"
},
"entity3": {
"acceleration": 0.3545,
"braking": 1,
"handling": 0.7845,
"speed": 53.6165,
"traction": 2.782,
"name": "Entity MT",
"make": "Overflod",
"class": 7,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 89208,
"category": "land"
},
"entityxf": {
"acceleration": 0.33,
"braking": 0.9,
"handling": 0.71,
"speed": 50.9358,
"traction": 2.75,
"name": "Entity XF",
"make": "Overflod",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 84601,
"category": "land"
},
"envisage": {
"acceleration": 0.175,
"braking": 0.82,
"handling": 0.555,
"speed": 33.3943,
"traction": 2.72,
"name": "Envisage",
"make": "Bollokan",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 55910,
"category": "land"
},
"esskey": {
"acceleration": 0.295,
"braking": 1.2,
"handling": 0.675,
"speed": 44.1064,
"traction": 2.15,
"name": "Esskey",
"make": "Pegassi",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 23138,
"category": "land"
},
"eudora": {
"acceleration": 0.195,
"braking": 0.265,
"handling": 0.575,
"speed": 40.7273,
"traction": 1.89,
"name": "Eudora",
"make": "Willard",
"class": 4,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 66819,
"category": "land"
},
"euros": {
"acceleration": 0.324,
"braking": 0.9,
"handling": 0.704,
"speed": 47.3475,
"traction": 2.5615,
"name": "Euros",
"make": "Annis",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78840,
"category": "land"
},
"eurosx32": {
"acceleration": 0.28,
"braking": 0.8,
"handling": 0.71,
"speed": 44.1427,
"traction": 2.287,
"name": "Euros X32",
"make": "Annis",
"class": 3,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 73492,
"category": "land"
},
"everon": {
"acceleration": 0.295,
"braking": 0.3,
"handling": 0.675,
"speed": 41.7322,
"traction": 2.05,
"name": "Everon",
"make": "Karin",
"class": 9,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 68803,
"category": "land"
},
"everon2": {
"acceleration": 0.3395,
"braking": 0.685,
"handling": 0.7195,
"speed": 48.1577,
"traction": 2.5445,
"name": "Hotring Everon",
"make": "Karin",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 79842,
"category": "land"
},
"exemplar": {
"acceleration": 0.26,
"braking": 0.9,
"handling": 0.64,
"speed": 48.1321,
"traction": 2.6,
"name": "Exemplar",
"make": "Dewbauchee",
"class": 3,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 79891,
"category": "land"
},
"f620": {
"acceleration": 0.24,
"braking": 0.9,
"handling": 0.62,
"speed": 47.9948,
"traction": 2.5,
"name": "F620",
"make": "Ocelot",
"class": 3,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79607,
"category": "land"
},
"faction": {
"acceleration": 0.28,
"braking": 0.8,
"handling": 0.66,
"speed": 46.6667,
"traction": 2.25,
"name": "Faction",
"make": "Willard",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 77450,
"category": "land"
},
"faction2": {
"acceleration": 0.28,
"braking": 0.8,
"handling": 0.66,
"speed": 46.6667,
"traction": 2.25,
"name": "Faction Custom",
"make": "Willard",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 77450,
"category": "land"
},
"faction3": {
"acceleration": 0.2,
"braking": 0.8,
"handling": 0.58,
"speed": 35.2769,
"traction": 2.35,
"name": "Faction Custom Donk",
"make": "Willard",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 58971,
"category": "land"
},
"fagaloa": {
"acceleration": 0.21,
"braking": 0.775,
"handling": 0.59,
"speed": 34.3913,
"traction": 2.375,
"name": "Fagaloa",
"make": "Vulcar",
"class": 5,
"seats": 2,
"doors": 5,
"type": "automobile",
"price": 57546,
"category": "land"
},
"faggio": {
"acceleration": 0.1975,
"braking": 0.4,
"handling": 0.5775,
"speed": 28.2827,
"traction": 1.7,
"name": "Faggio Sport",
"make": "Pegassi",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 14728,
"category": "land"
},
"faggio2": {
"acceleration": 0.1,
"braking": 0.4,
"handling": 0.48,
"speed": 23.5477,
"traction": 1.6,
"name": "Faggio",
"make": "Pegassi",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 12263,
"category": "land"
},
"faggio3": {
"acceleration": 0.195,
"braking": 0.4,
"handling": 0.575,
"speed": 27.4138,
"traction": 1.7,
"name": "Faggio Mod",
"make": "Pegassi",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 14291,
"category": "land"
},
"fbi": {
"acceleration": 0.28,
"braking": 0.9,
"handling": 0.66,
"speed": 46.1566,
"traction": 2.45,
"name": "FIB",
"make": "",
"class": 18,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 76794,
"category": "land"
},
"fbi2": {
"acceleration": 0.2,
"braking": 0.8,
"handling": 0.58,
"speed": 37.5559,
"traction": 2.15,
"name": "FIB",
"make": "",
"class": 18,
"seats": 8,
"doors": 6,
"type": "automobile",
"price": 62617,
"category": "land"
},
"fcr": {
"acceleration": 0.305,
"braking": 1.2,
"handling": 0.685,
"speed": 46.4526,
"traction": 2.1,
"name": "FCR 1000",
"make": "Pegassi",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 24321,
"category": "land"
},
"fcr2": {
"acceleration": 0.31,
"braking": 1.25,
"handling": 0.69,
"speed": 46.7333,
"traction": 2.15,
"name": "FCR 1000 Custom",
"make": "Pegassi",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 24491,
"category": "land"
},
"felon": {
"acceleration": 0.24,
"braking": 0.9,
"handling": 0.62,
"speed": 45.7952,
"traction": 2.55,
"name": "Felon",
"make": "Lampadati",
"class": 3,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 76088,
"category": "land"
},
"felon2": {
"acceleration": 0.24,
"braking": 0.9,
"handling": 0.62,
"speed": 43.455,
"traction": 2.5,
"name": "Felon GT",
"make": "Lampadati",
"class": 3,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 72344,
"category": "land"
},
"feltzer2": {
"acceleration": 0.34,
"braking": 0.8,
"handling": 0.72,
"speed": 49.5374,
"traction": 2.65,
"name": "Feltzer",
"make": "Benefactor",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82235,
"category": "land"
},
"feltzer3": {
"acceleration": 0.3,
"braking": 0.8,
"handling": 0.68,
"speed": 45.9981,
"traction": 2.35,
"name": "Stirling GT",
"make": "Benefactor",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76444,
"category": "land"
},
"firebolt": {
"acceleration": 0.2962,
"braking": 0.39,
"handling": 0.7362,
"speed": 46.6612,
"traction": 2.34,
"name": "Firebolt ASP",
"make": "Vapid",
"class": 9,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76933,
"category": "land"
},
"firetruk": {
"acceleration": 0.16,
"braking": 0.5,
"handling": 0.54,
"speed": 39.2959,
"traction": 1.7,
"name": "Fire Truck",
"make": "MTL",
"class": 18,
"seats": 8,
"doors": 4,
"type": "automobile",
"price": 323967,
"category": "land",
"weapons": true
},
"fixter": {
"acceleration": 0.135,
"braking": 0.4,
"handling": 0.515,
"speed": 17.851,
"traction": 1.85,
"name": "Fixter",
"make": "",
"class": 13,
"seats": 1,
"doors": 1,
"type": "bicycle",
"price": 2835,
"category": "land"
},
"flashgt": {
"acceleration": 0.32,
"braking": 1,
"handling": 0.7,
"speed": 44.1615,
"traction": 2.45,
"name": "Flash GT",
"make": "Vapid",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 73890,
"category": "land"
},
"flatbed": {
"acceleration": 0.14,
"braking": 0.25,
"handling": 0.52,
"speed": 28.2361,
"traction": 1.65,
"name": "Flatbed",
"make": "MTL",
"class": 10,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 46633,
"category": "land"
},
"fmj": {
"acceleration": 0.3655,
"braking": 1.1,
"handling": 0.7455,
"speed": 52.8,
"traction": 2.7,
"name": "FMJ",
"make": "Vapid",
"class": 7,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 88017,
"category": "land"
},
"forklift": {
"acceleration": 0.18,
"braking": 0.3,
"handling": 0.56,
"speed": 10,
"traction": 1.15,
"name": "Forklift",
"make": "HVY",
"class": 11,
"seats": 1,
"doors": 0,
"type": "automobile",
"price": 17664,
"category": "land"
},
"formula": {
"acceleration": 0.75,
"braking": 1.25,
"handling": 1.13,
"speed": 52.5647,
"traction": 3.25,
"name": "PR4",
"make": "Progen",
"class": 22,
"seats": 1,
"doors": 0,
"type": "automobile",
"price": 178223,
"category": "land"
},
"formula2": {
"acceleration": 0.745,
"braking": 1.25,
"handling": 1.125,
"speed": 52.3861,
"traction": 3.1325,
"name": "R88",
"make": "Ocelot",
"class": 22,
"seats": 1,
"doors": 0,
"type": "automobile",
"price": 177619,
"category": "land"
},
"fq2": {
"acceleration": 0.18,
"braking": 0.25,
"handling": 0.56,
"speed": 39.9117,
"traction": 2,
"name": "FQ 2",
"make": "Fathom",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 65442,
"category": "land"
},
"fr36": {
"acceleration": 0.301,
"braking": 0.86,
"handling": 0.681,
"speed": 47.3251,
"traction": 2.383,
"name": "FR36",
"make": "Fathom",
"class": 3,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78667,
"category": "land"
},
"freecrawler": {
"acceleration": 0.24,
"braking": 0.3,
"handling": 0.62,
"speed": 36.6234,
"traction": 2.05,
"name": "Freecrawler",
"make": "Canis",
"class": 9,
"seats": 4,
"doors": 7,
"type": "automobile",
"price": 60453,
"category": "land"
},
"freight": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 2,
"doors": 1,
"type": "train",
"price": 194680,
"category": "land"
},
"freight2": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 2,
"doors": 0,
"type": "train",
"price": 194680,
"category": "land"
},
"freightcar": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 0,
"doors": 0,
"type": "train",
"price": 194680,
"category": "land"
},
"freightcar2": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 0,
"doors": 0,
"type": "train",
"price": 194680,
"category": "land"
},
"freightcar3": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 0,
"doors": 0,
"type": "train",
"price": 194680,
"category": "land"
},
"freightcont1": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 2,
"doors": 2,
"type": "train",
"price": 194680,
"category": "land"
},
"freightcont2": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 2,
"doors": 0,
"type": "train",
"price": 194680,
"category": "land"
},
"freightgrain": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 2,
"doors": 1,
"type": "train",
"price": 194680,
"category": "land"
},
"freighttrailer": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3,
"name": "NULL",
"make": "",
"class": 11,
"seats": 0,
"doors": 0,
"type": "trailer",
"price": 5668,
"category": "land"
},
"frogger": {
"acceleration": 5.488,
"braking": 3.1099,
"handling": 5.488,
"speed": 56.6681,
"traction": 1.3,
"name": "Frogger",
"make": "",
"class": 15,
"seats": 4,
"doors": 2,
"type": "heli",
"price": 31839300,
"category": "air",
"weapons": true
},
"frogger2": {
"acceleration": 5.488,
"braking": 3.1099,
"handling": 5.488,
"speed": 56.6681,
"traction": 1.3,
"name": "Frogger",
"make": "",
"class": 15,
"seats": 4,
"doors": 2,
"type": "heli",
"price": 31839300,
"category": "air",
"weapons": true
},
"fugitive": {
"acceleration": 0.2,
"braking": 0.9,
"handling": 0.58,
"speed": 40.3933,
"traction": 2.5,
"name": "Fugitive",
"make": "Cheval",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 67317,
"category": "land"
},
"furia": {
"acceleration": 0.365,
"braking": 1,
"handling": 0.745,
"speed": 49.8338,
"traction": 2.7,
"name": "Furia",
"make": "Grotti",
"class": 7,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83110,
"category": "land"
},
"furoregt": {
"acceleration": 0.335,
"braking": 1,
"handling": 0.715,
"speed": 50.6667,
"traction": 2.56,
"name": "Furore GT",
"make": "Lampadati",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 84346,
"category": "land"
},
"fusilade": {
"acceleration": 0.32,
"braking": 0.9,
"handling": 0.7,
"speed": 48.8621,
"traction": 2.45,
"name": "Fusilade",
"make": "Schyster",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81251,
"category": "land"
},
"futo": {
"acceleration": 0.29,
"braking": 0.5,
"handling": 0.67,
"speed": 45,
"traction": 2.05,
"name": "Futo",
"make": "Karin",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74336,
"category": "land"
},
"futo2": {
"acceleration": 0.2965,
"braking": 0.525,
"handling": 0.6765,
"speed": 45.6667,
"traction": 2.095,
"name": "Futo GTX",
"make": "Karin",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75463,
"category": "land"
},
"gargoyle": {
"acceleration": 0.3125,
"braking": 1.1,
"handling": 0.6925,
"speed": 48.2865,
"traction": 2.25,
"name": "Gargoyle",
"make": "Western",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 25195,
"category": "land"
},
"gauntlet": {
"acceleration": 0.3,
"braking": 0.9,
"handling": 0.68,
"speed": 47.0182,
"traction": 2.5,
"name": "Gauntlet",
"make": "Bravado",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78237,
"category": "land"
},
"gauntlet2": {
"acceleration": 0.315,
"braking": 0.9,
"handling": 0.695,
"speed": 48.4065,
"traction": 2.51,
"name": "Redwood Gauntlet",
"make": "Bravado",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80506,
"category": "land"
},
"gauntlet3": {
"acceleration": 0.28,
"braking": 0.9,
"handling": 0.66,
"speed": 44.1427,
"traction": 2.5,
"name": "Gauntlet Classic",
"make": "Bravado",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 73572,
"category": "land"
},
"gauntlet4": {
"acceleration": 0.36,
"braking": 0.9,
"handling": 0.74,
"speed": 48.6553,
"traction": 2.35,
"name": "Gauntlet Hellfire",
"make": "Bravado",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81048,
"category": "land"
},
"gauntlet5": {
"acceleration": 0.29,
"braking": 0.9,
"handling": 0.67,
"speed": 48.2968,
"traction": 2.25,
"name": "Gauntlet Classic Custom",
"make": "Bravado",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80250,
"category": "land"
},
"gauntlet6": {
"acceleration": 0.3668,
"braking": 0.935,
"handling": 0.7467,
"speed": 48.9926,
"traction": 2.482,
"name": "Hotring Hellfire",
"make": "Bravado",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81665,
"category": "land"
},
"gb200": {
"acceleration": 0.315,
"braking": 1,
"handling": 0.695,
"speed": 44.574,
"traction": 2.3,
"name": "GB200",
"make": "Vapid",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74534,
"category": "land"
},
"gburrito": {
"acceleration": 0.16,
"braking": 0.6,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.95,
"name": "Gang Burrito",
"make": "Declasse",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 61195,
"category": "land"
},
"gburrito2": {
"acceleration": 0.18,
"braking": 0.7,
"handling": 0.56,
"speed": 39.9117,
"traction": 2.05,
"name": "Gang Burrito",
"make": "Declasse",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 66162,
"category": "land"
},
"glendale": {
"acceleration": 0.235,
"braking": 0.65,
"handling": 0.615,
"speed": 39.718,
"traction": 2.05,
"name": "Glendale",
"make": "Benefactor",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 65948,
"category": "land"
},
"glendale2": {
"acceleration": 0.233,
"braking": 0.625,
"handling": 0.613,
"speed": 39.8451,
"traction": 2.25,
"name": "Glendale Custom",
"make": "Benefactor",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 66105,
"category": "land"
},
"gp1": {
"acceleration": 0.37,
"braking": 1.2,
"handling": 0.75,
"speed": 50.3181,
"traction": 2.68,
"name": "GP1",
"make": "Progen",
"class": 7,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 84220,
"category": "land"
},
"graintrailer": {
"acceleration": 0,
"braking": 0.7,
"handling": 0.38,
"speed": -0.5132,
"traction": 3.3,
"name": "NULL",
"make": "",
"class": 11,
"seats": 0,
"doors": 1,
"type": "trailer",
"price": 5668,
"category": "land"
},
"granger": {
"acceleration": 0.19,
"braking": 0.8,
"handling": 0.57,
"speed": 36.3729,
"traction": 2.15,
"name": "Granger",
"make": "Declasse",
"class": 2,
"seats": 8,
"doors": 6,
"type": "automobile",
"price": 60692,
"category": "land"
},
"granger2": {
"acceleration": 0.2075,
"braking": 0.84,
"handling": 0.5875,
"speed": 34.0257,
"traction": 2.18,
"name": "Granger 3600LX",
"make": "Declasse",
"class": 2,
"seats": 8,
"doors": 6,
"type": "automobile",
"price": 57057,
"category": "land"
},
"greenwood": {
"acceleration": 0.282,
"braking": 0.7,
"handling": 0.662,
"speed": 47.6667,
"traction": 2.3,
"name": "Greenwood",
"make": "Bravado",
"class": 4,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 78897,
"category": "land"
},
"gresley": {
"acceleration": 0.2,
"braking": 0.6,
"handling": 0.58,
"speed": 38.4289,
"traction": 1.9,
"name": "Gresley",
"make": "Bravado",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 63694,
"category": "land"
},
"growler": {
"acceleration": 0.3338,
"braking": 0.84,
"handling": 0.7138,
"speed": 49.7596,
"traction": 2.63,
"name": "Growler",
"make": "Pfister",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82635,
"category": "land"
},
"gt500": {
"acceleration": 0.29,
"braking": 0.77,
"handling": 0.67,
"speed": 45.8691,
"traction": 2.2,
"name": "GT500",
"make": "Grotti",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 76158,
"category": "land"
},
"guardian": {
"acceleration": 0.21,
"braking": 0.6,
"handling": 0.59,
"speed": 39.6177,
"traction": 2,
"name": "Guardian",
"make": "Vapid",
"class": 10,
"seats": 6,
"doors": 6,
"type": "automobile",
"price": 65628,
"category": "land"
},
"habanero": {
"acceleration": 0.18,
"braking": 0.25,
"handling": 0.56,
"speed": 39.9117,
"traction": 2.1,
"name": "Habanero",
"make": "Emperor",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 65442,
"category": "land"
},
"hakuchou": {
"acceleration": 0.315,
"braking": 1.4,
"handling": 0.695,
"speed": 49.5412,
"traction": 2.3,
"name": "Hakuchou",
"make": "Shitzu",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 25975,
"category": "land"
},
"hakuchou2": {
"acceleration": 0.425,
"braking": 1.4,
"handling": 0.885,
"speed": 52.0387,
"traction": 2.9,
"name": "Hakuchou Drag",
"make": "Shitzu",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 27374,
"category": "land"
},
"halftrack": {
"acceleration": 0.16,
"braking": 0.2,
"handling": 0.54,
"speed": 20.9333,
"traction": 2.3,
"name": "Half-track",
"make": "Bravado",
"class": 19,
"seats": 3,
"doors": 3,
"type": "automobile",
"price": 174666,
"category": "land",
"weapons": true
},
"handler": {
"acceleration": 0.14,
"braking": 0.1,
"handling": 0.52,
"speed": 8.3333,
"traction": 1.85,
"name": "Dock Handler",
"make": "",
"class": 10,
"seats": 1,
"doors": 1,
"type": "automobile",
"price": 14549,
"category": "land"
},
"hauler": {
"acceleration": 0.16,
"braking": 0.8,
"handling": 0.54,
"speed": 28.6501,
"traction": 1.55,
"name": "Hauler",
"make": "JoBuilt",
"class": 20,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 48240,
"category": "land"
},
"hauler2": {
"acceleration": 0.32,
"braking": 0.85,
"handling": 0.7,
"speed": 41.9442,
"traction": 1.95,
"name": "Hauler Custom",
"make": "JoBuilt",
"class": 20,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 70102,
"category": "land"
},
"havok": {
"acceleration": 5.39,
"braking": 3.1212,
"handling": 5.39,
"speed": 57.9072,
"traction": 1.3,
"name": "Havok",
"make": "Nagasaki",
"class": 15,
"seats": 1,
"doors": 1,
"type": "heli",
"price": 6462756,
"category": "air"
},
"hellion": {
"acceleration": 0.25,
"braking": 0.3,
"handling": 0.63,
"speed": 40.3984,
"traction": 2,
"name": "Hellion",
"make": "Annis",
"class": 9,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 66525,
"category": "land"
},
"hermes": {
"acceleration": 0.285,
"braking": 0.775,
"handling": 0.665,
"speed": 41.2605,
"traction": 2.375,
"name": "Hermes",
"make": "Albany",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 68776,
"category": "land"
},
"hexer": {
"acceleration": 0.26,
"braking": 1,
"handling": 0.64,
"speed": 43.1425,
"traction": 1.85,
"name": "Hexer",
"make": "LCC",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 22521,
"category": "land"
},
"hotknife": {
"acceleration": 0.3,
"braking": 0.43,
"handling": 0.68,
"speed": 45.0454,
"traction": 1.85,
"name": "Hotknife",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 74328,
"category": "land"
},
"hotring": {
"acceleration": 0.335,
"braking": 0.7,
"handling": 0.715,
"speed": 48.0775,
"traction": 2.55,
"name": "Hotring Sabre",
"make": "Declasse",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79724,
"category": "land"
},
"howard": {
"acceleration": 20.58,
"braking": 20.58,
"handling": 20.58,
"speed": 100,
"traction": 1.15,
"name": "Howard NX-25",
"make": "Buckingham",
"class": 16,
"seats": 1,
"doors": 1,
"type": "plane",
"price": 2587840,
"category": "air"
},
"hunter": {
"acceleration": 5.488,
"braking": 3.2135,
"handling": 5.488,
"speed": 58.5543,
"traction": 1.3,
"name": "FH-1 Hunter",
"make": "",
"class": 15,
"seats": 2,
"doors": 4,
"type": "heli",
"price": 32734709,
"category": "air",
"weapons": true
},
"huntley": {
"acceleration": 0.265,
"braking": 0.55,
"handling": 0.645,
"speed": 45.3333,
"traction": 2.1,
"name": "Huntley S",
"make": "Enus",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 74869,
"category": "land"
},
"hustler": {
"acceleration": 0.3,
"braking": 0.43,
"handling": 0.68,
"speed": 44.1528,
"traction": 1.95,
"name": "Hustler",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 72900,
"category": "land"
},
"hydra": {
"acceleration": 8.82,
"braking": 9.6812,
"handling": 8.82,
"speed": 109.7643,
"traction": 1.15,
"name": "Hydra",
"make": "Mammoth",
"class": 16,
"seats": 1,
"doors": 1,
"type": "plane",
"price": 10966840,
"category": "air",
"weapons": true
},
"ignus": {
"acceleration": 0.3835,
"braking": 1,
"handling": 0.7635,
"speed": 52.3653,
"traction": 2.7675,
"name": "Ignus",
"make": "Pegassi",
"class": 7,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 87219,
"category": "land"
},
"imorgon": {
"acceleration": 0.66,
"braking": 0.835,
"handling": 1.04,
"speed": 45.499,
"traction": 2.598,
"name": "Imorgon",
"make": "Overflod",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 76854,
"category": "land"
},
"impaler": {
"acceleration": 0.31,
"braking": 0.6,
"handling": 0.69,
"speed": 45.0153,
"traction": 2.35,
"name": "Impaler",
"make": "Declasse",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74584,
"category": "land"
},
"impaler2": {
"acceleration": 0.38,
"braking": 0.7,
"handling": 0.76,
"speed": 50.7078,
"traction": 2.4,
"name": "Apocalypse Impaler",
"make": "Declasse",
"class": 4,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 84076,
"category": "land"
},
"impaler3": {
"acceleration": 0.38,
"braking": 0.7,
"handling": 0.76,
"speed": 50.7078,
"traction": 2.4,
"name": "Future Shock Impaler",
"make": "Declasse",
"class": 4,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 84076,
"category": "land"
},
"impaler4": {
"acceleration": 0.38,
"braking": 0.7,
"handling": 0.76,
"speed": 50.7078,
"traction": 2.4,
"name": "Nightmare Impaler",
"make": "Declasse",
"class": 4,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 84076,
"category": "land"
},
"impaler5": {
"acceleration": 0.2537,
"braking": 0.865,
"handling": 0.6338,
"speed": 47.5449,
"traction": 2.3,
"name": "Impaler SZ",
"make": "Declasse",
"class": 4,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 78875,
"category": "land"
},
"impaler6": {
"acceleration": 0.3,
"braking": 0.7,
"handling": 0.68,
"speed": 47.0182,
"traction": 2.135,
"name": "Impaler LX",
"make": "Declasse",
"class": 4,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 77917,
"category": "land"
},
"imperator": {
"acceleration": 0.365,
"braking": 0.5,
"handling": 0.745,
"speed": 48.5751,
"traction": 2.25,
"name": "Apocalypse Imperator",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80296,
"category": "land"
},
"imperator2": {
"acceleration": 0.365,
"braking": 0.5,
"handling": 0.745,
"speed": 48.5751,
"traction": 2.25,
"name": "Future Shock Imperator",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80296,
"category": "land"
},
"imperator3": {
"acceleration": 0.365,
"braking": 0.5,
"handling": 0.745,
"speed": 48.5751,
"traction": 2.25,
"name": "Nightmare Imperator",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80296,
"category": "land"
},
"inductor": {
"acceleration": 0.112,
"braking": 3.1,
"handling": 0.492,
"speed": 10.7824,
"traction": 2.05,
"name": "Inductor",
"make": "",
"class": 13,
"seats": 1,
"doors": 1,
"type": "bicycle",
"price": 4345,
"category": "land"
},
"inductor2": {
"acceleration": 0.112,
"braking": 3.1,
"handling": 0.492,
"speed": 10.7824,
"traction": 2.05,
"name": "Junk Energy Inductor",
"make": "",
"class": 13,
"seats": 1,
"doors": 1,
"type": "bicycle",
"price": 4345,
"category": "land"
},
"infernus": {
"acceleration": 0.34,
"braking": 0.5,
"handling": 0.72,
"speed": 49.1131,
"traction": 2.65,
"name": "Infernus",
"make": "Pegassi",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 81076,
"category": "land"
},
"infernus2": {
"acceleration": 0.33,
"braking": 0.5,
"handling": 0.71,
"speed": 48.0533,
"traction": 2.635,
"name": "Infernus Classic",
"make": "Pegassi",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79349,
"category": "land"
},
"ingot": {
"acceleration": 0.14,
"braking": 0.6,
"handling": 0.52,
"speed": 32.0802,
"traction": 1.95,
"name": "Ingot",
"make": "Vulcar",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 53344,
"category": "land"
},
"innovation": {
"acceleration": 0.32,
"braking": 1,
"handling": 0.7,
"speed": 45,
"traction": 1.9,
"name": "Innovation",
"make": "LCC",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 23510,
"category": "land"
},
"insurgent": {
"acceleration": 0.24,
"braking": 0.6,
"handling": 0.62,
"speed": 35.4436,
"traction": 2,
"name": "Insurgent Pick-Up",
"make": "HVY",
"class": 9,
"seats": 9,
"doors": 5,
"type": "automobile",
"price": 295228,
"category": "land",
"weapons": true
},
"insurgent2": {
"acceleration": 0.24,
"braking": 0.6,
"handling": 0.62,
"speed": 35.4436,
"traction": 2,
"name": "Insurgent",
"make": "HVY",
"class": 9,
"seats": 6,
"doors": 5,
"type": "automobile",
"price": 59045,
"category": "land"
},
"insurgent3": {
"acceleration": 0.24,
"braking": 0.6,
"handling": 0.62,
"speed": 35.4436,
"traction": 2,
"name": "Insurgent Pick-Up Custom",
"make": "HVY",
"class": 9,
"seats": 9,
"doors": 5,
"type": "automobile",
"price": 295228,
"category": "land",
"weapons": true
},
"intruder": {
"acceleration": 0.2,
"braking": 0.9,
"handling": 0.58,
"speed": 39.3713,
"traction": 2.35,
"name": "Intruder",
"make": "Karin",
"class": 1,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 65682,
"category": "land"
},
"issi2": {
"acceleration": 0.23,
"braking": 0.6,
"handling": 0.61,
"speed": 41.9174,
"traction": 2.05,
"name": "Issi",
"make": "Weeny",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 69371,
"category": "land"
},
"issi3": {
"acceleration": 0.26,
"braking": 0.3,
"handling": 0.64,
"speed": 39.7959,
"traction": 2,
"name": "Issi Classic",
"make": "Weeny",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 65593,
"category": "land"
},
"issi4": {
"acceleration": 0.34,
"braking": 0.4,
"handling": 0.72,
"speed": 44.9375,
"traction": 2,
"name": "Apocalypse Issi",
"make": "Weeny",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74236,
"category": "land"
},
"issi5": {
"acceleration": 0.34,
"braking": 0.4,
"handling": 0.72,
"speed": 44.9375,
"traction": 2,
"name": "Future Shock Issi",
"make": "Weeny",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74236,
"category": "land"
},
"issi6": {
"acceleration": 0.34,
"braking": 0.4,
"handling": 0.72,
"speed": 44.9375,
"traction": 2,
"name": "Nightmare Issi",
"make": "Weeny",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74236,
"category": "land"
},
"issi7": {
"acceleration": 0.305,
"braking": 1,
"handling": 0.685,
"speed": 42.0375,
"traction": 2.55,
"name": "Issi Sport",
"make": "Weeny",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 70444,
"category": "land"
},
"issi8": {
"acceleration": 0.3215,
"braking": 0.548,
"handling": 0.7415,
"speed": 48.2089,
"traction": 2.1495,
"name": "Issi Rally",
"make": "Weeny",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 79711,
"category": "land"
},
"italigtb": {
"acceleration": 0.3365,
"braking": 1.1,
"handling": 0.7165,
"speed": 52.1595,
"traction": 2.5,
"name": "Itali GTB",
"make": "Progen",
"class": 7,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 86900,
"category": "land"
},
"italigtb2": {
"acceleration": 0.34,
"braking": 1.2,
"handling": 0.72,
"speed": 52.4821,
"traction": 2.55,
"name": "Itali GTB Custom",
"make": "Progen",
"class": 7,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 87587,
"category": "land"
},
"italigto": {
"acceleration": 0.4,
"braking": 1.1,
"handling": 0.78,
"speed": 52.3922,
"traction": 2.62,
"name": "Itali GTO",
"make": "Grotti",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 87475,
"category": "land"
},
"italirsx": {
"acceleration": 0.4013,
"braking": 1.35,
"handling": 0.7813,
"speed": 52.2692,
"traction": 2.737,
"name": "Itali RSX",
"make": "Grotti",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 87682,
"category": "land"
},
"iwagen": {
"acceleration": 0.2315,
"braking": 0.775,
"handling": 0.6115,
"speed": 33.3125,
"traction": 2.365,
"name": "I-Wagen",
"make": "Obey",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 55888,
"category": "land"
},
"jackal": {
"acceleration": 0.22,
"braking": 0.9,
"handling": 0.6,
"speed": 45.9825,
"traction": 2.6,
"name": "Jackal",
"make": "Ocelot",
"class": 3,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 76324,
"category": "land"
},
"jb700": {
"acceleration": 0.26,
"braking": 0.6,
"handling": 0.64,
"speed": 50,
"traction": 2.15,
"name": "JB 700",
"make": "Dewbauchee",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82400,
"category": "land"
},
"jb7002": {
"acceleration": 0.26,
"braking": 0.6,
"handling": 0.64,
"speed": 50,
"traction": 2.15,
"name": "JB 700W",
"make": "Dewbauchee",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82400,
"category": "land"
},
"jester": {
"acceleration": 0.3,
"braking": 0.95,
"handling": 0.68,
"speed": 45.9981,
"traction": 2.55,
"name": "Jester",
"make": "Dinka",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 76684,
"category": "land"
},
"jester2": {
"acceleration": 0.31,
"braking": 0.95,
"handling": 0.69,
"speed": 46.9034,
"traction": 2.57,
"name": "Jester (Racecar)",
"make": "Dinka",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 78165,
"category": "land"
},
"jester3": {
"acceleration": 0.32,
"braking": 0.95,
"handling": 0.7,
"speed": 48.319,
"traction": 2.575,
"name": "Jester Classic",
"make": "Dinka",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 80462,
"category": "land"
},
"jester4": {
"acceleration": 0.3291,
"braking": 0.85,
"handling": 0.7091,
"speed": 48.0367,
"traction": 2.59,
"name": "Jester RR",
"make": "Dinka",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79879,
"category": "land"
},
"jester5": {
"acceleration": 0.3291,
"braking": 0.85,
"handling": 0.7091,
"speed": 46.905,
"traction": 2.725,
"name": "Jester RR Widebody",
"make": "Dinka",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78069,
"category": "land"
},
"jet": {
"acceleration": 6.174,
"braking": 4.8714,
"handling": 6.174,
"speed": 78.9023,
"traction": 1.6,
"name": "Jet",
"make": "",
"class": 16,
"seats": 2,
"doors": 0,
"type": "plane",
"price": 1537947,
"category": "air"
},
"jetmax": {
"acceleration": 17,
"braking": 0.4,
"handling": 17.38,
"speed": 45,
"traction": 0,
"name": "Jetmax",
"make": "Shitzu",
"class": 14,
"seats": 2,
"doors": 0,
"type": "boat",
"price": 478680,
"category": "sea"
},
"journey": {
"acceleration": 0.13,
"braking": 0.25,
"handling": 0.51,
"speed": 32.1641,
"traction": 1.4,
"name": "Journey",
"make": "Zirconium",
"class": 12,
"seats": 6,
"doors": 3,
"type": "automobile",
"price": 52886,
"category": "land"
},
"journey2": {
"acceleration": 0.13,
"braking": 0.25,
"handling": 0.51,
"speed": 32.1641,
"traction": 1.4,
"name": "Journey II",
"make": "Zirconium",
"class": 12,
"seats": 6,
"doors": 3,
"type": "automobile",
"price": 52886,
"category": "land"
},
"jubilee": {
"acceleration": 0.2975,
"braking": 0.75,
"handling": 0.6775,
"speed": 42.7814,
"traction": 2.285,
"name": "Jubilee",
"make": "Enus",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 71210,
"category": "land"
},
"jugular": {
"acceleration": 0.378,
"braking": 1.1,
"handling": 0.758,
"speed": 48.6466,
"traction": 2.62,
"name": "Jugular",
"make": "Ocelot",
"class": 6,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 81412,
"category": "land"
},
"kalahari": {
"acceleration": 0.26,
"braking": 1,
"handling": 0.64,
"speed": 35.004,
"traction": 1.78,
"name": "Kalahari",
"make": "Canis",
"class": 9,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 59046,
"category": "land"
},
"kamacho": {
"acceleration": 0.255,
"braking": 0.3,
"handling": 0.635,
"speed": 40.8822,
"traction": 2,
"name": "Kamacho",
"make": "Canis",
"class": 9,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 67315,
"category": "land"
},
"kanjo": {
"acceleration": 0.32,
"braking": 0.5,
"handling": 0.7,
"speed": 44.4042,
"traction": 1.97,
"name": "Blista Kanjo",
"make": "Dinka",
"class": 0,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 73478,
"category": "land"
},
"kanjosj": {
"acceleration": 0.315,
"braking": 0.45,
"handling": 0.695,
"speed": 44.6584,
"traction": 1.995,
"name": "Kanjo SJ",
"make": "Dinka",
"class": 3,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 73789,
"category": "land"
},
"khamelion": {
"acceleration": 0.15,
"braking": 0.9,
"handling": 0.53,
"speed": 31.7276,
"traction": 2.6,
"name": "Khamelion",
"make": "Hijak",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 53292,
"category": "land"
},
"khanjali": {
"acceleration": 0.1,
"braking": 0.2,
"handling": 0.48,
"speed": 18.1221,
"traction": 2.55,
"name": "TM-02 Khanjali",
"make": "",
"class": 19,
"seats": 4,
"doors": 4,
"type": "automobile",
"price": 151216,
"category": "land",
"weapons": true
},
"komoda": {
"acceleration": 0.367,
"braking": 0.95,
"handling": 0.747,
"speed": 49.8918,
"traction": 2.69,
"name": "Komoda",
"make": "Lampadati",
"class": 6,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 83129,
"category": "land"
},
"kosatka": {
"acceleration": 5.25,
"braking": 0.4,
"handling": 5.63,
"speed": 25,
"traction": 0,
"name": "Kosatka",
"make": "RUNE",
"class": 14,
"seats": 1,
"doors": 3,
"type": "submarine",
"price": 3990800,
"category": "sea",
"weapons": true
},
"krieger": {
"acceleration": 0.374,
"braking": 1.12,
"handling": 0.754,
"speed": 52.5741,
"traction": 2.782,
"name": "Krieger",
"make": "Benefactor",
"class": 7,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 87715,
"category": "land"
},
"kuruma": {
"acceleration": 0.31,
"braking": 0.5,
"handling": 0.69,
"speed": 46.9034,
"traction": 2.45,
"name": "Kuruma",
"make": "Karin",
"class": 6,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 77445,
"category": "land"
},
"kuruma2": {
"acceleration": 0.31,
"braking": 0.5,
"handling": 0.69,
"speed": 45.9285,
"traction": 2.25,
"name": "Kuruma (Armored)",
"make": "Karin",
"class": 6,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 75885,
"category": "land"
},
"l35": {
"acceleration": 0.236,
"braking": 0.32,
"handling": 0.616,
"speed": 39.0963,
"traction": 2.038,
"name": "Walton L35",
"make": "Declasse",
"class": 9,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 64429,
"category": "land"
},
"landstalker": {
"acceleration": 0.18,
"braking": 0.8,
"handling": 0.56,
"speed": 36.8308,
"traction": 2.1,
"name": "Landstalker",
"make": "Dundreary",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 61393,
"category": "land"
},
"landstalker2": {
"acceleration": 0.19,
"braking": 0.8,
"handling": 0.57,
"speed": 37.6554,
"traction": 2.15,
"name": "Landstalker XL",
"make": "Dundreary",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 62744,
"category": "land"
},
"lazer": {
"acceleration": 19.6,
"braking": 17.8923,
"handling": 19.6,
"speed": 91.2871,
"traction": 2.15,
"name": "P-996 LAZER",
"make": "",
"class": 16,
"seats": 1,
"doors": 1,
"type": "plane",
"price": 11870352,
"category": "air",
"weapons": true
},
"le7b": {
"acceleration": 0.371,
"braking": 1.1,
"handling": 0.751,
"speed": 50.3563,
"traction": 2.68,
"name": "RE-7B",
"make": "Annis",
"class": 7,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 84125,
"category": "land"
},
"lectro": {
"acceleration": 0.28,
"braking": 1.2,
"handling": 0.66,
"speed": 43.2353,
"traction": 1.95,
"name": "Lectro",
"make": "Principe",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 45375,
"category": "land"
},
"lguard": {
"acceleration": 0.2,
"braking": 0.8,
"handling": 0.58,
"speed": 37.5559,
"traction": 2.05,
"name": "Lifeguard",
"make": "Declasse",
"class": 18,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 62617,
"category": "land"
},
"limo2": {
"acceleration": 0.27,
"braking": 0.8,
"handling": 0.65,
"speed": 39.2704,
"traction": 2.175,
"name": "Turreted Limo",
"make": "Benefactor",
"class": 1,
"seats": 5,
"doors": 6,
"type": "automobile",
"price": 327923,
"category": "land",
"weapons": true
},
"lm87": {
"acceleration": 0.3765,
"braking": 1.35,
"handling": 0.7565,
"speed": 50.3353,
"traction": 2.77,
"name": "LM87",
"make": "Benefactor",
"class": 7,
"seats": 1,
"doors": 4,
"type": "automobile",
"price": 84509,
"category": "land"
},
"locust": {
"acceleration": 0.334,
"braking": 1,
"handling": 0.714,
"speed": 48.8089,
"traction": 2.685,
"name": "Locust",
"make": "Ocelot",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81371,
"category": "land"
},
"longfin": {
"acceleration": 18,
"braking": 0.4,
"handling": 18.38,
"speed": 46.6667,
"traction": 0,
"name": "Longfin",
"make": "Shitzu",
"class": 14,
"seats": 4,
"doors": 0,
"type": "boat",
"price": 500680,
"category": "sea"
},
"lurcher": {
"acceleration": 0.29,
"braking": 0.8,
"handling": 0.67,
"speed": 47.1435,
"traction": 2.15,
"name": "Lurcher",
"make": "Albany",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 78245,
"category": "land"
},
"luxor": {
"acceleration": 7.938,
"braking": 7.193,
"handling": 7.938,
"speed": 90.6145,
"traction": 1.15,
"name": "Luxor",
"make": "Buckingham",
"class": 16,
"seats": 10,
"doors": 1,
"type": "plane",
"price": 1818936,
"category": "air"
},
"luxor2": {
"acceleration": 8.036,
"braking": 7.3309,
"handling": 8.036,
"speed": 91.2252,
"traction": 1.15,
"name": "Luxor Deluxe",
"make": "Buckingham",
"class": 16,
"seats": 8,
"doors": 1,
"type": "plane",
"price": 1834049,
"category": "air"
},
"lynx": {
"acceleration": 0.315,
"braking": 1,
"handling": 0.695,
"speed": 49.0772,
"traction": 2.56,
"name": "Lynx",
"make": "Ocelot",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81739,
"category": "land"
},
"mamba": {
"acceleration": 0.34,
"braking": 0.5,
"handling": 0.72,
"speed": 49.3333,
"traction": 2.5,
"name": "Mamba",
"make": "Declasse",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81429,
"category": "land"
},
"mammatus": {
"acceleration": 4.9,
"braking": 3.399,
"handling": 4.9,
"speed": 69.3676,
"traction": 2.15,
"name": "Mammatus",
"make": "",
"class": 16,
"seats": 4,
"doors": 3,
"type": "plane",
"price": 1321065,
"category": "air"
},
"manana": {
"acceleration": 0.16,
"braking": 0.25,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.95,
"name": "Manana",
"make": "Albany",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 60635,
"category": "land"
},
"manana2": {
"acceleration": 0.24,
"braking": 0.275,
"handling": 0.62,
"speed": 43.563,
"traction": 1.98,
"name": "Manana Custom",
"make": "Albany",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 71516,
"category": "land"
},
"manchez": {
"acceleration": 0.295,
"braking": 1.2,
"handling": 0.675,
"speed": 44.1064,
"traction": 2.15,
"name": "Manchez",
"make": "Maibatsu",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 23138,
"category": "land"
},
"manchez2": {
"acceleration": 0.265,
"braking": 0.8,
"handling": 0.645,
"speed": 41.3801,
"traction": 2.12,
"name": "Manchez Scout",
"make": "Maibatsu",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 21545,
"category": "land"
},
"manchez3": {
"acceleration": 0.272,
"braking": 0.8,
"handling": 0.652,
"speed": 41.5401,
"traction": 2.11,
"name": "Manchez Scout C",
"make": "Maibatsu",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 21632,
"category": "land"
},
"marquis": {
"acceleration": 2.5,
"braking": 0.4,
"handling": 2.88,
"speed": 10,
"traction": 0,
"name": "Marquis",
"make": "Dinka",
"class": 14,
"seats": 4,
"doors": 0,
"type": "boat",
"price": 94680,
"category": "sea"
},
"marshall": {
"acceleration": 0.4,
"braking": 0.65,
"handling": 0.78,
"speed": 33.9677,
"traction": 2.25,
"name": "Marshall",
"make": "Cheval",
"class": 9,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 57276,
"category": "land"
},
"massacro": {
"acceleration": 0.364,
"braking": 0.9,
"handling": 0.744,
"speed": 50.4748,
"traction": 2.42,
"name": "Massacro",
"make": "Dewbauchee",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83972,
"category": "land"
},
"massacro2": {
"acceleration": 0.364,
"braking": 0.9,
"handling": 0.744,
"speed": 50.4748,
"traction": 2.43,
"name": "Massacro (Racecar)",
"make": "Dewbauchee",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 83972,
"category": "land"
},
"maverick": {
"acceleration": 5.096,
"braking": 2.7553,
"handling": 5.096,
"speed": 54.0675,
"traction": 1.3,
"name": "Maverick",
"make": "",
"class": 15,
"seats": 4,
"doors": 2,
"type": "heli",
"price": 30156660,
"category": "air",
"weapons": true
},
"menacer": {
"acceleration": 0.2,
"braking": 0.6,
"handling": 0.58,
"speed": 31.794,
"traction": 2,
"name": "Menacer",
"make": "HVY",
"class": 9,
"seats": 5,
"doors": 5,
"type": "automobile",
"price": 265392,
"category": "land",
"weapons": true
},
"mesa": {
"acceleration": 0.17,
"braking": 0.3,
"handling": 0.55,
"speed": 34.6832,
"traction": 2,
"name": "Mesa",
"make": "Canis",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 57125,
"category": "land"
},
"mesa2": {
"acceleration": 0.17,
"braking": 0.3,
"handling": 0.55,
"speed": 34.6832,
"traction": 2,
"name": "Mesa",
"make": "Canis",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 57125,
"category": "land"
},
"mesa3": {
"acceleration": 0.17,
"braking": 0.3,
"handling": 0.55,
"speed": 34.6832,
"traction": 2,
"name": "Mesa",
"make": "Canis",
"class": 9,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 57125,
"category": "land"
},
"metrotrain": {
"acceleration": 0.2,
"braking": 5,
"handling": 0.58,
"speed": 26.6667,
"traction": 2.5,
"name": "Freight Train",
"make": "",
"class": 21,
"seats": 4,
"doors": 4,
"type": "train",
"price": 194680,
"category": "land"
},
"michelli": {
"acceleration": 0.2825,
"braking": 0.75,
"handling": 0.6625,
"speed": 44.5681,
"traction": 2.3,
"name": "Michelli GT",
"make": "Lampadati",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74020,
"category": "land"
},
"microlight": {
"acceleration": 13.72,
"braking": 4.1367,
"handling": 13.72,
"speed": 30.1511,
"traction": 2.15,
"name": "Ultralight",
"make": "Nagasaki",
"class": 16,
"seats": 1,
"doors": 0,
"type": "plane",
"price": 987644,
"category": "air"
},
"miljet": {
"acceleration": 8.134,
"braking": 7.4696,
"handling": 8.134,
"speed": 91.8322,
"traction": 1.5,
"name": "Miljet",
"make": "Buckingham",
"class": 16,
"seats": 16,
"doors": 1,
"type": "plane",
"price": 1849116,
"category": "air"
},
"minitank": {
"acceleration": 0.06,
"braking": 0.15,
"handling": 0.44,
"speed": 9.7297,
"traction": 2,
"name": "Invade and Persuade Tank",
"make": "",
"class": 19,
"seats": 1,
"doors": 0,
"type": "automobile",
"price": 124556,
"category": "land",
"weapons": true
},
"minivan": {
"acceleration": 0.15,
"braking": 0.4,
"handling": 0.53,
"speed": 35.4017,
"traction": 1.9,
"name": "Minivan",
"make": "Vapid",
"class": 12,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 58370,
"category": "land"
},
"minivan2": {
"acceleration": 0.15,
"braking": 0.45,
"handling": 0.53,
"speed": 35.4017,
"traction": 1.925,
"name": "Minivan Custom",
"make": "Vapid",
"class": 12,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 58450,
"category": "land"
},
"mixer": {
"acceleration": 0.11,
"braking": 0.3,
"handling": 0.49,
"speed": 32.4021,
"traction": 1.6,
"name": "Mixer",
"make": "HVY",
"class": 10,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 53283,
"category": "land"
},
"mixer2": {
"acceleration": 0.11,
"braking": 0.3,
"handling": 0.49,
"speed": 32.4021,
"traction": 1.6,
"name": "Mixer",
"make": "HVY",
"class": 10,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 53283,
"category": "land"
},
"mogul": {
"acceleration": 5.88,
"braking": 4.5156,
"handling": 5.88,
"speed": 76.7957,
"traction": 2.15,
"name": "Mogul",
"make": "Mammoth",
"class": 16,
"seats": 3,
"doors": 3,
"type": "plane",
"price": 7445704,
"category": "air",
"weapons": true
},
"molotok": {
"acceleration": 14.7,
"braking": 13.4192,
"handling": 14.7,
"speed": 91.2871,
"traction": 2.15,
"name": "V-65 Molotok",
"make": "",
"class": 16,
"seats": 1,
"doors": 1,
"type": "plane",
"price": 10728503,
"category": "air",
"weapons": true
},
"monroe": {
"acceleration": 0.28,
"braking": 0.65,
"handling": 0.66,
"speed": 50,
"traction": 2.2,
"name": "Monroe",
"make": "Pegassi",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82544,
"category": "land"
},
"monster": {
"acceleration": 0.4,
"braking": 0.65,
"handling": 0.78,
"speed": 33.9677,
"traction": 2.25,
"name": "Liberator",
"make": "Vapid",
"class": 9,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 57276,
"category": "land"
},
"monster3": {
"acceleration": 0.41,
"braking": 0.65,
"handling": 0.79,
"speed": 38.3787,
"traction": 2.275,
"name": "Apocalypse Sasquatch",
"make": "Bravado",
"class": 9,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 64365,
"category": "land"
},
"monster4": {
"acceleration": 0.41,
"braking": 0.65,
"handling": 0.79,
"speed": 38.3787,
"traction": 2.275,
"name": "Future Shock Sasquatch",
"make": "Bravado",
"class": 9,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 64365,
"category": "land"
},
"monster5": {
"acceleration": 0.41,
"braking": 0.65,
"handling": 0.79,
"speed": 38.3787,
"traction": 2.275,
"name": "Nightmare Sasquatch",
"make": "Bravado",
"class": 9,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 64365,
"category": "land"
},
"monstrociti": {
"acceleration": 0.2735,
"braking": 0.369,
"handling": 0.7135,
"speed": 41.3981,
"traction": 2.16,
"name": "MonstroCiti",
"make": "Maibatsu",
"class": 9,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 68406,
"category": "land"
},
"moonbeam": {
"acceleration": 0.21,
"braking": 0.4,
"handling": 0.59,
"speed": 41.6667,
"traction": 2,
"name": "Moonbeam",
"make": "Declasse",
"class": 4,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 68586,
"category": "land"
},
"moonbeam2": {
"acceleration": 0.21,
"braking": 0.4,
"handling": 0.59,
"speed": 41.6667,
"traction": 2,
"name": "Moonbeam Custom",
"make": "Declasse",
"class": 4,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 68586,
"category": "land"
},
"mower": {
"acceleration": 0.05,
"braking": 0.5,
"handling": 0.43,
"speed": 6.6667,
"traction": 1.35,
"name": "Lawn Mower",
"make": "",
"class": 11,
"seats": 1,
"doors": 1,
"type": "automobile",
"price": 12234,
"category": "land"
},
"mule": {
"acceleration": 0.11,
"braking": 0.25,
"handling": 0.49,
"speed": 28.6961,
"traction": 1.5,
"name": "Mule",
"make": "Maibatsu",
"class": 20,
"seats": 6,
"doors": 4,
"type": "automobile",
"price": 47273,
"category": "land"
},
"mule2": {
"acceleration": 0.11,
"braking": 0.25,
"handling": 0.49,
"speed": 28.6961,
"traction": 1.5,
"name": "Mule",
"make": "Maibatsu",
"class": 20,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 47273,
"category": "land"
},
"mule3": {
"acceleration": 0.17,
"braking": 0.25,
"handling": 0.55,
"speed": 31.9047,
"traction": 1.5,
"name": "Mule",
"make": "Maibatsu",
"class": 20,
"seats": 6,
"doors": 4,
"type": "automobile",
"price": 52599,
"category": "land"
},
"mule4": {
"acceleration": 0.11,
"braking": 0.25,
"handling": 0.49,
"speed": 28.6961,
"traction": 1.5,
"name": "Mule Custom",
"make": "Maibatsu",
"class": 20,
"seats": 4,
"doors": 4,
"type": "automobile",
"price": 47273,
"category": "land"
},
"mule5": {
"acceleration": 0.17,
"braking": 0.25,
"handling": 0.55,
"speed": 31.9047,
"traction": 1.5,
"name": "Mule",
"make": "Maibatsu",
"class": 20,
"seats": 6,
"doors": 4,
"type": "automobile",
"price": 52599,
"category": "land"
},
"nebula": {
"acceleration": 0.24,
"braking": 0.5,
"handling": 0.62,
"speed": 37.9382,
"traction": 1.95,
"name": "Nebula Turbo",
"make": "Vulcar",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 62877,
"category": "land"
},
"nemesis": {
"acceleration": 0.3,
"braking": 1.2,
"handling": 0.68,
"speed": 45.0454,
"traction": 1.95,
"name": "Nemesis",
"make": "Principe",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 23612,
"category": "land"
},
"neo": {
"acceleration": 0.387,
"braking": 1.2,
"handling": 0.767,
"speed": 51.2066,
"traction": 2.62,
"name": "Neo",
"make": "Vysser",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 85696,
"category": "land"
},
"neon": {
"acceleration": 0.2505,
"braking": 1.3,
"handling": 0.6305,
"speed": 38.9224,
"traction": 2.275,
"name": "Neon",
"make": "Pfister",
"class": 6,
"seats": 4,
"doors": 4,
"type": "automobile",
"price": 65765,
"category": "land"
},
"nero": {
"acceleration": 0.3375,
"braking": 1,
"handling": 0.7175,
"speed": 52.642,
"traction": 2.65,
"name": "Nero",
"make": "Truffade",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 87515,
"category": "land"
},
"nero2": {
"acceleration": 0.3401,
"braking": 1.1,
"handling": 0.7201,
"speed": 52.879,
"traction": 2.675,
"name": "Nero Custom",
"make": "Truffade",
"class": 7,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 88062,
"category": "land"
},
"nightblade": {
"acceleration": 0.31,
"braking": 1.2,
"handling": 0.69,
"speed": 46.9034,
"traction": 1.95,
"name": "Nightblade",
"make": "Western",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 24551,
"category": "land"
},
"nightshade": {
"acceleration": 0.25,
"braking": 0.6,
"handling": 0.63,
"speed": 40.3984,
"traction": 2.25,
"name": "Nightshade",
"make": "Imponte",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 67005,
"category": "land"
},
"nightshark": {
"acceleration": 0.27,
"braking": 0.75,
"handling": 0.65,
"speed": 36.833,
"traction": 2.1,
"name": "Nightshark",
"make": "HVY",
"class": 9,
"seats": 4,
"doors": 4,
"type": "automobile",
"price": 308024,
"category": "land",
"weapons": true
},
"nimbus": {
"acceleration": 8.134,
"braking": 7.6912,
"handling": 8.134,
"speed": 94.5562,
"traction": 1.15,
"name": "Nimbus",
"make": "Buckingham",
"class": 16,
"seats": 8,
"doors": 1,
"type": "plane",
"price": 1896246,
"category": "air"
},
"ninef": {
"acceleration": 0.33,
"braking": 1,
"handling": 0.71,
"speed": 48.6724,
"traction": 2.55,
"name": "9F",
"make": "Obey",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81139,
"category": "land"
},
"ninef2": {
"acceleration": 0.33,
"braking": 1,
"handling": 0.71,
"speed": 48.6724,
"traction": 2.55,
"name": "9F Cabrio",
"make": "Obey",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 81139,
"category": "land"
},
"niobe": {
"acceleration": 0.3805,
"braking": 0.76,
"handling": 0.8405,
"speed": 50.7465,
"traction": 2.605,
"name": "Niobe",
"make": "Ubermacht",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 84364,
"category": "land"
},
"nokota": {
"acceleration": 14.7,
"braking": 12.8928,
"handling": 14.7,
"speed": 87.7058,
"traction": 2.15,
"name": "P-45 Nokota",
"make": "",
"class": 16,
"seats": 1,
"doors": 1,
"type": "plane",
"price": 10399888,
"category": "air",
"weapons": true
},
"novak": {
"acceleration": 0.3,
"braking": 0.8,
"handling": 0.68,
"speed": 47.0182,
"traction": 2.3,
"name": "Novak",
"make": "Lampadati",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 78077,
"category": "land"
},
"omnis": {
"acceleration": 0.305,
"braking": 1,
"handling": 0.685,
"speed": 43.7374,
"traction": 2,
"name": "Omnis",
"make": "Obey",
"class": 6,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 73163,
"category": "land"
},
"omnisegt": {
"acceleration": 0.58,
"braking": 1,
"handling": 0.96,
"speed": 47.6944,
"traction": 2.595,
"name": "Omnis e-GT",
"make": "Obey",
"class": 6,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 80375,
"category": "land"
},
"openwheel1": {
"acceleration": 0.76,
"braking": 1.3,
"handling": 1.14,
"speed": 52.5277,
"traction": 3.2925,
"name": "BR8",
"make": "Benefactor",
"class": 22,
"seats": 1,
"doors": 0,
"type": "automobile",
"price": 178328,
"category": "land"
},
"openwheel2": {
"acceleration": 0.655,
"braking": 1.15,
"handling": 1.035,
"speed": 53.0537,
"traction": 3.08,
"name": "DR1",
"make": "Declasse",
"class": 22,
"seats": 1,
"doors": 0,
"type": "automobile",
"price": 178859,
"category": "land"
},
"oppressor": {
"acceleration": 0.4,
"braking": 1.2,
"handling": 0.78,
"speed": 48.4978,
"traction": 2.125,
"name": "Oppressor",
"make": "Pegassi",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 381583,
"category": "land",
"weapons": true
},
"oppressor2": {
"acceleration": 0.38,
"braking": 1.2,
"handling": 0.76,
"speed": 47.0927,
"traction": 2.1,
"name": "Oppressor Mk II",
"make": "Pegassi",
"class": 8,
"seats": 1,
"doors": 1,
"type": "bike",
"price": 370745,
"category": "land",
"weapons": true
},
"oracle": {
"acceleration": 0.26,
"braking": 0.9,
"handling": 0.64,
"speed": 45.1953,
"traction": 2.25,
"name": "Oracle XS",
"make": "Ubermacht",
"class": 3,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 75192,
"category": "land"
},
"oracle2": {
"acceleration": 0.27,
"braking": 0.9,
"handling": 0.65,
"speed": 46.2473,
"traction": 2.25,
"name": "Oracle",
"make": "Ubermacht",
"class": 3,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 76907,
"category": "land"
},
"osiris": {
"acceleration": 0.36,
"braking": 1.05,
"handling": 0.74,
"speed": 49.6559,
"traction": 2.66,
"name": "Osiris",
"make": "Pegassi",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 82889,
"category": "land"
},
"outlaw": {
"acceleration": 0.475,
"braking": 0.6,
"handling": 0.855,
"speed": 36.1565,
"traction": 2.025,
"name": "Outlaw",
"make": "Nagasaki",
"class": 9,
"seats": 2,
"doors": 2,
"type": "automobile",
"price": 60938,
"category": "land"
},
"packer": {
"acceleration": 0.21,
"braking": 0.8,
"handling": 0.59,
"speed": 36.3465,
"traction": 1.55,
"name": "Packer",
"make": "MTL",
"class": 20,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 60714,
"category": "land"
},
"panthere": {
"acceleration": 0.3462,
"braking": 0.84,
"handling": 0.7262,
"speed": 49.5323,
"traction": 2.5814,
"name": "Panthere",
"make": "Toundra",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 82311,
"category": "land"
},
"panto": {
"acceleration": 0.27,
"braking": 0.6,
"handling": 0.65,
"speed": 40.6987,
"traction": 1.97,
"name": "Panto",
"make": "Benefactor",
"class": 0,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 67549,
"category": "land"
},
"paradise": {
"acceleration": 0.17,
"braking": 0.4,
"handling": 0.55,
"speed": 38.4494,
"traction": 1.95,
"name": "Paradise",
"make": "Bravado",
"class": 12,
"seats": 4,
"doors": 5,
"type": "automobile",
"price": 63311,
"category": "land"
},
"paragon": {
"acceleration": 0.329,
"braking": 1,
"handling": 0.709,
"speed": 44.997,
"traction": 2.675,
"name": "Paragon R",
"make": "Enus",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 75256,
"category": "land"
},
"paragon2": {
"acceleration": 0.3275,
"braking": 0.95,
"handling": 0.7075,
"speed": 44.828,
"traction": 2.675,
"name": "Paragon R (Armored)",
"make": "Enus",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 374504,
"category": "land",
"weapons": true
},
"paragon3": {
"acceleration": 0.33,
"braking": 1.1,
"handling": 0.71,
"speed": 47.4585,
"traction": 2.515,
"name": "Paragon S",
"make": "Enus",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 79357,
"category": "land"
},
"pariah": {
"acceleration": 0.321,
"braking": 1,
"handling": 0.701,
"speed": 48.7328,
"traction": 2.625,
"name": "Pariah",
"make": "Ocelot",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 81207,
"category": "land"
},
"patriot": {
"acceleration": 0.2,
"braking": 0.32,
"handling": 0.58,
"speed": 38.4289,
"traction": 1.7,
"name": "Patriot",
"make": "Mammoth",
"class": 2,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 63246,
"category": "land"
},
"patriot2": {
"acceleration": 0.18,
"braking": 0.32,
"handling": 0.56,
"speed": 35.9639,
"traction": 1.6,
"name": "Patriot Stretch",
"make": "Mammoth",
"class": 2,
"seats": 6,
"doors": 6,
"type": "automobile",
"price": 59238,
"category": "land"
},
"patriot3": {
"acceleration": 0.23,
"braking": 0.485,
"handling": 0.61,
"speed": 37.6763,
"traction": 1.985,
"name": "Patriot Mil-Spec",
"make": "Mammoth",
"class": 9,
"seats": 4,
"doors": 6,
"type": "automobile",
"price": 62402,
"category": "land"
},
"patrolboat": {
"acceleration": 15.5,
"braking": 0.4,
"handling": 15.88,
"speed": 40,
"traction": 0,
"name": "Kurtz 31 Patrol Boat",
"make": "",
"class": 14,
"seats": 4,
"doors": 0,
"type": "boat",
"price": 2153400,
"category": "sea",
"weapons": true
},
"pbus": {
"acceleration": 0.14,
"braking": 0.25,
"handling": 0.52,
"speed": 28.2361,
"traction": 1.35,
"name": "Prison Bus",
"make": "",
"class": 18,
"seats": 11,
"doors": 4,
"type": "automobile",
"price": 46633,
"category": "land"
},
"pbus2": {
"acceleration": 0.13,
"braking": 0.25,
"handling": 0.51,
"speed": 23.1177,
"traction": 1.15,
"name": "Festival Bus",
"make": "",
"class": 17,
"seats": 11,
"doors": 4,
"type": "automobile",
"price": 38412,
"category": "land"
},
"pcj": {
"acceleration": 0.26,
"braking": 1.3,
"handling": 0.64,
"speed": 39.7959,
"traction": 2.05,
"name": "PCJ 600",
"make": "Shitzu",
"class": 8,
"seats": 2,
"doors": 1,
"type": "bike",
"price": 20997,
"category": "land"
},
"penetrator": {
"acceleration": 0.3,
"braking": 0.8,
"handling": 0.68,
"speed": 49.4194,
"traction": 2.58,
"name": "Penetrator",
"make": "Ocelot",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 81919,
"category": "land"
},
"penumbra": {
"acceleration": 0.22,
"braking": 0.8,
"handling": 0.6,
"speed": 40.7799,
"traction": 2.25,
"name": "Penumbra",
"make": "Maibatsu",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 67839,
"category": "land"
},
"penumbra2": {
"acceleration": 0.3,
"braking": 0.8,
"handling": 0.68,
"speed": 45.0454,
"traction": 2.35,
"name": "Penumbra FF",
"make": "Maibatsu",
"class": 6,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 74920,
"category": "land"
},
"peyote": {
"acceleration": 0.16,
"braking": 0.25,
"handling": 0.54,
"speed": 36.9472,
"traction": 1.85,
"name": "Peyote",
"make": "Vapid",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 60635,
"category": "land"
},
"peyote2": {
"acceleration": 0.3445,
"braking": 0.9,
"handling": 0.7245,
"speed": 46.7033,
"traction": 2.26,
"name": "Peyote Gasser",
"make": "Vapid",
"class": 4,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 77875,
"category": "land"
},
"peyote3": {
"acceleration": 0.205,
"braking": 0.28,
"handling": 0.585,
"speed": 42.7741,
"traction": 1.98,
"name": "Peyote Custom",
"make": "Vapid",
"class": 5,
"seats": 2,
"doors": 4,
"type": "automobile",
"price": 70150,
"category": "land"
},
"pfister811": {
"acceleration": 0.356,
"braking": 1.12,
"handling": 0.736,
"speed": 53.1,
"traction": 2.688,
"name": "811",
"make": "Pfister",
"class": 7,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 88499,
"category": "land"
},
"phantom": {
"acceleration": 0.21,
"braking": 0.8,
"handling": 0.59,
"speed": 33.8106,
"traction": 1.65,
"name": "Phantom",
"make": "JoBuilt",
"class": 20,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 56656,
"category": "land"
},
"phantom2": {
"acceleration": 0.3,
"braking": 0.85,
"handling": 0.68,
"speed": 43.3141,
"traction": 1.95,
"name": "Phantom Wedge",
"make": "JoBuilt",
"class": 20,
"seats": 5,
"doors": 2,
"type": "automobile",
"price": 72230,
"category": "land"
},
"phantom3": {
"acceleration": 0.3,
"braking": 0.85,
"handling": 0.68,
"speed": 41.7777,
"traction": 2.05,
"name": "Phantom Custom",
"make": "JoBuilt",
"class": 20,
"seats": 5,
"doors": 3,
"type": "automobile",
"price": 69772,
"category": "land"
},
"phantom4": {
"acceleration": 0.21,
"braking": 0.8,
"handling": 0.59,
"speed": 33.8106,
"traction": 1.65,
"name": "Phantom",
"make": "JoBuilt",
"class": 20,
"seats": 2,
"doors": 3,
"type": "automobile",
"price": 56656,
"category": "land"
},
"phoenix": {
"acceleration": 0.28,
"braking": 0.8,
"handling": 0.66,
"speed": 47.2809,
"traction": 2.15,
"name": "Phoenix",
"make": "Imponte",
"class": 4,
"seats": 2,
"d
gitextract_tzxqlagq/
├── .editorconfig
├── .github/
│ ├── actions/
│ │ └── bump-package-version.js
│ └── workflows/
│ └── release.yml
├── .gitignore
├── .npmignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── biome.json
├── build.js
├── client/
│ ├── config.ts
│ ├── death.ts
│ ├── index.ts
│ ├── player/
│ │ ├── index.ts
│ │ └── status.ts
│ ├── spawn.ts
│ ├── tsconfig.json
│ ├── utils.ts
│ └── vehicle/
│ ├── index.ts
│ └── parser.ts
├── common/
│ ├── config.ts
│ ├── data/
│ │ ├── hospitals.json
│ │ ├── vehicleStats.json
│ │ └── vehicles.json
│ ├── index.ts
│ ├── locales.ts
│ ├── tsconfig.json
│ └── vehicles.ts
├── lib/
│ ├── client/
│ │ ├── index.ts
│ │ ├── init.lua
│ │ ├── player.lua
│ │ └── player.ts
│ ├── index.ts
│ ├── init.lua
│ ├── server/
│ │ ├── account.lua
│ │ ├── account.ts
│ │ ├── index.ts
│ │ ├── init.lua
│ │ ├── player.lua
│ │ ├── player.ts
│ │ ├── vehicle.lua
│ │ └── vehicle.ts
│ └── tsconfig.json
├── locales/
│ ├── ar.json
│ ├── bg.json
│ ├── cs.json
│ ├── da.json
│ ├── de.json
│ ├── en.json
│ ├── es.json
│ ├── et.json
│ ├── fr.json
│ ├── hu.json
│ ├── it.json
│ ├── jp.json
│ ├── lt.json
│ ├── nl.json
│ ├── no.json
│ ├── pl.json
│ ├── ro.json
│ ├── ru.json
│ ├── sk.json
│ ├── tr.json
│ ├── zh-cn.json
│ └── zh-tw.json
├── package.json
├── server/
│ ├── accounts/
│ │ ├── class.ts
│ │ ├── db.ts
│ │ ├── index.ts
│ │ └── roles.ts
│ ├── bridge/
│ │ ├── index.ts
│ │ ├── npwd.ts
│ │ └── ox_inventory.ts
│ ├── classInterface.ts
│ ├── commands.ts
│ ├── config.ts
│ ├── db/
│ │ ├── config.ts
│ │ ├── index.ts
│ │ ├── pool.ts
│ │ └── schema.ts
│ ├── groups/
│ │ ├── db.ts
│ │ └── index.ts
│ ├── index.ts
│ ├── player/
│ │ ├── class.ts
│ │ ├── commands.ts
│ │ ├── db.ts
│ │ ├── events.ts
│ │ ├── index.ts
│ │ ├── license.ts
│ │ ├── loading.ts
│ │ └── status.ts
│ ├── tsconfig.json
│ ├── utils.ts
│ └── vehicle/
│ ├── class.ts
│ ├── commands.ts
│ ├── db.ts
│ ├── events.ts
│ ├── index.ts
│ └── parser.ts
├── sql/
│ └── install.sql
├── tsconfig.json
└── types/
└── index.ts
SYMBOL INDEX (351 symbols across 44 files)
FILE: build.js
function exec (line 8) | function exec(command) {
FILE: client/config.ts
constant DEATH_SYSTEM (line 3) | const DEATH_SYSTEM = GetConvarInt('ox:deathSystem', 1) === 1;
constant CHARACTER_SELECT (line 4) | const CHARACTER_SELECT = GetConvarInt('ox:characterSelect', 1) === 1;
constant SPAWN_LOCATION (line 5) | const SPAWN_LOCATION = JSON.parse(GetConvar('ox:spawnLocation', '[-258.2...
constant HOSPITAL_BLIPS (line 6) | const HOSPITAL_BLIPS = GetConvarInt('ox:hospitalBlips', 1) === 1;
FILE: client/death.ts
function ClearDeath (line 31) | async function ClearDeath(tickId: number, bleedOut: boolean) {
function OnPlayerDeath (line 80) | async function OnPlayerDeath() {
function ResetDeathState (line 121) | function ResetDeathState() {
FILE: client/player/index.ts
class PlayerSingleton (line 8) | class PlayerSingleton {
method constructor (line 18) | constructor() {
method isLoaded (line 89) | get isLoaded() {
method isLoaded (line 93) | set isLoaded(state: boolean) {
method state (line 97) | get state() {
method get (line 102) | get(key?: string) {
method getGroup (line 110) | getGroup(filter: string | string[] | Record<string, number>) {
method getGroupByType (line 130) | getGroupByType(type: string) {
method getGroups (line 143) | getGroups() {
method getStatus (line 147) | getStatus(name: string) {
method getStatuses (line 151) | getStatuses() {
method setStatus (line 155) | setStatus(name: string, value: number) {
method addStatus (line 162) | addStatus(name: string, value: number) {
method removeStatus (line 170) | removeStatus(name: string, value: number) {
method hasPermission (line 178) | hasPermission(permission: string): boolean {
FILE: client/player/status.ts
function UpdateStatuses (line 3) | function UpdateStatuses() {
FILE: client/spawn.ts
function StartSession (line 13) | async function StartSession() {
FILE: client/utils.ts
function netEvent (line 1) | function netEvent(event: string, fn: Function) {
FILE: client/vehicle/parser.ts
constant PRICE_WEIGHTS (line 5) | const PRICE_WEIGHTS: Record<VehicleTypes, number> = {
constant BATCH_SIZE (line 22) | const BATCH_SIZE = 10;
function GetVehicleModels (line 25) | function GetVehicleModels(parseAll: boolean): string[] {
function IsModelValid (line 31) | async function IsModelValid(hash: number): Promise<boolean> {
function SpawnVehicle (line 40) | function SpawnVehicle(hash: number, coords: [number, number, number]): n...
function GetVehicleTypeEx (line 46) | function GetVehicleTypeEx(entity: number): VehicleTypes {
function ParseVehicleData (line 80) | function ParseVehicleData(entity: number, hash: number, model: string): ...
function CalculateVehiclePrice (line 117) | function CalculateVehiclePrice(data: VehicleData, entity: number) {
function CleanupVehicle (line 129) | function CleanupVehicle(entity: number, coords: [number, number, number]) {
FILE: common/config.ts
constant SV_LAN (line 1) | const SV_LAN = GetConvarInt('sv_lan', 0) === 1;
constant CHARACTER_SLOTS (line 2) | const CHARACTER_SLOTS = GetConvarInt('ox:characterSlots', 1);
constant PLATE_PATTERN (line 3) | const PLATE_PATTERN = GetConvar('ox:plateFormat', '........').toUpperCas...
constant DEFAULT_VEHICLE_STORE (line 4) | const DEFAULT_VEHICLE_STORE = GetConvar('ox:defaultVehicleStore', 'impou...
constant DEBUG (line 6) | const DEBUG = (() => {
FILE: common/index.ts
function LoadDataFile (line 6) | function LoadDataFile(file: string) {
function GetGroupPermissions (line 10) | function GetGroupPermissions(groupName: string): OxGroupPermissions {
FILE: common/locales.ts
type Locales (line 3) | type Locales = FlattenObjectKeys<typeof import("../locales/en.json")>;
FILE: common/vehicles.ts
function GetTopVehicleStats (line 10) | function GetTopVehicleStats(category?: VehicleCategories) {
function GetVehicleData (line 22) | function GetVehicleData(filter?: void | string | string[]) {
function GetVehicleNetworkType (line 44) | function GetVehicleNetworkType(modelName: string) {
FILE: lib/client/index.ts
type OxClient (line 3) | interface OxClient extends OxCommon {}
FILE: lib/client/player.ts
class PlayerInterface (line 5) | class PlayerInterface {
method constructor (line 11) | constructor() {
method on (line 39) | on(key: string, callback: (data: unknown) => void) {
method get (line 50) | get(key: string) {
method getCoords (line 61) | getCoords() {
type OxPlayer (line 66) | type OxPlayer = typeof OxPlayer & PlayerInterface;
function GetPlayer (line 70) | function GetPlayer() {
FILE: lib/index.ts
type OxCommon (line 6) | interface OxCommon {
function GetGroup (line 15) | function GetGroup(name: string): OxGroup {
FILE: lib/server/account.ts
class AccountInterface (line 3) | class AccountInterface {
method constructor (line 4) | constructor(public accountId: number) {}
type OxAccount (line 17) | type OxAccount = _OxAccount & AccountInterface;
function CreateAccountInstance (line 19) | function CreateAccountInstance(account?: _OxAccount) {
function GetAccount (line 25) | async function GetAccount(accountId: number) {
function GetCharacterAccount (line 30) | async function GetCharacterAccount(charId: number | string) {
function GetGroupAccount (line 35) | async function GetGroupAccount(groupName: string) {
function CreateAccount (line 40) | async function CreateAccount(owner: number | string, label: string) {
FILE: lib/server/index.ts
type OxServer (line 14) | interface OxServer extends OxCommon {
FILE: lib/server/player.ts
class PlayerInterface (line 5) | class PlayerInterface {
method constructor (line 8) | constructor(
method getCoords (line 26) | getCoords() {
method getState (line 30) | getState() {
method getAccount (line 34) | async getAccount() {
type OxPlayer (line 49) | type OxPlayer = _OxPlayer & PlayerInterface;
function CreatePlayerInstance (line 51) | function CreatePlayerInstance(player?: _OxPlayer) {
function GetPlayer (line 65) | function GetPlayer(playerId: string | number) {
function GetPlayerFromUserId (line 69) | function GetPlayerFromUserId(userId: number) {
function GetPlayerFromCharId (line 73) | function GetPlayerFromCharId(charId: number) {
function GetPlayers (line 77) | function GetPlayers(filter?: Dict<any>): OxPlayer[] {
function GetPlayerFromFilter (line 85) | function GetPlayerFromFilter(filter: Dict<any>) {
FILE: lib/server/vehicle.ts
class VehicleInterface (line 6) | class VehicleInterface {
method constructor (line 7) | constructor(
method getCoords (line 31) | getCoords() {
method getState (line 35) | getState() {
type OxVehicle (line 50) | type OxVehicle = _OxVehicle & VehicleInterface;
function CreateVehicleInstance (line 52) | function CreateVehicleInstance(vehicle: _OxVehicle) {
function GetVehicle (line 71) | function GetVehicle(handle: number | string) {
function GetVehicleFromEntity (line 75) | function GetVehicleFromEntity(entityId: number) {
function GetVehicleFromNetId (line 79) | function GetVehicleFromNetId(netId: number) {
function GetVehicleFromVin (line 83) | function GetVehicleFromVin(vin: string) {
function GetVehicles (line 87) | function GetVehicles(filter?: Dict<any>): OxVehicle[] {
function GetVehicleFromFilter (line 95) | function GetVehicleFromFilter(filter: Dict<any>) {
function CreateVehicle (line 99) | async function CreateVehicle(
function SpawnVehicle (line 107) | async function SpawnVehicle(
FILE: server/accounts/class.ts
type UpdateAccountBalance (line 19) | interface UpdateAccountBalance {
type RemoveAccountBalance (line 24) | interface RemoveAccountBalance extends UpdateAccountBalance {
type TransferAccountBalance (line 28) | interface TransferAccountBalance {
class OxAccount (line 37) | class OxAccount extends ClassInterface {
method get (line 40) | static async get(accountId: number) {
method getAll (line 50) | static getAll() {
method constructor (line 54) | constructor(public accountId: number) {
method get (line 64) | async get<T extends keyof OxAccountMetadata>(
method addBalance (line 86) | async addBalance({ amount, message }: UpdateAccountBalance) {
method removeBalance (line 93) | async removeBalance({ amount, overdraw = false, message }: RemoveAccou...
method transferBalance (line 100) | async transferBalance({ toId, amount, overdraw = false, message, note,...
method depositMoney (line 107) | async depositMoney(playerId: number, amount: number, message?: string,...
method withdrawMoney (line 114) | async withdrawMoney(playerId: number, amount: number, message?: string...
method deleteAccount (line 121) | async deleteAccount() {
method getCharacterRole (line 128) | async getCharacterRole(id: number | string) {
method setCharacterRole (line 136) | async setCharacterRole(id: number | string, role?: OxAccountRole) {
method playerHasPermission (line 144) | async playerHasPermission(playerId: number, permission: keyof OxAccoun...
method setShared (line 156) | async setShared() {
method createInvoice (line 163) | async createInvoice(data: Omit<OxCreateInvoice, 'fromAccount'>) {
FILE: server/accounts/db.ts
function GenerateAccountId (line 17) | async function GenerateAccountId(conn: Connection) {
function UpdateBalance (line 31) | async function UpdateBalance(
function PerformTransaction (line 90) | async function PerformTransaction(
function SelectAccounts (line 149) | async function SelectAccounts(column: "owner" | "group" | "id", id: numb...
function SelectDefaultAccountId (line 153) | async function SelectDefaultAccountId(column: "owner" | "group" | "id", ...
function SelectAccount (line 157) | async function SelectAccount(id: number) {
function IsAccountIdAvailable (line 161) | async function IsAccountIdAvailable(id: number) {
function CreateNewAccount (line 165) | async function CreateNewAccount(owner: string | number, label: string, i...
function DeleteAccount (line 181) | async function DeleteAccount(accountId: number): Promise<{ success: bool...
function SelectAccountRole (line 195) | function SelectAccountRole(accountId: number, charId: number) {
function DepositMoney (line 199) | async function DepositMoney(
function WithdrawMoney (line 263) | async function WithdrawMoney(
function UpdateAccountAccess (line 317) | async function UpdateAccountAccess(
function UpdateInvoice (line 340) | async function UpdateInvoice(
function CreateInvoice (line 407) | async function CreateInvoice({
function DeleteInvoice (line 444) | async function DeleteInvoice(invoiceId: number): Promise<{ success: bool...
function SetAccountType (line 452) | async function SetAccountType(accountId: number, type: string): Promise<...
FILE: server/accounts/index.ts
function GetCharacterAccount (line 19) | async function GetCharacterAccount(id: number | string) {
function GetGroupAccount (line 28) | async function GetGroupAccount(groupName: string) {
function CreateAccount (line 33) | async function CreateAccount(owner: number | string, label: string) {
function PayAccountInvoice (line 38) | function PayAccountInvoice(invoiceId: number, charId: number) {
function DeleteAccountInvoice (line 42) | function DeleteAccountInvoice(invoiceId: number) {
FILE: server/accounts/roles.ts
type OxAccountMetadataRow (line 7) | type OxAccountMetadataRow = OxAccountPermissions & { id?: number; name?:...
function CheckRolePermission (line 20) | function CheckRolePermission(roleName: OxAccountRole | null, permission:...
function CanPerformAction (line 26) | async function CanPerformAction(
function LoadRoles (line 48) | async function LoadRoles() {
FILE: server/bridge/npwd.ts
function GeneratePhoneNumber (line 25) | function GeneratePhoneNumber() {
FILE: server/classInterface.ts
class ClassInterface (line 3) | class ClassInterface {
method isCallValid (line 8) | static isCallValid(method: string, id: string | number, member: any) {
method init (line 21) | static init() {
method call (line 64) | call(method: string, ...args: any) {
method get (line 69) | static get(id: string | number) {
method getAll (line 74) | static getAll() {
method add (line 79) | static add(id: string | number, member: any) {
method remove (line 96) | static remove(id: string | number) {
FILE: server/config.ts
constant CREATE_DEFAULT_ACCOUNT (line 5) | const CREATE_DEFAULT_ACCOUNT = GetConvarInt('ox:createDefaultAccount', 1...
FILE: server/db/config.ts
function GetConfig (line 4) | function GetConfig(): PoolConfig {
FILE: server/db/index.ts
type MySqlRow (line 8) | interface MySqlRow<T = string | number | boolean | Dict<any> | undefined> {
type OkPacket (line 12) | interface OkPacket {
function getScalar (line 18) | function getScalar<T>(resp: T[] | null) {
function getRow (line 23) | function getRow<T>(resp: T[] | null) {
class Connection (line 27) | class Connection {
method constructor (line 30) | constructor(public connection: PoolConnection) {}
method execute (line 32) | async execute<T = MySqlRow[] & OkPacket>(query: string | QueryOptions,...
method query (line 36) | async query<T = MySqlRow[] & OkPacket>(query: string | QueryOptions, v...
method scalar (line 40) | async scalar<T>(query: string | QueryOptions, values?: any[]) {
method row (line 44) | async row<T>(query: string | QueryOptions, values?: any[]) {
method insert (line 48) | async insert(query: string | QueryOptions, values?: any[]) {
method update (line 52) | async update(query: string | QueryOptions, values?: any[]) {
method batch (line 56) | batch(query: string | QueryOptions, values?: any[]) {
method beginTransaction (line 60) | beginTransaction() {
method rollback (line 65) | rollback() {
method commit (line 70) | commit() {
method [Symbol.dispose] (line 75) | [Symbol.dispose]() {
function GetConnection (line 81) | async function GetConnection() {
method query (line 90) | async query<T>(query: string | QueryOptions, values?: any[]) {
method execute (line 94) | async execute<T>(query: string | QueryOptions, values?: any[]) {
method column (line 98) | async column<T>(query: string | QueryOptions, values?: any[]) {
method exists (line 101) | async exists<T>(query: string | QueryOptions, values?: any[]) {
method row (line 104) | async row<T>(query: string | QueryOptions, values?: any[]) {
method insert (line 107) | async insert(query: string | QueryOptions, values?: any[]) {
method update (line 110) | async update(query: string | QueryOptions, values?: any[]) {
method batch (line 113) | batch(query: string | QueryOptions, values?: any[]) {
method scalar (line 116) | scalar<T>(resp: T[] | null) {
method single (line 120) | single<T>(resp: T[] | null) {
FILE: server/groups/db.ts
function SelectGroups (line 5) | function SelectGroups() {
function InsertGroup (line 22) | async function InsertGroup({ name, label, type, colour, hasAccount, grad...
function RemoveGroup (line 41) | function RemoveGroup(groupName: string) {
function AddCharacterGroup (line 45) | async function AddCharacterGroup(charId: number, name: string, grade: nu...
function UpdateCharacterGroup (line 52) | async function UpdateCharacterGroup(charId: number, name: string, grade:...
function RemoveCharacterGroup (line 59) | async function RemoveCharacterGroup(charId: number, name: string) {
function GetCharacterGroups (line 63) | function GetCharacterGroups(charId: number) {
function SetActiveGroup (line 70) | async function SetActiveGroup(charId: number, groupName?: string) {
FILE: server/groups/index.ts
function GetGroup (line 12) | function GetGroup(name: string) {
function GetGroupsByType (line 16) | function GetGroupsByType(type: string) {
function GetGroupActivePlayers (line 23) | function GetGroupActivePlayers(groupName: string) {
function GetGroupActivePlayersByType (line 29) | function GetGroupActivePlayersByType(type: string) {
function SetGroupPermission (line 38) | function SetGroupPermission(groupName: string, grade: number, permission...
function RemoveGroupPermission (line 47) | function RemoveGroupPermission(groupName: string, grade: number, permiss...
function SetupGroup (line 56) | function SetupGroup(data: DbGroup) {
function CreateGroup (line 103) | async function CreateGroup(data: CreateGroupProperties) {
function DeleteGroup (line 128) | async function DeleteGroup(groupName: string) {
function LoadGroups (line 164) | async function LoadGroups() {
FILE: server/player/class.ts
class OxPlayer (line 33) | class OxPlayer extends ClassInterface {
method get (line 54) | static get(id: string | number) {
method getFromUserId (line 59) | static getFromUserId(id: number) {
method getFromCharId (line 64) | static getFromCharId(id: number) {
method formatBanReason (line 68) | static formatBanReason(ban: BanDetails) {
method filter (line 85) | private filter(criteria: Dict<any>) {
method getFromFilter (line 100) | static getFromFilter(filter: Dict<any>) {
method getAll (line 110) | static getAll(filter?: Dict<any>, asArray = false): Dict<OxPlayer> | O...
method saveAll (line 124) | static saveAll(kickWithReason?: string) {
method constructor (line 148) | constructor(source: number) {
method emit (line 159) | emit(eventName: string, ...args: any[]) {
method set (line 169) | set(key: string, value: any, replicated?: boolean) {
method get (line 176) | get<K extends string>(key: K | keyof PlayerMetadata): K extends keyof ...
method payInvoice (line 180) | async payInvoice(invoiceId: number) {
method setActiveGroup (line 185) | setActiveGroup(groupName?: string, temp?: boolean) {
method setGroup (line 212) | async setGroup(groupName: string, grade = 0, force = false) {
method getGroup (line 267) | getGroup(filter: string | string[] | Record<string, number>) {
method getGroupByType (line 287) | getGroupByType(type: string) {
method getGroups (line 291) | getGroups() {
method hasPermission (line 295) | hasPermission(permission: string): boolean {
method setStatus (line 318) | setStatus(statusName: string, value = Statuses[statusName].default) {
method getStatus (line 330) | getStatus(statusName: string) {
method getStatuses (line 335) | getStatuses() {
method addStatus (line 340) | addStatus(statusName: string, value: number) {
method removeStatus (line 353) | removeStatus(statusName: string, value: number) {
method getLicense (line 365) | getLicense(licenseName: string) {
method getLicenses (line 369) | getLicenses() {
method addLicense (line 373) | async addLicense(licenseName: string) {
method removeLicense (line 390) | async removeLicense(licenseName: string) {
method updateLicense (line 401) | async updateLicense(licenseName: string, key: string, value: any) {
method #getSaveData (line 416) | #getSaveData() {
method #addGroup (line 429) | #addGroup(group: string | OxGroup, grade: number) {
method #removeGroup (line 443) | #removeGroup(group: string | OxGroup, grade: number, canRemoveActiveCo...
method save (line 463) | save() {
method setAsJoined (line 468) | async setAsJoined() {
method #getCharacters (line 480) | async #getCharacters() {
method logout (line 490) | async logout(save = true, dropped = false) {
method #generateStateId (line 508) | async #generateStateId() {
method createCharacter (line 522) | async createCharacter(data: NewCharacter) {
method #getCharacterSlotFromId (line 552) | #getCharacterSlotFromId(charId: number) {
method setActiveCharacter (line 561) | async setActiveCharacter(data: number | NewCharacter) {
method deleteCharacter (line 634) | async deleteCharacter(charId: number) {
FILE: server/player/db.ts
function GetUserIdFromIdentifier (line 6) | function GetUserIdFromIdentifier(identifier: string, offset?: number) {
function CreateUser (line 10) | function CreateUser(username: string, { license2, steam, fivem, discord ...
function IsStateIdAvailable (line 20) | async function IsStateIdAvailable(stateId: string) {
function CreateCharacter (line 24) | function CreateCharacter(
function GetCharacters (line 39) | function GetCharacters(userId: number) {
function SaveCharacterData (line 46) | function SaveCharacterData(values: any[] | any[][], batch?: boolean) {
function DeleteCharacter (line 53) | async function DeleteCharacter(charId: number) {
function GetCharacterMetadata (line 57) | function GetCharacterMetadata(charId: number) {
function GetStatuses (line 72) | function GetStatuses() {
function GetLicenses (line 76) | function GetLicenses() {
function GetLicense (line 80) | function GetLicense(name: string) {
function GetCharacterLicenses (line 84) | function GetCharacterLicenses(charId: number) {
function AddCharacterLicense (line 91) | function AddCharacterLicense(charId: number, name: string, data: Charact...
function RemoveCharacterLicense (line 99) | function RemoveCharacterLicense(charId: number, name: string) {
function UpdateCharacterLicense (line 103) | function UpdateCharacterLicense(charId: number, name: string, key: strin...
function GetCharIdFromStateId (line 114) | function GetCharIdFromStateId(stateId: string) {
function UpdateUserTokens (line 118) | async function UpdateUserTokens(userId: number, tokens: string[]) {
function IsUserBanned (line 126) | async function IsUserBanned(userId: number): Promise<BanDetails | undefi...
function BanUser (line 149) | async function BanUser(userId: number, reason?: string, hours?: number) {
function UnbanUser (line 172) | async function UnbanUser(userId: number) {
FILE: server/player/events.ts
function OnPlayerLoaded (line 15) | function OnPlayerLoaded(resource: string, cb: (player: OxPlayer) => void) {
function OnPlayerLogout (line 20) | function OnPlayerLogout(cb: (player: OxPlayer) => void) {
FILE: server/player/license.ts
function LoadLicenses (line 7) | async function LoadLicenses() {
FILE: server/player/loading.ts
function loadPlayer (line 11) | async function loadPlayer(playerId: number) {
FILE: server/player/status.ts
function LoadStatuses (line 8) | async function LoadStatuses() {
FILE: server/utils.ts
function GetPlayerLicense (line 4) | function GetPlayerLicense(playerId: number | string) {
function GetIdentifiers (line 11) | function GetIdentifiers(playerId: number | string) {
FILE: server/vehicle/class.ts
type Vec3 (line 17) | type Vec3 = number[] | { x: number; y: number; z: number } | { buffer: a...
class OxVehicle (line 21) | class OxVehicle extends ClassInterface {
method spawn (line 43) | static spawn(model: string, coords: Vector3, heading?: number) {
method get (line 59) | static get(vin: string) {
method getFromVehicleId (line 68) | static getFromVehicleId(vehicleId: number) {
method getFromNetId (line 73) | static getFromNetId(id: number) {
method getFromEntity (line 78) | static getFromEntity(entityId: number) {
method filter (line 83) | private filter(criteria: Dict<any>) {
method getFromFilter (line 94) | static getFromFilter(filter: Dict<any>) {
method getAll (line 104) | static getAll(filter?: Dict<any>, asArray = false): Dict<OxVehicle> | ...
method generateVin (line 117) | static async generateVin({ make, name }: VehicleData, isOwned = true) {
method generatePlate (line 142) | static async generatePlate(pattern: string = PLATE_PATTERN) {
method saveAll (line 150) | static saveAll(resource?: string) {
method constructor (line 176) | constructor(
method set (line 206) | set(key: string, value: any) {
method get (line 211) | get(key: string) {
method getState (line 215) | getState() {
method getStored (line 219) | getStored() {
method getProperties (line 223) | getProperties() {
method #getSaveData (line 227) | #getSaveData() {
method save (line 233) | save() {
method despawn (line 238) | despawn(save?: boolean) {
method delete (line 248) | delete() {
method remove (line 255) | remove() {
method setStored (line 260) | setStored(value: string | null, despawn?: boolean) {
method setOwner (line 268) | setOwner(charId?: number) {
method setGroup (line 276) | setGroup(group?: string) {
method setPlate (line 284) | setPlate(plate: string) {
method setProperties (line 292) | setProperties(properties: Partial<VehicleProperties>, apply?: boolean) {
method respawn (line 300) | respawn(coords?: Vec3, rotation: Vector3 | number = 0): number | null {
FILE: server/vehicle/commands.ts
function DeleteCurrentVehicle (line 7) | function DeleteCurrentVehicle(ped: number) {
FILE: server/vehicle/db.ts
type VehicleRow (line 5) | type VehicleRow = {
function IsPlateAvailable (line 18) | async function IsPlateAvailable(plate: string) {
function IsVinAvailable (line 22) | async function IsVinAvailable(plate: string) {
function GetStoredVehicleFromId (line 26) | async function GetStoredVehicleFromId(id: number | string, column = "id") {
function SetVehicleColumn (line 42) | async function SetVehicleColumn(id: number | void, column: string, value...
function SaveVehicleData (line 48) | function SaveVehicleData(
function CreateNewVehicle (line 57) | function CreateNewVehicle(
function DeleteVehicle (line 73) | async function DeleteVehicle(id: number) {
FILE: server/vehicle/index.ts
type CreateVehicleData (line 12) | interface CreateVehicleData {
function CreateVehicle (line 20) | async function CreateVehicle(
function SpawnVehicle (line 100) | async function SpawnVehicle(id: number | string, coords?: Vec3, heading?...
FILE: server/vehicle/parser.ts
function SortObjectProperties (line 5) | function SortObjectProperties(obj: object) {
FILE: sql/install.sql
type `users` (line 18) | CREATE TABLE IF NOT EXISTS `users` (
type `characters` (line 28) | CREATE TABLE IF NOT EXISTS `characters`
type `characters_fullName_index` (line 58) | CREATE FULLTEXT INDEX IF NOT EXISTS `characters_fullName_index`
type `characters_userId_key` (line 61) | CREATE INDEX IF NOT EXISTS `characters_userId_key`
type `character_inventory` (line 64) | CREATE TABLE IF NOT EXISTS `character_inventory` (
type `ox_groups` (line 72) | CREATE TABLE IF NOT EXISTS `ox_groups` (
type `character_groups` (line 81) | CREATE TABLE IF NOT EXISTS `character_groups` (
type `ox_inventory` (line 92) | CREATE TABLE IF NOT EXISTS `ox_inventory` (
type `vehicles` (line 100) | CREATE TABLE IF NOT EXISTS `vehicles` (
type `ox_statuses` (line 120) | CREATE TABLE IF NOT EXISTS `ox_statuses` (
type `ox_licenses` (line 131) | CREATE TABLE IF NOT EXISTS `ox_licenses` (
type `character_licenses` (line 141) | CREATE TABLE IF NOT EXISTS `character_licenses` (
type `accounts` (line 150) | CREATE TABLE IF NOT EXISTS `accounts`
type `accounts_label_index` (line 168) | CREATE FULLTEXT INDEX IF NOT EXISTS `accounts_label_index`
type `account_roles` (line 171) | CREATE TABLE `account_roles` (
type `ox_group_grades` (line 195) | CREATE TABLE IF NOT EXISTS `ox_group_grades` (
type `accounts_access` (line 205) | CREATE TABLE IF NOT EXISTS `accounts_access` (
type `accounts_transactions` (line 216) | CREATE TABLE IF NOT EXISTS `accounts_transactions` (
type `accounts_transactions_message_index` (line 233) | CREATE FULLTEXT INDEX IF NOT EXISTS `accounts_transactions_message_index`
type `accounts_invoices` (line 236) | CREATE TABLE IF NOT EXISTS `accounts_invoices`
type `idx_message_fulltext` (line 259) | CREATE FULLTEXT INDEX IF NOT EXISTS `idx_message_fulltext`
FILE: types/index.ts
type Dict (line 1) | type Dict<T> = { [key: string]: T };
type Character (line 3) | interface Character {
type NewCharacter (line 19) | interface NewCharacter {
type PlayerMetadata (line 26) | interface PlayerMetadata {
type CharacterLicense (line 36) | interface CharacterLicense {
type Vehicles (line 42) | type Vehicles = Dict<VehicleData>;
type VehicleCategories (line 43) | type VehicleCategories = 'air' | 'land' | 'sea';
type TopVehicleStats (line 44) | type TopVehicleStats = Record<VehicleCategories, VehicleStats>;
type VehicleStats (line 46) | interface VehicleStats {
type VehicleClasses (line 54) | enum VehicleClasses {
type VehicleTypes (line 80) | type VehicleTypes =
type VehicleData (line 96) | interface VehicleData extends VehicleStats {
type OxLicense (line 109) | interface OxLicense {
type OxStatus (line 114) | interface OxStatus {
type OxAccountMetadata (line 120) | interface OxAccountMetadata {
type OxAccountUserMetadata (line 130) | interface OxAccountUserMetadata extends OxAccountMetadata {
type DbGroup (line 135) | interface DbGroup {
type OxGroup (line 146) | interface OxGroup extends DbGroup {
type CreateGroupProperties (line 151) | interface CreateGroupProperties {
type OxGroupPermissions (line 163) | interface OxGroupPermissions {
type OxAccountRole (line 167) | type OxAccountRole = 'viewer' | 'contributor' | 'manager' | 'owner';
type OxAccountPermissions (line 169) | interface OxAccountPermissions {
type OxAccountInvoice (line 183) | interface OxAccountInvoice {
type OxCreateInvoice (line 196) | interface OxCreateInvoice {
type BanDetails (line 208) | interface BanDetails {
Condensed preview — 102 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (528K chars).
[
{
"path": ".editorconfig",
"chars": 185,
"preview": "root = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = crlf\ncharset = utf-8\ninsert_final_newline = true\nmax"
},
{
"path": ".github/actions/bump-package-version.js",
"chars": 239,
"preview": "const packageJson = await Bun.file('./package.json').json();\n\nconst newVersion = process.env.TGT_RELEASE_VERSION;\npackag"
},
{
"path": ".github/workflows/release.yml",
"chars": 2353,
"preview": "name: Create release\n\non:\n push:\n tags:\n - \"v*.*.*\"\n\npermissions:\n id-token: write # Required for OIDC\n conte"
},
{
"path": ".gitignore",
"chars": 129,
"preview": "# ignore\nnode_modules\ndist\nfxmanifest.lua\n.yarn.installed\n*.zip\n**.d.ts\n*.tgz\n*.tsbuildinfo\n/package/\n/temp/\n\n# keep\n!./"
},
{
"path": ".npmignore",
"chars": 27,
"preview": "!/package/\n!**.d.ts\n!**.js\n"
},
{
"path": "CONTRIBUTING.md",
"chars": 1593,
"preview": "## Found a bug?\n\n- Check if the bug has already been reported under under [Issues](https://github.com/overextended/ox_co"
},
{
"path": "LICENSE",
"chars": 7651,
"preview": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007"
},
{
"path": "README.md",
"chars": 1829,
"preview": "# ox_core\n\nA modern FiveM framework.\n\n === 1;\nexport const CHA"
},
{
"path": "client/death.ts",
"chars": 3940,
"preview": "import { cache, requestAnimDict, sleep } from \"@overextended/ox_lib/client\";\nimport { Vector3, Vector4 } from \"@nativewr"
},
{
"path": "client/index.ts",
"chars": 259,
"preview": "export * from '../common';\nimport { PLATE_PATTERN } from 'config';\nimport 'player';\nimport 'spawn';\nimport 'death';\nimpo"
},
{
"path": "client/player/index.ts",
"chars": 5532,
"preview": "import { netEvent } from 'utils';\nimport type { Character, Dict, OxGroup, OxStatus, PlayerMetadata } from 'types';\nimpor"
},
{
"path": "client/player/status.ts",
"chars": 712,
"preview": "import { OxPlayer, Statuses } from 'player';\n\nfunction UpdateStatuses() {\n for (const name in Statuses) {\n const sta"
},
{
"path": "client/spawn.ts",
"chars": 4010,
"preview": "import { sleep, waitFor } from \"@overextended/ox_lib\";\nimport { cache, inputDialog } from \"@overextended/ox_lib/client\";"
},
{
"path": "client/tsconfig.json",
"chars": 261,
"preview": "{\n \"extends\": \"../tsconfig.json\",\n \"compilerOptions\": {\n \"baseUrl\": \".\",\n \"types\": [\"@citizenfx/client\"],\n \"c"
},
{
"path": "client/utils.ts",
"chars": 146,
"preview": "export function netEvent(event: string, fn: Function) {\n onNet(event, (...args: any[]) => {\n if ((source as any) !=="
},
{
"path": "client/vehicle/index.ts",
"chars": 1440,
"preview": "import { cache, onServerCallback, waitFor } from \"@overextended/ox_lib/client\";\nimport { Vector3 } from \"@nativewrappers"
},
{
"path": "client/vehicle/parser.ts",
"chars": 5957,
"preview": "import { cache, notify, onServerCallback, requestModel, sleep } from \"@overextended/ox_lib/client\";\nimport { GetTopVehic"
},
{
"path": "common/config.ts",
"chars": 419,
"preview": "export const SV_LAN = GetConvarInt('sv_lan', 0) === 1;\nexport const CHARACTER_SLOTS = GetConvarInt('ox:characterSlots', "
},
{
"path": "common/data/hospitals.json",
"chars": 198,
"preview": "[\n [340.5, -1396.8, 32.5, 60.1],\n [-449.3, -340.2, 34.5, 76.2],\n [295.6, -583.9, 43.2, 79.5],\n [1840.1, 3670.7, 33.9"
},
{
"path": "common/data/vehicleStats.json",
"chars": 387,
"preview": "{\n \"air\": {\n \"acceleration\": 21.56,\n \"braking\": 22.417,\n \"handling\": 21.56,\n \"speed\": 109.7643,\n \"tracti"
},
{
"path": "common/data/vehicles.json",
"chars": 268434,
"preview": "{\n \"adder\": {\n \"acceleration\": 0.32,\n \"braking\": 1,\n \"handling\": 0.7,\n \"speed\": 51.771,\n \"traction\": 2.5"
},
{
"path": "common/index.ts",
"chars": 712,
"preview": "import { checkDependency } from \"@overextended/ox_lib/\";\nimport type { OxGroupPermissions } from \"types\";\n\nif (!checkDep"
},
{
"path": "common/locales.ts",
"chars": 238,
"preview": "import { locale, type FlattenObjectKeys } from \"@overextended/ox_lib\";\n\ntype Locales = FlattenObjectKeys<typeof import(\""
},
{
"path": "common/tsconfig.json",
"chars": 211,
"preview": "{\n \"extends\": \"../tsconfig.json\",\n \"compilerOptions\": {\n \"baseUrl\": \".\",\n \"composite\": true,\n \"paths\": {\n "
},
{
"path": "common/vehicles.ts",
"chars": 1850,
"preview": "import { LoadDataFile } from './';\nimport type { Dict, VehicleCategories, VehicleData, VehicleStats, Vehicles } from 'ty"
},
{
"path": "lib/client/index.ts",
"chars": 157,
"preview": "import { Ox as OxCore, type OxCommon } from 'lib';\n\ninterface OxClient extends OxCommon {}\n\nexport const Ox = OxCore as "
},
{
"path": "lib/client/init.lua",
"chars": 28,
"preview": "require 'lib.client.player'\n"
},
{
"path": "lib/client/player.lua",
"chars": 2665,
"preview": "---@diagnostic disable: redundant-parameter\n---@class OxPlayerClient : OxClass\nlocal OxPlayer = lib.class('OxPlayer')\n\n-"
},
{
"path": "lib/client/player.ts",
"chars": 2172,
"preview": "import { cache } from \"@overextended/ox_lib/client\";\nimport type { OxPlayer } from \"client/player\";\nimport type { Dict }"
},
{
"path": "lib/index.ts",
"chars": 523,
"preview": "import type { GetTopVehicleStats, GetVehicleData, GetVehicleNetworkType } from 'common/vehicles';\nimport type { OxGroup "
},
{
"path": "lib/init.lua",
"chars": 728,
"preview": "if Ox then return Ox end\n\nif not lib then\n if GetResourceState('ox_lib') ~= 'started' then\n error('ox_lib must"
},
{
"path": "lib/server/account.lua",
"chars": 1667,
"preview": "---@diagnostic disable: redundant-parameter\n---@class OxAccountServer : OxClass\nlocal OxAccount = lib.class('OxAccount')"
},
{
"path": "lib/server/account.ts",
"chars": 1379,
"preview": "import type { OxAccount as _OxAccount } from 'server/accounts/class';\n\nclass AccountInterface {\n constructor(public acc"
},
{
"path": "lib/server/index.ts",
"chars": 1339,
"preview": "import type { OxVehicle } from 'server/vehicle/class';\nimport type { PayAccountInvoice, DeleteAccountInvoice } from 'ser"
},
{
"path": "lib/server/init.lua",
"chars": 86,
"preview": "require 'lib.server.player'\nrequire 'lib.server.vehicle'\nrequire 'lib.server.account'\n"
},
{
"path": "lib/server/player.lua",
"chars": 2475,
"preview": "---@diagnostic disable: redundant-parameter\n---@class OxPlayerServer : OxClass\nlocal OxPlayer = lib.class('OxPlayer')\n\nf"
},
{
"path": "lib/server/player.ts",
"chars": 2245,
"preview": "import type { OxPlayer as _OxPlayer } from 'server/player/class';\nimport type { Dict } from 'types';\nimport { GetCharact"
},
{
"path": "lib/server/vehicle.lua",
"chars": 2340,
"preview": "---@diagnostic disable: redundant-parameter\n---@class OxVehicleServer : OxClass\nlocal OxVehicle = lib.class('OxVehicle')"
},
{
"path": "lib/server/vehicle.ts",
"chars": 3181,
"preview": "import type { OxVehicle as _OxVehicle } from 'server/vehicle/class';\nimport type { CreateVehicleData } from 'server/vehi"
},
{
"path": "lib/tsconfig.json",
"chars": 222,
"preview": "{\n \"extends\": \"../tsconfig.json\",\n \"compilerOptions\": {\n \"emitDeclarationOnly\": false,\n \"composite\": true\n },\n "
},
{
"path": "locales/ar.json",
"chars": 832,
"preview": "{\n \"create_character\": \"إنشاء شخصية جديدة\",\n \"firstname\": \"الاسم الأول\",\n \"lastname\": \"اسم العائلة\",\n \"gender\": \"الج"
},
{
"path": "locales/bg.json",
"chars": 338,
"preview": "{\n \"create_character\": \"Създай нов герой\",\n \"firstname\": \"Име\",\n \"lastname\": \"Фамилия\",\n \"gender\": \"Пол\",\n \"male\": "
},
{
"path": "locales/cs.json",
"chars": 344,
"preview": "{\n \"create_character\": \"Vytvořit novou postavu\",\n \"firstname\": \"Jméno\",\n \"lastname\": \"Příjmení\",\n \"gender\": \"Pohlaví"
},
{
"path": "locales/da.json",
"chars": 341,
"preview": "{\n \"create_character\": \"Opret en ny karakter\",\n \"firstname\": \"Fornavn\",\n \"lastname\": \"Efternavn\",\n \"gender\": \"Køn\",\n"
},
{
"path": "locales/de.json",
"chars": 925,
"preview": "{\n \"create_character\": \"Einen neuen Charakter erstellen\",\n \"firstname\": \"Vorname\",\n \"lastname\": \"Nachname\",\n \"gender"
},
{
"path": "locales/en.json",
"chars": 869,
"preview": "{\n \"create_character\": \"Create a new character\",\n \"firstname\": \"First name\",\n \"lastname\": \"Last name\",\n \"gender\": \"G"
},
{
"path": "locales/es.json",
"chars": 888,
"preview": "{\n \"create_character\": \"Crear un nuevo personaje\",\n \"firstname\": \"Nombre\",\n \"lastname\": \"Apellido\",\n \"gender\": \"Géne"
},
{
"path": "locales/et.json",
"chars": 353,
"preview": "{\n \"create_character\": \"Loo uus karakter\",\n \"firstname\": \"Eesnimi\",\n \"lastname\": \"Perekonnanimi\",\n \"gender\": \"Sugu\","
},
{
"path": "locales/fr.json",
"chars": 873,
"preview": "{\n \"create_character\": \"Créer un personnage\",\n \"firstname\": \"Prénom\",\n \"lastname\": \"Nom\",\n \"gender\": \"Sexe\",\n \"male"
},
{
"path": "locales/hu.json",
"chars": 947,
"preview": "{\n \"create_character\": \"Új karakter létrehozása\",\n \"firstname\": \"Keresztnév\",\n \"lastname\": \"Vezetéknév\",\n \"g"
},
{
"path": "locales/it.json",
"chars": 388,
"preview": "{\n \"create_character\": \"Crea un nuovo personaggio\",\n \"firstname\": \"Nome\",\n \"lastname\": \"Cognome\",\n \"gender\":"
},
{
"path": "locales/jp.json",
"chars": 283,
"preview": "{\n \"create_character\": \"新しいキャラクターを作成\",\n \"firstname\": \"名前\",\n \"lastname\": \"苗字\",\n \"gender\": \"性別\",\n \"male\": \"男性\",\n \"fe"
},
{
"path": "locales/lt.json",
"chars": 906,
"preview": "{\n \"create_character\": \"Sukurti naują veikėją\",\n \"firstname\": \"Vardas\",\n \"lastname\": \"Pavardė\",\n \"gender\": \"Lytis\",\n"
},
{
"path": "locales/nl.json",
"chars": 370,
"preview": "{\r\n \"create_character\": \"Maak een nieuw karakter\",\r\n \"firstname\": \"Voornaam\",\r\n \"lastname\": \"Achternaam\",\r\n \"gender\""
},
{
"path": "locales/no.json",
"chars": 876,
"preview": "{\n \"create_character\": \"Opprett ny karakter\",\n \"firstname\": \"Fornavn\",\n \"lastname\": \"Etternavn\",\n \"gender\": \"Kjønn\","
},
{
"path": "locales/pl.json",
"chars": 372,
"preview": "{\n \"create_character\": \"Stwórz nową postać\",\n \"firstname\": \"Imię\",\n \"lastname\": \"Nazwisko\",\n \"gender\": \"Płeć"
},
{
"path": "locales/ro.json",
"chars": 886,
"preview": "{\n \"create_character\": \"Creează un nou caracter\",\n \"firstname\": \"Prenume\",\n \"lastname\": \"Nume\",\n \"gender\": \"Gen\",\n "
},
{
"path": "locales/ru.json",
"chars": 376,
"preview": "{\n \"create_character\": \"Создать нового персонажа\",\n \"firstname\": \"Имя\",\n \"lastname\": \"Фамилия\",\n \"gender\": \""
},
{
"path": "locales/sk.json",
"chars": 369,
"preview": "{\n \"create_character\": \"Vytvoriť novú postavu\",\n \"firstname\": \"Meno\",\n \"lastname\": \"Priezvisko\",\n \"gender\": "
},
{
"path": "locales/tr.json",
"chars": 847,
"preview": "{\n \"create_character\": \"Yeni bir karakter oluştur\",\n \"firstname\": \"Ad\",\n \"lastname\": \"Soyad\",\n \"gender\": \"Cinsiyet\","
},
{
"path": "locales/zh-cn.json",
"chars": 266,
"preview": "{\n \"create_character\": \"创建新角色\",\n \"firstname\": \"名字\",\n \"lastname\": \"姓氏\",\n \"gender\": \"性别\",\n \"male\": \"男\",\n \"female\": \""
},
{
"path": "locales/zh-tw.json",
"chars": 267,
"preview": "{\n \"create_character\": \"創建新角色\",\n \"firstname\": \"名字\",\n \"lastname\": \"姓氏\",\n \"gender\": \"性別\",\n \"male\": \"男\",\n \"female\": \""
},
{
"path": "package.json",
"chars": 1369,
"preview": "{\n \"name\": \"@overextended/ox_core\",\n \"author\": \"Overextended\",\n \"version\": \"1.5.10\",\n \"license\": \"LGPL-3.0-or-later\""
},
{
"path": "server/accounts/class.ts",
"chars": 4823,
"preview": "import { ClassInterface } from 'classInterface';\nimport { OxPlayer } from 'player/class';\nimport { GetCharIdFromStateId "
},
{
"path": "server/accounts/db.ts",
"chars": 13817,
"preview": "import { getRandomInt } from \"@overextended/ox_lib\";\nimport { OxAccount } from \"accounts/class\";\nimport { type Connectio"
},
{
"path": "server/accounts/index.ts",
"chars": 1648,
"preview": "import { CreateNewAccount, SelectDefaultAccountId, UpdateInvoice, DeleteInvoice } from './db';\nimport { GetCharIdFromSta"
},
{
"path": "server/accounts/roles.ts",
"chars": 1792,
"preview": "import { db } from 'db';\nimport type { OxAccountPermissions, OxAccountRole } from 'types';\nimport { SelectAccount } from"
},
{
"path": "server/bridge/index.ts",
"chars": 42,
"preview": "import './npwd';\nimport './ox_inventory';\n"
},
{
"path": "server/bridge/npwd.ts",
"chars": 718,
"preview": "import { OnPlayerLoaded, OnPlayerLogout } from '../player/events';\n\nSetConvar('npwd:useResourceIntegration', 'true');\nSe"
},
{
"path": "server/bridge/ox_inventory.ts",
"chars": 471,
"preview": "import { OnPlayerLoaded } from '../player/events';\n\nSetConvarReplicated('inventory:framework', 'ox');\nSetConvarReplicate"
},
{
"path": "server/classInterface.ts",
"chars": 3170,
"preview": "import type { Dict } from 'types';\n\nexport class ClassInterface {\n protected static members: Dict<any>;\n protected sta"
},
{
"path": "server/commands.ts",
"chars": 342,
"preview": "import { addCommand } from \"@overextended/ox_lib/server\";\nimport { OxPlayer } from \"player/class\";\nimport { OxVehicle } "
},
{
"path": "server/config.ts",
"chars": 212,
"preview": "import { DEBUG } from 'config';\n\nexport * from '../common/config';\n\nexport const CREATE_DEFAULT_ACCOUNT = GetConvarInt('"
},
{
"path": "server/db/config.ts",
"chars": 2267,
"preview": "import type { PoolConfig } from 'mariadb';\nimport type { Dict } from 'types';\n\nexport function GetConfig(): PoolConfig {"
},
{
"path": "server/db/index.ts",
"chars": 3720,
"preview": "import { waitFor } from \"@overextended/ox_lib\";\nimport { pool } from \"./pool\";\nimport type { Dict } from \"types\";\nimport"
},
{
"path": "server/db/pool.ts",
"chars": 1229,
"preview": "import { createPool } from 'mariadb';\nimport { GetConfig } from './config';\nimport type { Pool } from 'mariadb';\nimport "
},
{
"path": "server/db/schema.ts",
"chars": 860,
"preview": "import { Pool } from 'mariadb';\n\n/**\n * Validate some database settings, tables, etc. and add anything missing (e.g. ver"
},
{
"path": "server/groups/db.ts",
"chars": 2707,
"preview": "import { GetConnection, db } from 'db';\nimport type { UpsertResult } from 'mariadb';\nimport type { DbGroup } from 'types"
},
{
"path": "server/groups/index.ts",
"chars": 5799,
"preview": "import { addAce, addCommand, addPrincipal, removeAce, removePrincipal } from \"@overextended/ox_lib/server\";\nimport { Ins"
},
{
"path": "server/index.ts",
"chars": 265,
"preview": "export * from \"../common\";\nimport \"./bridge\";\nimport \"player\";\nimport \"utils\";\nimport \"accounts\";\nimport \"vehicle\";\nimpo"
},
{
"path": "server/player/class.ts",
"chars": 21069,
"preview": "import { ClassInterface } from \"classInterface\";\nimport {\n AddCharacterLicense,\n CreateCharacter,\n DeleteCharacter,\n "
},
{
"path": "server/player/commands.ts",
"chars": 894,
"preview": "import { addCommand } from \"@overextended/ox_lib/server\";\nimport { OxPlayer } from \"player/class\";\n\n// NOTE: These comma"
},
{
"path": "server/player/db.ts",
"chars": 5867,
"preview": "import type { Character, Dict, OxStatus, CharacterLicense, OxLicense, BanDetails } from 'types';\nimport { CHARACTER_SLOT"
},
{
"path": "server/player/events.ts",
"chars": 3823,
"preview": "import { onClientCallback } from \"@overextended/ox_lib/server\";\nimport { OxPlayer } from \"./class\";\nimport { sleep } fro"
},
{
"path": "server/player/index.ts",
"chars": 494,
"preview": "import './loading';\nimport './events';\nimport './commands';\nimport { OxPlayer } from './class';\nimport { BanUser, GetCha"
},
{
"path": "server/player/license.ts",
"chars": 740,
"preview": "import { addCommand } from \"@overextended/ox_lib/server\";\nimport type { Dict, OxLicense } from \"types\";\nimport { GetLice"
},
{
"path": "server/player/loading.ts",
"chars": 3688,
"preview": "import { OxPlayer } from 'player/class';\nimport { CreateUser, GetUserIdFromIdentifier, IsUserBanned, UpdateUserTokens } "
},
{
"path": "server/player/status.ts",
"chars": 893,
"preview": "import { addCommand } from \"@overextended/ox_lib/server\";\nimport { GetStatuses } from \"./db\";\nimport { OxPlayer } from \""
},
{
"path": "server/tsconfig.json",
"chars": 261,
"preview": "{\n \"extends\": \"../tsconfig.json\",\n \"compilerOptions\": {\n \"baseUrl\": \".\",\n \"types\": [\"@citizenfx/server\"],\n \"c"
},
{
"path": "server/utils.ts",
"chars": 882,
"preview": "import { SV_LAN } from 'config';\nimport type { Dict } from 'types';\n\nexport function GetPlayerLicense(playerId: number |"
},
{
"path": "server/vehicle/class.ts",
"chars": 9811,
"preview": "import { ClassInterface } from \"classInterface\";\nimport { DeleteVehicle, IsPlateAvailable, IsVinAvailable, SaveVehicleDa"
},
{
"path": "server/vehicle/commands.ts",
"chars": 2439,
"preview": "import { addCommand, triggerClientCallback } from \"@overextended/ox_lib/server\";\nimport { OxVehicle } from \"./class\";\nim"
},
{
"path": "server/vehicle/db.ts",
"chars": 2269,
"preview": "import { db } from \"../db\";\nimport type { VehicleProperties } from \"@overextended/ox_lib\";\nimport { DEFAULT_VEHICLE_STOR"
},
{
"path": "server/vehicle/events.ts",
"chars": 201,
"preview": "import { OxVehicle } from './class';\n\non('onResourceStop', (resource: string) => OxVehicle.saveAll(resource));\n\non('enti"
},
{
"path": "server/vehicle/index.ts",
"chars": 2965,
"preview": "import { OxVehicle, Vec3 } from \"./class\";\nimport { CreateNewVehicle, GetStoredVehicleFromId, IsPlateAvailable, type Veh"
},
{
"path": "server/vehicle/parser.ts",
"chars": 1611,
"preview": "import { addCommand, triggerClientCallback } from \"@overextended/ox_lib/server\";\nimport { GetTopVehicleStats, GetVehicle"
},
{
"path": "sql/install.sql",
"chars": 11807,
"preview": "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n\n/*!40101 SET NAMES utf8 */;\n\n/*!50503 SET NAMES utf8m"
},
{
"path": "tsconfig.json",
"chars": 728,
"preview": "{\n \"compilerOptions\": {\n \"baseUrl\": \".\",\n \"rootDir\": \".\",\n \"noImplicitAny\": true,\n \"strictNullChecks\": true"
},
{
"path": "types/index.ts",
"chars": 3947,
"preview": "export type Dict<T> = { [key: string]: T };\n\nexport interface Character {\n charId: number;\n stateId: string;\n firstNa"
}
]
About this extraction
This page contains the full source code of the overextended/ox_core GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 102 files (454.8 KB), approximately 159.6k tokens, and a symbol index with 351 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.