沈家大院

💡 本资源需花费 10 积分 下载 | 新用户注册即送 100 积分,可免费下载!

沈家大院

🎭 角色简介

<roleplay_guidelines>
purpose: >
确保角色扮演中的角色表现真实自然,符合既定人设与性格,避免出现油腻、狂暴、阴谋论、绝望化等不符合预期的行为,为互动赋予更多灵活性和正向体验。
constraints:
– 不允许角色突然陷入阴谋论、极端…

💬 开场白

“`html
<html>
<head>
<style>
/* — 清新淡雅 · 古风主题 · 双列终极版 — */
:root {
–bg-main: linear-gradient(160deg, #f9f6f1 0%, #f1eae2 100%);
–bg-card: rgba(245, 240, 235, 0.75);
–text-title: #bda17c;
–text-subtitle: #8c7f76;
–text-card-title: #a1665e;
–text-card-desc: #6c5d53;
–border-color: rgba(224, 213, 198, 0.8);
–border-highlight: #bda17c;
–shadow-color: rgba(189, 161, 124, 0.25);
–font-family: 'Songti SC', 'Kaiti SC', 'SimSun', serif;
–ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background-color: #f9f6f1; color: var(–text-subtitle); font-family: var(–font-family); overflow-x: hidden; -webkit-font-smoothing: antialiased; }

/* — 主容器布局 — */
.main-container-nova {
max-width: 800px;
margin: 20px auto;
padding: 0;
opacity: 0;
animation: fadeIn 1s var(–ease-out-quint) forwards;
background: var(–bg-main);
border: 1px solid rgba(224, 213, 198, 0.5);
border-radius: 16px;
box-shadow: 0 10px 40px var(–shadow-color);
overflow: hidden;
}
@keyframes fadeIn { to { opacity: 1; } }

/* — GIF横幅容器 — */
.gif-header-container { margin-bottom: 30px; }
.gif-header-container img { width: 100%; display: block; }

.content-wrapper-nova { padding: 0 24px 40px 24px; }
.header-nova { text-align: center; margin-bottom: 40px; }
.main-title-nova { font-size: clamp(2.2rem, 5vw, 3.2rem); font-weight: 700; background: linear-gradient(45deg, #d4c1a5, #bda17c); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 12px; letter-spacing: 2px; }
.subtitle-nova { font-size: 0.9rem; font-weight: 400; color: var(–text-subtitle); white-space: pre-wrap; line-height: 1.8; max-width: 600px; margin: 0 auto; }

/* — 开场白滚动与Flexbox两列布局 — */
.narrative-grid-container { max-height: 480px; overflow-y: auto; padding: 4px; margin: 0 -4px; }
.narrative-grid-nova { display: flex; flex-wrap: wrap; gap: 16px; }

.narrative-grid-container::-webkit-scrollbar { width: 6px; }
.narrative-grid-container::-webkit-scrollbar-track { background: rgba(230, 220, 210, 0.3); border-radius: 3px; }
.narrative-grid-container::-webkit-scrollbar-thumb { background: #d4c1a5; border-radius: 3px; }
.narrative-grid-container::-webkit-scrollbar-thumb:hover { background: #bda17c; }

/* — 开场白卡片 — */
.card-nova {
flex: 1 0 calc(50% – 8px); /* 【强制】每个项目占据50%宽度减去半个间隙 */
min-width: calc(50% – 8px); /* 【加固】防止flex项目在某些情况下收缩 */
background-color: var(–bg-card); border: 1px solid var(–border-color); backdrop-filter: blur(4px); border-radius: 10px; padding: 20px; display: flex; flex-direction: column; transition: all 0.4s var(–ease-out-quint); cursor: pointer; opacity: 0; transform: translateY(20px); animation: cardFadeIn 0.6s var(–ease-out-quint) forwards; animation-delay: calc(var(–card-index) * 0.08s);
}
@keyframes cardFadeIn { to { opacity: 1; transform: translateY(0); } }
.card-nova:hover { transform: translateY(-5px); border-color: var(–border-highlight); box-shadow: 0 8px 25px var(–shadow-color); }

.card-title-nova { font-size: 1.25rem; font-weight: 700; color: var(–text-card-title); margin-bottom: 10px; position:relative; padding-left:1.4em; }
.card-title-nova::before { content: '❖'; position: absolute; left: 0; top: 1px; color: var(–text-title); font-size: 0.9em; }
.card-desc-nova { font-size: 0.85rem; line-height: 1.7; color: var(–text-card-desc); flex-grow: 1; margin-bottom: 20px; word-wrap: break-word; }
.card-footer-nova { margin-top: auto; }
.enter-button-nova { width: 100%; padding: 10px; border-radius: 8px; border: 1px solid var(–border-color); background: transparent; color: var(–text-title); font-family: var(–font-family); font-size: 0.9rem; font-weight: 500; cursor: pointer; transition: background-color 0.3s, color 0.3s; }
.card-nova:hover .enter-button-nova { background-color: var(–border-highlight); color: #fff; }

/* — 加载与错误状态 — */
.state-container-nova { display: flex; justify-content: center; align-items: center; padding: 60px 20px; text-align: center; width:100%; }
.loading-spinner-nova { width: 32px; height: 32px; border-radius: 50%; position: relative; animation: rotate 1s linear infinite; }
@keyframes rotate { 100% { transform: rotate(360deg); } }
.loading-spinner-nova::before, .loading-spinner-nova::after { content: ""; box-sizing: border-box; position: absolute; inset: 0; border-radius: 50%; border: 3px solid transparent; border-bottom-color: #d4c1a5; }
.loading-spinner-nova::before { border-bottom-color: #bda17c; animation: rotate 0.5s linear infinite reverse; }
.error-message-nova { font-size: 1rem; color: var(–text-subtitle); }

/* — 页面过渡 — */
.transition-overlay-nova { position: fixed; inset: 0; background: rgba(249, 246, 241, 0.8); backdrop-filter: blur(5px); z-index: 9999; display: flex; justify-content: center; align-items: center; opacity: 0; pointer-events: none; transition: opacity 0.5s; }
.transition-overlay-nova.active { opacity: 1; pointer-events: all; }

/* — 【核心修改】仅调整移动端边距,不再改变列数 — */
@media (max-width: 640px) {
.content-wrapper-nova { padding: 0 16px 30px 16px; }
.narrative-grid-container { max-height: 55vh; }
.card-nova { padding: 16px; } /* 在手机上稍微减小卡片内边距 */
.card-title-nova { font-size: 1.1rem; }
.card-desc-nova { font-size: 0.8rem; }
}
</style>
</head>
<body>
<!– 页面过渡层 –>
<div id="elegantTransitionOverlay" class="transition-overlay-nova"><div class="loading-spinner-nova"></div></div>
<!– 主容器 –>
<div class="main-container-nova">
<div class="gif-header-container">
<img src="https://files.catbox.moe/rc94hw.gif" alt="古风背景-偷情大院">
</div>
<div class="content-wrapper-nova">
<header class="header-nova">
<h1 class="main-title-nova">偷情大院</h1>
<p class="subtitle-nova">本卡作者:村妹儿
本卡仅发布于dc旅程,如果在其他地方见到该卡,请联系村妹儿(dc:chenjuan1314)。
感谢xhs🍠雾十川老师的跑图(沈牧尧),感谢越遥老婆允许我开场白美化二改。感谢略略老公教我修改世界书位置和高级定义格式,感谢朋友们的测卡和陪伴。
此卡是纯偷情背德的肉卡,自行避雷。
🚫偷卡倒卖,卡贩子我不会放过你的。</p>
</header>
<main>
<div class="narrative-grid-container">
<div id="elegantNarrativesGrid" class="narrative-grid-nova">
<div class="state-container-nova" id="elegantLoadingState"><div class="loading-spinner-nova"></div></div>
</div>
</div>
</main>
</div>
</div>
<script>
(function() {
const grid = document.getElementById('elegantNarrativesGrid');
const overlay = document.getElementById('elegantTransitionOverlay');
if (!grid || !overlay) { console.error("[ElegantGreetings] UI components not found."); return; }
async function loadNarratives() {
const loadingState = document.getElementById('elegantLoadingState');
if (typeof getChatMessages !== 'function' || typeof setChatMessage !== 'function') {
if (loadingState) loadingState.remove();
grid.innerHTML = `<div class="state-container-nova"><p class="error-message-nova">错误:缺少SillyTavern API。<br>请在支持JS API的环境中运行。</p></div>`;
return;
}
try {
const messages = await getChatMessages("0", { include_swipe: true });
if (loadingState) loadingState.remove();
if (!messages || messages.length === 0 || !messages[0].swipes || !messages[0].swipes.length || messages[0].swipes.length <= 1) {
grid.innerHTML = `<div class="state-container-nova"><p class="error-message-nova">未找到开场白。<br>请在第2个及以后的轮滑中添加内容。</p></div>`;
return;
}
const swipes = messages[0].swipes.slice(1);
swipes.forEach((content, index) => {
const swipeId = index + 1;
let title = `篇章 ${swipeId}`;
let description = "点击此处,启卷此篇。";
const titleMatch = content.match(/<!–s*title:s*([sS]*?)s*–>/);
if (titleMatch) title = titleMatch[1].trim();
const descMatch = content.match(/<!–s*desc:s*([sS]*?)s*–>/s);
if (descMatch) description = descMatch[1].trim();
const card = document.createElement('div');
card.className = 'card-nova';
card.style.setProperty('–card-index', index);
card.dataset.swipeId = swipeId;
card.innerHTML = `<h2 class="card-title-nova">${title}</h2><p class="card-desc-nova">${description}</p><div class="card-footer-nova"><button class="enter-button-nova">启卷</button></div>`;
grid.appendChild(card);
card.addEventListener('click', () => switchToNarrative(swipeId));
});
} catch (error) {
console.error('加载开场白时出错了:', error);
if (loadingState) loadingState.remove();
grid.innerHTML = `<div class="state-container-nova"><p class="error-message-nova">加载失败,请按F12检查控制台错误。</p></div>`;
}
}
async function switchToNarrative(swipeId) {
overlay.classList.add('active');
try {
const messages = await getChatMessages("0", { include_swipe: true });
if (messages && messages[0].swipes && messages[0].swipes[swipeId]) {
await setChatMessage(messages[0].swipes[swipeId], 0, { swipe_id: swipeId, refresh: 'display_and_render_current' });
}
} catch (error) {
console.error('切换开场白时出错了:', error);
overlay.classList.remove('active');
}
}
loadNarratives();
})();
</script>
</body>
</html>
“`

角色卡

李若早

2025-12-31 16:49:23

角色卡

凌风

2025-12-31 16:49:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索