diff --git a/src/lang/en.ts b/src/lang/en.ts
index 00172138..d56051eb 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -654,4 +654,5 @@ export const languageEnglish = {
font: "Font",
lineHeight: "Line Height",
loadAutoServerBackup: "Load Auto Server Backup",
+ notCharxWarn: "This character uses multiple assets. it is recommended to export this character as a CharX format for better compatibility.",
}
\ No newline at end of file
diff --git a/src/lib/Others/AlertComp.svelte b/src/lib/Others/AlertComp.svelte
index 479ab9b4..60421c6c 100644
--- a/src/lib/Others/AlertComp.svelte
+++ b/src/lib/Others/AlertComp.svelte
@@ -5,20 +5,19 @@
import { ParseMarkdown } from '../../ts/parser';
import BarIcon from '../SideBars/BarIcon.svelte';
import { ChevronRightIcon, User } from 'lucide-svelte';
- import { hubURL } from 'src/ts/characterCards';
+ import { hubURL, isCharacterHasAssets } from 'src/ts/characterCards';
import TextInput from '../UI/GUI/TextInput.svelte';
import { openURL } from 'src/ts/storage/globalApi';
import Button from '../UI/GUI/Button.svelte';
import { XIcon } from "lucide-svelte";
import SelectInput from "../UI/GUI/SelectInput.svelte";
- import { CCLicenseData } from "src/ts/creation/license";
import OptionInput from "../UI/GUI/OptionInput.svelte";
import { language } from 'src/lang';
import { getFetchData } from 'src/ts/storage/globalApi';
- import { CurrentChat } from "src/ts/stores";
+ import { CurrentChat, CurrentCharacter } from "src/ts/stores";
import { tokenize } from "src/ts/tokenizer";
import TextAreaInput from "../UI/GUI/TextAreaInput.svelte";
- import ModuleChatMenu from "../Setting/Pages/Module/ModuleChatMenu.svelte";
+ import ModuleChatMenu from "../Setting/Pages/Module/ModuleChatMenu.svelte";
let btn
let input = ''
let cardExportType = 'realm'
@@ -399,6 +398,9 @@
{language.risupresetDesc}
{:else}
{language.ccv3Desc}
+ {#if cardExportType2 !== 'charx' && isCharacterHasAssets($CurrentCharacter)}
+ {language.notCharxWarn}
+ {/if}
{/if}
{:else if cardExportType === 'json'}
{language.jsonDesc}
@@ -417,7 +419,10 @@
{:else}
-
+
{/if}
diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts
index 2b05fbcd..b22c4e9c 100644
--- a/src/ts/characterCards.ts
+++ b/src/ts/characterCards.ts
@@ -1,6 +1,6 @@
import { get, writable, type Writable } from "svelte/store"
import { alertCardExport, alertConfirm, alertError, alertInput, alertMd, alertNormal, alertSelect, alertStore, alertTOS, alertWait } from "./alert"
-import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook, type triggerscript, importPreset } from "./storage/database"
+import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook, type triggerscript, importPreset, type groupChat } from "./storage/database"
import { checkNullish, decryptBuffer, encryptBuffer, isKnownUri, selectFileByDom, selectMultipleFile, sleep } from "./util"
import { language } from "src/lang"
import { v4 as uuidv4, v4 } from 'uuid';
@@ -1309,6 +1309,25 @@ export async function getHubResources(id:string) {
return Buffer.from(await (res).arrayBuffer())
}
+export function isCharacterHasAssets(char:character|groupChat){
+ if(char.type === 'group'){
+ return false
+ }
+
+ if(char.additionalAssets && char.additionalAssets.length > 0){
+ return true
+ }
+
+ if(char.emotionImages && char.emotionImages.length > 0){
+ return true
+ }
+
+ if(char.ccAssets && char.ccAssets.length > 0){
+ return true
+ }
+
+ return false
+}
type CharacterCardV2Risu = {