File size: 11,524 Bytes
94672ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>کنترلگر هوشمند بازی - Tank Stars</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <link href="https://cdn.jsdelivr.net/gh/rastikerdar/vazirmatn@v33.003/Vazirmatn-font-face.css" rel="stylesheet" type="text/css" />
    <style>
        body {
            font-family: 'Vazirmatn', sans-serif;
            background-color: #0f172a;
            color: white;
            overflow: hidden; /* جلوگیری از اسکرول */
        }

        /* استایل‌های مربوط به iframe و لایه مسدود کننده */
        #game-container {
            position: relative;
            width: 100vw;
            height: 100vh;
            z-index: 1;
        }

        iframe {
            width: 100%;
            height: 100%;
            border: none;
            display: block;
        }

        /* لایه قفل (Overlay) */
        #lock-overlay {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(15, 23, 42, 0.95);
            backdrop-filter: blur(10px);
            z-index: 9999;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            text-align: center;
            opacity: 0;
            pointer-events: none; /* وقتی مخفی است کلیک نشود */
            transition: opacity 0.5s ease;
        }

        #lock-overlay.active {
            opacity: 1;
            pointer-events: all;
        }

        .emoji-large {
            font-size: 5rem;
            margin-bottom: 1rem;
            animation: bounce 2s infinite;
        }

        @keyframes bounce {
            0%, 20%, 50%, 80%, 100% {transform: translateY(0);}
            40% {transform: translateY(-30px);}
            60% {transform: translateY(-15px);}
        }

        /* دکمه تنظیمات مخفی */
        #settings-trigger {
            position: fixed;
            bottom: 10px;
            right: 10px;
            width: 20px;
            height: 20px;
            background: transparent;
            z-index: 10000;
            cursor: default;
        }
        
        /* پنل تنظیمات */
        #settings-panel {
            position: fixed;
            bottom: 20px;
            right: 20px;
            background: #1e293b;
            padding: 20px;
            border-radius: 12px;
            box-shadow: 0 10px 25px rgba(0,0,0,0.5);
            z-index: 10001;
            display: none;
            border: 1px solid #334155;
        }

        .timer-badge {
            position: fixed;
            top: 10px;
            left: 10px;
            background: rgba(0, 0, 0, 0.7);
            padding: 5px 15px;
            border-radius: 20px;
            font-weight: bold;
            z-index: 50;
            border: 1px solid #ef4444;
            color: #ef4444;
            pointer-events: none;
        }
    </style>
