Добавлены новые разделы документации: "Города и регистрация", "Крафты", "Приват и защита", "SkinRestore". Каждый раздел содержит информацию о статусе, что будет добавлено, и полезные советы для пользователей.
@@ -10,16 +10,31 @@ dist
|
|||||||
# Local Codex/dev artifacts
|
# Local Codex/dev artifacts
|
||||||
.codex*
|
.codex*
|
||||||
.codex/
|
.codex/
|
||||||
|
.codex-dev.*
|
||||||
|
.codex-cache/
|
||||||
.tmp*
|
.tmp*
|
||||||
*.tmp
|
*.tmp
|
||||||
|
|
||||||
# Logs
|
# Logs and runtime junk
|
||||||
*.log
|
*.log
|
||||||
|
*.log.*
|
||||||
|
*.out
|
||||||
|
*.err
|
||||||
|
*.pid
|
||||||
|
*.pid.lock
|
||||||
|
logs
|
||||||
|
preview*.log
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
pnpm-debug.log*
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# Env and local-only config
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
*.local
|
||||||
|
|
||||||
# OS/editor files
|
# OS/editor files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
@@ -31,3 +46,9 @@ Thumbs.db
|
|||||||
# Local caches
|
# Local caches
|
||||||
tmp
|
tmp
|
||||||
.cache
|
.cache
|
||||||
|
temp
|
||||||
|
coverage
|
||||||
|
.nyc_output
|
||||||
|
.pnpm-store
|
||||||
|
.npm
|
||||||
|
*.tsbuildinfo
|
||||||
|
|||||||
25
.gitignore
vendored
@@ -5,16 +5,31 @@ dist/
|
|||||||
# Local Codex/dev artifacts
|
# Local Codex/dev artifacts
|
||||||
.codex*
|
.codex*
|
||||||
.codex/
|
.codex/
|
||||||
|
.codex-dev.*
|
||||||
|
.codex-cache/
|
||||||
.tmp*
|
.tmp*
|
||||||
*.tmp
|
*.tmp
|
||||||
|
|
||||||
# Logs
|
# Logs
|
||||||
*.log
|
*.log
|
||||||
|
*.log.*
|
||||||
|
*.out
|
||||||
|
*.err
|
||||||
|
*.pid
|
||||||
|
*.pid.lock
|
||||||
|
logs/
|
||||||
|
preview*.log
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
pnpm-debug.log*
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# Env and local-only config
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
*.local
|
||||||
|
|
||||||
# OS files
|
# OS files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
@@ -24,3 +39,13 @@ Thumbs.db
|
|||||||
.idea/
|
.idea/
|
||||||
*.swp
|
*.swp
|
||||||
*.swo
|
*.swo
|
||||||
|
|
||||||
|
# Caches / tooling
|
||||||
|
.cache/
|
||||||
|
tmp/
|
||||||
|
temp/
|
||||||
|
coverage/
|
||||||
|
.nyc_output/
|
||||||
|
.pnpm-store/
|
||||||
|
.npm/
|
||||||
|
*.tsbuildinfo
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import { defineConfig } from 'astro/config';
|
import { defineConfig } from 'astro/config';
|
||||||
import starlight from '@astrojs/starlight';
|
import starlight from '@astrojs/starlight';
|
||||||
|
|
||||||
|
const showEditorDocs = process.env.PUBLIC_SHOW_EDITOR_DOCS === 'true';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
site: 'https://wiki.example.com',
|
site: 'https://wiki.example.com',
|
||||||
vite: {
|
vite: {
|
||||||
@@ -25,6 +27,7 @@ export default defineConfig({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
tagline: 'Нереалистичный архив игрового мира',
|
tagline: 'Нереалистичный архив игрового мира',
|
||||||
|
favicon: '/photo_2026-03-14_11-18-15.jpg',
|
||||||
customCss: ['/src/styles/wiki-egames.css'],
|
customCss: ['/src/styles/wiki-egames.css'],
|
||||||
lastUpdated: true,
|
lastUpdated: true,
|
||||||
disable404Route: true,
|
disable404Route: true,
|
||||||
@@ -52,6 +55,7 @@ export default defineConfig({
|
|||||||
{
|
{
|
||||||
label: 'Введение',
|
label: 'Введение',
|
||||||
items: [
|
items: [
|
||||||
|
{ label: 'О проекте', link: '/about-server/' },
|
||||||
{ label: 'Часто задаваемые вопросы', link: '/faq/' },
|
{ label: 'Часто задаваемые вопросы', link: '/faq/' },
|
||||||
{ label: 'Правила', link: '/rules/' }
|
{ label: 'Правила', link: '/rules/' }
|
||||||
]
|
]
|
||||||
@@ -60,7 +64,10 @@ export default defineConfig({
|
|||||||
label: 'Игровые системы',
|
label: 'Игровые системы',
|
||||||
items: [
|
items: [
|
||||||
{ label: 'Общее', link: '/general/' },
|
{ label: 'Общее', link: '/general/' },
|
||||||
|
{ label: 'Команды', link: '/commands/' },
|
||||||
{ label: 'Города', link: '/cities/' },
|
{ label: 'Города', link: '/cities/' },
|
||||||
|
{ label: 'Крафты', link: '/crafting/' },
|
||||||
|
{ label: 'SkinRestore', link: '/skinrestore/' },
|
||||||
{
|
{
|
||||||
label: 'Алкоголь',
|
label: 'Алкоголь',
|
||||||
items: [
|
items: [
|
||||||
@@ -78,6 +85,8 @@ export default defineConfig({
|
|||||||
{ label: 'Контакты и ссылки', link: '/contacts/' }
|
{ label: 'Контакты и ссылки', link: '/contacts/' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
...(showEditorDocs
|
||||||
|
? [
|
||||||
{
|
{
|
||||||
label: 'Для редакторов',
|
label: 'Для редакторов',
|
||||||
items: [
|
items: [
|
||||||
@@ -86,6 +95,8 @@ export default defineConfig({
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
: [])
|
||||||
|
]
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|||||||
BIN
public/ChatGPT Image 22 апр. 2026 г., 05_34_46.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/brand-logo.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/icons/minimal-solid/community.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
public/icons/minimal-solid/exclamation.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
public/icons/minimal-solid/game-controller.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
public/icons/minimal-solid/gear.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
public/icons/minimal-solid/keyboard.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
public/icons/minimal-solid/message.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
public/icons/minimal-solid/safe.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
public/icons/minimal-solid/user-profile.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
public/photo_2026-03-14_11-18-15.jpg
Normal file
|
After Width: | Height: | Size: 35 KiB |
@@ -2,10 +2,11 @@
|
|||||||
import { Icon } from '@astrojs/starlight/components';
|
import { Icon } from '@astrojs/starlight/components';
|
||||||
|
|
||||||
const { editUrl } = Astro.locals.starlightRoute;
|
const { editUrl } = Astro.locals.starlightRoute;
|
||||||
|
const showEditorDocs = import.meta.env.PUBLIC_SHOW_EDITOR_DOCS === 'true';
|
||||||
---
|
---
|
||||||
|
|
||||||
{
|
{
|
||||||
editUrl && (
|
showEditorDocs && editUrl && (
|
||||||
<a href={editUrl} class="wiki-edit-link sl-flex print:hidden" target="_blank" rel="noopener noreferrer">
|
<a href={editUrl} class="wiki-edit-link sl-flex print:hidden" target="_blank" rel="noopener noreferrer">
|
||||||
<Icon name="pencil" size="1.05em" />
|
<Icon name="pencil" size="1.05em" />
|
||||||
Редактировать страницу
|
Редактировать страницу
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import config from 'virtual:starlight/user-config';
|
|||||||
|
|
||||||
import LanguageSelect from 'virtual:starlight/components/LanguageSelect';
|
import LanguageSelect from 'virtual:starlight/components/LanguageSelect';
|
||||||
import Search from 'virtual:starlight/components/Search';
|
import Search from 'virtual:starlight/components/Search';
|
||||||
import SiteTitle from 'virtual:starlight/components/SiteTitle';
|
|
||||||
import SocialIcons from 'virtual:starlight/components/SocialIcons';
|
import SocialIcons from 'virtual:starlight/components/SocialIcons';
|
||||||
|
|
||||||
const shouldRenderSearch =
|
const shouldRenderSearch =
|
||||||
@@ -21,7 +20,15 @@ const topLinks = [
|
|||||||
<div class="wiki-header-shell">
|
<div class="wiki-header-shell">
|
||||||
<div class="header wiki-header">
|
<div class="header wiki-header">
|
||||||
<div class="title-wrapper sl-flex">
|
<div class="title-wrapper sl-flex">
|
||||||
<SiteTitle />
|
<a class="wiki-brand" href="/" aria-label="PARABOX PROJECT">
|
||||||
|
<span class="wiki-brand__icon" aria-hidden="true">
|
||||||
|
<img src="/brand-logo.png" alt="" loading="eager" decoding="async" />
|
||||||
|
</span>
|
||||||
|
<span class="wiki-brand__copy">
|
||||||
|
<span class="wiki-brand__title">PARABOX</span>
|
||||||
|
<span class="wiki-brand__subtitle">PROJECT</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
<nav class="wiki-top-nav" aria-label="Быстрая навигация">
|
<nav class="wiki-top-nav" aria-label="Быстрая навигация">
|
||||||
{
|
{
|
||||||
topLinks.map((link) => (
|
topLinks.map((link) => (
|
||||||
@@ -89,10 +96,148 @@ const topLinks = [
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button class="wiki-back-to-top" type="button" aria-label="Прокрутить в начало" data-back-to-top>
|
<button class="wiki-back-to-top" type="button" aria-label="Прокрутить в начало" data-back-to-top>
|
||||||
<span aria-hidden="true">↑</span>
|
<svg aria-hidden="true" class="wiki-back-to-top__icon" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path d="M12 18V6" />
|
||||||
|
<path d="m6.8 11.2 5.2-5.2 5.2 5.2" />
|
||||||
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
const emojiPattern = (() => {
|
||||||
|
try {
|
||||||
|
return new RegExp('[\\p{Extended_Pictographic}\\u2600-\\u27BF]', 'gu');
|
||||||
|
} catch {
|
||||||
|
return /[\u2600-\u27BF]/g;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
const stripDecorativeSymbols = (value) =>
|
||||||
|
value
|
||||||
|
.replace(emojiPattern, '')
|
||||||
|
.replace(/\s{2,}/g, ' ')
|
||||||
|
.trim();
|
||||||
|
|
||||||
|
const normalizeLabelKey = (value) => stripDecorativeSymbols(value).toLowerCase();
|
||||||
|
|
||||||
|
const minimalIconByHeading = new Map([
|
||||||
|
['настройки', '/icons/minimal-solid/gear.png'],
|
||||||
|
['личные сообщения', '/icons/minimal-solid/message.png'],
|
||||||
|
['игнор', '/icons/minimal-solid/safe.png'],
|
||||||
|
['развлечения', '/icons/minimal-solid/game-controller.png'],
|
||||||
|
['rp и взаимодействие', '/icons/minimal-solid/community.png'],
|
||||||
|
['статус игрока', '/icons/minimal-solid/user-profile.png'],
|
||||||
|
['информация', '/icons/minimal-solid/exclamation.png'],
|
||||||
|
['символы', '/icons/minimal-solid/keyboard.png']
|
||||||
|
]);
|
||||||
|
|
||||||
|
const sanitizeNavLabels = () => {
|
||||||
|
const navLinks = document.querySelectorAll('.sidebar-content a, starlight-toc a, mobile-starlight-toc a');
|
||||||
|
|
||||||
|
navLinks.forEach((linkNode) => {
|
||||||
|
if (!(linkNode instanceof HTMLElement)) return;
|
||||||
|
|
||||||
|
const sourceText = linkNode.textContent;
|
||||||
|
if (!sourceText) return;
|
||||||
|
|
||||||
|
const normalizedText = stripDecorativeSymbols(sourceText);
|
||||||
|
|
||||||
|
if (!normalizedText || normalizedText === sourceText.trim()) return;
|
||||||
|
linkNode.textContent = normalizedText;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const sanitizeDocHeadings = () => {
|
||||||
|
const headings = document.querySelectorAll('.sl-markdown-content :is(h1, h2, h3, h4, h5, h6)');
|
||||||
|
|
||||||
|
headings.forEach((headingNode) => {
|
||||||
|
if (!(headingNode instanceof HTMLElement)) return;
|
||||||
|
|
||||||
|
const sourceText = headingNode.textContent;
|
||||||
|
if (!sourceText) return;
|
||||||
|
|
||||||
|
const normalizedText = stripDecorativeSymbols(sourceText);
|
||||||
|
|
||||||
|
if (!normalizedText || normalizedText === sourceText.trim()) return;
|
||||||
|
headingNode.textContent = normalizedText;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const decorateSectionIcons = () => {
|
||||||
|
const headings = document.querySelectorAll('.sl-markdown-content h3');
|
||||||
|
|
||||||
|
headings.forEach((headingNode) => {
|
||||||
|
if (!(headingNode instanceof HTMLElement)) return;
|
||||||
|
|
||||||
|
const sourceText = headingNode.textContent;
|
||||||
|
if (!sourceText) return;
|
||||||
|
|
||||||
|
const normalizedText = normalizeLabelKey(sourceText);
|
||||||
|
const iconPath = minimalIconByHeading.get(normalizedText);
|
||||||
|
if (!iconPath) return;
|
||||||
|
|
||||||
|
if (headingNode.querySelector('.minimal-heading-icon')) return;
|
||||||
|
|
||||||
|
const iconNode = document.createElement('span');
|
||||||
|
iconNode.className = 'minimal-heading-icon';
|
||||||
|
iconNode.setAttribute('aria-hidden', 'true');
|
||||||
|
iconNode.style.setProperty('--icon-url', `url('${iconPath}')`);
|
||||||
|
headingNode.prepend(iconNode);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const copyTextToClipboard = async (value) => {
|
||||||
|
if (navigator.clipboard?.writeText) {
|
||||||
|
await navigator.clipboard.writeText(value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const helperInput = document.createElement('textarea');
|
||||||
|
helperInput.value = value;
|
||||||
|
helperInput.setAttribute('readonly', '');
|
||||||
|
helperInput.style.position = 'fixed';
|
||||||
|
helperInput.style.opacity = '0';
|
||||||
|
document.body.appendChild(helperInput);
|
||||||
|
helperInput.select();
|
||||||
|
document.execCommand('copy');
|
||||||
|
helperInput.remove();
|
||||||
|
};
|
||||||
|
|
||||||
|
const bindCopyIpChips = () => {
|
||||||
|
const copyButtons = document.querySelectorAll('[data-copy-ip]');
|
||||||
|
|
||||||
|
copyButtons.forEach((buttonNode) => {
|
||||||
|
if (!(buttonNode instanceof HTMLButtonElement)) return;
|
||||||
|
if (buttonNode.dataset.copyBound === 'true') return;
|
||||||
|
|
||||||
|
buttonNode.dataset.copyBound = 'true';
|
||||||
|
buttonNode.classList.add('is-copy-ready');
|
||||||
|
if (!buttonNode.title) {
|
||||||
|
buttonNode.title = 'Нажмите, чтобы скопировать';
|
||||||
|
}
|
||||||
|
buttonNode.addEventListener('click', async () => {
|
||||||
|
const value = buttonNode.dataset.copyIp?.trim();
|
||||||
|
if (!value) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await copyTextToClipboard(value);
|
||||||
|
buttonNode.classList.add('is-copied');
|
||||||
|
buttonNode.setAttribute('aria-label', `Скопировано: ${value}`);
|
||||||
|
window.setTimeout(() => {
|
||||||
|
buttonNode.classList.remove('is-copied');
|
||||||
|
buttonNode.setAttribute('aria-label', `Скопировать: ${value}`);
|
||||||
|
}, 1200);
|
||||||
|
} catch {
|
||||||
|
buttonNode.classList.add('is-copy-error');
|
||||||
|
buttonNode.setAttribute('aria-label', `Не удалось скопировать: ${value}`);
|
||||||
|
window.setTimeout(() => {
|
||||||
|
buttonNode.classList.remove('is-copy-error');
|
||||||
|
buttonNode.setAttribute('aria-label', `Скопировать: ${value}`);
|
||||||
|
}, 1400);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const enhanceSidebarGroupLinks = () => {
|
const enhanceSidebarGroupLinks = () => {
|
||||||
const targets = [{ label: 'Алкоголь', href: '/alcohol/' }];
|
const targets = [{ label: 'Алкоголь', href: '/alcohol/' }];
|
||||||
const labelNodes = document.querySelectorAll('.sidebar-content details > summary .group-label .large');
|
const labelNodes = document.querySelectorAll('.sidebar-content details > summary .group-label .large');
|
||||||
@@ -164,6 +309,10 @@ const topLinks = [
|
|||||||
});
|
});
|
||||||
|
|
||||||
enhanceSidebarGroupLinks();
|
enhanceSidebarGroupLinks();
|
||||||
|
sanitizeNavLabels();
|
||||||
|
sanitizeDocHeadings();
|
||||||
|
decorateSectionIcons();
|
||||||
|
bindCopyIpChips();
|
||||||
setReadProgress();
|
setReadProgress();
|
||||||
window.addEventListener('scroll', setReadProgress, { passive: true });
|
window.addEventListener('scroll', setReadProgress, { passive: true });
|
||||||
window.addEventListener('resize', setReadProgress);
|
window.addEventListener('resize', setReadProgress);
|
||||||
@@ -177,6 +326,10 @@ const topLinks = [
|
|||||||
|
|
||||||
document.addEventListener('astro:page-load', () => {
|
document.addEventListener('astro:page-load', () => {
|
||||||
enhanceSidebarGroupLinks();
|
enhanceSidebarGroupLinks();
|
||||||
|
sanitizeNavLabels();
|
||||||
|
sanitizeDocHeadings();
|
||||||
|
decorateSectionIcons();
|
||||||
|
bindCopyIpChips();
|
||||||
setReadProgress();
|
setReadProgress();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@@ -203,10 +356,70 @@ const topLinks = [
|
|||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
margin: -0.25rem;
|
margin: -0.25rem;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
gap: 1rem;
|
gap: 1.1rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.wiki-brand {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.55rem;
|
||||||
|
text-decoration: none;
|
||||||
|
flex-shrink: 0;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 0.3rem;
|
||||||
|
padding: 0.2rem 0.28rem 0.2rem 0.22rem;
|
||||||
|
transition: border-color 150ms ease, background 150ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand:hover {
|
||||||
|
border-color: color-mix(in srgb, var(--sl-color-accent) 32%, transparent);
|
||||||
|
background: color-mix(in srgb, var(--sl-color-accent-low) 64%, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand__icon {
|
||||||
|
width: 1.85rem;
|
||||||
|
height: 1.85rem;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border: 0;
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand__icon img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: block;
|
||||||
|
border-radius: 0;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand__copy {
|
||||||
|
display: inline-flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand__title {
|
||||||
|
font-family: 'Sora', sans-serif;
|
||||||
|
font-size: 1.43rem;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.02em;
|
||||||
|
color: var(--sl-color-white);
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand__subtitle {
|
||||||
|
margin-top: 0.14rem;
|
||||||
|
font-family: 'Sora', sans-serif;
|
||||||
|
font-size: 0.56rem;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.28em;
|
||||||
|
color: var(--sl-color-gray-3);
|
||||||
|
}
|
||||||
|
|
||||||
.wiki-top-nav {
|
.wiki-top-nav {
|
||||||
display: none;
|
display: none;
|
||||||
gap: 0.45rem;
|
gap: 0.45rem;
|
||||||
@@ -327,51 +540,56 @@ const topLinks = [
|
|||||||
.wiki-back-to-top {
|
.wiki-back-to-top {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: auto;
|
top: auto;
|
||||||
right: max(0.75rem, env(safe-area-inset-right));
|
right: max(1.35rem, calc(env(safe-area-inset-right) + 0.8rem));
|
||||||
bottom: max(1.1rem, env(safe-area-inset-bottom));
|
bottom: max(1.45rem, calc(env(safe-area-inset-bottom) + 0.7rem));
|
||||||
z-index: 30;
|
z-index: 30;
|
||||||
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 70%, transparent);
|
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 74%, transparent);
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
140deg,
|
140deg,
|
||||||
color-mix(in srgb, var(--wiki-purple-2) 78%, #101522),
|
color-mix(in srgb, var(--wiki-purple-2) 74%, #101522),
|
||||||
color-mix(in srgb, var(--wiki-blue-2) 82%, #101522)
|
color-mix(in srgb, var(--wiki-blue-2) 84%, #101522)
|
||||||
);
|
);
|
||||||
color: #f6f9ff;
|
color: #f6f9ff;
|
||||||
font-family: 'Sora', sans-serif;
|
width: 3.1rem;
|
||||||
font-size: 1.1rem;
|
height: 3.1rem;
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.01em;
|
|
||||||
width: 2.6rem;
|
|
||||||
height: 2.6rem;
|
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
line-height: 1;
|
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 10px 24px hsl(220 95% 62% / 0.24),
|
0 0 0 1px hsl(214 88% 70% / 0.24),
|
||||||
0 0 0 1px hsl(214 88% 70% / 0.22);
|
0 0 24px hsl(217 100% 68% / 0.38),
|
||||||
|
0 0 42px hsl(221 100% 65% / 0.22);
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
transform: translateY(6px);
|
transform: translateY(8px) scale(0.96);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
transition: opacity 160ms ease, transform 160ms ease, border-color 160ms ease;
|
transition: opacity 180ms ease, transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-back-to-top__icon {
|
||||||
|
width: 1.5rem;
|
||||||
|
height: 1.5rem;
|
||||||
|
stroke: currentColor;
|
||||||
|
stroke-width: 2.15;
|
||||||
|
stroke-linecap: round;
|
||||||
|
stroke-linejoin: round;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wiki-back-to-top.is-visible {
|
.wiki-back-to-top.is-visible {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
transform: translateY(0);
|
transform: translateY(0) scale(1);
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wiki-back-to-top:hover {
|
.wiki-back-to-top:hover {
|
||||||
border-color: color-mix(in srgb, #9ec4ff 80%, transparent);
|
border-color: color-mix(in srgb, #9ec4ff 80%, transparent);
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 14px 28px hsl(220 95% 62% / 0.32),
|
|
||||||
0 0 0 1px hsl(214 88% 70% / 0.35),
|
0 0 0 1px hsl(214 88% 70% / 0.35),
|
||||||
0 0 18px hsl(220 96% 68% / 0.34);
|
0 0 28px hsl(219 97% 70% / 0.44),
|
||||||
|
0 0 50px hsl(221 98% 68% / 0.27);
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-icons::after {
|
.social-icons::after {
|
||||||
@@ -415,12 +633,36 @@ const topLinks = [
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 50rem) {
|
@media (max-width: 50rem) {
|
||||||
|
.wiki-brand {
|
||||||
|
padding: 0.14rem 0.2rem;
|
||||||
|
gap: 0.42rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand__icon {
|
||||||
|
width: 1.55rem;
|
||||||
|
height: 1.55rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand__title {
|
||||||
|
font-size: 1.08rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-brand__subtitle {
|
||||||
|
font-size: 0.46rem;
|
||||||
|
letter-spacing: 0.24em;
|
||||||
|
}
|
||||||
|
|
||||||
.wiki-back-to-top {
|
.wiki-back-to-top {
|
||||||
top: auto;
|
top: auto;
|
||||||
right: max(0.62rem, env(safe-area-inset-right));
|
right: max(1rem, calc(env(safe-area-inset-right) + 0.52rem));
|
||||||
bottom: max(1rem, env(safe-area-inset-bottom));
|
bottom: max(1.18rem, calc(env(safe-area-inset-bottom) + 0.58rem));
|
||||||
width: 2.5rem;
|
width: 2.85rem;
|
||||||
height: 2.5rem;
|
height: 2.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wiki-back-to-top__icon {
|
||||||
|
width: 1.34rem;
|
||||||
|
height: 1.34rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,11 +50,11 @@ description: "Полное руководство по ферментации,
|
|||||||
|
|
||||||
Всего существует 10 уровней качества:
|
Всего существует 10 уровней качества:
|
||||||
|
|
||||||
- `☆` — уровень 1
|
- `I` — уровень 1
|
||||||
- `★` — уровень 2
|
- `II` — уровень 2
|
||||||
- `★☆` — уровень 3
|
- `III` — уровень 3
|
||||||
- `...`
|
- `...`
|
||||||
- `★★★★★ (10)` — максимальное качество
|
- `X` — максимальное качество (уровень 10)
|
||||||
|
|
||||||
:::note
|
:::note
|
||||||
Чем точнее соблюдён рецепт, тем выше качество.
|
Чем точнее соблюдён рецепт, тем выше качество.
|
||||||
|
|||||||
@@ -3,15 +3,52 @@ title: "Все IP"
|
|||||||
description: "Адреса и порты сервера PARABOX для Java и Bedrock."
|
description: "Адреса и порты сервера PARABOX для Java и Bedrock."
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎮 Основное
|
## Основные адреса
|
||||||
|
|
||||||
### Java `1.21.11`
|
<div class="ip-main-grid">
|
||||||
|
<article class="ip-main-card">
|
||||||
|
<h3>Java 1.21.11</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Основной:
|
||||||
|
<button class="copy-ip-chip" type="button" data-copy-ip="mc.rpcm.su" aria-label="Скопировать: mc.rpcm.su">
|
||||||
|
<code>mc.rpcm.su</code>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
AnyCast-прокси:
|
||||||
|
<button class="copy-ip-chip" type="button" data-copy-ip="mine.rpcm.su" aria-label="Скопировать: mine.rpcm.su">
|
||||||
|
<code>mine.rpcm.su</code>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
|
||||||
- Основной: `mc.rpcm.su`
|
<article class="ip-main-card">
|
||||||
- AnyCast-прокси: `mine.rpcm.su`
|
<h3>Bedrock 26.2</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Основной:
|
||||||
|
<button class="copy-ip-chip" type="button" data-copy-ip="mc.rpcm.su" aria-label="Скопировать: mc.rpcm.su">
|
||||||
|
<code>mc.rpcm.su</code>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Запасной IP:
|
||||||
|
<button class="copy-ip-chip" type="button" data-copy-ip="213.152.43.52" aria-label="Скопировать: 213.152.43.52">
|
||||||
|
<code>213.152.43.52</code>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Порт:
|
||||||
|
<button class="copy-ip-chip" type="button" data-copy-ip="25875" aria-label="Скопировать: 25875">
|
||||||
|
<code>25875</code>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
|
||||||
### Bedrock `26.2`
|
<div class="ip-main-note">
|
||||||
|
Используйте запасной адрес, если основной IP временно недоступен.
|
||||||
- Основной: `mc.rpcm.su`
|
</div>
|
||||||
- Запаска: `213.152.43.52`
|
|
||||||
- Порт: `25875`
|
|
||||||
|
|||||||
47
src/content/docs/cities-registration.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
title: "Города и регистрация"
|
||||||
|
description: "Как пройти регистрацию, вступить в город или запустить собственный проектный город."
|
||||||
|
---
|
||||||
|
|
||||||
|
## Как попасть на сервер
|
||||||
|
|
||||||
|
1. Перейдите в бота заявок: <a href="https://t.me/RPCM_MINE_BOT" target="_blank" rel="noopener noreferrer"><strong>@RPCM_MINE_BOT</strong></a>.
|
||||||
|
2. Заполните анкету и дождитесь подтверждения.
|
||||||
|
3. Подключитесь по адресу `mc.rpcm.su`.
|
||||||
|
4. Пройдите регистрацию в игре.
|
||||||
|
|
||||||
|
## Как выбрать город
|
||||||
|
|
||||||
|
После входа у вас есть два рабочих сценария:
|
||||||
|
|
||||||
|
- вступить в уже существующий город;
|
||||||
|
- создать собственный город проекта.
|
||||||
|
|
||||||
|
Если вступаете в существующий город, проверьте его правила и требования к жителям. Если создаете новый, подготовьте описание, цели и формат набора.
|
||||||
|
|
||||||
|
## Как запустить свой город
|
||||||
|
|
||||||
|
### Минимальный шаблон объявления
|
||||||
|
|
||||||
|
```text
|
||||||
|
Название города:
|
||||||
|
Координаты:
|
||||||
|
Мэр / управляющий орган:
|
||||||
|
Описание:
|
||||||
|
Набор жителей: да / нет
|
||||||
|
Правила города:
|
||||||
|
```
|
||||||
|
|
||||||
|
### Что важно указать сразу
|
||||||
|
|
||||||
|
- чем город занимается и какой стиль игры поддерживает;
|
||||||
|
- кого вы ищете в первую очередь;
|
||||||
|
- есть ли внутренние ограничения и роли;
|
||||||
|
- как с вами связаться.
|
||||||
|
|
||||||
|
## Где смотреть полезную информацию
|
||||||
|
|
||||||
|
- IP и резервные адреса: <a href="/all-ip/">Все IP</a>
|
||||||
|
- Базовые правила: <a href="/rules/">Правила</a>
|
||||||
|
- Частые вопросы: <a href="/faq/">FAQ</a>
|
||||||
|
- Раздел по городам: <a href="/cities/">Города</a>
|
||||||
@@ -3,26 +3,26 @@ title: "Города"
|
|||||||
description: "Раздел для представления городов и проектов игроков."
|
description: "Раздел для представления городов и проектов игроков."
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🏠 Города и проекты игроков
|
## Города и проекты игроков
|
||||||
|
|
||||||
На **PARABOX** вы можете создать свой город у нас на проекте, собрать жителей и развивать свою территорию.
|
На PARABOX можно создать свой город, собрать жителей и развивать территорию вместе с другими игроками.
|
||||||
|
|
||||||
<div class="lore-grid">
|
<div class="lore-grid">
|
||||||
<article class="lore-card city-feature-card">
|
<article class="lore-card city-feature-card">
|
||||||
<p><strong class="city-highlight">Представить свой город.</strong> Расскажите о своём проекте и покажите, чем он уникален.</p>
|
<p><strong class="city-highlight">Представить свой город.</strong> Расскажите о проекте и его отличительных чертах.</p>
|
||||||
</article>
|
</article>
|
||||||
<article class="lore-card city-feature-card">
|
<article class="lore-card city-feature-card">
|
||||||
<p><strong class="city-highlight">Искать жителей.</strong> Находите игроков, которые хотят вступить в ваш город.</p>
|
<p><strong class="city-highlight">Найти жителей.</strong> Публикуйте набор и указывайте роли, которые сейчас нужны городу.</p>
|
||||||
</article>
|
</article>
|
||||||
<article class="lore-card city-feature-card">
|
<article class="lore-card city-feature-card">
|
||||||
<p><strong class="city-highlight">Показывать постройки.</strong> Делитесь скриншотами и прогрессом развития территории.</p>
|
<p><strong class="city-highlight">Показывать развитие.</strong> Делитесь скриншотами, координатами и текущими задачами.</p>
|
||||||
</article>
|
</article>
|
||||||
<article class="lore-card city-feature-card">
|
<article class="lore-card city-feature-card">
|
||||||
<p><strong class="city-highlight">Организовывать совместные проекты.</strong> Договаривайтесь о союзах, ивентах и общих инициативах.</p>
|
<p><strong class="city-highlight">Организовывать союзы.</strong> Договаривайтесь о торговле, ивентах и совместных проектах.</p>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## 📌 Если создаёте пост о городе
|
## Шаблон публикации города
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Название города:
|
Название города:
|
||||||
@@ -33,8 +33,8 @@ description: "Раздел для представления городов и
|
|||||||
Правила города:
|
Правила города:
|
||||||
```
|
```
|
||||||
|
|
||||||
Это поможет другим игрокам быстрее к вам присоединиться.
|
Подробный процесс входа на сервер и запуска города описан в статье <a href="/cities-registration/">«Города и регистрация»</a>.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Чем понятнее и полнее пост, тем быстрее игроки смогут найти и выбрать ваш город.
|
Чем понятнее и полнее описание города, тем быстрее к вам присоединятся игроки.
|
||||||
:::
|
:::
|
||||||
|
|||||||
@@ -1,14 +1,50 @@
|
|||||||
---
|
---
|
||||||
title: "Команды"
|
title: "Команды"
|
||||||
description: "Черновик страницы с командами сервера."
|
description: "Справочник игровых команд: чат, личные сообщения, RP и полезные функции."
|
||||||
---
|
---
|
||||||
|
|
||||||
## Команды
|
## Команды
|
||||||
|
|
||||||
Это временная страница-заглушка.
|
Ниже собраны основные команды сервера, сгруппированные по категориям.
|
||||||
|
|
||||||
- `/spawn` — пример команды 1
|
### Настройки
|
||||||
- `/home` — пример команды 2
|
|
||||||
- `/rtp` — пример команды 3
|
|
||||||
|
|
||||||
Позже замените этот список на реальные команды вашего сервера.
|
- `/chatsetting` - открыть меню настроек чата (уведомления, отображение, звук и т.д.).
|
||||||
|
|
||||||
|
### Личные сообщения
|
||||||
|
|
||||||
|
- `/tell <ник> <сообщение>` - отправить личное сообщение игроку.
|
||||||
|
- `/msg`, `/w`, `/m`, `/message`, `/send` - альтернативы команды `/tell`.
|
||||||
|
- `/r` - ответить последнему игроку.
|
||||||
|
|
||||||
|
### Игнор
|
||||||
|
|
||||||
|
- `/ignore <ник>` - игнорировать сообщения игрока.
|
||||||
|
|
||||||
|
### Развлечения
|
||||||
|
|
||||||
|
- `/ball <вопрос>` - задать вопрос и получить случайный ответ.
|
||||||
|
- `/tictactoe <ник>` - сыграть в крестики-нолики.
|
||||||
|
- `/rockpaperscissors <ник>` - камень-ножницы-бумага.
|
||||||
|
- `/try` - проверить удачу (случайный шанс).
|
||||||
|
- `/coin` - подбросить монетку.
|
||||||
|
- `/dice` - бросить кубик.
|
||||||
|
|
||||||
|
### RP и взаимодействие
|
||||||
|
|
||||||
|
- `/do <действие>` - RP-описание действия от третьего лица.
|
||||||
|
- `/anon <сообщение>` - отправить анонимное сообщение.
|
||||||
|
- `/helper` - попросить помощь.
|
||||||
|
|
||||||
|
### Статус игрока
|
||||||
|
|
||||||
|
- `/afk` - включить или выключить режим AFK.
|
||||||
|
|
||||||
|
### Информация
|
||||||
|
|
||||||
|
- `/ping` - узнать задержку (пинг).
|
||||||
|
- `/toponline` - посмотреть топ игроков по наигранному времени.
|
||||||
|
|
||||||
|
### Символы
|
||||||
|
|
||||||
|
- `/symbol` - открыть меню символов.
|
||||||
|
|||||||
18
src/content/docs/crafting.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: "Крафты"
|
||||||
|
description: "Раздел по кастомным крафтам сервера PARABOX."
|
||||||
|
---
|
||||||
|
|
||||||
|
## Статус раздела
|
||||||
|
|
||||||
|
Раздел в подготовке. Здесь будет полная база кастомных крафтов.
|
||||||
|
|
||||||
|
## Что появится
|
||||||
|
|
||||||
|
- рецепты основных предметов сервера;
|
||||||
|
- ограничения по доступу к крафтам;
|
||||||
|
- примеры прогрессии по этапам игры.
|
||||||
|
|
||||||
|
:::note
|
||||||
|
Если нужен конкретный рецепт раньше, уточните его у администрации или в профильном канале.
|
||||||
|
:::
|
||||||
@@ -3,16 +3,19 @@ title: "Общее"
|
|||||||
description: "Общая информация и веб-карта сервера PARABOX."
|
description: "Общая информация и веб-карта сервера PARABOX."
|
||||||
---
|
---
|
||||||
|
|
||||||
## Общее
|
## Веб-карта сервера
|
||||||
|
|
||||||
На сервере доступна интерактивная веб-карта, где можно смотреть мир в реальном времени:
|
Интерактивная веб-карта показывает мир в реальном времени и помогает быстро ориентироваться:
|
||||||
|
|
||||||
- города и постройки игроков;
|
- расположение городов и построек игроков;
|
||||||
- дороги и основные локации;
|
- дороги, биомы и основные локации;
|
||||||
- общий масштаб мира и ориентиры для навигации.
|
- общий масштаб карты и направления движения.
|
||||||
|
|
||||||
<div class="map-cta-wrap">
|
<div class="map-actions">
|
||||||
<a class="map-cta-button" href="https://map.rpcm.su/#world:0:0:0:1500:0:0:0:0:perspective" target="_blank" rel="noopener noreferrer">
|
<a class="map-cta-button" href="https://map.rpcm.su/#world:0:0:0:1500:0:0:0:0:perspective" target="_blank" rel="noopener noreferrer">
|
||||||
Открыть веб-карту сервера
|
Открыть веб-карту
|
||||||
|
</a>
|
||||||
|
<a class="map-ghost-button" href="/cities/">
|
||||||
|
Как использовать карту для городов
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ title: "Начало игры"
|
|||||||
description: "Как подать заявку на сервер PARABOX и что указать в анкете."
|
description: "Как подать заявку на сервер PARABOX и что указать в анкете."
|
||||||
---
|
---
|
||||||
|
|
||||||
## ✏️ Захотелось к нам?
|
## Как вступить
|
||||||
|
|
||||||
Чтобы попасть на сервер, необходимо отправить запрос через нашего бота.
|
Чтобы попасть на сервер, отправьте заявку через бота.
|
||||||
После одобрения вы получите доступ и окунётесь в удивительные миры **PARABOX**.
|
После одобрения вы получите доступ к миру PARABOX.
|
||||||
|
|
||||||
<div class="see-also">
|
<div class="see-also">
|
||||||
<p>Подача заявки через бота</p>
|
<p>Подача заявки через бота</p>
|
||||||
@@ -15,8 +15,15 @@ description: "Как подать заявку на сервер PARABOX и чт
|
|||||||
|
|
||||||
## Форма анкеты
|
## Форма анкеты
|
||||||
|
|
||||||
Чтобы вступить к нам, просим заполнить небольшую анкету в боте:
|
Чтобы вступить, заполните короткую анкету в боте:
|
||||||
|
|
||||||
1. Как к вам обращаться? Укажите ваш псевдоним или имя.
|
1. Как к вам обращаться (имя или псевдоним).
|
||||||
2. Ваш никнейм, который будет привязан к серверу.
|
2. Ваш никнейм для привязки к серверу.
|
||||||
3. От какого проекта вы? Если не от проекта, укажите, от кого вы узнали о сервере.
|
3. От какого проекта вы пришли, или откуда узнали о сервере.
|
||||||
|
|
||||||
|
## После одобрения
|
||||||
|
|
||||||
|
1. Подключитесь по адресу `mc.rpcm.su`.
|
||||||
|
2. Пройдите регистрацию в игре.
|
||||||
|
3. Выберите город для вступления или создайте свой.
|
||||||
|
4. Ознакомьтесь с правилами и базовыми механиками.
|
||||||
|
|||||||
@@ -2,46 +2,49 @@
|
|||||||
title: "Project PARABOX"
|
title: "Project PARABOX"
|
||||||
description: "Единый сервер РПКМ: города проектов, экономика, выживание и взаимодействие между игроками."
|
description: "Единый сервер РПКМ: города проектов, экономика, выживание и взаимодействие между игроками."
|
||||||
hero:
|
hero:
|
||||||
tagline: Единый мир для проектов РПКМ и игроков
|
tagline: Единый мир для проектов и игроков
|
||||||
actions:
|
actions:
|
||||||
- text: Начать игру
|
- text: Начать игру
|
||||||
link: /getting-started/
|
link: /getting-started/
|
||||||
icon: right-arrow
|
icon: right-arrow
|
||||||
variant: primary
|
variant: primary
|
||||||
- text: Читать сюжет
|
- text: Смотреть все IP
|
||||||
link: /story/
|
link: /all-ip/
|
||||||
variant: minimal
|
variant: minimal
|
||||||
---
|
---
|
||||||
|
|
||||||
## Project PARABOX
|
## Project PARABOX
|
||||||
|
|
||||||
Мы запускаем единый сервер, где каждый проект РПКМ может создать свой собственный город, а игроки могут наслаждаться выживанием, экономикой и взаимодействием между городами.
|
Project PARABOX объединяет проекты РПКМ и игроков в едином живом мире: выживание, развитие городов, торговля и совместные события происходят на одной карте.
|
||||||
|
|
||||||
## Что вас ждёт
|
## Города, регистрация и первые шаги
|
||||||
|
|
||||||
- Система городов. Если у вас есть проект в РПКМ, вы можете создать свой город, собрать жителей и развивать собственную территорию.
|
1. Подайте заявку через бота и дождитесь подтверждения.
|
||||||
|
2. Зайдите на сервер по одному из IP выше.
|
||||||
|
3. Зарегистрируйтесь или войдите в игровую систему.
|
||||||
|
4. Выберите город для вступления или создайте свой проектный город.
|
||||||
|
5. Ознакомьтесь с правилами и базовыми механиками.
|
||||||
|
|
||||||
|
Подробный разбор процесса вступления и запуска города находится в статье <a href="/cities-registration/">«Города и регистрация»</a>.
|
||||||
|
|
||||||
|
## Основные особенности
|
||||||
|
|
||||||
|
- Система городов с возможностью набора жителей.
|
||||||
- Экономика и торговля между игроками.
|
- Экономика и торговля между игроками.
|
||||||
- Общий мир для всех проектов ЛРПКМ.
|
- Общий мир для проектов ЛРПКМ и соло-игроков.
|
||||||
- Ивенты и активности.
|
- Ивенты и активности.
|
||||||
- Классическое выживание с социальным взаимодействием.
|
- Классическое выживание с социальным взаимодействием.
|
||||||
- И просто весёлое времяпровождение.
|
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Project PARABOX объединяет проекты и игроков в одном живом мире, где каждый может выбрать свой формат игры: развитие города, торговлю, выживание или участие в событиях.
|
Чем быстрее вы подключитесь по IP и выберете точку старта, тем проще будет влиться в текущие города и события.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## ❓ Основные особенности
|
## Как начать играть
|
||||||
|
|
||||||
- Система городов.
|
|
||||||
- Экономика / торговля.
|
|
||||||
- Ивенты и активности.
|
|
||||||
|
|
||||||
## 🚀 Как начать играть
|
|
||||||
|
|
||||||
1. Подайте заявку.
|
1. Подайте заявку.
|
||||||
2. Зайдите на сервер по IP.
|
2. Подключитесь к серверу (адреса указаны в разделе «Все IP»).
|
||||||
3. Прочитайте правила в соответствующем разделе.
|
3. Прочитайте правила в соответствующем разделе.
|
||||||
4. Зарегистрируйтесь или войдите в систему.
|
4. Пройдите регистрацию на сервере.
|
||||||
5. Найдите город или создайте свой.
|
5. Найдите город или создайте свой.
|
||||||
|
|
||||||
## ✨ Добро пожаловать и приятной игры!
|
## Добро пожаловать и приятной игры
|
||||||
|
|||||||
18
src/content/docs/protection.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: "Приват и защита"
|
||||||
|
description: "Базовые принципы защиты территорий и имущества игроков."
|
||||||
|
---
|
||||||
|
|
||||||
|
## Статус раздела
|
||||||
|
|
||||||
|
Раздел в подготовке. Здесь будет структурированная инструкция по привату.
|
||||||
|
|
||||||
|
## Что появится
|
||||||
|
|
||||||
|
- команды для создания и управления приватами;
|
||||||
|
- добавление участников и права доступа;
|
||||||
|
- ограничения и практики безопасного хранения ресурсов.
|
||||||
|
|
||||||
|
:::caution
|
||||||
|
Пока раздел не заполнен, согласовывайте спорные ситуации по территории через администрацию.
|
||||||
|
:::
|
||||||
18
src/content/docs/skinrestore.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: "SkinRestore"
|
||||||
|
description: "Настройка и восстановление скина на сервере PARABOX."
|
||||||
|
---
|
||||||
|
|
||||||
|
## Статус раздела
|
||||||
|
|
||||||
|
Раздел в подготовке. Здесь будет инструкция по установке и обновлению скинов.
|
||||||
|
|
||||||
|
## Что появится
|
||||||
|
|
||||||
|
- базовые команды SkinRestore;
|
||||||
|
- рекомендации для лицензии и оффлайн-режима;
|
||||||
|
- список частых проблем и решений.
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
До выхода полной инструкции используйте стандартную команду смены скина и проверяйте корректность ника.
|
||||||
|
:::
|
||||||
@@ -169,7 +169,7 @@ starlight-menu-button button::before {
|
|||||||
}
|
}
|
||||||
|
|
||||||
starlight-menu-button[aria-expanded='true'] button::before {
|
starlight-menu-button[aria-expanded='true'] button::before {
|
||||||
content: '✕';
|
content: '×';
|
||||||
font-size: 1.02rem;
|
font-size: 1.02rem;
|
||||||
letter-spacing: 0;
|
letter-spacing: 0;
|
||||||
transform: none;
|
transform: none;
|
||||||
@@ -320,6 +320,22 @@ starlight-menu-button button:hover {
|
|||||||
transform: translateY(-1px);
|
transform: translateY(-1px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Единый эффект свечения в момент нажатия для всех кнопок/кнопкоподобных элементов. */
|
||||||
|
:is(
|
||||||
|
button:not(:disabled),
|
||||||
|
.sl-link-button,
|
||||||
|
.map-cta-button,
|
||||||
|
.map-ghost-button,
|
||||||
|
.copy-ip-chip
|
||||||
|
):active {
|
||||||
|
transform: translateY(0) scale(0.98) !important;
|
||||||
|
box-shadow:
|
||||||
|
0 0 0 1px color-mix(in srgb, var(--sl-color-accent) 34%, transparent),
|
||||||
|
0 0 18px color-mix(in srgb, var(--sl-color-accent) 34%, transparent),
|
||||||
|
0 0 34px color-mix(in srgb, var(--wiki-blue-2) 26%, transparent) !important;
|
||||||
|
filter: saturate(1.08);
|
||||||
|
}
|
||||||
|
|
||||||
.sl-markdown-content h1,
|
.sl-markdown-content h1,
|
||||||
.sl-markdown-content h2,
|
.sl-markdown-content h2,
|
||||||
.sl-markdown-content h3 {
|
.sl-markdown-content h3 {
|
||||||
@@ -346,6 +362,33 @@ starlight-menu-button button:hover {
|
|||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sl-markdown-content .sl-heading-wrapper.level-h3 > h3 {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.52rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sl-markdown-content .minimal-heading-icon {
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
display: inline-block;
|
||||||
|
flex-shrink: 0;
|
||||||
|
opacity: 0.98;
|
||||||
|
background: linear-gradient(
|
||||||
|
150deg,
|
||||||
|
color-mix(in srgb, var(--wiki-purple-2) 76%, #ffffff),
|
||||||
|
color-mix(in srgb, var(--wiki-blue-2) 82%, #ffffff)
|
||||||
|
);
|
||||||
|
-webkit-mask-image: var(--icon-url);
|
||||||
|
mask-image: var(--icon-url);
|
||||||
|
-webkit-mask-size: contain;
|
||||||
|
mask-size: contain;
|
||||||
|
-webkit-mask-repeat: no-repeat;
|
||||||
|
mask-repeat: no-repeat;
|
||||||
|
-webkit-mask-position: center;
|
||||||
|
mask-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
.sl-markdown-content p,
|
.sl-markdown-content p,
|
||||||
.sl-markdown-content li {
|
.sl-markdown-content li {
|
||||||
color: var(--wiki-text);
|
color: var(--wiki-text);
|
||||||
@@ -690,44 +733,212 @@ starlight-theme-select .caret {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map-cta-wrap {
|
.ip-main-grid {
|
||||||
|
display: grid;
|
||||||
|
gap: 0.96rem;
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
grid-auto-rows: minmax(0, 1fr);
|
||||||
|
align-items: stretch;
|
||||||
|
margin: 0.95rem 0 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ip-main-card {
|
||||||
|
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 28%, var(--sl-color-hairline));
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
padding: 1rem 1.02rem;
|
||||||
|
height: 100%;
|
||||||
|
min-height: 11.2rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background:
|
||||||
|
linear-gradient(
|
||||||
|
160deg,
|
||||||
|
color-mix(in srgb, var(--wiki-purple-2) 12%, transparent),
|
||||||
|
color-mix(in srgb, var(--wiki-blue-2) 8%, transparent)
|
||||||
|
),
|
||||||
|
color-mix(in srgb, var(--wiki-card) 96%, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ip-main-grid > .ip-main-card {
|
||||||
|
margin: 0 !important;
|
||||||
|
align-self: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ip-main-grid > .ip-main-card + .ip-main-card {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ip-main-card h3 {
|
||||||
|
margin: 0 0 0.52rem;
|
||||||
|
font-family: 'Sora', sans-serif;
|
||||||
|
font-size: 1.02rem;
|
||||||
|
line-height: 1.25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ip-main-card ul {
|
||||||
|
margin: 0;
|
||||||
|
padding-inline-start: 1.06rem;
|
||||||
|
display: grid;
|
||||||
|
gap: 0.52rem;
|
||||||
|
align-content: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ip-main-card li {
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip {
|
||||||
|
appearance: none;
|
||||||
|
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 48%, transparent);
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
background: linear-gradient(
|
||||||
|
110deg,
|
||||||
|
color-mix(in srgb, var(--wiki-blue-2) 76%, #233145),
|
||||||
|
color-mix(in srgb, var(--wiki-purple-2) 66%, #273850)
|
||||||
|
);
|
||||||
|
color: #f8fbff;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 2rem;
|
||||||
|
padding: 0.36rem 0.72rem;
|
||||||
|
margin: 0 0 0 0.24rem;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
font-family: 'Sora', sans-serif;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 0.86rem;
|
||||||
|
letter-spacing: 0.008em;
|
||||||
|
line-height: 1;
|
||||||
|
box-shadow: 0 6px 14px color-mix(in srgb, var(--sl-color-accent) 18%, transparent);
|
||||||
|
transition: transform 170ms ease, border-color 170ms ease, box-shadow 170ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip code {
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
background: transparent;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0;
|
||||||
|
font-size: inherit;
|
||||||
|
font-family: inherit;
|
||||||
|
font-weight: inherit;
|
||||||
|
line-height: 1.2;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
border-color: color-mix(in srgb, var(--sl-color-accent) 66%, transparent);
|
||||||
|
box-shadow: 0 10px 18px color-mix(in srgb, var(--sl-color-accent) 24%, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip:focus-visible {
|
||||||
|
outline: none;
|
||||||
|
border-color: color-mix(in srgb, var(--sl-color-accent) 72%, transparent);
|
||||||
|
box-shadow:
|
||||||
|
0 0 0 1px color-mix(in srgb, var(--sl-color-accent) 30%, transparent),
|
||||||
|
0 0 0 4px color-mix(in srgb, var(--sl-color-accent) 20%, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip.is-copied {
|
||||||
|
border-color: color-mix(in srgb, #7ed49b 66%, transparent);
|
||||||
|
background: linear-gradient(
|
||||||
|
110deg,
|
||||||
|
color-mix(in srgb, #63b888 76%, #223b2f),
|
||||||
|
color-mix(in srgb, #5ccd9f 66%, #26463b)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip.is-copied::after {
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip.is-copy-error {
|
||||||
|
border-color: color-mix(in srgb, #ef6f85 74%, transparent);
|
||||||
|
background: linear-gradient(
|
||||||
|
110deg,
|
||||||
|
color-mix(in srgb, #d56b7f 78%, #3b242a),
|
||||||
|
color-mix(in srgb, #cf6f90 68%, #3f2532)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip.is-copy-error::after {
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
.ip-main-note {
|
||||||
|
margin-top: 0.52rem;
|
||||||
|
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 30%, transparent);
|
||||||
|
border-radius: 0.18rem;
|
||||||
|
padding: 0.58rem 0.72rem;
|
||||||
|
background: color-mix(in srgb, var(--sl-color-accent-low) 66%, transparent);
|
||||||
|
color: var(--wiki-text);
|
||||||
|
font-size: 0.94rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-actions {
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.62rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map-cta-button {
|
.map-cta-button {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
min-height: 2.6rem;
|
min-height: 2.44rem;
|
||||||
padding: 0.64rem 1.15rem;
|
padding: 0.55rem 1rem;
|
||||||
border-radius: 0.2rem;
|
border-radius: 0.2rem;
|
||||||
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 55%, transparent);
|
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 48%, transparent);
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
140deg,
|
110deg,
|
||||||
color-mix(in srgb, var(--wiki-purple-2) 72%, #1b2434),
|
color-mix(in srgb, var(--wiki-blue-2) 76%, #233145),
|
||||||
color-mix(in srgb, var(--wiki-blue-2) 78%, #1b2434)
|
color-mix(in srgb, var(--wiki-purple-2) 66%, #273850)
|
||||||
);
|
);
|
||||||
color: #f5f9ff;
|
color: #f8fbff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-family: 'Sora', sans-serif;
|
font-family: 'Sora', sans-serif;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
letter-spacing: 0.01em;
|
font-size: 0.95rem;
|
||||||
box-shadow:
|
letter-spacing: 0.008em;
|
||||||
0 8px 18px color-mix(in srgb, var(--sl-color-accent) 25%, transparent),
|
box-shadow: 0 6px 14px color-mix(in srgb, var(--sl-color-accent) 18%, transparent);
|
||||||
0 0 0 1px color-mix(in srgb, var(--sl-color-accent) 18%, transparent);
|
transition: transform 170ms ease, border-color 170ms ease, box-shadow 170ms ease;
|
||||||
transition: transform 170ms ease, border-color 170ms ease, box-shadow 170ms ease, filter 170ms ease;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.map-cta-button:hover {
|
.map-cta-button:hover {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transform: translateY(-1px);
|
transform: translateY(-1px);
|
||||||
border-color: color-mix(in srgb, var(--sl-color-accent) 70%, transparent);
|
border-color: color-mix(in srgb, var(--sl-color-accent) 66%, transparent);
|
||||||
box-shadow:
|
box-shadow: 0 10px 18px color-mix(in srgb, var(--sl-color-accent) 24%, transparent);
|
||||||
0 12px 22px color-mix(in srgb, var(--sl-color-accent) 32%, transparent),
|
}
|
||||||
0 0 0 1px color-mix(in srgb, var(--sl-color-accent) 24%, transparent),
|
|
||||||
0 0 16px color-mix(in srgb, var(--sl-color-accent) 24%, transparent);
|
.map-ghost-button {
|
||||||
filter: saturate(1.06);
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 2.44rem;
|
||||||
|
padding: 0.55rem 1rem;
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
border: 1px solid color-mix(in srgb, var(--sl-color-hairline) 92%, transparent);
|
||||||
|
background: color-mix(in srgb, var(--wiki-card) 94%, transparent);
|
||||||
|
color: var(--sl-color-gray-1);
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 0.92rem;
|
||||||
|
transition: border-color 170ms ease, background 170ms ease, color 170ms ease, transform 170ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-ghost-button:hover {
|
||||||
|
color: var(--sl-color-white);
|
||||||
|
text-decoration: none;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
border-color: color-mix(in srgb, var(--sl-color-accent) 44%, transparent);
|
||||||
|
background: color-mix(in srgb, var(--sl-color-accent-low) 60%, transparent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 50rem) {
|
@media (min-width: 50rem) {
|
||||||
@@ -746,6 +957,10 @@ starlight-theme-select .caret {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 50rem) {
|
@media (max-width: 50rem) {
|
||||||
|
.ip-main-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
.wiki-header {
|
.wiki-header {
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
}
|
}
|
||||||
@@ -825,4 +1040,19 @@ starlight-theme-select .caret {
|
|||||||
border-radius: 0.16rem;
|
border-radius: 0.16rem;
|
||||||
padding: 0.92rem 0.84rem;
|
padding: 0.92rem 0.84rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.map-actions {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-cta-button,
|
||||||
|
.map-ghost-button {
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-ip-chip {
|
||||||
|
margin-inline-start: 0.2rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||