Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
    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();
    }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
    //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();
    }
Exemplo n.º 6
0
    public void Awake()
    {
        //singleton
        if (instance != null)
        {
            Destroy(gameObject);
        }
        else
        {
            instance = this;
        }

        CheckSaveSlot();
        AddDictionary();
    }
Exemplo n.º 7
0
    //深坑:这里的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();
    }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
    // 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);
    }
Exemplo n.º 10
0
 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);
     }
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
 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;
     }
 }
Exemplo n.º 13
0
    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;
                    }
                });
            }
        }
    }
Exemplo n.º 14
0
        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) { }
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
 // Use this for initialization
 void Start()
 {
     GDB = GameDataBase.getDBinstance;
 }
Exemplo n.º 17
0
    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());
    }
Exemplo n.º 18
0
    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();
            }
        }
    }
Exemplo n.º 19
0
 public GameAPIController(GameDataBase db)
 {
     _db = db;
 }
Exemplo n.º 20
0
    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", "次郎坊");
    }
Exemplo n.º 21
0
 static void Main(string[] args)
 {
     var finder = new GameLocationFinder();
     var db     = GameDataBase.Load(finder.FindGame());
 }
Exemplo n.º 22
0
        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;
        }
Exemplo n.º 23
0
 public void Clear()
 {
     GameDataBase.Clear();
 }
Exemplo n.º 24
0
        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();
        }
Exemplo n.º 25
0
 private void Save()
 {
     GameDataBase.Save(typeof(PlayerData).Name, playerData);
 }
Exemplo n.º 26
0
        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);
            }
        }
Exemplo n.º 27
0
        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
        }
Exemplo n.º 28
0
 // Use this for initialization
 void Start()
 {
     GDB = GameDataBase.getDBinstance;
     GM  = GameManager.getInstance();
 }
Exemplo n.º 29
0
        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);
        }
Exemplo n.º 30
0
 public DSFactory(GameDataBase _GDB)
 {
     GDB = _GDB;
 }