import type { Entity } from '../classes/Entity'; import { Vector2 } from '../types/Vector2'; import { Vector3 } from '../types/Vector3'; import { Vector4 } from '../types/Vector4'; import { Color } from '../types/Color'; import { createFromHandle } from '../types/HandleRegistry'; import { inv, rai, raf, ras, rav, pvi, pvf, pvv, pvii, pvfi, _h, f, int, uint, float, Hash, u8, u16, u32, u64, i8, i16, i32, i64 } from '../types/NativeAliases'; export class Brain { /** * Returns threadId * * @param entity * @param scriptName * @param p2 * @param p4 * @param p5 * @returns p3 */ static startScriptBrain(entity: Entity, scriptName: string, p2: int, p4: int, p5: boolean): [int, number] { const result = inv<[number, number]>('0x6F62FAE266DCFC81', entity.handle, scriptName, p2, pvi(), p4, p5, rai()); return [result[0], result[1]]; } /** * @returns */ static getScriptBrainEntity(): Entity | null { return createFromHandle('Entity', inv('0x6818D1A194E29983', rai())); } /** * Called with flag 0 before 0xA6AC35DB4A7957A8 in net_entity_brain * _SET_SCRIPT_BRAIN* * * @param flag */ static N_0x4AA5EA1EDFB25786(flag: int): void { inv('0x4AA5EA1EDFB25786', flag); } /** * @param brainSet */ static disableScriptBrainSet(brainSet: int): void { inv('0x3F44EA613A5B2676', brainSet); } /** * Returns threadId * * @param entity * @param scriptName * @param scriptStackSize * @param p3 * @returns */ static startPreloadedScriptBrain(entity: Entity, scriptName: string, scriptStackSize: int, p3: boolean): int { return inv('0x4E4507CC5E4DB869', entity.handle, scriptName, scriptStackSize, p3, rai()); } /** * Common flags: 250, 99999 * _SET_SCRIPT_BRAIN* * * @param flag */ static N_0xA6AC35DB4A7957A8(flag: int): void { inv('0xA6AC35DB4A7957A8', flag); } /** * @param brainSet */ static enableScriptBrainSet(brainSet: int): void { inv('0x1CF6E5C6750EADBD', brainSet); } /** * @param entity */ static removeScriptBrainEntity(entity: Entity): void { inv('0x38F1E09224EECA09', entity.handle); } /** * Registers a script for any object with a specific model hash. * * @param scriptName * @param modelHash * @param p2 * @param activationRange * @param p4 * @param p5 */ static registerObjectScriptBrain(scriptName: string, modelHash: string | number, p2: int, activationRange: float, p4: int, p5: int): void { inv('0x16AF9B4EEAC3B305', scriptName, _h(modelHash), p2, f(activationRange), p4, p5); } /** * @param scriptName */ static reactivateNamedObjectBrainsWaitingTillOutOfRange(scriptName: string): void { inv('0x74C333E34DF74E8A', scriptName); } /** * Called before starting a new thread_monitor script thread in startup_mp/startup_tlg * Alternative name _REGISTER_SCRIPT_BRAIN Old name: _PREPARE_SCRIPT_BRAIN */ static reactivateAllObjectBrainsThatAreWaitingTillOutOfRange(): void { inv('0xA32B0B05EFF75730'); } }