| <!DOCTYPE html> |
| <html lang="ar" dir="rtl"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <title>🎯 إدارة الميزات — Sayed Bot v23</title> |
| <style> |
| *{box-sizing:border-box;margin:0;padding:0} |
| :root{--bg:#0d1117;--surface:rgba(22,27,34,.72);--surface2:rgba(30,39,50,.75);--surface3:rgba(40,50,65,.8);--border:rgba(255,255,255,.06);--border2:rgba(255,255,255,.03);--text:#e6edf3;--text2:#8b949e;--text3:#6e7681;--green:#3fb950;--green2:#56d364;--green-bg:rgba(63,185,80,.1);--blue:#58a6ff;--blue-bg:rgba(88,166,255,.1);--purple:#bc8cff;--purple-bg:rgba(188,140,255,.1);--amber:#d29922;--amber-bg:rgba(210,153,34,.1);--red:#f85149;--red-bg:rgba(248,81,73,.1);--cyan:#39d0d8;--radius:12px;--radius-sm:8px;--font:system-ui,'Segoe UI',Roboto,sans-serif;--mono:Consolas,'Courier New',monospace;--glass:rgba(22,27,34,.65);--glass-blur:20px} |
| html,body{min-height:100vh} |
| body{background:var(--bg);background-image:radial-gradient(ellipse 80% 50% at 20% 0%,rgba(63,185,80,.06) 0%,transparent 50%),radial-gradient(ellipse 60% 40% at 80% 100%,rgba(88,166,255,.04) 0%,transparent 50%);color:var(--text);font-family:var(--font);font-size:14px;direction:rtl;padding:20px 24px} |
| ::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(63,185,80,.25);border-radius:10px} |
| .page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border);flex-wrap:wrap;gap:12px} |
| .page-title{font-size:20px;font-weight:900;display:flex;align-items:center;gap:8px} |
| .page-title span{background:linear-gradient(135deg,var(--green),var(--blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent} |
| .header-actions{display:flex;gap:8px;flex-wrap:wrap} |
| .btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:var(--radius-sm);font-size:12px;font-weight:700;font-family:var(--font);cursor:pointer;border:1px solid rgba(255,255,255,.08);background:var(--glass);backdrop-filter:blur(10px);color:var(--text2);transition:all .2s;white-space:nowrap;text-decoration:none} |
| .btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.25)}.btn:active{transform:scale(.97)} |
| .btn-green{border-color:rgba(63,185,80,.25);color:var(--green);background:var(--green-bg)}.btn-green:hover{background:rgba(63,185,80,.18)} |
| .btn-red{border-color:rgba(248,81,73,.25);color:var(--red);background:var(--red-bg)}.btn-red:hover{background:rgba(248,81,73,.18)} |
| .btn-blue{border-color:rgba(88,166,255,.25);color:var(--blue);background:var(--blue-bg)}.btn-blue:hover{background:rgba(88,166,255,.18)} |
| .btn-purple{border-color:rgba(188,140,255,.25);color:var(--purple);background:var(--purple-bg)}.btn-purple:hover{background:rgba(188,140,255,.18)} |
| .btn-amber{border-color:rgba(210,153,34,.25);color:var(--amber);background:var(--amber-bg)}.btn-amber:hover{background:rgba(210,153,34,.18)} |
| .controls{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap;align-items:center} |
| .search-box{flex:1;min-width:200px;background:var(--glass);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-sm);padding:9px 14px;color:var(--text);font-family:var(--font);font-size:13px;outline:none;transition:all .2s} |
| .search-box:focus{border-color:var(--green);box-shadow:0 0 0 2px rgba(63,185,80,.1)} |
| .filter-tabs{display:flex;gap:4px;flex-wrap:wrap} |
| .filter-tab{padding:6px 12px;border-radius:var(--radius-sm);font-size:11px;font-weight:700;cursor:pointer;border:1px solid rgba(255,255,255,.06);background:var(--glass);color:var(--text3);transition:all .2s;font-family:var(--font)} |
| .filter-tab:hover{border-color:rgba(255,255,255,.1);color:var(--text2)} |
| .filter-tab.active{background:var(--green-bg);border-color:rgba(63,185,80,.25);color:var(--green)} |
| .stats-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap} |
| .stat-pill{background:var(--glass);border:1px solid rgba(255,255,255,.06);border-radius:20px;padding:6px 14px;font-size:11px;font-weight:700;display:flex;align-items:center;gap:6px} |
| .stat-pill .num{font-family:var(--mono);font-weight:900} |
| .cat-section{margin-bottom:20px} |
| .cat-header{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)} |
| .cat-icon{font-size:18px}.cat-name{font-size:15px;font-weight:800;flex:1} |
| .cat-count{font-size:11px;color:var(--text3);font-family:var(--mono);background:rgba(255,255,255,.05);padding:2px 8px;border-radius:10px} |
| .cat-toggle{font-size:11px;color:var(--green);cursor:pointer;font-weight:700;transition:color .2s;background:none;border:none;font-family:var(--font)} |
| .cat-toggle:hover{color:var(--green2)} |
| .features-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px} |
| .feature-card{background:var(--glass);border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-sm);padding:12px 14px;display:flex;align-items:center;gap:12px;transition:all .2s} |
| .feature-card:hover{border-color:rgba(255,255,255,.1);background:var(--surface2)} |
| .feature-card.disabled{opacity:.5} |
| .feature-info{flex:1;min-width:0} |
| .feature-name{font-size:12px;font-weight:700;margin-bottom:2px} |
| .feature-desc{font-size:10px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} |
| .toggle{position:relative;width:36px;height:20px;flex-shrink:0;display:inline-block} |
| .toggle input{opacity:0;width:0;height:0;position:absolute} |
| .toggle-slider{position:absolute;inset:0;background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:20px;cursor:pointer;transition:all .3s} |
| .toggle-slider::before{content:'';position:absolute;top:2px;right:2px;width:14px;height:14px;border-radius:50%;background:var(--text3);transition:all .3s} |
| .toggle input:checked+.toggle-slider{background:var(--green);border-color:var(--green)} |
| .toggle input:checked+.toggle-slider::before{transform:translateX(-16px);background:#fff} |
| .toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(12px);background:var(--glass);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);padding:10px 20px;font-size:12px;font-weight:700;opacity:0;transition:all .3s;pointer-events:none;z-index:9999;box-shadow:0 8px 30px rgba(0,0,0,.4)} |
| .toast.show{opacity:1;transform:translateX(-50%) translateY(0)} |
| .toast.ok{border-color:rgba(63,185,80,.4);color:var(--green)}.toast.err{border-color:rgba(248,81,73,.4);color:var(--red)} |
| .empty{text-align:center;color:var(--text3);padding:40px;font-size:14px} |
| @media(max-width:768px){.features-grid{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start}} |
| </style> |
| </head> |
| <body> |
| <div class="page-header"> |
| <h1 class="page-title">🎯 <span>إدارة الميزات</span></h1> |
| <div class="header-actions"> |
| <a href="/" class="btn btn-blue">📊 لوحة التحكم</a> |
| <button class="btn btn-green" onclick="saveAll()">💾 حفظ</button> |
| <button class="btn btn-purple" onclick="exportFeatures()">📤 تصدير</button> |
| <button class="btn btn-amber" onclick="document.getElementById('importFile').click()">📥 استيراد</button> |
| <input type="file" id="importFile" accept=".json" style="display:none" onchange="importFeatures(event)"> |
| </div> |
| </div> |
| <div class="controls"> |
| <input type="text" class="search-box" id="searchBox" placeholder="🔍 بحث بالاسم..." oninput="filterFeatures()"> |
| <div class="filter-tabs" id="filterTabs"></div> |
| </div> |
| <div class="stats-bar" id="statsBar"></div> |
| <div id="featuresContainer"></div> |
| <div class="toast" id="toast"></div> |
| <script> |
| const CATS=[ |
| {id:'protection',name:'الحماية',icon:'🛡️',color:'#3b82f6'}, |
| {id:'performance',name:'الأداء',icon:'⚡',color:'#10b981'}, |
| {id:'economy',name:'الاقتصاد',icon:'💰',color:'#f59e0b'}, |
| {id:'player',name:'اللاعبين',icon:'👥',color:'#8b5cf6'}, |
| {id:'world',name:'العوالم',icon:'🌍',color:'#06b6d4'}, |
| {id:'fun',name:'الترفيه',icon:'🎮',color:'#ec4899'}, |
| {id:'admin',name:'الإدارة',icon:'⚙️',color:'#ef4444'}, |
| {id:'bots',name:'البوتات',icon:'🤖',color:'#10b981'} |
| ]; |
| const ALL_FEATURES=[ |
| {id:'worldguard',name:'WorldGuard',cat:'protection',desc:'حماية المناطق من التخريب',on:true},{id:'worldedit',name:'WorldEdit',cat:'protection',desc:'أداة تعديل الخريطة',on:true},{id:'coreprotect',name:'CoreProtect',cat:'protection',desc:'تسجيل و التراجع',on:true},{id:'griefprevention',name:'GriefPrevention',cat:'protection',desc:'حماية الأراضي بالفأس',on:true},{id:'anticheat',name:'AntiCheat',cat:'protection',desc:'كشف الغش و hacks',on:true},{id:'combatlog',name:'CombatLog',cat:'protection',desc:'منع الفرار من القتال',on:true},{id:'spawnprotection',name:'SpawnProtection',cat:'protection',desc:'حماية الـ Spawn',on:true},{id:'lwc',name:'LWC Lock',cat:'protection',desc:'قفل الصناديق والأبواب',on:false},{id:'redprotect',name:'RedProtect',cat:'protection',desc:'حماية مناطق متقدمة',on:false},{id:'towny',name:'Towny',cat:'protection',desc:'نظام مدن وأراضي',on:false},{id:'factions',name:'Factions',cat:'protection',desc:'نظام فصائل وحروب',on:false},{id:'lands',name:'Lands',cat:'protection',desc:'نظام أراضي مبسط',on:false},{id:'playerwarps',name:'PlayerWarps',cat:'protection',desc:'نقاط teleport خاصة',on:false},{id:'antiexplosion',name:'AntiExplosion',cat:'protection',desc:'منع الانفجارات',on:false},{id:'antispam',name:'AntiSpam',cat:'protection',desc:'منع السبام في الشات',on:false},{id:'antifirewall',name:'FireWall',cat:'protection',desc:'جدار حماية متقدم',on:false},{id:'authme',name:'AuthMe',cat:'protection',desc:'تسجيل دخول أمان',on:false},{id:'badlion',name:'BadLion',cat:'protection',desc:'حماية Badlion',on:false},{id:'nokick',name:'NoKick',cat:'protection',desc:'منع الطرد التعسفي',on:false},{id:'sfprotect',name:'SkyFilter',cat:'protection',desc:'فلتر SkyBlock',on:false},{id:'worldbackup',name:'WorldBackup',cat:'protection',desc:'نسخ احتياطي للعوالم',on:false},{id:'itemprotect',name:'ItemProtect',cat:'protection',desc:'حماية الأغراض الملقاة',on:false},{id:'lockdoors',name:'LockDoors',cat:'protection',desc:'قفل الأبواب',on:false},{id:'regionprotect',name:'RegionProtect',cat:'protection',desc:'حماية المناطق التلقائية',on:false},{id:'pvplogger',name:'PvPLogger',cat:'protection',desc:'مراقبة PvP',on:false},{id:'sleepignore',name:'SleepIgnore',cat:'protection',desc:'تجاهل النوم القري',on:false},{id:'claimchunk',name:'ClaimChunk',cat:'protection',desc:'مطالعة بالـ chunks',on:false},{id:'simpleflags',name:'SimpleFlags',cat:'protection',desc:'علامات بسيطة للمناطق',on:false},{id:'blocklogging',name:'BlockLogging',cat:'protection',desc:'تسجيل تعديلات الكتل',on:false},{id:'antigrief',name:'AntiGrief',cat:'protection',desc:'كشف ومنع التخريب',on:false},{id:'areaoverlap',name:'AreaOverlap',cat:'protection',desc:'منع تداخل المناطق',on:false},{id:'safeexit',name:'SafeExit',cat:'protection',desc:'خروج آمن',on:false},{id:'worldguardex',name:'WG-Extended',cat:'protection',desc:'إضافات WorldGuard',on:false},{id:'pvpbalance',name:'PvPBalance',cat:'protection',desc:'توازن PvP',on:false},{id:'chestlock',name:'ChestLock',cat:'protection',desc:'قفل الصناديق المتقدم',on:false},{id:'entryprotect',name:'EntryProtect',cat:'protection',desc:'حماية المداخل',on:false},{id:'antiportal',name:'AntiPortal',cat:'protection',desc:'منع البوابات التعسفية',on:false},{id:'trapped',name:'Trapped',cat:'protection',desc:'مناطق الأسر',on:false},{id:'claimextend',name:'ClaimExtend',cat:'protection',desc:'توسيع المطالبات',on:false},{id:'spawnflags',name:'SpawnFlags',cat:'protection',desc:'علامات Spawning',on:false},{id:'blockregen',name:'BlockRegen',cat:'protection',desc:'تجديد الكتل تلقائياً',on:false},{id:'firecontrol',name:'FireControl',cat:'protection',desc:'تحكم بالنار',on:false},{id:'lavacontrol',name:'LavaControl',cat:'protection',desc:'تحكم في الحمم',on:false},{id:'watercontrol',name:'WaterControl',cat:'protection',desc:'تحكم في الماء',on:false},{id:'tntcontrol',name:'TNTControl',cat:'protection',desc:'تحكم في الـ TNT',on:false},{id:'creepercontrol',name:'CreeperControl',cat:'protection',desc:'تحكم في الـ Creeper',on:false},{id:'endermancontrol',name:'EndermanControl',cat:'protection',desc:'تحكم في Enderman',on:false},{id:'slimecontrol',name:'SlimeControl',cat:'protection',desc:'تحكم في Slime',on:false},{id:'mobcontrol',name:'MobControl',cat:'protection',desc:'تحكم عام في المخلوقات',on:false},{id:'griefalert',name:'GriefAlert',cat:'protection',desc:'تنبيهات التخريب',on:false}, |
| {id:'clearlag',name:'ClearLag',cat:'performance',desc:'تنظيف entities الزائدة',on:true},{id:'spark',name:'Spark',cat:'performance',desc:'مراقبة TPS و RAM',on:true},{id:'chunky',name:'Chunky',cat:'performance',desc:'توليد chunks مسبقاً',on:true},{id:'nolagg',name:'NoLagg',cat:'performance',desc:'إزالة entities الزائدة',on:true},{id:'farmcontrol',name:'FarmControl',cat:'performance',desc:'تحكم بحجم المزارع',on:true},{id:'entityclearer',name:'EntityClearer',cat:'performance',desc:'تنظيف entities تلقائي',on:true},{id:'tpsmonitor',name:'TPSMonitor',cat:'performance',desc:'مراقبة TPS مع تنبيهات',on:true},{id:'performanceplus',name:'PerformancePlus',cat:'performance',desc:'تحسين عام',on:false},{id:'fawe',name:'FastAsyncWorldEdit',cat:'performance',desc:'نسخة أسرع من WE',on:false},{id:'optimizedgenerators',name:'OptimizedGens',cat:'performance',desc:'تحسين المولدات',on:false},{id:'pufferfish',name:'Pufferfish',cat:'performance',desc:'تحسينات Paper',on:false},{id:'purpur',name:'Purpur',cat:'performance',desc:'تحسينات Paper+',on:false},{id:'aikarflags',name:'Aikar Flags',cat:'performance',desc:'تحسينات JVM',on:false},{id:'lithium',name:'Lithium',cat:'performance',desc:'تحسينات عامة',on:false},{id:'phosphor',name:'Phosphor',cat:'performance',desc:'تحسين الإضاءة',on:false},{id:'starlight',name:'Starlight',cat:'performance',desc:'محرك إضاءة سريع',on:false},{id:'asyncworld',name:'AsyncWorld',cat:'performance',desc:'تحميل العوالم غير المتزامن',on:false},{id:'mobfan',name:'MobFan',cat:'performance',desc:'تقليل عدد المخلوقات',on:false},{id:'slaboptimizer',name:'SlabOptimizer',cat:'performance',desc:'تحسين الألواح',on:false},{id:'redstonelag',name:'RedstoneLag',cat:'performance',desc:'تقليل lag الريدستون',on:false},{id:'itemhider',name:'ItemHider',cat:'performance',desc:'إخفاء الأغراض الملقاة',on:false},{id:'limitentities',name:'LimitEntities',cat:'performance',desc:'تحديد عدد entities',on:false},{id:'entitytracker',name:'EntityTracker',cat:'performance',desc:'تتبع entities',on:false},{id:'cacheprotocol',name:'CacheProtocol',cat:'performance',desc:'تخزين مؤقت للبروتوكول',on:false},{id:'packetlimiter',name:'PacketLimiter',cat:'performance',desc:'تحديد الحزم',on:false},{id:'timings',name:'Timings',cat:'performance',desc:'قياس أداء مفصل',on:false},{id:'gccontrol',name:'GCControl',cat:'performance',desc:'تحكم في garbage collector',on:false},{id:'heapdump',name:'HeapDump',cat:'performance',desc:'تصدير ذاكرة',on:false},{id:'memmonitor',name:'MemMonitor',cat:'performance',desc:'مراقبة الذاكرة',on:false},{id:'cpumonitor',name:'CPUMonitor',cat:'performance',desc:'مراقبة المعالج',on:false},{id:'diskmonitor',name:'DiskMonitor',cat:'performance',desc:'مراقبة القرص',on:false},{id:'netmonitor',name:'NetMonitor',cat:'performance',desc:'مراقبة الشبكة',on:false},{id:'threadwatch',name:'ThreadWatch',cat:'performance',desc:'مراقبة الخيوط',on:false},{id:'tickmonitor',name:'TickMonitor',cat:'performance',desc:'مراقبة الـ ticks',on:false},{id:'chunkoptim',name:'ChunkOptim',cat:'performance',desc:'تحسين chunks',on:false},{id:'lightoptim',name:'LightOptim',cat:'performance',desc:'تحسين الإضاءة',on:false},{id:'pathoptim',name:'PathOptim',cat:'performance',desc:'تحسين المسارات',on:false},{id:'aioptim',name:'AIOptim',cat:'performance',desc:'تحسين AI المخلوقات',on:false},{id:'redstoneoptim',name:'RedstoneOptim',cat:'performance',desc:'تحسين الريدستون',on:false},{id:'wateroptim',name:'WaterOptim',cat:'performance',desc:'تحسين تدفق الماء',on:false},{id:'fireoptim',name:'FireOptim',cat:'performance',desc:'تحسين انتشار النار',on:false},{id:'expopt',name:'ExpOptim',cat:'performance',desc:'تحسين خبرة XP',on:false},{id:'itemoptim',name:'ItemOptim',cat:'performance',desc:'تحسين الأغراض',on:false},{id:'moboptim',name:'MobOptim',cat:'performance',desc:'تحسين المخلوقات',on:false},{id:'nbtcompress',name:'NBTCompress',cat:'performance',desc:'ضغط البيانات NBT',on:false},{id:'chunkcache',name:'ChunkCache',cat:'performance',desc:'تخزين chunks مؤقت',on:false},{id:'packetcompress',name:'PacketCompress',cat:'performance',desc:'ضغط الحزم',on:false},{id:'networkoptim',name:'NetworkOptim',cat:'performance',desc:'تحسين الشبكة',on:false},{id:'iooptim',name:'IOOptim',cat:'performance',desc:'تحسين الإدخال/الإخراج',on:false}, |
| {id:'essentials_eco',name:'EssentialsX Economy',cat:'economy',desc:'نظام اقتصاد أساسي',on:true},{id:'shopguiplus',name:'ShopGUI+',cat:'economy',desc:'متجر GUI',on:true},{id:'auctionhouse',name:'AuctionHouse',cat:'economy',desc:'نظام مزادات',on:false},{id:'jobs',name:'Jobs',cat:'economy',desc:'نظام وظائف',on:false},{id:'crates',name:'Crates',cat:'economy',desc:'صناديق عشوائية',on:false},{id:'mcmmo',name:'mcMMO',cat:'economy',desc:'مهارات RPG',on:false},{id:'skills',name:'AureliumSkills',cat:'economy',desc:'مهارات متقدمة',on:false},{id:'tokenmanager',name:'TokenManager',cat:'economy',desc:'نظام توكنات',on:false},{id:'votifier',name:'Votifier',cat:'economy',desc:'مكافآت التصويت',on:false},{id:'luckyblocks',name:'LuckyBlocks',cat:'economy',desc:'صناديق حظ',on:false},{id:'bankplus',name:'BankPlus',cat:'economy',desc:'نظام بنك متقدم',on:false},{id:'coinflip',name:'CoinFlip',cat:'economy',desc:'رمي عملة',on:false},{id:'bounty',name:'Bounty',cat:'economy',desc:'مكافآت على القتل',on:false},{id:'robbery',name:'Robbery',cat:'economy',desc:'نظام سرقة',on:false},{id:'lottery',name:'Lottery',cat:'economy',desc:'نظام يانصيب',on:false},{id:'withdraw',name:'Withdraw',cat:'economy',desc:'سحب عملات',on:false},{id:'deposity',name:'Deposity',cat:'economy',desc:'إيداع عملات',on:false},{id:'transfer',name:'Transfer',cat:'economy',desc:'تحويل عملات',on:false},{id:'salary',name:'Salary',cat:'economy',desc:'رواتب يومية',on:false},{id:'taxes',name:'Taxes',cat:'economy',desc:'نظام ضرائب',on:false},{id:'market',name:'Market',cat:'economy',desc:'سوق للاعبين',on:false},{id:'trading',name:'Trading',cat:'economy',desc:'تبادل أغراض',on:false},{id:'auctionplus',name:'AuctionPlus',cat:'economy',desc:'مزادات إضافية',on:false},{id:'mining',name:'MiningRewards',cat:'economy',desc:'مكافآت الحفر',on:false},{id:'farming',name:'FarmingRewards',cat:'economy',desc:'مكافآت الزراعة',on:false},{id:'fishing',name:'FishingRewards',cat:'economy',desc:'مكافآت الصيد',on:false},{id:'woodcutting',name:'WoodCutting',cat:'economy',desc:'مكافآت قطع الأشجار',on:false},{id:'smelting',name:'SmeltingRewards',cat:'economy',desc:'مكافآت الصهر',on:false},{id:'breeding',name:'BreedingRewards',cat:'economy',desc:'مكافآت التكاثر',on:false},{id:'enchanting',name:'EnchantRewards',cat:'economy',desc:'مكافآت التسحيم',on:false},{id:'brewing',name:'BrewingRewards',cat:'economy',desc:'مكافآت التخمير',on:false},{id:'tradingpost',name:'TradingPost',cat:'economy',desc:'نقاط تبادل',on:false},{id:'playershops',name:'PlayerShops',cat:'economy',desc:'متاجر لاعبين',on:false},{id:'baltop',name:'BalTop',cat:'economy',desc:'أغنى اللاعبين',on:false},{id:'paymulti',name:'PayMulti',cat:'economy',desc:'مضاعفة الدفع',on:false},{id:'dailyreward',name:'DailyReward',cat:'economy',desc:'مكافأة يومية',on:false},{id:'weeklyreward',name:'WeeklyReward',cat:'economy',desc:'مكافأة أسبوعية',on:false},{id:'vipshop',name:'VIPShop',cat:'economy',desc:'متجر VIP',on:false},{id:'blackmarket',name:'BlackMarket',cat:'economy',desc:'السوق السوداء',on:false},{id:'itemshop',name:'ItemShop',cat:'economy',desc:'متجر أغراض',on:false}, |
| {id:'essentials_cmds',name:'EssentialsX Commands',cat:'player',desc:'أوامر أساسية: /tpa, /home',on:true},{id:'luckperms',name:'LuckPerms',cat:'admin',desc:'إدارة الصلاحيات',on:true},{id:'tab',name:'TAB',cat:'player',desc:'تخصيص قائمة اللاعبين',on:true},{id:'placeholderapi',name:'PlaceholderAPI',cat:'player',desc:'API للـ placeholders',on:true},{id:'skinsrestorer',name:'SkinsRestorer',cat:'player',desc:'استعادة الـ skins',on:true},{id:'chatmanager',name:'ChatManager',cat:'player',desc:'إدارة الشات',on:true},{id:'afkplus',name:'AntiAFK+',cat:'player',desc:'منع طرد AFK',on:true},{id:'discordsrv',name:'DiscordSRV',cat:'admin',desc:'ربط Discord',on:true},{id:'backpacks',name:'Backpacks',cat:'player',desc:'حقائب ظهر',on:false},{id:'nicknames',name:'Nicknames',cat:'player',desc:'تغيير الأسماء',on:false},{id:'heads',name:'HeadsDatabase',cat:'player',desc:'رؤوس لاعبين',on:false},{id:'silktouch',name:'SilkSpawners',cat:'player',desc:'نقل مولدات',on:false},{id:'homesystem',name:'HomeSystem',cat:'player',desc:'نظام بيوت متقدم',on:false},{id:'warpsystem',name:'WarpSystem',cat:'player',desc:'نظام نقاط انتقال',on:false},{id:'tpamulti',name:'TPAMulti',cat:'player',desc:'طلب انتقال متعدد',on:false},{id:'tpcoords',name:'TPCoords',cat:'player',desc:'انتقال بالإحداثيات',on:false},{id:'msgreply',name:'MsgReply',cat:'player',desc:'رد سريع على الرسائل',on:false},{id:'socialspy',name:'SocialSpy',cat:'player',desc:'متابعة المحادثات',on:false},{id:'flyzone',name:'FlyZone',cat:'player',desc:'مناطق طيران',on:false},{id:'speedmine',name:'SpeedMine',cat:'player',desc:'حفر سريع',on:false},{id:'doublejump',name:'DoubleJump',cat:'player',desc:'قفزة مزدوجة',on:false},{id:'jetpack',name:'JetPack',cat:'player',desc:'حقيبة نارية',on:false},{id:'godmode',name:'GodMode',cat:'player',desc:'وضع الإله',on:false},{id:'fly',name:'Fly',cat:'player',desc:'الطيران',on:false},{id:'vanish',name:'Vanish',cat:'player',desc:'الاختفاء',on:false},{id:'spectator',name:'Spectator',cat:'player',desc:'المشاهدة',on:false},{id:'heal',name:'Heal',cat:'player',desc:'العلاج',on:false},{id:'feed',name:'Feed',cat:'player',desc:'التغذية',on:false},{id:'kit',name:'Kit',cat:'player',desc:'أدوات جاهزة',on:false},{id:'spawn',name:'Spawn',cat:'player',desc:'العودة للـ spawn',on:false},{id:'back',name:'Back',cat:'player',desc:'العودة للمكان السابق',on:false},{id:'hat',name:'Hat',cat:'player',desc:'ارتداء القبعة',on:false},{id:'enderchest',name:'EnderChest',cat:'player',desc:'فتح صندوق Ender',on:false},{id:'craft',name:'Craft',cat:'player',desc:'صناعة في أي مكان',on:false},{id:'anvil',name:'Anvil',cat:'player',desc:'مسمار في أي مكان',on:false},{id:'enchant',name:'Enchant',cat:'player',desc:'تسحيم في أي مكان',on:false},{id:'repair',name:'Repair',cat:'player',desc:'إصلاح في أي مكان',on:false},{id:'trash',name:'Trash',cat:'player',desc:'سلة مهملات',on:false},{id:'report',name:'Report',cat:'player',desc:'الإبلاغ عن لاعب',on:false},{id:'warn',name:'Warn',cat:'player',desc:'تحذير لاعب',on:false}, |
| {id:'multiverse',name:'Multiverse-Core',cat:'world',desc:'إدارة عوالم متعددة',on:true},{id:'dynmap',name:'Dynmap',cat:'world',desc:'خريطة ديناميكية',on:true},{id:'bluemap',name:'BlueMap',cat:'world',desc:'خريطة ثلاثية الأبعاد',on:false},{id:'mv_inventories',name:'MV-Inventories',cat:'world',desc:'مخزونات منفصلة',on:false},{id:'plotme',name:'PlotMe',cat:'world',desc:'نظام مساحات بناء',on:false},{id:'myworlds',name:'MyWorlds',cat:'world',desc:'إدارة عوالم',on:false},{id:'voidgen',name:'VoidGen',cat:'world',desc:'توليد عوالم فارغة',on:false},{id:'worldborder',name:'WorldBorder',cat:'world',desc:'حدود عالم',on:false},{id:'netherportals',name:'NetherPortals',cat:'world',desc:'تخصيص بوابات',on:false},{id:'timecontrol',name:'TimeControl',cat:'world',desc:'تحكم بالوقت',on:false},{id:'weathercontrol',name:'WeatherControl',cat:'world',desc:'تحكم بالطقس',on:false},{id:'terraincontrol',name:'TerrainControl',cat:'world',desc:'تحكم بالطبوغرافيا',on:false},{id:'worldgen',name:'WorldGen',cat:'world',desc:'توليد عوالم',on:false},{id:'biomectl',name:'BiomeControl',cat:'world',desc:'تحكم بالبيئات',on:false},{id:'oregen',name:'OreGen',cat:'world',desc:'توليد الخامات',on:false},{id:'treegen',name:'TreeGen',cat:'world',desc:'توليد الأشجار',on:false},{id:'structuregen',name:'StructureGen',cat:'world',desc:'توليد الهياكل',on:false},{id:'dungeongen',name:'DungeonGen',cat:'world',desc:'توليد الزنزانات',on:false},{id:'villagegen',name:'VillageGen',cat:'world',desc:'توليد القرى',on:false},{id:'citygen',name:'CityGen',cat:'world',desc:'توليد المدن',on:false},{id:'islandgen',name:'IslandGen',cat:'world',desc:'توليد الجزر',on:false},{id:'flatworld',name:'FlatWorld',cat:'world',desc:'عوالم مسطحة',on:false},{id:'amplified',name:'Amplified',cat:'world',desc:'عوالم مكبرة',on:false},{id:'superflat',name:'SuperFlat',cat:'world',desc:'عوالم مسطحة خارقة',on:false},{id:'skyworld',name:'SkyWorld',cat:'world',desc:'عالم سماوي',on:false},{id:'netherworld',name:'NetherWorld',cat:'world',desc:'عالم Nether',on:false},{id:'endworld',name:'EndWorld',cat:'world',desc:'عالم End',on:false},{id:'pocketworld',name:'PocketWorld',cat:'world',desc:'عوالم جيبية',on:false},{id:'minworld',name:'MiniWorld',cat:'world',desc:'عوالم صغيرة',on:false},{id:'megaworld',name:'MegaWorld',cat:'world',desc:'عوالم ضخمة',on:false}, |
| {id:'bedwars',name:'BedWars',cat:'fun',desc:'لعبة BedWars',on:false},{id:'skyblock',name:'ASkyBlock',cat:'fun',desc:'نظام SkyBlock',on:false},{id:'parkour',name:'Parkour',cat:'fun',desc:'مسارات Parkour',on:false},{id:'duels',name:'Duels',cat:'fun',desc:'قتال 1v1',on:false},{id:'arenapvp',name:'ArenaPvP',cat:'fun',desc:'منطقة PvP',on:false},{id:'treasurereward',name:'TreasureReward',cat:'fun',desc:'مكافآت يومية',on:false},{id:'deathmessages',name:'DeathMessages',cat:'fun',desc:'رسائل وفاة',on:false},{id:'mobarena',name:'MobArena',cat:'fun',desc:'arena مخلوقات',on:false},{id:'minigames',name:'Minigames',cat:'fun',desc:'ميني غيمز',on:false},{id:'trivia',name:'Trivia',cat:'fun',desc:'أسئلة معلومات',on:false},{id:'sitanywhere',name:'SitAnywhere',cat:'fun',desc:'الجلوس في أي مكان',on:false},{id:'cosmetics',name:'CosmeticsPlus',cat:'fun',desc:'تزيينات',on:false},{id:'marriage',name:'Marriage',cat:'fun',desc:'نظام زواج',on:false},{id:'pets',name:'PetMaster',cat:'fun',desc:'حيوانات أليفة',on:false},{id:'headhunting',name:'HeadHunting',cat:'fun',desc:'صيد رؤوس',on:false},{id:'treecapitator',name:'Treecapitator',cat:'fun',desc:'قطع الأشجار',on:false},{id:'veinminer',name:'VeinMiner',cat:'fun',desc:'حفر الأوردة',on:false},{id:'durabilityping',name:'DurabilityPing',cat:'fun',desc:'تنبيه التلف',on:false},{id:'nightmare',name:'Nightmare',cat:'fun',desc:'مخلوقات مرعبة',on:false},{id:'armorstandtools',name:'ArmorStandTools',cat:'fun',desc:'تخصيص دروع الخشب',on:false},{id:'dropparty',name:'DropParty',cat:'fun',desc:'حزب إسقاط',on:false},{id:'lottery_fun',name:'Lottery Fun',cat:'fun',desc:'يانصيب ترفيهي',on:false},{id:'wheeloffortune',name:'WheelOfFortune',cat:'fun',desc:'عجلة الحظ',on:false},{id:'dailylogin',name:'DailyLogin',cat:'fun',desc:'تسجيل دخول يومي',on:false},{id:'streak',name:'Streak',cat:'fun',desc:'أيام متتالية',on:false},{id:'achievements',name:'Achievements',cat:'fun',desc:'إنجازات',on:false},{id:'leaderboard',name:'Leaderboard',cat:'fun',desc:'لوحة صدارة',on:false},{id:'rankup',name:'RankUp',cat:'fun',desc:'ترقيات',on:false},{id:'title',name:'Titles',cat:'fun',desc:'ألقاب',on:false},{id:'particle',name:'Particles',cat:'fun',desc:'جسيمات',on:false},{id:'hologram',name:'Hologram',cat:'fun',desc:'هولوغرام',on:false},{id:'disguise',name:'Disguise',cat:'fun',desc:'تنكر',on:false},{id:'morph',name:'Morph',cat:'fun',desc:'تحول',on:false},{id:'furniture',name:'Furniture',cat:'fun',desc:'أثاث',on:false},{id:'player_heads',name:'PlayerHeads',cat:'fun',desc:'رؤوس لاعبين ترفيهية',on:false},{id:'skulls',name:'Skulls',cat:'fun',desc:'جماجم',on:false},{id:'paintings',name:'Paintings',cat:'fun',desc:'لوحات',on:false},{id:'books',name:'Books',cat:'fun',desc:'كتب',on:false},{id:'music',name:'Music',cat:'fun',desc:'موسيقى',on:false},{id:'fireworks',name:'Fireworks',cat:'fun',desc:'ألعاب نارية',on:false}, |
| {id:'lp_groups',name:'LuckPerms Groups',cat:'admin',desc:'إدارة المجموعات',on:true},{id:'bansystem',name:'BanSystem',cat:'admin',desc:'نظام حظر و طرد',on:true},{id:'admin_tools',name:'AdminTools',cat:'admin',desc:'أدوات الإدارة المتقدمة',on:true},{id:'essentials_admin',name:'EssentialsX Admin',cat:'admin',desc:'أوامر الإدارة المتقدمة',on:true},{id:'vault_admin',name:'Vault',cat:'admin',desc:'API الأمان والصلاحيات',on:true},{id:'server_logs',name:'ServerLogs',cat:'admin',desc:'سجلات السيرفر',on:true},{id:'permission_manager',name:'PermissionManager',cat:'admin',desc:'مدير الصلاحيات',on:true},{id:'console_logger',name:'ConsoleLogger',cat:'admin',desc:'تسجيل وحدة التحكم',on:true},{id:'server_monitor',name:'ServerMonitor',cat:'admin',desc:'مراقبة السيرفر',on:true},{id:'luckyperms',name:'LuckPerms Editor',cat:'admin',desc:'محرر الصلاحيات',on:false},{id:'commandspy',name:'CommandSpy',cat:'admin',desc:'متابعة الأوامر',on:false},{id:'alert',name:'Alert',cat:'admin',desc:'تنبيهات إدارية',on:false},{id:'freeze',name:'Freeze',cat:'admin',desc:'تجميد لاعب',on:false},{id:'jail',name:'Jail',cat:'admin',desc:'سجن لاعب',on:false},{id:'mute',name:'Mute',cat:'admin',desc:'كتم لاعب',on:false},{id:'kick',name:'Kick',cat:'admin',desc:'طرد لاعب',on:false},{id:'ban',name:'Ban',cat:'admin',desc:'حظر لاعب',on:false},{id:'tempban',name:'TempBan',cat:'admin',desc:'حظر مؤقت',on:false},{id:'ipban',name:'IPBan',cat:'admin',desc:'حظر IP',on:false},{id:'unban',name:'UnBan',cat:'admin',desc:'رفع الحظر',on:false},{id:'pardon',name:'Pardon',cat:'admin',desc:'عفو',on:false},{id:'broadcast',name:'Broadcast',cat:'admin',desc:'بث عام',on:false},{id:'announce',name:'Announce',cat:'admin',desc:'إعلان',on:false},{id:'broadcasttitle',name:'BroadcastTitle',cat:'admin',desc:'بث بعنوان',on:false},{id:'serverlist',name:'ServerList',cat:'admin',desc:'قائمة السيرفر',on:false},{id:'serverinfo',name:'ServerInfo',cat:'admin',desc:'معلومات السيرفر',on:false},{id:'serverreload',name:'ServerReload',cat:'admin',desc:'إعادة تحميل',on:false},{id:'serverbackup',name:'ServerBackup',cat:'admin',desc:'نسخ احتياطي',on:false},{id:'serverrestart',name:'ServerRestart',cat:'admin',desc:'إعادة تشغيل',on:false}, |
| {id:'humanbehavior',name:'HumanBehavior',cat:'bots',desc:'سلوك بشري واقعي',on:true},{id:'aibehavior',name:'AI Engine',cat:'bots',desc:'محرك ذكاء اصطناعي',on:true},{id:'pathfinding',name:'PathFinding',cat:'bots',desc:'إيجاد مسارات',on:true},{id:'chatresponse',name:'ChatResponse',cat:'bots',desc:'ردود المحادثة',on:true},{id:'followplayer',name:'FollowPlayer',cat:'bots',desc:'متابعة اللاعبين',on:true},{id:'buildskill',name:'BuildSkill',cat:'bots',desc:'مهارة البناء',on:true},{id:'mineskill',name:'MineSkill',cat:'bots',desc:'مهارة الحفر',on:true},{id:'farmskill',name:'FarmSkill',cat:'bots',desc:'مهارة الزراعة',on:true},{id:'fightskill',name:'FightSkill',cat:'bots',desc:'مهارة القتال',on:true},{id:'craftskill',name:'CraftSkill',cat:'bots',desc:'مهارة الصناعة',on:true},{id:'fishskill',name:'FishSkill',cat:'bots',desc:'مهارة الصيد',on:true},{id:'sleepcycle',name:'SleepCycle',cat:'bots',desc:'دورة النوم',on:true},{id:'survivalinstinct',name:'SurvivalInstinct',cat:'bots',desc:'بقاء واقعي',on:true},{id:'weatherreact',name:'WeatherReact',cat:'bots',desc:'رد على الطقس',on:false},{id:'daynight',name:'DayNight',cat:'bots',desc:'دورة الليل والنهار',on:false},{id:'sociallearning',name:'SocialLearning',cat:'bots',desc:'تعلم اجتماعي',on:false},{id:'memorysystem',name:'MemorySystem',cat:'bots',desc:'نظام ذاكرة',on:false},{id:'goalsetting',name:'GoalSetting',cat:'bots',desc:'تحديد أهداف',on:false},{id:'threatassess',name:'ThreatAssess',cat:'bots',desc:'تقييم التهديدات',on:false},{id:'multiserver',name:'MultiServer',cat:'bots',desc:'إدارة سيرفرات متعددة',on:false} |
| ]; |
| let currentFilter='all'; |
| let features={}; |
| try{const s=localStorage.getItem('sb_features');if(s)features=JSON.parse(s);}catch(_){} |
| ALL_FEATURES.forEach(f=>{if(features[f.id]===undefined)features[f.id]=f.on;}); |
| |
| (function(){ |
| var h='<div class="filter-tab active" data-cat="all" onclick="setFilter(\'all\')">الكل</div>'; |
| CATS.forEach(function(c){h+='<div class="filter-tab" data-cat="'+c.id+'" onclick="setFilter(\''+c.id+'\')" style="--c:'+c.color+'">'+c.icon+' '+c.name+'</div>';}); |
| document.getElementById('filterTabs').innerHTML=h; |
| })(); |
| function render(){ |
| var q=(document.getElementById('searchBox').value||'').toLowerCase(); |
| var filtered=ALL_FEATURES.filter(function(f){ |
| if(currentFilter!=='all'&&f.cat!==currentFilter)return false; |
| if(q&&f.name.toLowerCase().indexOf(q)<0&&f.desc.toLowerCase().indexOf(q)<0)return false; |
| return true; |
| }); |
| var enabled=ALL_FEATURES.filter(function(f){return features[f.id];}).length; |
| document.getElementById('statsBar').innerHTML='<div class="stat-pill" style="border-color:rgba(63,185,80,.3);color:var(--green)">✅ المفعلة: <span class="num">'+enabled+'</span></div><div class="stat-pill" style="border-color:rgba(248,81,73,.3);color:var(--red)">❌ المعطّلة: <span class="num">'+(ALL_FEATURES.length-enabled)+'</span></div><div class="stat-pill" style="border-color:rgba(88,166,255,.3);color:var(--blue)">📊 الإجمالي: <span class="num">'+ALL_FEATURES.length+'</span></div>'; |
| var grouped={}; |
| filtered.forEach(function(f){if(!grouped[f.cat])grouped[f.cat]=[];grouped[f.cat].push(f);}); |
| var html=''; |
| CATS.forEach(function(c){ |
| var feats=grouped[c.id]; |
| if(!feats||!feats.length)return; |
| var catEnabled=feats.filter(function(f){return features[f.id];}).length; |
| html+='<div class="cat-section" data-cat="'+c.id+'">'; |
| html+='<div class="cat-header"><span class="cat-icon">'+c.icon+'</span><span class="cat-name" style="color:'+c.color+'">'+c.name+'</span><span class="cat-count">'+catEnabled+'/'+feats.length+'</span><button class="cat-toggle" data-cid="'+c.id+'" onclick="toggleCat(this.dataset.cid)">تشغيل الكل / إيقاف الكل</button></div>'; |
| html+='<div class="features-grid">'; |
| feats.forEach(function(f){ |
| html+='<div class="'+(features[f.id]?'feature-card':'feature-card disabled')+'" id="fc-'+f.id+'">'; |
| html+='<label class="toggle"><input type="checkbox" '+(features[f.id]?'checked':'')+' data-fid="'+f.id+'" onchange="toggleFeature(this.dataset.fid,this.checked)"><span class="toggle-slider"></span></label>'; |
| html+='<div class="feature-info"><div class="feature-name">'+f.name+'</div><div class="feature-desc">'+f.desc+'</div></div></div>'; |
| }); |
| html+='</div></div>'; |
| }); |
| if(!filtered.length)html='<div class="empty">لا توجد ميزات مطابقة للبحث</div>'; |
| document.getElementById('featuresContainer').innerHTML=html; |
| } |
| function toggleFeature(id,val){ |
| features[id]=val; |
| var card=document.getElementById('fc-'+id); |
| if(card)card.classList.toggle('disabled',!val); |
| localStorage.setItem('sb_features',JSON.stringify(features)); |
| updateStats(); |
| } |
| function toggleCat(catId){ |
| var feats=ALL_FEATURES.filter(function(f){return f.cat===catId;}); |
| var allOn=feats.every(function(f){return features[f.id];}); |
| feats.forEach(function(f){features[f.id]=!allOn;}); |
| localStorage.setItem('sb_features',JSON.stringify(features)); |
| render(); |
| } |
| function setFilter(cat){ |
| currentFilter=cat; |
| document.querySelectorAll('.filter-tab').forEach(function(t){t.classList.toggle('active',t.dataset.cat===cat);}); |
| render(); |
| } |
| function filterFeatures(){render();} |
| function updateStats(){ |
| var enabled=ALL_FEATURES.filter(function(f){return features[f.id];}).length; |
| document.getElementById('statsBar').innerHTML='<div class="stat-pill" style="border-color:rgba(63,185,80,.3);color:var(--green)">✅ المفعلة: <span class="num">'+enabled+'</span></div><div class="stat-pill" style="border-color:rgba(248,81,73,.3);color:var(--red)">❌ المعطّلة: <span class="num">'+(ALL_FEATURES.length-enabled)+'</span></div><div class="stat-pill" style="border-color:rgba(88,166,255,.3);color:var(--blue)">📊 الإجمالي: <span class="num">'+ALL_FEATURES.length+'</span></div>'; |
| } |
| async function saveAll(){ |
| try{ |
| await fetch('/api/features/save',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({features})}); |
| showToast('✅ تم حفظ جميع التغييرات','ok'); |
| }catch(e){showToast('❌ فشل الحفظ','err');} |
| } |
| function exportFeatures(){ |
| var data=JSON.stringify({features,exportedAt:new Date().toISOString()},null,2); |
| var blob=new Blob([data],{type:'application/json'}); |
| var a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='features-config.json';a.click(); |
| showToast('✅ تم التصدير','ok'); |
| } |
| function importFeatures(e){ |
| var file=e.target.files[0];if(!file)return; |
| var reader=new FileReader(); |
| reader.onload=function(ev){ |
| try{ |
| var data=JSON.parse(ev.target.result); |
| if(data.features){Object.assign(features,data.features);localStorage.setItem('sb_features',JSON.stringify(features));render();showToast('✅ تم الاستيراد','ok');} |
| else showToast('❌ ملف غير صالح','err'); |
| }catch(_){showToast('❌ ملف غير صالح','err');} |
| }; |
| reader.readAsText(file); |
| } |
| function showToast(msg,type){ |
| var t=document.getElementById('toast');t.textContent=msg;t.className='toast show '+type; |
| clearTimeout(showToast._t);showToast._t=setTimeout(function(){t.className='toast';},3000); |
| } |
| render(); |
| </script> |
| </body> |
| </html> |