function buyCrystal(uint256 amount, uint256 index) public isNotOver isCurrentRound payable
    {
        require(index < numberOfOrders);
        require(amount > 0);
        SellOrderData storage o = sellOrderData[index];
        require(amount <= o.amount);
        require(msg.value >= amount * o.unitPrice);
        PlyerData storage buyer = players[msg.sender];
        uint256 price = SafeMath.mul(amount, o.unitPrice);
        uint256 fee = devFee(price);
        sponsor.send(fee);
        administrator.transfer(fee);
        buyer.crystals = SafeMath.add(buyer.crystals, amount * CRTSTAL_MINING_PERIOD);
        o.amount = SafeMath.sub(o.amount, amount);
        o.owner.send(SafeMath.div(price, 2));
    }