403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/clients/client2/handy-app-tester.de/web/slot/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/clients/client2/handy-app-tester.de/web/slot/script.js
document.addEventListener('DOMContentLoaded', function () {
    // Prüfe, ob alle Elemente vorhanden sind, bevor Event-Listener hinzugefügt werden
    const spinButton = document.getElementById('spin-button');
	const betAmountSelect = document.getElementById('bet-amount');
	const reels = document.getElementsByClassName('reel');

    // Falls die Elemente nicht gefunden werden, gib eine Meldung aus
    if (!spinButton) {
        console.error("Ein oder mehrere HTML-Elemente konnten nicht gefunden werden. Überprüfe die IDs.");
        return;
    }

    let playerPoints = 100;
    let freeSpins = 0;
	let multipliers = [2, 3, 4, 6, 8, 10, 20]; // Mögliche Multiplikatorwerte für das spezielle Symbol

    // Spin Button Functionality
    spinButton.addEventListener('click', function () {
        if (freeSpins > 0) {
            freeSpins--;
            document.getElementById('free-spin-message').textContent = `You have ${freeSpins} free spins left!`;
			betAmountSelect.disabled = true; // Wetteinsatz-Auswahl während der Freispiele sperren
        } else {
            const betAmount = parseFloat(document.getElementById('bet-amount').value);
            if (betAmount * 3 > playerPoints) {
                alert("Not enough points for this bet.");
                return;
            }
            playerPoints -= betAmount * 3;
			betAmountSelect.disabled = false; // Nach Ende der Freispiele Einsatz wieder wählbar machen
        }

        document.getElementById('player-points').textContent = playerPoints;

        // Symbole und spezielle Freispielsymbole definieren
        const baseSymbols = ["🍒", "🍋", "🍉", "🍇", "🍊"];
        const scatterSymbol = "⭐"; // Scatter Symbol für Freispiele
        const wildMultiplierSymbol = "🎰"; // Wild-Multiplikator Symbol
        let results = [];
		const reels = document.getElementsByClassName('reel');
		
        // Reset all reel backgrounds
        for (let i = 0; i < reels.length; i++) {
            reels[i].style.backgroundColor = "#444";
        }

		for (let i = 0; i < reels.length; i++) {
			// Erzeuge einen zufälligen Wert für das Scatter-Symbol
			const scatterChance = Math.random(); // Zufallswert zwischen 0 und 1

			// Wenn der Zufallswert kleiner als 0.1 ist (10% Wahrscheinlichkeit), dann füge das Scatter-Symbol hinzu
			if (scatterChance < 0.11) {
				results.push("⭐");
			} else {
				
				const randomSymbol = baseSymbols[Math.floor(Math.random() * baseSymbols.length)];
				const randomChance = Math.random(); // Zufallswert generieren
				const countMultiplier = results.filter(symbol => symbol === wildMultiplierSymbol).length;

				if (freeSpins > 0 && ((randomChance < 0.08 && countMultiplier === 0) || (Math.random() < 0.03 && countMultiplier === 1))) {
					results.push(wildMultiplierSymbol); // Multiplikator-Symbol hinzufügen
				} else {
					results.push(randomSymbol); // Zufälliges Symbol hinzufügen
				}
			}

			reels[i].textContent = results[i];
		}

        // Check Winning Lines and Highlight
        let winPoints = 0;
        const betAmount = parseFloat(document.getElementById('bet-amount').value);

        // Helper-Funktion für Gewinnlinien-Überprüfung
		function checkWin(line) {
			const [first, second, third] = line;

			// Fall 1: Alle drei Symbole sind identisch (normale Gewinnlinie)
			if (first === second && second === third) {
				return true;
			}

			// Fall 2: Zwei gleiche Symbole + ein Wild (in beliebiger Reihenfolge)
			if (
				(first === second && third === wildMultiplierSymbol) || // Wild am Ende
				(first === third && second === wildMultiplierSymbol) || // Wild in der Mitte
				(second === third && first === wildMultiplierSymbol)    // Wild am Anfang
			) {
				return true;
			}

			// Fall 3: Ein Symbol + zwei Wilds (gültige Gewinnkombination)
			if (
				(first === wildMultiplierSymbol && second === wildMultiplierSymbol) || // Zwei Wilds am Anfang
				(first === wildMultiplierSymbol && third === wildMultiplierSymbol) ||  // Zwei Wilds außen
				(second === wildMultiplierSymbol && third === wildMultiplierSymbol)    // Zwei Wilds am Ende
			) {
				return true;
			}

			// Ansonsten keine gültige Gewinnlinie
			return false;
		}

        // Helper-Funktion für reine Gewinnlinien (drei gleiche Symbole)
        function isPureWin(line) {
            const [first, second, third] = line;
            return first === second && second === third;
        }

		// Gewinnlinien (Indizes) definieren
		const winLines = [
			[0, 1, 2], // Obere Zeile
			[3, 4, 5], // Mittlere Zeile
			[6, 7, 8], // Untere Zeile
			[0, 4, 8], // Diagonale von links oben nach rechts unten
			[2, 4, 6]  // Diagonale von rechts oben nach links unten
		];

		let lineMultiplierApplied = false; // Flag, um festzustellen, ob ein Multiplikator in einer Gewinnlinie angewendet wird

		// Gewinne prüfen und farblich markieren
		winLines.forEach(line => {
			const symbols = [results[line[0]], results[line[1]], results[line[2]]];
			
			// Gewinn, wenn die Linie eine gültige Gewinnkombination enthält
			if (checkWin(symbols)) {
				winPoints += betAmount * (line.includes(4) ? 15 : 10); // Diagonale Linien haben höhere Auszahlung
				line.forEach(index => reels[index].style.backgroundColor = "yellow"); // Linie markieren

				// Prüfen, ob in dieser Linie ein Multiplikator-Wild enthalten ist
				if (symbols.includes(wildMultiplierSymbol)) {
					lineMultiplierApplied = true; // Setze Flag, wenn Multiplikator in einer Gewinnlinie ist
				}
			}
		});

        // Scatter/Freispiele prüfen
		const scatterCount = results.filter(symbol => symbol === "⭐").length;
		if (scatterCount >= 3) {
			freeSpins += 10;
			playerPoints += ( betAmount * 5 * scatterCount );
			document.getElementById('message').textContent = `You won ${playerPoints} points + 10 free spins!`;
			document.getElementById('free-spin-message').textContent = `You have ${freeSpins} free spins!`;
			hideGameControls("choose-your-bet", "none"); // GameControls verbergen
			
			// Markiere nur die Reels rot, die das Symbol `⭐` haben
			for (let i = 0; i < reels.length; i++) {
				if (results[i] === "⭐") {
					reels[i].style.backgroundColor = "red"; // Sterne bei Freispielen rot markieren
				}
			}
		}
		
		// Multiplikator nur anwenden, wenn das Symbol in einer Gewinnlinie enthalten ist
		if (lineMultiplierApplied) {
			const randomMultiplier = multipliers[Math.floor(Math.random() * multipliers.length)];
			winPoints *= randomMultiplier; // Gewinne mit Multiplikator multiplizieren
			document.getElementById('message').textContent = `You won ${winPoints} points with a x${randomMultiplier} multiplier!`;
		} else {
			document.getElementById('message').textContent = winPoints > 0 ? `You won ${winPoints} points!` : "No win, try again.";
		}

		// Spielerpunkte aktualisieren
		playerPoints += winPoints;
		document.getElementById('player-points').textContent = playerPoints;

        // Freispiele beendet - Nachricht ausblenden
        if (freeSpins === 0) {
            document.getElementById('free-spin-message').textContent = "";
			hideGameControls("choose-your-bet", "inline"); // GameControls wieder anzeigen
			hideGameControls("choose-your-bet-info", "block");
            betAmountSelect.disabled = false; // Einsatzwahl nach Freispielen wieder aktivieren
        }

    });
});


function hideGameControls(className, status) {
    document.querySelectorAll(`.${className}`).forEach(element => {
        element.style.display = status;
    });
}

Youez - 2016 - github.com/yon3zu
LinuXploit