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!"); }
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!"); } }
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); }
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); }
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); }
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); } }