</head>
<body>

    <!-- تایمر شمارش معکوس -->
    <div id="timer-display" class="timer-badge hidden">00:00:00</div>

    <!-- کانتینر اصلی بازی -->
    <div id="game-container">
        <iframe id="game-frame" src="" allowfullscreen></iframe>
        
        <!-- لایه مسدود کننده بعد از اتمام زمان -->
        <div id="lock-overlay">
            <div class="emoji-large">😁</div>
            <h1 class="text-4xl font-bold text-red-500 mb-4">دیگه زمان بازی بسه بچه جون!</h1>
            <p class="text-xl text-gray-300 mb-8">برو بعداً بیا !!</p>
            <div class="text-sm text-gray-500 mt-10">سیستم حفاظتی هوشمند فعال است</div>
        </div>
    </div>

    <!-- ناحیه مخفی برای باز کردن تنظیمات (3 بار کلیک در گوشه پایین راست) -->
    <div id="settings-trigger"></div>

    <!-- پنل تنظیمات مدیر -->
    <div id="settings-panel">
        <h3 class="text-lg font-bold mb-4 text-yellow-400">⚙️ تنظیمات ادمین (فوق سری)</h3>
        <div class="mb-4">
            <label class="block text-sm mb-1">مدت زمان مجاز (دقیقه):</label>
            <input type="number" id="time-input" value="60" class="bg-slate-800 border border-slate-600 rounded p-2 w-full text-white">
        </div>
        <div class="mb-4">
            <label class="block text-sm mb-1">رمز عبور:</label>
            <input type="password" id="admin-pass" placeholder="****" class="bg-slate-800 border border-slate-600 rounded p-2 w-full text-white">
        </div>
        <div class="flex gap-2">
            <button onclick="saveSettings()" class="bg-green-600 hover:bg-green-700 px-4 py-2 rounded text-sm flex-1">ذخیره و ریست</button>
            <button onclick="closeSettings()" class="bg-red-600 hover:bg-red-700 px-4 py-2 rounded text-sm">بستن</button>
        </div>
        <p class="text-xs text-gray-500 mt-2 text-center">نسخه الگوریتم: v2.4.0-AI</p>
    </div>

    <script>
        // --- تنظیمات اولیه و متغیرها ---
        const GAME_URL = "https://www.crazygames.com/game/tank-stars-online";
        const STORAGE_KEY_START = 'tank_stars_session_start';
        const STORAGE_KEY_DURATION = 'tank_stars_duration_min';
        const ADMIN_PASSWORD = "1234"; // رمز پیش‌فرض
        
        let sessionStart = null;
        let allowedDurationMin = 60;
        let timerInterval = null;

        // المان‌های DOM
        const gameFrame = document.getElementById('game-frame');
        const lockOverlay = document.getElementById('lock-overlay');
        const timerDisplay = document.getElementById('timer-display');
        const settingsPanel = document.getElementById('settings-panel');
        const settingsTrigger = document.getElementById('settings-trigger');

        // --- منطق اصلی برنامه ---

        function init() {
            // بارگذاری تنظیمات از حافظه مرورگر
            const savedDuration = localStorage.getItem(STORAGE_KEY_DURATION);
            if (savedDuration) {
                allowedDurationMin = parseInt(savedDuration);
            }

            // بررسی شروع سشن
            sessionStart = localStorage.getItem(STORAGE_KEY_START);
            
            if (!sessionStart) {
                // اگر اولین بار است، زمان فعلی را ثبت کن
                sessionStart = new Date().getTime();
                localStorage.setItem(STORAGE_KEY_START, sessionStart);
            } else {
                sessionStart = parseInt(sessionStart);
            }

            // بارگذاری بازی
            loadGame();
            
            // شروع چرخه بررسی زمان
            startMonitoring();
        }

        function loadGame() {
            // اضافه کردن پارامتر برای جلوگیری از کش یا صرفاً لود کردن لینک
            gameFrame.src = GAME_URL;
        }

        function startMonitoring() {
            timerInterval = setInterval(() => {
                const now = new Date().getTime();
                const elapsedMs = now - sessionStart;
                const allowedMs = allowedDurationMin * 60 * 1000;
                const remainingMs = allowedMs - elapsedMs;

                if (remainingMs <= 0) {
                    triggerLockout();
                } else {
                    updateTimerUI(remainingMs);
                }
            }, 1000);
        }

        function updateTimerUI(ms) {
            const totalSeconds = Math.floor(ms / 1000);
            const hours = Math.floor(totalSeconds / 3600);
            const minutes = Math.floor((totalSeconds % 3600) / 60);
            const seconds = totalSeconds % 60;

            timerDisplay.innerText = 
                `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
            
            // تغییر رنگ در دقایق آخر
            if (minutes < 5) {
                timerDisplay.style.color = '#ff0000';
                timerDisplay.style.borderColor = '#ff0000';
            }
        }

        function triggerLockout() {
            clearInterval(timerInterval);
            
            // قطع اتصال بازی (تغییر سورس به بلنک برای اطمینان از قطع شدن سوکت‌ها)
            gameFrame.src = "about:blank";
            
            // نمایش پیام
            lockOverlay.classList.add('active');
            timerDisplay.classList.add('hidden');
            
            // پخش صدای بیپ (اختیاری - ممکن است توسط مرورگر بلاک شود اگر تعامل نباشد)
            // اینجا فقط ویژوال کار می‌کنیم
        }

        // --- سیستم تنظیمات مخفی (Admin) ---
        
        let clickCount = 0;
        let clickTimer = null;

        // رویداد کلیک مخفی در گوشه صفحه
        document.addEventListener('click', (e) => {
            // بررسی اینکه کلیک در 50 پیکسل پایین سمت راست باشد
            if (e.clientX > window.innerWidth - 50 && e.clientY > window.innerHeight - 50) {
                clickCount++;
                
                if (clickTimer) clearTimeout(clickTimer);
                
                clickTimer = setTimeout(() => {
                    clickCount = 0;
                }, 1000);

                if (clickCount === 3) {
                    openSettings();
                    clickCount = 0;
                }
            }
        });

        function openSettings() {
            settingsPanel.style.display = 'block';
            document.getElementById('time-input').value = allowedDurationMin;
        }

        function closeSettings() {
            settingsPanel.style.display = 'none';
            document.getElementById('admin-pass').value = '';
        }

        function saveSettings() {
            const pass = document.getElementById('admin-pass').value;
            const newTime = document.getElementById('time-input').value;

            if (pass === ADMIN_PASSWORD) {
                // ذخیره تنظیمات جدید
                localStorage.setItem(STORAGE_KEY_DURATION, newTime);
                // ریست کردن تایمر سشن برای تست مجدد
                localStorage.removeItem(STORAGE_KEY_START);
                
                alert('تنظیمات اعمال شد. صفحه ریلود می‌شود.');
                location.reload();
            } else {
                alert('رمز عبور اشتباه است! 🚫');
                // افکت لرزش برای خطا
                settingsPanel.style.transform = "translateX(10px)";
                setTimeout(() => settingsPanel.style.transform = "translateX(0)", 100);
                setTimeout(() => settingsPanel.style.transform = "translateX(-10px)", 200);
                setTimeout(() => settingsPanel.style.transform = "translateX(0)", 300);
            }
        }

        // راه‌اندازی
        window.onload = init;

    </script>
</body>
</html>