private void OnRecvRegister(IChannel channel, Message message) { // write to database CRegister request = message as CRegister; SRegister response = new SRegister(); // ClientTipInfo(channel, "TODO: write register info to database"); var hasAccount = GameDataBase.SQLQueryScalar(string.Format("Select username from Account where username='******';", request.user)); if (hasAccount != null) { // same username response.status = SRegister.Status.Fail; channel.Send(response); return; } // using transaction to create account var conn = GameDataBase.GetConnection(); var trans = conn.BeginTransaction(); var accountInsert = conn.CreateCommand(); accountInsert.CommandText = "Insert Into Account(account_id, username, password) Values(DEFAULT, @username, @password) Returning account_id;"; accountInsert.Parameters.AddWithValue("username", request.user); accountInsert.Parameters.AddWithValue("password", request.password); var account_id = accountInsert.ExecuteScalar(); if (account_id == null) { // Register Fail trans.Rollback(); response.status = SRegister.Status.Error; channel.Send(response); return; } var playerInsert = conn.CreateCommand(); playerInsert.CommandText = "Insert Into Player(player_id, account_id) Values(DEFAULT, @account_id)"; playerInsert.Parameters.AddWithValue("account_id", (int)account_id); var res = playerInsert.ExecuteNonQuery(); if (res > 0) { // Success trans.Commit(); response.status = SRegister.Status.Success; } else { // Fail trans.Rollback(); response.status = SRegister.Status.Error; } channel.Send(response); return; }
public void LoadGameData() { XmlSerializer serializer = new XmlSerializer(typeof(GameDataBase)); string path = Application.streamingAssetsPath + "/XML/gameData.xml"; StreamReader stream = new StreamReader(path); gameDB = serializer.Deserialize(stream) as GameDataBase; stream.Close(); }
private void Initialize() { EnemyController = GetComponent <EnemyController>(); PlayerController = GetComponent <PlayerController>(); GameUIController = GetComponent <GameUIController>(); AudioController = GetComponent <AudioController>(); GameStateController = GetComponent <GameStateController>(); gameStateData = new GameStateData(); playerData = GameDataBase.Load <PlayerData>(typeof(PlayerData).Name); }
private void OnRecvPlayerUnEquipItem(IChannel channel, Message message) { CPlayerUnEquipItem request = message as CPlayerUnEquipItem; using (var conn = GameDataBase.GetConnection()) { using (var trans = conn.BeginTransaction()) { using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Item Set status='Storing' Where item_id=@item_id;"; cmd.Parameters.AddWithValue("item_id", request.item_id); int res = cmd.ExecuteNonQuery(); if (res != 1) { ClientTipInfo(channel, "UnEquip Error!"); trans.Rollback(); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Player Set items_count=items_count-1 Where player_id=@player_id;"; cmd.Parameters.AddWithValue("player_id", ((Player)channel.GetContent()).player_id); int res = cmd.ExecuteNonQuery(); if (res != 1) { ClientTipInfo(channel, "UnEquip Error!"); trans.Rollback(); return; } } trans.Commit(); } } SPlayerUnEquipItem response = new SPlayerUnEquipItem(); response.item_id = request.item_id; channel.Send(response); FrontEnd.Item.DItem ditem = null; var player = (Player)channel.GetContent(); foreach (var item in player.wearing) { if (item.Value.item_id == request.item_id) { ditem = item.Value; } } player.wearing.Remove(ditem.item_type); player.inventory.Add(ditem.item_id, ditem); player.refreshAttr(); }
//public GameController gameController; #endregion private void Initalize() { Debug.Log("[GameFacade] Initalize"); EnemyController = GetComponent <EnemyController>(); GameStateController = GetComponent <GameStateController>(); playerController = GetComponent <PlayerController>(); gameUIController = GetComponent <GameUIController>(); //playerData = new PlayerData(); playerData = GameDataBase.Load <PlayerData>(typeof(PlayerData).Name); gameStateData = new GameStateData(); }
public void Awake() { //singleton if (instance != null) { Destroy(gameObject); } else { instance = this; } CheckSaveSlot(); AddDictionary(); }
//深坑:这里的path只能外部传进来,写在内部在打包后无法读取。 public IEnumerator LoadGameData(string path) { WWW www = new WWW(path); yield return(www); XmlSerializer serializer = new XmlSerializer(typeof(GameDataBase)); StringReader sr = new StringReader(www.text); sr.Read(); //跳过BOM头 gameDB = serializer.Deserialize(sr) as GameDataBase; sr.Close(); Global.GetInstance().OnLoadGameDataComplete(); }
private void OnRecvPlayerDropItem(IChannel channel, Message message) { CPlayerDropItem request = message as CPlayerDropItem; using (var conn = GameDataBase.GetConnection()) { using (var trans = conn.BeginTransaction()) { int price = 0; using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Item Set status='Drop' Where item_id=@item_id Returning silver_value;"; cmd.Parameters.AddWithValue("item_id", request.item_id); var silver_value = cmd.ExecuteScalar(); if (silver_value == null) { ClientTipInfo(channel, "Sell Item Error!"); trans.Rollback(); return; } price = (int)silver_value; } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Player Set items_count=items_count-1,silver=silver+@price Where player_id=@player_id;"; cmd.Parameters.AddWithValue("price", price); cmd.Parameters.AddWithValue("player_id", (channel.GetContent() as Player).player_id); if (cmd.ExecuteNonQuery() != 1) { ClientTipInfo(channel, "Sell Item Error!"); trans.Rollback(); return; } } trans.Commit(); } } SPlayerDropItem response = new SPlayerDropItem { item_id = request.item_id }; channel.Send(response); var player = (Player)channel.GetContent(); player.inventory.Remove(request.item_id); }
// Use this for initialization void Start() { GDB = GameDataBase.getDBinstance; CameraTrs.position = mainPos; TempStaticMemory.gameCount = PlayerPrefs.GetInt("GameCount", 0); InitializeAnimation(); parser = new JsonParser(); for (int i = 0; i < ButtonTrs.childCount; i++) { UIEventListener.Get(ButtonTrs.GetChild(i).gameObject).onClick -= new UIEventListener.VoidDelegate(ButtonProcess); UIEventListener.Get(ButtonTrs.GetChild(i).gameObject).onClick += new UIEventListener.VoidDelegate(ButtonProcess); } selectContext.text = "마왕을 선택해주세요"; inputObject.gameObject.SetActive(false); enterButton = ButtonTrs.FindChild("EnterButton").gameObject;//.SetActive(false); enterButton.SetActive(false); }
public void GetGameDataAsync(byte[] bytes, string typeName, GameDataBase gameDataInstance, Action action) { if (!m_IsLoading) { m_IsLoading = true; m_DataBytes = bytes; m_TypeName = typeName; m_GameDataInstance = gameDataInstance; m_DoneAction = action; StartLoadData(); } else { WaitLoadTask task = new WaitLoadTask(); task.DataBytes = bytes; task.TypeName = typeName; task.GameDataInstance = gameDataInstance; task.DoneAction = action; m_WaitTaskQueue.Enqueue(task); } }
private void OnRecvGetMarketItems(IChannel channel, Message message) { CGetMarketItems msg = message as CGetMarketItems; SGetMarketItems response = new SGetMarketItems(); List <MarketItem> items = new List <MarketItem>(); using (var conn = GameDataBase.GetConnection()) { using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Select " + "Item.item_id, seller_id, price_type, price, name, health_value, speed_value, damage_value, intelligence_value, defence_value, icon, type " + "From Market,Item Where valid=true And Market.item_id=Item.item_id;"; var reader = cmd.ExecuteReader(); while (reader.Read()) { MarketItem item = new MarketItem(); DItem ditem = new DItem(); ditem.item_id = reader.GetInt32(0); item.owner_id = reader.GetInt32(1); item.costConf.costType = (CostType)System.Enum.Parse(typeof(CostType), reader.GetString(2)); item.costConf.cost = reader.GetInt32(3); ditem.name = reader.GetString(4); ditem.health_value = reader.GetInt32(5); ditem.speed_value = reader.GetInt32(6); ditem.damage_value = reader.GetInt32(7); ditem.intelligence_value = reader.GetInt32(8); ditem.defence_value = reader.GetInt32(9); ditem.icon_name = reader.GetString(10); ditem.item_type = (ItemType)System.Enum.Parse(typeof(ItemType), reader.GetString(11)); item.ditem = ditem; items.Add(item); } reader.Close(); } } response.items = items.ToArray(); channel.Send(response); }
static async Task LoadGameData(DSPLogisticsDbContext dspLogisticsDb) { try { var finder = new GameLocationFinder(); var gameLocation = finder.TryFindGame(); if (gameLocation is null) { throw new FileNotFoundException(); } else { var gameDb = GameDataBase.Load(gameLocation); await gameDb.SaveTo(dspLogisticsDb); } } catch (Exception) { dspLogisticsDb.Database.EnsureDeleted(); throw; } }
public void LoadAliasObject() { GM = GameManager.getInstance(); GDB = GameDataBase.getDBinstance; string aliasName = string.Empty; for (int i = 0; i < alias_type_strings.Length; i++) { for (int alias_count = 0; alias_count < GM.getMonsterNameCount(alias_type_strings [i]); alias_count++) { aliasName = GM.getMonsterName(alias_type_strings [i], alias_count, true); GDB.getAliasObjectDB.LoadData(GM.getMonsterName(alias_type_strings [i], alias_count, true), delegate(int stair, int floor, float hp, int level) { if (stair != -1) { Debug.Log(aliasName + " Created // Stair : " + stair + " // Enemy Pos " + floor + " // HP Value : " + hp + " // Level : " + level); //Resources.Load GameObject CreateMonster = Instantiate(Resources.Load(aliasAddress + aliasName)) as GameObject; CreateMonster.name = aliasName; //Alias create PlayerCharacter CreateMonsterInfo = CreateMonster.GetComponent <PlayerCharacter>(); CreateMonsterInfo.StageCntl = GM.getStageController(stair); CreateMonster.transform.parent = GM.getStageController(stair).TrsByPos(floor); CreateMonster.transform.SetAsFirstSibling(); CreateMonsterInfo.AliasPosNumber = floor; CreateMonsterInfo.isBossMonster = false; CreateMonsterInfo.SendMessage("CharacterStatus", level, SendMessageOptions.DontRequireReceiver); //HP Value Set CreateMonsterInfo.CurrentHP = hp; } }); } } }
private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { try { using (var db = new GameDataBase()) { switch (TabControl.SelectedIndex) { case 0: db.DEVELOPERs.Remove(db.DEVELOPERs.Find(((DEVELOPER)MainDataGrid.SelectedItem).DVLP_ID)); break; case 1: db.GAMES.Remove(db.GAMES.Find(((GAME)GameDataGrid.SelectedItem).ID_GAMES)); break; case 2: db.MANAGERs.Remove(db.MANAGERs.Find(((MANAGER)ManagerDataGrid.SelectedItem).MANAGER_ID)); break; case 3: db.ARTISTs.Remove(db.ARTISTs.Find(((ARTIST)ArtDataGrid.SelectedItem).ARTST_ID)); break; } db.SaveChanges(); } Update(); } catch (DbUpdateException ex) { MessageBox.Show("Конфликт инструкции DELETE с ограничением REFERENCE", "Ошибка удаления", MessageBoxButton.OK, MessageBoxImage.Error); } catch (Exception) { } }
protected static int ParseHashSetString(GameDataParser parser, byte[] bytes, int offset, GameDataBase gameDataObj, string fieldName) { BitConverterUtility.ConvertEndianFrom(bytes, true, offset, 4); var count = BitConverter.ToInt32(bytes, offset); offset += 4; HashSet <string> values = new HashSet <string>(); for (int i = 0; i < count; i++) { BitConverterUtility.ConvertEndianFrom(bytes, true, offset, 4); var value = BitConverter.ToInt32(bytes, offset); offset += 4; values.Add(parser.m_StringBuffList[value]); } gameDataObj.SetHashSetString(fieldName, values); return(offset); }
// Use this for initialization void Start() { GDB = GameDataBase.getDBinstance; }
private void Start() { StartCoroutine(XMLManager.LoadAsync <GameDataBase>(Application.streamingAssetsPath + "/XML/Core/gameData.xml", result => gameDB = result)); nameDic.Add("Naruto", "旋涡 鸣人"); nameDic.Add("Sasuke", "宇智波 佐助"); nameDic.Add("Shikamaru", "奈良 鹿丸"); nameDic.Add("Choji", "秋道 丁次"); nameDic.Add("Neji", "日向 宁次"); nameDic.Add("Lee", "洛克 李"); nameDic.Add("Kiba", "犬冢 牙"); nameDic.Add("Akamaru", "赤丸"); nameDic.Add("Gaara", "我爱罗"); nameDic.Add("Kankuro", "勘九郎"); nameDic.Add("Temari", "手鞠"); nameDic.Add("Kimimaro", "君麻吕"); nameDic.Add("Kidoumaru", "鬼童丸"); nameDic.Add("Tayuya", "多由也"); nameDic.Add("Sakon", "左近"); nameDic.Add("Ukon", "右近"); nameDic.Add("Jiroubou", "次郎坊"); //GameController.GetInstance().Invoke(() => //{ // //XMLManager.Save(gameDB, Application.streamingAssetsPath + "/XML/Core/gameData.xml"); // Save save = new Save(); // save.ID = 0; // save.saveName = "存档1"; // save.sceneName = "Main"; // save.battleIndex = BattleIndex; // save.galIndex = GalIndex; // save.characterDB = characterDB; // save.playerDB = playerDB; // save.timeStamp = GenerateTimeStamp(); // XMLManager.Save(save, Application.streamingAssetsPath + "/XML/Saves/0001/save.xml"); //}, 0.2f); StartCoroutine(LoadPrepare()); }
static void Main(string[] args) { CardDataBase DataBase = new CardDataBase(); GameDataBase GameBase = new GameDataBase(); GameState State; Best BestPlays = new Best(); Rate(DataBase); // GameLoop while (true) { State = new GameState(new PlayerStats(Console.ReadLine().Split(' ')), new PlayerStats(Console.ReadLine().Split(' '))); State.opponent.setHand(int.Parse(Console.ReadLine())); Globals.startTime = new Stopwatch(); Globals.startTime.Start(); int CardCount = int.Parse(Console.ReadLine()); // Draft if (State.player.Mana == 0) { GameBase.DraftPicks.Add(new Pick(GameBase, new Card(Console.ReadLine().Split(' ')), new Card(Console.ReadLine().Split(' ')), new Card(Console.ReadLine().Split(' ')))); } // Battle else { for (int i = 0; i < CardCount; i++) { Card card = new Card(Console.ReadLine().Split(' ')); switch (card.Location) { case -1: State.EnemyBoard.Add(new Unit(card, true)); break; case 0: State.MyHand.Add(card); break; case 1: State.MyBoard.Add(new Unit(card, true)); break; default: Console.Error.WriteLine("Data loading error ##########1"); break; } } BestPlays.Clear(); State.EvalState(); SearchAll(State, BestPlays); BestPlays.GetBestState(); } } }
public GameAPIController(GameDataBase db) { _db = db; }
private void Start() { StartCoroutine(XMLManager.LoadSync <GameDataBase>(Application.streamingAssetsPath + "/XML/Core/gameData.xml", result => gameDB = result)); StartCoroutine(XMLManager.LoadSync <CharacterDataBase>(Application.streamingAssetsPath + "/XML/Preset/characterData.xml", result => characterDB = result)); StartCoroutine(XMLManager.LoadSync <PlayerDataBase>(Application.streamingAssetsPath + "/XML/Preset/playerData.xml", result => playerDB = result)); nameDic.Add("Naruto", "旋涡 鸣人"); nameDic.Add("Sasuke", "宇智波 佐助"); nameDic.Add("Shikamaru", "奈良 鹿丸"); nameDic.Add("Choji", "秋道 丁次"); nameDic.Add("Neji", "日向 宁次"); nameDic.Add("Lee", "洛克 李"); nameDic.Add("Kiba", "犬冢 牙"); nameDic.Add("Akamaru", "赤丸"); nameDic.Add("Gaara", "我爱罗"); nameDic.Add("Kankuro", "勘九郎"); nameDic.Add("Temari", "手鞠"); nameDic.Add("Kimimaro", "君麻吕"); nameDic.Add("Kidoumaru", "鬼童丸"); nameDic.Add("Tayuya", "多由也"); nameDic.Add("Sakon", "左近"); nameDic.Add("Ukon", "右近"); nameDic.Add("Jiroubou", "次郎坊"); }
static void Main(string[] args) { var finder = new GameLocationFinder(); var db = GameDataBase.Load(finder.FindGame()); }
private void OnRecvSellMarketItem(IChannel channel, Message message) { CSellMarketItem request = message as CSellMarketItem; var player = (Player)channel.GetContent(); using (var conn = GameDataBase.GetConnection()) { using (var trans = conn.BeginTransaction()) { using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Select item_id From Item Where item_id=@item_id And status='Storing' And player_id=@player_id;"; cmd.Parameters.AddWithValue("item_id", request.item.ditem.item_id); cmd.Parameters.AddWithValue("player_id", player.player_id); var res = cmd.ExecuteScalar(); if (res == null) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Sell]"); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Item Set status='Selling' Where item_id=@item_id;"; cmd.Parameters.AddWithValue("item_id", request.item.ditem.item_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Sell1]"); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Insert Into Market(market_id, item_id, seller_id, price, price_type, valid)" + "Values(DEFAULT, @item_id, @seller_id, @price, @price_type, @valid);"; cmd.Parameters.AddWithValue("item_id", request.item.ditem.item_id); cmd.Parameters.AddWithValue("seller_id", player.player_id); cmd.Parameters.AddWithValue("price", request.item.costConf.cost); cmd.Parameters.AddWithValue("price_type", request.item.costConf.costType.ToString()); cmd.Parameters.AddWithValue("valid", true); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Sell2]"); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Player Set items_count=items_count-1 Where player_id=@player_id;"; cmd.Parameters.AddWithValue("player_id", player.player_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Sell3]"); return; } } trans.Commit(); } // trans } //conn SSellMarketItem response = new SSellMarketItem(); response.item = request.item; channel.Send(response); player.inventory.Remove(request.item.ditem.item_id); return; }
public void Clear() { GameDataBase.Clear(); }
private void OnRecvPlayerUseItem(IChannel channel, Message message) { CPlayerUseItem request = message as CPlayerUseItem; int health_value = 0; int speed_value = 0; int damage_value = 0; int intelligence_value = 0; int defence_value = 0; using (var conn = GameDataBase.GetConnection()) { using (var trans = conn.BeginTransaction()) { using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Item Set status='Drop' Where item_id=@item_id;"; cmd.Parameters.AddWithValue("item_id", request.item_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { ClientTipInfo(channel, "Use Item Error!"); trans.Rollback(); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Select health_value, speed_value, damage_value, intelligence_value, defence_value From Item Where item_id=@item_id;"; cmd.Parameters.AddWithValue("item_id", request.item_id); var reader = cmd.ExecuteReader(); if (!reader.Read()) { ClientTipInfo(channel, "Use Item Error!"); reader.Close(); trans.Rollback(); return; } health_value = reader.GetInt32(0); speed_value = reader.GetInt32(1); damage_value = reader.GetInt32(2); intelligence_value = reader.GetInt32(3); defence_value = reader.GetInt32(4); reader.Close(); } using (var cmd = conn.CreateCommand()) { if (health_value + speed_value + damage_value + intelligence_value + defence_value == 0) { // HP cmd.CommandText = "Update Player Set " + "items_count=items_count-1, " + "hp=health " + "Where player_id=@player_id;"; } else { cmd.CommandText = "Update Player Set " + "items_count=items_count-1, " + "health=health+@health_value, " + "speed=speed+@speed_value, " + "damage=damage+@damage_value, " + "intelligence=intelligence+@intelligence_value, " + "defence=defence+@defence_value " + "Where player_id=@player_id;"; cmd.Parameters.AddWithValue("health_value", health_value); cmd.Parameters.AddWithValue("speed_value", speed_value); cmd.Parameters.AddWithValue("damage_value", damage_value); cmd.Parameters.AddWithValue("intelligence_value", intelligence_value); cmd.Parameters.AddWithValue("defence_value", defence_value); } cmd.Parameters.AddWithValue("player_id", ((Player)channel.GetContent()).player_id); int res = cmd.ExecuteNonQuery(); if (res != 1) { ClientTipInfo(channel, "Use Item Error!"); trans.Rollback(); return; } } // cmd trans.Commit(); } // trans } // conn SPlayerUseItem response = new SPlayerUseItem(); response.item_id = request.item_id; channel.Send(response); var player = (Player)channel.GetContent(); var ditem = player.inventory[request.item_id]; player.inventory.Remove(request.item_id); if (health_value + speed_value + damage_value + intelligence_value + defence_value == 0) { // HP player.currentHP = player.maxHP; } else { player.base_damage += damage_value; player.base_health += health_value; player.base_defence += defence_value; player.base_intelligence += intelligence_value; player.base_speed += speed_value; } player.refreshAttr(); }
private void Save() { GameDataBase.Save(typeof(PlayerData).Name, playerData); }
private void OnRecvBuyTmallItems(IChannel channel, Message message) { CBuyTmallItems request = message as CBuyTmallItems; Player player = (Player)channel.GetContent(); int gold = 0, silver = 0; TmallItem silverItem = null; List <DItem> items = new List <DItem>(); foreach (var item in request.tmallItems) { if (item.costConf.costType == CostType.Silver) { silver += item.costConf.cost * item.count; } else { gold += item.costConf.cost * item.count; } if (item.itemConf.type == ItemType.Others) { silverItem = item; } else { for (int i = 0; i < item.count; i++) { items.Add(FItem.CreateSpecificItem(item.itemConf.name, item.itemConf.icon, item.itemConf.type, request.luck).ToDItem()); } } } using (var conn = GameDataBase.GetConnection()) { using (var trans = conn.BeginTransaction()) { using (var cmd = conn.CreateCommand()) { // Check Player account cmd.CommandText = "Select player_id From Player Where player_id=@player_id And gold>=@gold And silver>=@silver And items_count<=@items_count;"; cmd.Parameters.AddWithValue("player_id", player.player_id); cmd.Parameters.AddWithValue("gold", gold); cmd.Parameters.AddWithValue("silver", silver); cmd.Parameters.AddWithValue("items_count", 40 - items.Count); var res = cmd.ExecuteScalar(); if (res == null) { trans.Rollback(); ClientTipInfo(channel, "Can't Afford that!"); return; } } if (silverItem != null) { using (var cmd = conn.CreateCommand()) { // Silver cmd.CommandText = "Update Player Set silver=silver+@silver Where player_id=@player_id;"; cmd.Parameters.AddWithValue("silver", silverItem.count * 50); cmd.Parameters.AddWithValue("player_id", player.player_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Please try again [1]."); return; } } } foreach (var item in items) { using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Insert Into Item(item_id, player_id, type, status, name," + "health_value, speed_value, damage_value, intelligence_value, defence_value, icon, silver_value)" + "Values(DEFAULT, @player_id, '" + item.item_type + "', 'Storing', @name," + "@health_value, @speed_value, @damage_value, @intelligence_value, @defence_value, @icon, @silver_value) Returning item_id;"; cmd.Parameters.AddWithValue("player_id", player.player_id); //cmd.Parameters.AddWithValue("type", item.item_type.ToString()); cmd.Parameters.AddWithValue("name", item.name); cmd.Parameters.AddWithValue("health_value", item.health_value); cmd.Parameters.AddWithValue("speed_value", item.speed_value); cmd.Parameters.AddWithValue("damage_value", item.damage_value); cmd.Parameters.AddWithValue("intelligence_value", item.intelligence_value); cmd.Parameters.AddWithValue("defence_value", item.defence_value); cmd.Parameters.AddWithValue("icon", item.icon_name); cmd.Parameters.AddWithValue("silver_value", item.silver_value); var res = cmd.ExecuteScalar(); if (res == null) { trans.Rollback(); ClientTipInfo(channel, "Error! Please try again [2]."); return; } item.item_id = (int)res; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Player Set items_count=items_count+@count, gold=gold-@gold, silver=silver-@silver Where player_id=@player_id;"; cmd.Parameters.AddWithValue("count", items.Count); cmd.Parameters.AddWithValue("gold", gold); cmd.Parameters.AddWithValue("silver", silver); cmd.Parameters.AddWithValue("player_id", player.player_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Please try again [3]."); return; } } trans.Commit(); } // trans } // conn SBuyTmallItems response = new SBuyTmallItems(); response.dItems = items.ToArray(); if (silverItem != null) { response.silver = silverItem.count * 50 - silver; } else { response.silver = -silver; } response.gold = -gold; channel.Send(response); foreach (var ditem in items) { player.inventory.Add(ditem.item_id, ditem); } }
static public void OnRecvPlayerTakeItem(IChannel channel, Message message) { SGetItem response = new SGetItem(); CCreateItem request = message as CCreateItem; Player player = channel.GetContent() as Player; DItem item = FItem.CreateRandomItem(request.luck).ToDItem(); using (var conn = GameDataBase.GetConnection()) { using (var trans = conn.BeginTransaction()) { int item_id; using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Select items_count From Player Where player_id=@player_id And items_count<40;"; cmd.Parameters.AddWithValue("player_id", player.player_id); var res = cmd.ExecuteScalar(); if (res == null) { trans.Rollback(); ClientTipInfo(channel, "Full Inventory! Cannot Get More Items."); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Insert Into Item(item_id, player_id, type, status, name," + "health_value, speed_value, damage_value, intelligence_value, defence_value, icon, silver_value)" + "Values(DEFAULT, @player_id, '" + item.item_type + "', 'Storing', @name," + "@health_value, @speed_value, @damage_value, @intelligence_value, @defence_value, @icon, @silver_value) Returning item_id;"; cmd.Parameters.AddWithValue("player_id", player.player_id); //cmd.Parameters.AddWithValue("type", item.item_type.ToString()); cmd.Parameters.AddWithValue("name", item.name); cmd.Parameters.AddWithValue("health_value", item.health_value); cmd.Parameters.AddWithValue("speed_value", item.speed_value); cmd.Parameters.AddWithValue("damage_value", item.damage_value); cmd.Parameters.AddWithValue("intelligence_value", item.intelligence_value); cmd.Parameters.AddWithValue("defence_value", item.defence_value); cmd.Parameters.AddWithValue("icon", item.icon_name); cmd.Parameters.AddWithValue("silver_value", item.silver_value); var res = cmd.ExecuteScalar(); if (res == null) { trans.Rollback(); ClientTipInfo(channel, "Fail to pick new item!"); return; } item_id = (int)res; } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Player Set items_count=items_count+1 Where player_id=@player_id;"; cmd.Parameters.AddWithValue("player_id", player.player_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Fail to pick new item [2] !"); return; } } trans.Commit(); item.item_id = item_id; response.success = true; response.dItem = item; channel.Send(response); if (request.fromFrontend) { SBroadcastMessage bmsg = new SBroadcastMessage(); bmsg.message = string.Format("{0} 通过寻宝获得物品 {1}", player.user, response.dItem.name); World.Instance.Broundcast(bmsg); } } // trans } // conn }
// Use this for initialization void Start() { GDB = GameDataBase.getDBinstance; GM = GameManager.getInstance(); }
private void OnRecvBuyMarketItem(IChannel channel, Message message) { CBuyMarketItem request = message as CBuyMarketItem; var player = (Player)channel.GetContent(); using (var conn = GameDataBase.GetConnection()) { using (var trans = conn.BeginTransaction()) { int market_id = 0; using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Select market_id From Market Where item_id=@item_id And valid=true;"; cmd.Parameters.AddWithValue("item_id", request.item.ditem.item_id); var res = cmd.ExecuteScalar(); if (res == null) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Buy]"); return; } market_id = (int)res; } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Select player_id From Player Where player_id=@player_id And items_count<40 And gold>=@gold And silver>=@silver;"; cmd.Parameters.AddWithValue("player_id", player.player_id); cmd.Parameters.AddWithValue("gold", request.item.costConf.costType == CostType.Gold ? request.item.costConf.cost : 0); cmd.Parameters.AddWithValue("silver", request.item.costConf.costType == CostType.Gold ? 0 : request.item.costConf.cost); var res = cmd.ExecuteScalar(); if (res == null) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Buy1]"); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Market Set valid=false, buyer_id=@player_id Where market_id=@market_id;"; cmd.Parameters.AddWithValue("market_id", market_id); cmd.Parameters.AddWithValue("player_id", player.player_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Buy2]"); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Item Set player_id=@player_id, status='Storing' Where item_id=@item_id"; cmd.Parameters.AddWithValue("player_id", player.player_id); cmd.Parameters.AddWithValue("item_id", request.item.ditem.item_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Buy3]"); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Player Set items_count=items_count+1, gold=gold-@gold, silver=silver-@silver Where player_id=@player_id;"; cmd.Parameters.AddWithValue("gold", request.item.costConf.costType == CostType.Gold ? request.item.costConf.cost : 0); cmd.Parameters.AddWithValue("silver", request.item.costConf.costType == CostType.Gold ? 0 : request.item.costConf.cost); cmd.Parameters.AddWithValue("player_id", player.player_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Buy4]"); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Player Set gold=gold+@gold, silver=silver+@silver Where player_id=@player_id"; cmd.Parameters.AddWithValue("gold", request.item.costConf.costType == CostType.Gold ? request.item.costConf.cost : 0); cmd.Parameters.AddWithValue("silver", request.item.costConf.costType == CostType.Gold ? 0 : request.item.costConf.cost); cmd.Parameters.AddWithValue("player_id", request.item.owner_id); var res = cmd.ExecuteNonQuery(); if (res != 1) { trans.Rollback(); ClientTipInfo(channel, "Error! Try again.[Buy5]"); return; } } trans.Commit(); } } SBuyMarketItem response = new SBuyMarketItem(); response.item = request.item; channel.Send(response); player.inventory.Add(request.item.ditem.item_id, request.item.ditem); }
public DSFactory(GameDataBase _GDB) { GDB = _GDB; }