yurieminha commited on
Commit
3aa4ef0
·
verified ·
1 Parent(s): 4ff7f58

coloca para o aviao do grafico para subir igual do jogo do aviator - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +6 -4
  2. index.html +702 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Sfsff
3
- emoji: 🏢
4
- colorFrom: yellow
5
  colorTo: purple
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: sfsff
3
+ emoji: 🐳
4
+ colorFrom: red
5
  colorTo: purple
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,702 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="pt-br">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Aviator TP7</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ @keyframes planeRise {
11
+ 0% {
12
+ bottom: 0%;
13
+ left: 50%;
14
+ transform: translateX(-50%) scale(1);
15
+ opacity: 1;
16
+ }
17
+ 10% {
18
+ transform: translateX(-50%) scale(1.1);
19
+ }
20
+ 20% {
21
+ transform: translateX(-50%) scale(1);
22
+ }
23
+ 100% {
24
+ bottom: 100%;
25
+ left: calc(50% + 10%);
26
+ transform: translateX(-50%) scale(0.5);
27
+ opacity: 0;
28
+ }
29
+ }
30
+
31
+ .plane-rising {
32
+ animation: planeRise 8s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
33
+ filter: drop-shadow(0 0 10px rgba(255, 0, 0, 0.9));
34
+ transition: all 0.1s ease-out;
35
+ }
36
+
37
+ .plane-trail {
38
+ position: absolute;
39
+ width: 3px;
40
+ height: 40px;
41
+ background: linear-gradient(to bottom,
42
+ rgba(255, 100, 100, 0.9) 0%,
43
+ rgba(255, 50, 50, 0.7) 30%,
44
+ rgba(255, 0, 0, 0.5) 70%,
45
+ transparent 100%);
46
+ transform-origin: bottom center;
47
+ animation: trailFade 0.8s forwards;
48
+ border-radius: 3px;
49
+ }
50
+
51
+ @keyframes trailFade {
52
+ 0% { opacity: 1; transform: scaleY(1); }
53
+ 100% { opacity: 0; transform: scaleY(0.1); }
54
+ }
55
+
56
+ .cloud {
57
+ position: absolute;
58
+ background: rgba(255,255,255,0.1);
59
+ border-radius: 50%;
60
+ filter: blur(5px);
61
+ animation: cloudFloat 20s linear infinite;
62
+ }
63
+
64
+ @keyframes cloudFloat {
65
+ 0% { transform: translateX(0) translateY(0); opacity: 0; }
66
+ 10% { opacity: 0.3; }
67
+ 90% { opacity: 0.3; }
68
+ 100% { transform: translateX(100px) translateY(-20px); opacity: 0; }
69
+ }
70
+
71
+ .chart-container {
72
+ background:
73
+ linear-gradient(180deg, #0a0a0a 0%, #000000 100%),
74
+ repeating-linear-gradient(
75
+ 0deg,
76
+ rgba(255, 0, 0, 0.1),
77
+ rgba(255, 0, 0, 0.1) 1px,
78
+ transparent 1px,
79
+ transparent 15px
80
+ );
81
+ border: 1px solid #ff0000;
82
+ box-shadow:
83
+ 0 0 20px rgba(255, 0, 0, 0.7),
84
+ inset 0 0 15px rgba(255, 0, 0, 0.5);
85
+ position: relative;
86
+ overflow: hidden;
87
+ }
88
+
89
+ .multiplier-badge {
90
+ position: absolute;
91
+ padding: 2px 8px;
92
+ border-radius: 12px;
93
+ font-size: 12px;
94
+ font-weight: bold;
95
+ color: white;
96
+ background: rgba(0,0,0,0.9);
97
+ border: 1px solid #ff0000;
98
+ box-shadow: 0 0 10px rgba(255, 0, 0, 0.7);
99
+ transform: translate(-50%, -50%);
100
+ z-index: 10;
101
+ animation: badgePulse 1s infinite alternate;
102
+ }
103
+
104
+ @keyframes badgePulse {
105
+ 0% { transform: translate(-50%, -50%) scale(1); }
106
+ 100% { transform: translate(-50%, -50%) scale(1.1); }
107
+ }
108
+
109
+ .notification {
110
+ animation: slideIn 0.5s forwards, slideOut 0.5s forwards 4.5s;
111
+ }
112
+
113
+ @keyframes slideIn {
114
+ from { transform: translateX(100%); }
115
+ to { transform: translateX(0); }
116
+ }
117
+
118
+ @keyframes slideOut {
119
+ from { transform: translateX(0); }
120
+ to { transform: translateX(100%); }
121
+ }
122
+
123
+ .chat-message {
124
+ opacity: 0;
125
+ animation: fadeIn 0.5s forwards;
126
+ }
127
+
128
+ @keyframes fadeIn {
129
+ to { opacity: 1; }
130
+ }
131
+
132
+ .time-badge {
133
+ animation: pulse 2s infinite;
134
+ }
135
+
136
+ @keyframes pulse {
137
+ 0% { box-shadow: 0 0 0 0 rgba(255, 0, 0, 0.7); }
138
+ 70% { box-shadow: 0 0 0 10px rgba(255, 0, 0, 0); }
139
+ 100% { box-shadow: 0 0 0 0 rgba(255, 0, 0, 0); }
140
+ }
141
+ </style>
142
+ </head>
143
+ <body class="bg-black text-white relative">
144
+ <div id="gameFrame" class="fixed inset-0 z-10 bg-black bg-opacity-90 hidden flex-col items-center justify-center">
145
+ <div class="w-full max-w-4xl h-5/6">
146
+ <iframe src="https://www.estrelabet.bet.br/gameplay/aviator" class="w-full h-full" frameborder="0"></iframe>
147
+ </div>
148
+ <button id="closeGame" class="mt-4 bg-red-600 hover:bg-red-700 text-white px-6 py-2 rounded-lg font-bold">
149
+ FECHAR JOGO
150
+ </button>
151
+ </div>
152
+
153
+ <div class="container mx-auto px-4 py-6 max-w-md relative z-0">
154
+ <!-- Header -->
155
+ <header class="flex justify-between items-center mb-6 border-b border-red-600 pb-4">
156
+ <div class="flex items-center">
157
+ <i class="fas fa-plane text-red-600 text-2xl mr-3"></i>
158
+ <h1 class="text-2xl font-bold text-red-600">AVIATOR <span class="text-white">TP7</span></h1>
159
+ </div>
160
+ <div class="text-sm bg-red-600 px-2 py-1 rounded">AO VIVO</div>
161
+ </header>
162
+
163
+ <!-- Chart Section -->
164
+ <div class="chart-container rounded-lg p-4 mb-4 relative h-64 overflow-hidden">
165
+ <div id="chart" class="h-full relative">
166
+ <div class="absolute top-0 left-0 right-0 h-px bg-red-600"></div>
167
+ <div class="absolute top-1/4 left-0 right-0 h-px bg-gray-700"></div>
168
+ <div class="absolute top-1/2 left-0 right-0 h-px bg-gray-700"></div>
169
+ <div class="absolute top-3/4 left-0 right-0 h-px bg-gray-700"></div>
170
+
171
+ <div id="plane" class="absolute bottom-0 left-1/2 transform -translate-x-1/2 text-red-600 text-3xl">
172
+ <i class="fas fa-plane"></i>
173
+ </div>
174
+
175
+ <div id="multipliers" class="absolute top-0 left-0 right-0 h-full"></div>
176
+ </div>
177
+
178
+ <div class="absolute bottom-2 left-2 text-xs text-gray-400">Último sinal: <span id="lastSignal">-</span></div>
179
+ <div class="absolute bottom-2 right-2 text-xs text-gray-400">Próximo em: <span id="nextSignal">2:15</span></div>
180
+ </div>
181
+
182
+ <!-- Percentage Chart -->
183
+ <div class="chart-container rounded-lg p-4 mb-6 relative overflow-hidden">
184
+ <div class="flex justify-between items-center mb-3">
185
+ <h3 class="font-bold text-red-600">MELHOR HORÁRIO PARA ENTRAR</h3>
186
+ <div id="timeStatus" class="text-xs bg-red-600 px-2 py-1 rounded animate-pulse">AGORA!</div>
187
+ </div>
188
+ <div class="relative h-8 bg-gray-800 rounded-full overflow-hidden">
189
+ <div id="percentageBar" class="absolute top-0 left-0 h-full bg-gradient-to-r from-red-600 to-yellow-500 rounded-full" style="width: 0%"></div>
190
+ <div class="absolute inset-0 flex items-center justify-center text-xs font-bold text-white z-10">
191
+ <span id="percentageText">0%</span>
192
+ </div>
193
+ </div>
194
+ <div class="flex justify-between mt-2 text-xs text-gray-400">
195
+ <span>Ruim</span>
196
+ <span>Ótimo</span>
197
+ </div>
198
+ </div>
199
+
200
+ <!-- Controls -->
201
+ <div class="flex justify-between mb-6 space-x-2">
202
+ <button id="startBtn" class="bg-red-600 hover:bg-red-700 text-white px-6 py-2 rounded-lg font-bold flex-1">
203
+ INICIAR SINAIS
204
+ </button>
205
+ <button id="openGame" class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg font-bold">
206
+ ABRIR JOGO
207
+ </button>
208
+ <button id="soundBtn" class="bg-gray-800 hover:bg-gray-700 text-white px-4 py-2 rounded-lg">
209
+ <i class="fas fa-volume-up"></i>
210
+ </button>
211
+ </div>
212
+
213
+ <!-- History Section -->
214
+ <div class="bg-gray-900 rounded-lg p-4 mb-4">
215
+ <div class="flex justify-between items-center mb-4 border-b border-gray-700 pb-2">
216
+ <h2 class="font-bold text-red-600">HISTÓRICO DE SINAIS</h2>
217
+ </div>
218
+ <div id="historyList" class="grid grid-cols-3 gap-2 text-sm">
219
+ <!-- History items will be added here -->
220
+ </div>
221
+ </div>
222
+
223
+ <!-- Chat Section -->
224
+ <div class="bg-gray-900 rounded-lg p-4 mb-6 h-96 overflow-y-auto flex flex-col">
225
+ <div class="flex justify-between items-center mb-4 border-b border-gray-700 pb-2">
226
+ <h2 class="font-bold text-red-600">CHAT DE SINAIS</h2>
227
+ <div class="text-xs bg-red-600 px-2 py-1 rounded">ONLINE</div>
228
+ </div>
229
+
230
+ <div id="chatMessages" class="flex-1 overflow-y-auto space-y-3">
231
+ <!-- Messages will be inserted here -->
232
+ </div>
233
+
234
+ <div class="mt-4 pt-4 border-t border-gray-700">
235
+ <div class="flex">
236
+ <input type="text" id="chatInput" class="flex-1 bg-gray-800 text-white px-4 py-2 rounded-l-lg focus:outline-none" placeholder="Digite sua mensagem...">
237
+ <button id="sendBtn" class="bg-red-600 hover:bg-red-700 text-white px-4 py-2 rounded-r-lg">
238
+ <i class="fas fa-paper-plane"></i>
239
+ </button>
240
+ </div>
241
+ </div>
242
+ </div>
243
+
244
+ <!-- Notification -->
245
+ <div id="notification" class="fixed top-4 right-4 bg-black border border-red-600 rounded-lg p-4 w-64 shadow-lg hidden notification">
246
+ <div class="flex items-start">
247
+ <div class="text-red-600 mr-3">
248
+ <i class="fas fa-bell"></i>
249
+ </div>
250
+ <div>
251
+ <h3 class="font-bold">SINAL DO AVIATOR ENCONTRADO!</h3>
252
+ <p id="notificationText" class="text-sm mt-1">Vela de <span class="font-bold">2X</span> detectada!</p>
253
+ </div>
254
+ </div>
255
+ </div>
256
+ </div>
257
+
258
+ <script>
259
+ // Game state
260
+ let isRunning = false;
261
+ let signalInterval;
262
+ let chatInterval;
263
+ let currentMultiplier = 0;
264
+ const signalHistory = [];
265
+
266
+ // DOM elements
267
+ const plane = document.getElementById('plane');
268
+ const multipliersContainer = document.getElementById('multipliers');
269
+ const startBtn = document.getElementById('startBtn');
270
+ const soundBtn = document.getElementById('soundBtn');
271
+ const chatMessages = document.getElementById('chatMessages');
272
+ const chatInput = document.getElementById('chatInput');
273
+ const sendBtn = document.getElementById('sendBtn');
274
+ const notification = document.getElementById('notification');
275
+ const notificationText = document.getElementById('notificationText');
276
+ const lastSignal = document.getElementById('lastSignal');
277
+ const nextSignal = document.getElementById('nextSignal');
278
+
279
+ // Sample multipliers (focusing on 2X-10X range)
280
+ const multipliers = [2, 3, 4, 5, 6, 7, 8, 9, 10];
281
+
282
+ // Chat messages
283
+ const systemMessages = [
284
+ "🔥 PREVISÃO LIBERADA 🔥",
285
+ "🚨 Você precisa operar nessa casa, porque o gráfico é único! Se não estiver nela, vai perder todo o seu dinheiro ",
286
+ "⚠️ Atenção! Pode surgir velas entre 10x até 1.000x nesses períodos, com chance de pagamento próximo, até 1 minuto antes ou depois! ️",
287
+ "📈 Estratégia: Valor maior: Saindo no 1.3x como nossa proteção 📉",
288
+ "🎯 Valor menor: Mirando entre 10x e 1000x 🎯",
289
+ "⏰ Horários de Entrada ⏰ 12:00 12:15 12:17 12:20 12:23 12:26 12:28 12:30 12:32 12:33 12:35 12:36",
290
+ "👉 JOGUE AQUI: galeraabet.bet 👈",
291
+ "💡 Lembre-se: nada é totalmente garantido. Se o gráfico estiver favorável, aproveite e siga o limite da vela! 💡",
292
+ "🔞 Permitido apenas para maiores de 18 anos. Jogue com consciência. 🔞"
293
+ ];
294
+
295
+ const timeSignals = [];
296
+
297
+ // Initialize
298
+ function init() {
299
+ // Set current time
300
+ updateNextSignalTime();
301
+ setInterval(updatePercentageChart, 1000);
302
+
303
+ // Event listeners
304
+ startBtn.addEventListener('click', toggleSignals);
305
+ soundBtn.addEventListener('click', toggleSound);
306
+ sendBtn.addEventListener('click', sendMessage);
307
+ chatInput.addEventListener('keypress', function(e) {
308
+ if (e.key === 'Enter') sendMessage();
309
+ });
310
+
311
+ // Add initial chat messages
312
+ addSystemMessage("Sistema", "🚀 Bem-vindo ao Aviator Pro Sinais! Os sinais começam automaticamente. 🚀");
313
+ setTimeout(() => {
314
+ addSystemMessage("Sistema", "🔔 Fique atento às notificações para os melhores momentos de entrada! 🔔");
315
+ // Add all system messages with delay
316
+ systemMessages.forEach((msg, index) => {
317
+ setTimeout(() => {
318
+ addSystemMessage("Sistema", msg);
319
+ }, 2000 + (index * 2000));
320
+ });
321
+ }, 1500);
322
+ }
323
+
324
+ // Toggle signals
325
+ function toggleSignals() {
326
+ if (isRunning) {
327
+ stopSignals();
328
+ startBtn.textContent = 'INICIAR SINAIS';
329
+ startBtn.classList.remove('bg-gray-600');
330
+ startBtn.classList.add('bg-red-600');
331
+ } else {
332
+ startSignals();
333
+ startBtn.textContent = 'PARAR SINAIS';
334
+ startBtn.classList.remove('bg-red-600');
335
+ startBtn.classList.add('bg-gray-600');
336
+ }
337
+ }
338
+
339
+ // Start signals
340
+ function startSignals() {
341
+ isRunning = true;
342
+
343
+ // Clear any existing intervals
344
+ if (signalInterval) clearInterval(signalInterval);
345
+ if (chatInterval) clearInterval(chatInterval);
346
+
347
+ // Start signal generation
348
+ signalInterval = setInterval(generateSignal, 10000); // Every 10 seconds
349
+
350
+ // Start chat messages
351
+ chatInterval = setInterval(addRandomChatMessage, 5000);
352
+
353
+ // Initial signal
354
+ setTimeout(generateSignal, 2000);
355
+ }
356
+
357
+ // Stop signals
358
+ function stopSignals() {
359
+ isRunning = false;
360
+ clearInterval(signalInterval);
361
+ clearInterval(chatInterval);
362
+ }
363
+
364
+ // Update history display
365
+ function updateHistoryDisplay() {
366
+ const historyList = document.getElementById('historyList');
367
+ historyList.innerHTML = '';
368
+
369
+ // Show last 6 signals (most recent first)
370
+ const recentHistory = [...signalHistory].reverse().slice(0, 6);
371
+
372
+ recentHistory.forEach(item => {
373
+ const historyItem = document.createElement('div');
374
+ historyItem.className = `bg-gray-800 rounded p-2 text-center border ${item.multiplier >= 10 ? 'border-red-600' : 'border-gray-600'}`;
375
+ historyItem.innerHTML = `
376
+ <div class="font-bold ${item.multiplier >= 10 ? 'text-red-500' : 'text-white'}">${item.multiplier}X</div>
377
+ <div class="text-xs text-gray-400">${item.time}</div>
378
+ `;
379
+ historyList.appendChild(historyItem);
380
+ });
381
+ }
382
+
383
+ // Generate signal
384
+ function generateSignal() {
385
+ // Random multiplier (weighted towards lower values)
386
+ const rnd = Math.random();
387
+ let multiplier;
388
+
389
+ if (rnd < 0.6) {
390
+ multiplier = multipliers[Math.floor(Math.random() * 5)]; // 1.5x-5x
391
+ } else if (rnd < 0.9) {
392
+ multiplier = multipliers[5 + Math.floor(Math.random() * 5)]; // 10x-50x
393
+ } else {
394
+ multiplier = multipliers[10 + Math.floor(Math.random() * 3)]; // 100x-1000x
395
+ }
396
+
397
+ currentMultiplier = multiplier;
398
+ lastSignal.textContent = `${multiplier}X`;
399
+ updateNextSignalTime();
400
+
401
+ // Add to history
402
+ const now = new Date();
403
+ signalHistory.push({
404
+ multiplier: multiplier,
405
+ time: now.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'})
406
+ });
407
+ updateHistoryDisplay();
408
+
409
+ // Show notification
410
+ showNotification(multiplier);
411
+
412
+ // Add to chat
413
+ addSystemMessage("Sistema", `🔥 SINAL DETECTADO: ${multiplier}X 🔥`);
414
+
415
+ // Animate plane with randomized curve
416
+ animatePlane(multiplier, Math.random() > 0.5 ? 1 : -1);
417
+ }
418
+
419
+ // Animate plane with direction parameter
420
+ function animatePlane(multiplier, direction = 1) {
421
+ // Reset plane
422
+ plane.className = 'absolute bottom-0 left-1/2 transform -translate-x-1/2 text-red-600 text-4xl';
423
+ plane.innerHTML = '<i class="fas fa-plane" style="transform: rotate(45deg)"></i>';
424
+
425
+ // Clear previous multipliers
426
+ multipliersContainer.innerHTML = '';
427
+
428
+ // Add clouds
429
+ for (let i = 0; i < 5; i++) {
430
+ const cloud = document.createElement('div');
431
+ cloud.className = 'cloud';
432
+ cloud.style.width = `${20 + Math.random() * 30}px`;
433
+ cloud.style.height = `${10 + Math.random() * 20}px`;
434
+ cloud.style.left = `${Math.random() * 100}%`;
435
+ cloud.style.top = `${Math.random() * 100}%`;
436
+ cloud.style.animationDelay = `${Math.random() * 5}s`;
437
+ multipliersContainer.appendChild(cloud);
438
+ }
439
+
440
+ // Start rising animation with slight random delay
441
+ setTimeout(() => {
442
+ plane.classList.add('plane-rising');
443
+ }, Math.random() * 300);
444
+
445
+ // Show multipliers in real-time
446
+ const startTime = Date.now();
447
+ const duration = 8000; // 8 seconds
448
+ let lastTrailTime = 0;
449
+ let curveFactor = direction * (0.5 + Math.random() * 0.5);
450
+
451
+ const updateInterval = setInterval(() => {
452
+ const elapsed = Date.now() - startTime;
453
+ const progress = Math.min(elapsed / duration, 1);
454
+ const currentMultiplier = Math.floor(progress * multiplier);
455
+
456
+ // Add plane trail with slight randomness
457
+ if (elapsed - lastTrailTime > 40) {
458
+ const trail = document.createElement('div');
459
+ trail.className = 'plane-trail';
460
+
461
+ // Calculate curved position
462
+ const curveProgress = progress * 2 * Math.PI;
463
+ const curveOffset = Math.sin(curveProgress) * 10 * curveFactor;
464
+
465
+ trail.style.left = `calc(${plane.style.left} + ${curveOffset}px)`;
466
+ trail.style.bottom = plane.style.bottom;
467
+ trail.style.transform = `rotate(${curveOffset * 0.5}deg)`;
468
+ multipliersContainer.appendChild(trail);
469
+ lastTrailTime = elapsed;
470
+
471
+ // Remove old trails
472
+ if (multipliersContainer.children.length > 50) {
473
+ multipliersContainer.removeChild(multipliersContainer.children[0]);
474
+ }
475
+ }
476
+
477
+ // Update plane position with curve
478
+ const curveProgress = progress * 2 * Math.PI;
479
+ const curveOffset = Math.sin(curveProgress) * 15 * curveFactor;
480
+ plane.style.left = `calc(50% + ${curveOffset}px)`;
481
+
482
+ // Update current multiplier display
483
+ if (currentMultiplier >= 2 && currentMultiplier % 1 === 0) {
484
+ const marker = document.createElement('div');
485
+ marker.className = 'multiplier-badge bg-red-600 time-badge';
486
+ marker.textContent = `${currentMultiplier}X`;
487
+ marker.style.left = `${40 + Math.random() * 20}%`;
488
+ marker.style.top = `${100 - (progress * 100)}%`;
489
+
490
+ // Only add if not already present
491
+ if (!document.querySelector(`.multiplier-badge[style*="${marker.style.top}"]`)) {
492
+ multipliersContainer.appendChild(marker);
493
+ }
494
+ }
495
+
496
+ // Clear at end
497
+ if (progress === 1) {
498
+ clearInterval(updateInterval);
499
+ setTimeout(() => {
500
+ plane.className = 'absolute bottom-0 left-1/2 transform -translate-x-1/2 text-red-600 text-3xl';
501
+ plane.innerHTML = '<i class="fas fa-plane"></i>';
502
+ }, 1000);
503
+ }
504
+ }, 16); // ~60fps
505
+ }
506
+
507
+ // Show notification
508
+ function showNotification(multiplier) {
509
+ notificationText.innerHTML = `Vela de <span class="font-bold">${multiplier}X</span> detectada!`;
510
+ notification.classList.remove('hidden');
511
+
512
+ setTimeout(() => {
513
+ notification.classList.add('hidden');
514
+ }, 5000);
515
+ }
516
+
517
+ // Update next signal time
518
+ function updateNextSignalTime() {
519
+ const now = new Date();
520
+ const nextMinute = new Date(now.getTime() + 60000 - (now.getSeconds() * 1000) - now.getMilliseconds());
521
+ nextSignal.textContent = nextMinute.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
522
+
523
+ // Update percentage chart
524
+ updatePercentageChart();
525
+ }
526
+
527
+ // Update percentage chart
528
+ function updatePercentageChart() {
529
+ const now = new Date();
530
+ const seconds = now.getSeconds();
531
+ const minutes = now.getMinutes();
532
+
533
+ // Calculate percentage based on time (peaks at :00, :15, :30, :45)
534
+ let percentage;
535
+ const mod = minutes % 15;
536
+
537
+ if (mod === 0) {
538
+ // At peak times, show 97%-100%
539
+ percentage = 97 + (Math.random() * 3); // Random between 97-100
540
+ } else {
541
+ // Other times show 50%-96%
542
+ const base = 50;
543
+ const range = 46;
544
+ const progress = Math.min(mod / 15, (15 - mod) / 15);
545
+ percentage = base + (range * (1 - progress));
546
+
547
+ // Add some random variation
548
+ percentage += Math.random() * 5 - 2.5; // ±2.5%
549
+ percentage = Math.min(Math.max(percentage, 50), 96); // Clamp between 50-96
550
+ }
551
+
552
+ // Animate the bar
553
+ const percentageBar = document.getElementById('percentageBar');
554
+ const percentageText = document.getElementById('percentageText');
555
+ const timeStatus = document.getElementById('timeStatus');
556
+
557
+ percentageBar.style.width = `${percentage}%`;
558
+ percentageText.textContent = `${Math.round(percentage)}%`;
559
+
560
+ // Update status
561
+ if (percentage >= 97) {
562
+ timeStatus.textContent = "AGORA!";
563
+ timeStatus.className = "text-xs bg-red-600 px-2 py-1 rounded animate-pulse";
564
+ percentageBar.classList.add('animate-pulse');
565
+ } else if (percentage >= 80) {
566
+ timeStatus.textContent = "BOM";
567
+ timeStatus.className = "text-xs bg-yellow-600 px-2 py-1 rounded";
568
+ percentageBar.classList.remove('animate-pulse');
569
+ } else {
570
+ timeStatus.textContent = "ESPERAR";
571
+ timeStatus.className = "text-xs bg-gray-600 px-2 py-1 rounded";
572
+ percentageBar.classList.remove('animate-pulse');
573
+ }
574
+ }
575
+
576
+ // Toggle sound
577
+ function toggleSound() {
578
+ if (soundBtn.innerHTML.includes('volume-up')) {
579
+ soundBtn.innerHTML = '<i class="fas fa-volume-mute"></i>';
580
+ } else {
581
+ soundBtn.innerHTML = '<i class="fas fa-volume-up"></i>';
582
+ }
583
+ }
584
+
585
+ // Add system message
586
+ function addSystemMessage(sender, message) {
587
+ const messageDiv = document.createElement('div');
588
+ messageDiv.className = 'chat-message';
589
+
590
+ if (sender === "Sistema") {
591
+ messageDiv.innerHTML = `
592
+ <div class="bg-gray-800 rounded-lg p-3">
593
+ <div class="flex items-center mb-1">
594
+ <span class="font-bold text-red-600">${sender}</span>
595
+ <span class="text-xs text-gray-400 ml-2">${new Date().toLocaleTimeString()}</span>
596
+ </div>
597
+ <p class="text-sm">${message}</p>
598
+ </div>
599
+ `;
600
+ } else {
601
+ messageDiv.innerHTML = `
602
+ <div class="bg-gray-800 rounded-lg p-3">
603
+ <div class="flex items-center mb-1">
604
+ <span class="font-bold">${sender}</span>
605
+ <span class="text-xs text-gray-400 ml-2">${new Date().toLocaleTimeString()}</span>
606
+ </div>
607
+ <p class="text-sm">${message}</p>
608
+ </div>
609
+ `;
610
+ }
611
+
612
+ chatMessages.appendChild(messageDiv);
613
+ chatMessages.scrollTop = chatMessages.scrollHeight;
614
+ }
615
+
616
+ // Add random chat message
617
+ function addRandomChatMessage() {
618
+ if (Math.random() > 0.3) return; // 70% chance to skip
619
+
620
+ const now = new Date();
621
+ const currentMinute = now.getMinutes();
622
+
623
+ // Sometimes add a time signal
624
+ if (Math.random() > 0.8 && timeSignals.length > 0) {
625
+ const randomSignal = timeSignals[Math.floor(Math.random() * timeSignals.length)];
626
+ addSystemMessage("Sistema", `⏰ PRÓXIMO SINAL: ${randomSignal}`);
627
+ return;
628
+ }
629
+
630
+ // Sometimes add a system message
631
+ if (Math.random() > 0.7 && systemMessages.length > 0) {
632
+ const randomMessage = systemMessages[Math.floor(Math.random() * systemMessages.length)];
633
+ addSystemMessage("Sistema", randomMessage);
634
+ return;
635
+ }
636
+
637
+ // User messages
638
+ const users = ["João", "Maria", "Carlos", "Ana", "Pedro", "Luiza"];
639
+ const messages = [
640
+ "Acabei de pegar 50x! Obrigado pelos sinais!",
641
+ "Alguém mais operando agora?",
642
+ "Vamos que vamos!",
643
+ "Tô confiante nesse sinal!",
644
+ "Alguém pode explicar a estratégia novamente?",
645
+ "Estou seguindo e está dando certo!",
646
+ "Quanto vocês estão colocando?",
647
+ "Vamos focar nas velas altas hoje!",
648
+ "Alguém pegou o sinal de 100x que teve mais cedo?",
649
+ "Estou começando agora, alguma dica?"
650
+ ];
651
+
652
+ const user = users[Math.floor(Math.random() * users.length)];
653
+ const message = messages[Math.floor(Math.random() * messages.length)];
654
+
655
+ addSystemMessage(user, message);
656
+ }
657
+
658
+ // Send message
659
+ function sendMessage() {
660
+ const message = chatInput.value.trim();
661
+ if (message) {
662
+ addSystemMessage("Você", message);
663
+ chatInput.value = '';
664
+
665
+ // Simulate reply
666
+ if (Math.random() > 0.5) {
667
+ setTimeout(() => {
668
+ const replies = [
669
+ "Boa estratégia!",
670
+ "Estou contigo!",
671
+ "Vamos juntos nessa!",
672
+ "Ótima pergunta, alguém pode ajudar?",
673
+ "Isso mesmo, continue assim!",
674
+ "Boa sorte na operação!"
675
+ ];
676
+ const reply = replies[Math.floor(Math.random() * replies.length)];
677
+ addSystemMessage("Apoiador", reply);
678
+ }, 1000 + Math.random() * 2000);
679
+ }
680
+ }
681
+ }
682
+
683
+ // Game frame controls
684
+ const gameFrame = document.getElementById('gameFrame');
685
+ const openGameBtn = document.getElementById('openGame');
686
+ const closeGameBtn = document.getElementById('closeGame');
687
+
688
+ openGameBtn.addEventListener('click', () => {
689
+ gameFrame.classList.remove('hidden');
690
+ gameFrame.classList.add('flex');
691
+ });
692
+
693
+ closeGameBtn.addEventListener('click', () => {
694
+ gameFrame.classList.add('hidden');
695
+ gameFrame.classList.remove('flex');
696
+ });
697
+
698
+ // Initialize on load
699
+ window.onload = init;
700
+ </script>
701
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=yurieminha/sfsff" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
702
+ </html>