Ejemplo n.º 1
0
        public void GainWeapon()
        {
            int type = 1;

            if (TreasureInfo.playerTreasure.ContainsKey("Shurikens"))
            {
                TreasureInfo.playerTreasure["Shurikens"].number++;
                type = 2;
            }
            else
            {
                TreasureInfo.playerTreasure.Add("Shurikens", new TreasurePackage {
                    number = 1, wear = false
                });
            }
            CBuy buyMessage = new CBuy()
            {
                totalGold   = 0,
                totalSilver = 1,
                Goods       = new List <DTreasureBuy>()
            };

            buyMessage.Goods.Add(new DTreasureBuy()
            {
                name = "Shurikens", number = 1, type = type
            });
            MyNetwork.Send(buyMessage);
            MessageBox.Show("found new Treasure, check it out!");
        }
Ejemplo n.º 2
0
    public void OnClickBuy()
    {
        // varify whether has enough money to buy
        if (PlayerInfo.GoldNum >= totalGold && PlayerInfo.SilverNum >= totalSilver)
        {
            PlayerInfo.SilverNum -= totalSilver;

            CBuy buyMessage = new CBuy()
            {
                totalGold   = totalGold,
                totalSilver = totalSilver,
                Goods       = new List <DTreasureBuy>()
            };

            foreach (string GoldName in GoldGoods)
            {
                buyMessage.Goods.Add(new DTreasureBuy()
                {
                    name = GoldName, type = 0
                });
            }

            foreach (var kv in SilverGoods)
            {
                string sliverName = kv.Key;
                int    sliverNum  = kv.Value;
                if (TreasureInfo.playerTreasure.ContainsKey(sliverName))
                {
                    TreasureInfo.playerTreasure[sliverName].number += sliverNum;
                    buyMessage.Goods.Add(new DTreasureBuy()
                    {
                        name = sliverName, number = TreasureInfo.playerTreasure[sliverName].number, type = 2
                    });
                }
                else
                {
                    TreasurePackage tmp = new TreasurePackage()
                    {
                        number = sliverNum, wear = false
                    };
                    TreasureInfo.playerTreasure.Add(sliverName, tmp);
                    buyMessage.Goods.Add(new DTreasureBuy()
                    {
                        name = sliverName, number = sliverNum, type = 1
                    });
                }
            }
            MyNetwork.Send(buyMessage);

            cleanCache();
        }
        else
        {
            MessageBox.Show("don't have enough money!");
        }
    }
Ejemplo n.º 3
0
        public async Task CBuy(GSSession session, CBuy message)
        {
            var plr   = session.Player;
            var @char = plr.Character;

            if (plr.Window == null)
            {
                throw new ArgumentException("Player isn't in buy/trade/box/Quest", nameof(session.Player.Window));
            }

            if (plr.Window.GetType() != typeof(Storage))
            {
                throw new ArgumentException("Player isn't in buy", nameof(session.Player.Window));
            }

            var shop    = plr.Window as Storage;
            var item    = shop.Items[message.Position];
            var bResult = new SBuy
            {
                Result   = 0xff,
                ItemInfo = item.GetBytes()
            };

            if (item.BuyPrice > @char.Money)
            {
                Logger
                .ForAccount(session)
                .Information("Insuficient Money");
                await session.SendAsync(bResult);

                return;
            }

            bResult.Result = @char.Inventory.Add(item);
            if (bResult.Result == 0xff)
            {
                Logger
                .ForAccount(session)
                .Information("Insuficient Space");
                await session.SendAsync(bResult);

                return;
            }

            @char.Money -= item.BuyPrice;

            Logger
            .ForAccount(session)
            .Information("Buy {0} for {1}", item.ToString(), item.BuyPrice);

            await session.SendAsync(bResult);
        }
Ejemplo n.º 4
0
    public void OnBuyButtonClicked()
    {
        int        sum        = 0;
        int        count      = 0;
        int        gold_price = 0;
        GameObject item;
        CBuy       buy = new CBuy();

        foreach (var kv in m_items)
        {
            item = kv.Value;
            CartItemUI handler = item.GetComponent <CartItemUI>();
            count      = handler.count;
            gold_price = handler.gold_price;
            sum       += gold_price * count;
            buy.products.Add(handler.itemName, count);
        }

        buy.sum_gold_price = sum;
        buy.buy_by_gold    = 1;
        Client.Instance.Send(buy);
    }
