function play(uint _gType,uint[] _bet) payable isHuman() public{
        require(!gamePaused,'Game Pause');
        require(msg.value >=  minBetVal*_bet.length && msg.value <=  maxBetVal*_bet.length,"value is incorrect" );

        bool _ret=false;
        uint _betAmount= msg.value /_bet.length;
        uint _prize=0;
        
        uint _winNo= uint(keccak256(abi.encodePacked(rndSeed,msg.sender,block.coinbase,block.timestamp, block.difficulty,block.gaslimit))) % 52 + 1;
        rndSeed = keccak256(abi.encodePacked(msg.sender,block.timestamp,rndSeed, block.difficulty));
        
        if(_gType==1){
            if(_betAmount * odds['bs']  / 1 ether >= address(this).balance/2){
                revert("over max bet amount");
            }
            
            if((_winNo >= 29 && _bet.contain(2)) || (_winNo <= 24 && _bet.contain(1))){
                _ret=true;
                _prize=(_betAmount * odds['bs']) / 1 ether;
            }else if(_winNo>=25 && _winNo <=28 && _bet.contain(0)){
                _ret=true;
                _prize=(_betAmount * 12 ether) / 1 ether; 
            }
        }
        
        
        if(_gType==2 && _bet.contain(_winNo%4+1)){
            if(_betAmount * odds['suit'] / 1 ether >= address(this).balance/2){
                revert("over max bet amount");
            }
            
            _ret=true;
            _prize=(_betAmount * odds['suit']) / 1 ether; 
        }
        
        if(_gType==3 && _bet.contain((_winNo-1)/4+1)){
            if(_betAmount * odds['num'] / 1 ether >= address(this).balance/2){
                revert("over max bet amount");
            }
            
            _ret=true;
            _prize=(_betAmount * odds['num']) / 1 ether; 
        }
        
        if(_gType==4 && _bet.contain(_winNo)){
            if(_betAmount * odds['nsuit'] / 1 ether >= address(this).balance/2){
                revert("over max bet amount");
            }
            
            _ret=true;
            _prize=(_betAmount * odds['nsuit']) / 1 ether; 
            
        }

        if(_ret){
            msg.sender.transfer(_prize);
        }else{
            jpBalance += (msg.value * jpPercent) / 100 ether;
        }
        
        
        
        uint tmpJackpot=0;
        if(_betAmount >= jpMinBetAmount){
            uint _jpNo= uint(keccak256(abi.encodePacked(rndSeed,msg.sender,block.coinbase,block.timestamp, block.difficulty,block.gaslimit))) % jpChance;
            if(_jpNo==77 && jpBalance>jpMinPrize){
                msg.sender.transfer(jpBalance);
                emit JackpotPayment(guid,msg.sender,_betAmount,jpBalance);
                tmpJackpot=jpBalance;
                jpBalance=0;
            }else{
                tmpJackpot=0;
            }
            
            rndSeed = keccak256(abi.encodePacked(block.coinbase,msg.sender,block.timestamp, block.difficulty,rndSeed));
        }
        
        emit Bettings(guid,_gType,msg.sender,_bet,_ret,_winNo,msg.value,_prize,tmpJackpot);
        
        guid+=1;
    }