function etheRoll(uint gameNumber) private {
        uint8 result = uint8(keccak256(abi.encodePacked(bets[gameNumber].hexData, blockhash(bets[gameNumber].blockNumber), bets[gameNumber].player))) % 100;
        if (result == 0) {
            result = 100;
        }
        uint winValue = 0;

        uint8[] memory number = new uint8[](bets[gameNumber].hexData.length - 1);
        for (uint8 j = 0; j < bets[gameNumber].hexData.length - 1; j++) {
            number[j] = uint8((bets[gameNumber].hexData[j + 1] >> 4) & 0xF) * 10 + uint8(bets[gameNumber].hexData[j + 1] & 0xF);
        }

        if (number[0] == 0 && number[1] >= result) {
            winValue = bets[gameNumber].amount * (100 - FEE_PERCENT) / 100 + (100 - uint(number[1])) * bets[gameNumber].amount * (100 - FEE_PERCENT) / (100 * uint(number[1]));
        }
        if (number[0] == 1 && number[1] <= result) {
            winValue = bets[gameNumber].amount * (100 - FEE_PERCENT) / 100 + (uint(number[1]) - 1) * bets[gameNumber].amount * (100 - FEE_PERCENT) / (100 * (101 - uint(number[1])));
        }
        if (bets[gameNumber].amount >= MIN_JACKPOT) {
            jackpotFund += bets[gameNumber].amount * JACKPOT_PERCENT / 100;
            emit JackpotIncrease(jackpotFund);
            if (number[0] == 0 && number[1] >= result) {
                winValue = bets[gameNumber].amount * (100 - FEE_PERCENT - JACKPOT_PERCENT) / 100 + (100 - uint(number[1])) * bets[gameNumber].amount * (100 - FEE_PERCENT - JACKPOT_PERCENT) / (100 * uint(number[1]));
            }
            if (number[0] == 1 && number[1] <= result) {
                winValue = bets[gameNumber].amount * (100 - FEE_PERCENT - JACKPOT_PERCENT) / 100 + (uint(number[1]) - 1) * bets[gameNumber].amount * (100 - FEE_PERCENT - JACKPOT_PERCENT) / (100 * (101 - uint(number[1])));
            }
            uint16 jackpotNumber = uint16(uint(keccak256(abi.encodePacked(bets[gameNumber].hexData, winValue, blockhash(bets[gameNumber].blockNumber), bets[gameNumber].player))) % JACKPOT_WIN);
            if (jackpotNumber == 999) {
                emit Jackpot(bets[gameNumber].player, jackpotFund);
                sendFunds(bets[gameNumber].player, jackpotFund + winValue);
                jackpotFund = 0;
            } else {
                if (winValue > 0) {
                    sendFunds(bets[gameNumber].player, winValue);
                }
            }
        } else {
            if (winValue > 0) {
                sendFunds(bets[gameNumber].player, winValue);
            }
        }

        emit DiceBet(bets[gameNumber].player, bets[gameNumber].amount, bets[gameNumber].blockNumber, bets[gameNumber].hexData, result, winValue, jackpotNumber, 100);
    }