Ejemplo n.º 5
0
        private void OnRecvBuy(IChannel channel, Message message)
        {
            CBuy             request  = message as CBuy;
            Player           player   = (Player)channel.GetContent();
            SPlayerAttribute response = new SPlayerAttribute();

            Console.WriteLine("Buying");
            Console.WriteLine(request.sum_gold_price);
            var connString = "Host=localhost;Port=5432;Username=postgres;Password=123456;Database=postgres";
            var conn       = new NpgsqlConnection(connString);

            conn.Open();
            var cmd = new NpgsqlCommand(string.Format("SELECT gold_coins,silver_coins FROM users WHERE name = '{0}'", player.user), conn);

            Console.WriteLine("Select finished");
            Console.WriteLine(player.user);
            var reader = cmd.ExecuteReader();

            reader.Read();
            Console.WriteLine(reader.GetInt16(0));
            Console.WriteLine(reader.GetInt16(1));
            int remain_gold_coins   = reader.GetInt16(0) - request.sum_gold_price;
            int remain_silver_coins = reader.GetInt16(1) - request.sum_silver_price;

            reader.Close();
            Console.WriteLine(remain_gold_coins);
            Console.WriteLine(remain_silver_coins);
            Dictionary <String, int> products = new Dictionary <string, int>();

            products = request.products;
            foreach (KeyValuePair <string, int> kvp in products)
            {
                Console.Write("{0},{1}  ", kvp.Key, kvp.Value);
            }

            if (request.buy_by_gold == 1)
            {
                var conn2 = new NpgsqlConnection(connString);
                conn2.Open();
                Console.WriteLine("writing gold_coins");
                var cmd2    = new NpgsqlCommand(string.Format("UPDATE users SET gold_coins='{0}' WHERE name = '{1}';", remain_gold_coins, player.user), conn2);
                var reader2 = cmd2.ExecuteReader();
                reader2.Read();
                Console.WriteLine("write coins finished");
                ClientTipInfo(channel, string.Format("Bought successfully,your remainning gold_coin is {0}", remain_gold_coins));
                player.gold_coins = remain_gold_coins;
                reader2.Close();
            }
            else if (request.buy_by_silver == 1)
            {
                var conn2 = new NpgsqlConnection(connString);
                conn2.Open();
                Console.WriteLine("writing silver_coins");
                var cmd2    = new NpgsqlCommand(string.Format("UPDATE users SET silver_coins='{0}' WHERE name = '{1}';", remain_silver_coins, player.user), conn2);
                var reader2 = cmd2.ExecuteReader();
                reader2.Read();
                Console.WriteLine("write coins finished");
                ClientTipInfo(channel, string.Format("Bought successfully,your remainning silver_coin is {0}", remain_silver_coins));
                player.silver_coins = remain_silver_coins;
                reader2.Close();
            }



            Console.WriteLine("writing products");
            foreach (KeyValuePair <string, int> kvp in products)
            {
                Console.WriteLine("iterating");
                int current_num = 0;
                var conn3       = new NpgsqlConnection(connString);
                conn3.Open();
                var cmd3 = new NpgsqlCommand(string.Format("SELECT item_num FROM users_items WHERE item_name = '{0}'and user_name='{1}';", kvp.Key, player.user), conn3);
                Console.WriteLine("conn3 select");
                var reader3 = cmd3.ExecuteReader();
                int count   = 0;
                while (reader3.Read())
                {
                    count++;
                    current_num = reader3.GetInt16(0);
                }
                reader3.Close();
                Console.WriteLine(count);
                if (count != 0)
                {
                    Console.WriteLine("if 1");
                    Console.WriteLine(current_num);
                    var conn4 = new NpgsqlConnection(connString);
                    conn4.Open();
                    var cmd4    = new NpgsqlCommand(string.Format("update users_items set item_num=item_num+{0} where user_name='{1}'and item_name='{2}';", kvp.Value, player.user, kvp.Key), conn4);
                    var reader4 = cmd4.ExecuteReader();
                    reader4.Read();
                    reader4.Close();
                    Console.WriteLine("success if 1");
                }
                else
                {
                    Console.WriteLine("if 2");
                    var conn4 = new NpgsqlConnection(connString);
                    conn4.Open();
                    var cmd4    = new NpgsqlCommand(string.Format("INSERT INTO users_items VALUES ('{0}','{1}',{2});", kvp.Key, player.user, kvp.Value), conn4);
                    var reader4 = cmd4.ExecuteReader();
                    reader4.Read();
                    reader4.Close();
                    Console.WriteLine("success if 2");
                }
            }
            Console.WriteLine("write products finished");
            response.InteligenceValue = player.InteligenceValue;
            response.SpeedValue       = player.SpeedValue;
            response.LevelValue       = player.LevelValue;
            response.AttackValue      = player.AttackValue;
            response.DefenseValue     = player.DefenseValue;
            response.gold_coins       = player.gold_coins;
            response.silver_coins     = player.silver_coins;
            channel.Send(response);
        }
