scripts api

This commit is contained in:
tresabhi committed 2026-09-22 15:36:12 -05:00
1 parent 402b6d5113
commit 6c9ce58af5
9 files changed
+73 -56

No files matched your search

+7
View File
@@ -12,6 +12,7 @@ import {
TankDefinitions,
} from "@blitzkit/protos";
import { fetchPB } from "../../protobuf";
import { BlitzScripts } from "../../types/blitzScripts";
import { BlitzKitAPI } from "./base";
export class ClientBlitzKitAPI extends BlitzKitAPI {
@@ -66,4 +67,10 @@ export class ClientBlitzKitAPI extends BlitzKitAPI {
maps() {
return fetchPB(alias("api", "/definitions/maps.pb"), MapDefinitions);
}
async scripts() {
const response = await fetch(alias("api", "/definitions/scripts.json"));
const json = await response.json();
return json as BlitzScripts;
}
}
@@ -0,0 +1,49 @@
import { ConsumablesCommon, OptionalDevices } from "../../../types";
import { BlitzScripts } from "../../../types/blitzScripts";
import { AbstractVFS } from "../../vfs";
import { ServerBlitzKitAPI10 } from "./10_avatars";
export abstract class ServerBlitzKitAPI11 extends ServerBlitzKitAPI10 {
async scripts() {
const scripts: BlitzScripts = {
consumables: {},
equipment: {},
provisions: {},
};
const optionalDevices = await this.vfs.xml<{
root: OptionalDevices;
}>("Data/XML/item_defs/vehicles/common/optional_devices.xml");
for (const key in optionalDevices.root) {
const equipment = optionalDevices.root[key];
scripts.equipment[equipment.id] = equipment.script;
}
async function assign(
vfs: AbstractVFS,
dir: string,
target: keyof BlitzScripts,
) {
const root = `Data/XML/item_defs/vehicles/common/${dir}`;
const list = await vfs.text(`${root}/list.xml`);
const pattern = /<items path="(\w+)\.xml"\/>/gm;
for (const match of list.matchAll(pattern)) {
const group = match[1];
const path = `${root}/${group}.xml`;
const things = await vfs.xml<{ root: ConsumablesCommon }>(path);
for (const key in things.root) {
const thing = things.root[key];
scripts[target][thing.id] = things.root[key].script;
}
}
}
await assign(this.vfs, "consumables", "consumables");
await assign(this.vfs, "provisions", "provisions");
return scripts;
}
}
@@ -1,3 +1,3 @@
import { ServerBlitzKitAPI10 } from "./10_avatars";
import { ServerBlitzKitAPI11 } from "./11_scripts";
export class ServerBlitzKitAPI extends ServerBlitzKitAPI10 {}
export class ServerBlitzKitAPI extends ServerBlitzKitAPI11 {}
+1 -1
View File
@@ -1,4 +1,4 @@
type BlitzEffectScript = RSN & {
export type BlitzEffectScript = RSN & {
"#text": string;
attribute?: string;
+2 -2
View File
@@ -1,4 +1,4 @@
import { ProvisionConsumableScript } from "@blitzkit/core/src/types/provisionConsumableScript";
import { BlitzEffectScript } from "./blitzEffectScript";
import { ConsumablesVehicleFilter } from "./consumablesVehicleFilter";
export interface ConsumablesCommon {
@@ -13,6 +13,6 @@ export interface ConsumablesCommon {
include: { vehicle: ConsumablesVehicleFilter; nations?: string };
exclude?: { vehicle: ConsumablesVehicleFilter; nations?: string };
};
script: ProvisionConsumableScript;
script: BlitzEffectScript;
};
}
+3 -1
View File
@@ -1,10 +1,12 @@
import { BlitzEffectScript } from "./blitzEffectScript";
export interface OptionalDevices {
[key: string]: {
id: number;
userString: string;
description: string;
icon: string;
script: unknown;
script: BlitzEffectScript;
display_params: unknown;
};
}