Initial release for SPT 3.9

This commit is contained in:
2024-07-20 18:08:38 +02:00
parent 7df25ba694
commit c83da69a3e
713 changed files with 34110 additions and 1 deletions

View File

@@ -0,0 +1,16 @@
import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { MailSendService } from "@spt/services/MailSendService";
export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot {
protected logger: ILogger;
protected mailSendService: MailSendService;
protected chatCommands: IChatCommand[];
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
registerChatCommand(chatCommand: IChatCommand): void;
abstract getChatBot(): IUserDialogInfo;
protected abstract getUnrecognizedCommandMessage(): string;
handleMessage(sessionId: string, request: ISendMessageRequest): string;
}

View File

@@ -0,0 +1,8 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
export interface IChatCommand {
getCommandPrefix(): string;
getCommandHelp(command: string): string;
getCommands(): Set<string>;
handle(command: string, commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string;
}

View File

@@ -0,0 +1,17 @@
import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { LocalisationService } from "@spt/services/LocalisationService";
export declare class SptCommandoCommands implements IChatCommand {
protected configServer: ConfigServer;
protected localisationService: LocalisationService;
protected sptCommands: ISptCommand[];
constructor(configServer: ConfigServer, localisationService: LocalisationService, sptCommands: ISptCommand[]);
registerSptCommandoCommand(command: ISptCommand): void;
getCommandHelp(command: string): string;
getCommandPrefix(): string;
getCommands(): Set<string>;
handle(command: string, commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string;
}

View File

@@ -0,0 +1,47 @@
import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand";
import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { PresetHelper } from "@spt/helpers/PresetHelper";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseService } from "@spt/services/DatabaseService";
import { ItemFilterService } from "@spt/services/ItemFilterService";
import { LocaleService } from "@spt/services/LocaleService";
import { MailSendService } from "@spt/services/MailSendService";
import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil";
export declare class GiveSptCommand implements ISptCommand {
protected logger: ILogger;
protected itemHelper: ItemHelper;
protected hashUtil: HashUtil;
protected presetHelper: PresetHelper;
protected mailSendService: MailSendService;
protected localeService: LocaleService;
protected databaseService: DatabaseService;
protected itemFilterService: ItemFilterService;
protected cloner: ICloner;
/**
* Regex to account for all these cases:
* spt give "item name" 5
* spt give templateId 5
* spt give en "item name in english" 5
* spt give es "nombre en español" 5
* spt give 5 <== this is the reply when the algo isn't sure about an item
*/
private static commandRegex;
private static acceptableConfidence;
private static excludedPresetItems;
protected savedCommand: Map<string, SavedCommand>;
constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseService: DatabaseService, itemFilterService: ItemFilterService, cloner: ICloner);
getCommand(): string;
getCommandHelp(): string;
performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string;
/**
* A "simple" function that checks if an item is supposed to be given to a player or not
* @param templateItem the template item to check
* @returns true if its obtainable, false if its not
*/
protected isItemAllowed(templateItem: ITemplateItem): boolean;
}

View File

@@ -0,0 +1,6 @@
export declare class SavedCommand {
quantity: number;
potentialItemNames: string[];
locale: string;
constructor(quantity: number, potentialItemNames: string[], locale: string);
}

View File

@@ -0,0 +1,7 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
export interface ISptCommand {
getCommand(): string;
getCommandHelp(): string;
performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string;
}

View File

@@ -0,0 +1,36 @@
import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand";
import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { PresetHelper } from "@spt/helpers/PresetHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { LocaleService } from "@spt/services/LocaleService";
import { MailSendService } from "@spt/services/MailSendService";
import { HashUtil } from "@spt/utils/HashUtil";
export declare class ProfileSptCommand implements ISptCommand {
protected logger: ILogger;
protected itemHelper: ItemHelper;
protected hashUtil: HashUtil;
protected presetHelper: PresetHelper;
protected mailSendService: MailSendService;
protected localeService: LocaleService;
protected databaseServer: DatabaseServer;
protected profileHelper: ProfileHelper;
/**
* Regex to account for all these cases:
* spt profile level 20
* spt profile skill metabolism 10
*/
private static commandRegex;
protected savedCommand: SavedCommand;
constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseServer: DatabaseServer, profileHelper: ProfileHelper);
getCommand(): string;
getCommandHelp(): string;
performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string;
protected handleSkillCommand(skill: string, level: number): IProfileChangeEvent;
protected handleLevelCommand(level: number): IProfileChangeEvent;
}

View File

@@ -0,0 +1,31 @@
import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand";
import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { PresetHelper } from "@spt/helpers/PresetHelper";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseService } from "@spt/services/DatabaseService";
import { LocaleService } from "@spt/services/LocaleService";
import { MailSendService } from "@spt/services/MailSendService";
import { HashUtil } from "@spt/utils/HashUtil";
export declare class TraderSptCommand implements ISptCommand {
protected logger: ILogger;
protected itemHelper: ItemHelper;
protected hashUtil: HashUtil;
protected presetHelper: PresetHelper;
protected mailSendService: MailSendService;
protected localeService: LocaleService;
protected databaseService: DatabaseService;
/**
* Regex to account for all these cases:
* spt trader prapor rep 100
* spt trader mechanic spend 1000000
*/
private static commandRegex;
protected savedCommand: SavedCommand;
constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseService: DatabaseService);
getCommand(): string;
getCommandHelp(): string;
performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string;
}

View File

@@ -0,0 +1,10 @@
import { AbstractDialogueChatBot } from "@spt/helpers/Dialogue/AbstractDialogueChatBot";
import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { MailSendService } from "@spt/services/MailSendService";
export declare class CommandoDialogueChatBot extends AbstractDialogueChatBot {
constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]);
getChatBot(): IUserDialogInfo;
protected getUnrecognizedCommandMessage(): string;
}

View File

@@ -0,0 +1,6 @@
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
export interface IDialogueChatBot {
getChatBot(): IUserDialogInfo;
handleMessage(sessionId: string, request: ISendMessageRequest): string;
}

View File

@@ -0,0 +1,27 @@
import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig";
import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { GiftService } from "@spt/services/GiftService";
import { MailSendService } from "@spt/services/MailSendService";
import { RandomUtil } from "@spt/utils/RandomUtil";
export declare class SptDialogueChatBot implements IDialogueChatBot {
protected profileHelper: ProfileHelper;
protected randomUtil: RandomUtil;
protected mailSendService: MailSendService;
protected giftService: GiftService;
protected configServer: ConfigServer;
protected coreConfig: ICoreConfig;
protected weatherConfig: IWeatherConfig;
constructor(profileHelper: ProfileHelper, randomUtil: RandomUtil, mailSendService: MailSendService, giftService: GiftService, configServer: ConfigServer);
getChatBot(): IUserDialogInfo;
/**
* Send responses back to player when they communicate with SPT friend on friends list
* @param sessionId Session Id
* @param request send message request
*/
handleMessage(sessionId: string, request: ISendMessageRequest): string;
}