Ejemplo n.º 6
0
        private void OnRecvBuy(IChannel channel, Message message)
        {
            Console.WriteLine("OnRecvBuy");
            CBuy      request  = message as CBuy;
            Player    player   = (Player)channel.GetContent();
            ConnectDB connect  = new ConnectDB();
            int       tmpJudge = 0;
            string    buyer_   = player.user;
            int       price_;
            string    seller_;
            Dictionary <string, int> newSilverGoods = new Dictionary <string, int>();
            Dictionary <string, int> oldSilverGoods = new Dictionary <string, int>();
            List <string>            goldGoods      = new List <string>();

            // resolve message
            foreach (DTreasureBuy goods in request.Goods)
            {
                if (goods.type == 0)
                {
                    goldGoods.Add(goods.name);
                }
                else if (goods.type == 1)
                {
                    newSilverGoods.Add(goods.name, goods.number);
                }
                else if (goods.type == 2)
                {
                    oldSilverGoods.Add(goods.name, goods.number);
                }
            }

            // transaction for gold treasures
            if (request.totalGold > 0)
            {
                // for each gold treasure is a transaction
                foreach (string goods in goldGoods)
                {
                    SBuyGoldResult goldMessage = new SBuyGoldResult();
                    goldMessage.goodsName = goods;
                    price_  = backMall[goods].price;
                    seller_ = backMall[goods].ownerName;
                    //Console.WriteLine("gold transcation: buyer: " + buyer_ + " seller: " + seller_ + " price: " + price_ + " goods: " + goods);
                    tmpJudge = connect.GoldTransaction(buyer_, seller_, price_, goods);
                    //Console.WriteLine("gold insert result: " + tmpJudge);
                    if (tmpJudge == 0)
                    {
                        goldMessage.success = false;
                    }
                    else
                    {
                        // send to seller
                        if (OnlinePlayers.ContainsKey(seller_))
                        {
                            Player toPlayer = OnlinePlayers[seller_];
                            toPlayer.GoldNum += price_;
                            SSendToSeller sellerMsg = new SSendToSeller()
                            {
                                goldCoin  = toPlayer.GoldNum,
                                goodsName = goods
                            };
                            toPlayer.connection.Send(sellerMsg);
                        }
                        // remove from backMalls
                        backMall.Remove(goods);
                        goldMessage.success = true;
                        // change player's goldCoin
                        player.GoldNum -= price_;
                    }
                    //Console.WriteLine("send goldMessage");
                    player.connection.Send(goldMessage);
                }
            }

            // deal with silver goods
            Console.WriteLine(request.totalSilver);
            if (request.totalSilver > 0)
            {
                // add treasure to package
                if (newSilverGoods.Count != 0)
                {
                    List <string> NewsilverTs = new List <string>();
                    foreach (KeyValuePair <string, int> goods in newSilverGoods)
                    {
                        //Console.WriteLine("new silver: buyer:" + buyer_ + " goods: " + goods.Key + " num: " + goods.Value);
                        NewsilverTs.Add(string.Format("('{0}','{1}','{2}')", buyer_, goods.Key, goods.Value));
                        //connect.AddTrade(goods.Key, "mall", buyer_, goods.Value, backMall[goods.Key].price);
                    }
                    tmpJudge = connect.BuyNewSilverTreasure(NewsilverTs);
                    //Console.WriteLine("new silver insert result: " + tmpJudge);
                }

                if (oldSilverGoods.Count != 0)
                {
                    foreach (KeyValuePair <string, int> goods in oldSilverGoods)
                    {
                        //Console.WriteLine("old silver: buyer:" + buyer_ + " goods: " + goods.Key + " num: " + goods.Value);
                        tmpJudge = connect.UpdateTreasureNum(buyer_, goods.Key, goods.Value);
                        connect.AddTrade(goods.Key, "mall", buyer_, goods.Value, backMall[goods.Key].price);
                        //Console.WriteLine("old silver insert result: " + tmpJudge);
                    }
                }

                // minus silver coins
                //Console.WriteLine("silverNum update result: " + tmpJudge);
                player.SilverNum -= request.totalSilver;
                //Console.WriteLine("player: " + buyer_ + " silverNum minus: " + request.totalSilver);
                tmpJudge = connect.UpdateSilverNum(buyer_, player.SilverNum);
            }
        }