function sellCrystal(uint256 amount, uint256 index) public isNotOver isCurrentRound limitSell
    {
        require(index < numberOfOrders);
        require(amount > 0);
        BuyOrderData storage o = buyOrderData[index];
        require(amount <= o.amount);
        updateCrytal(msg.sender);
        PlyerData storage seller = players[msg.sender];
        PlyerData storage buyer = players[o.owner];
        require(seller.crystals >= amount * CRTSTAL_MINING_PERIOD);
        uint256 price = SafeMath.mul(amount, o.unitPrice);
        uint256 fee = devFee(price);
        sponsor.send(fee);
        administrator.send(fee);
        buyer.crystals = SafeMath.add(buyer.crystals, amount * CRTSTAL_MINING_PERIOD);
        seller.crystals = SafeMath.sub(seller.crystals, amount * CRTSTAL_MINING_PERIOD);
        o.amount = SafeMath.sub(o.amount, amount);
        msg.sender.send(SafeMath.div(price, 2));
    }