示例#1
0
        public Recruit(Client owner)
        {
            this.owner = owner;

            recruitData = new RecruitData();

            HeldItemSlot = -1;
            Mobility = new bool[16];
            Darkness = -2;
            TimeMultiplier = 1000;
            ActiveItems = new List<int>();
            VolatileStatus = new ExtraStatusCollection();
        }
示例#2
0
        public void CreateCharacter(DatabaseConnection dbConnection, string name, Enums.Sex sex, int slot, bool silent)
        {
            PlayerData characterData = new PlayerData(PlayerID.GeneratePlayerID());
            characterData.Name = name;

            characterData.Map = MapManager.GenerateMapID(Settings.StartMap);
            characterData.X = Settings.StartX;
            characterData.Y = Settings.StartY;

            characterData.MaxInv = 20;
            characterData.MaxBank = 100;

            RecruitData leaderData = new RecruitData();
            leaderData.Name = name;
            leaderData.Sex = (byte)sex;
            leaderData.Species = 0;
            leaderData.Form = 1;
            leaderData.Level = 1;
            leaderData.HP = -1;

            Scripting.ScriptManager.InvokeSub("CharacterCreated", accountName, slot, characterData, leaderData);

            PlayerDataManager.CreateNewCharacter(dbConnection.Database, accountName, slot, characterData);

            //PlayerDataManager.SavePlayerAvailableExpKitModules(client.Database, playerData);
            //PlayerDataManager.SavePlayerCharacteristics(client.Database, playerData);
            //PlayerDataManager.SavePlayerGuild(client.Database, playerData);
            //PlayerDataManager.SavePlayerItemGenerals(client.Database, playerData);
            //PlayerDataManager.SavePlayerJobList(client.Database, playerData);
            //PlayerDataManager.SavePlayerLocation(client.Database, playerData);
            //PlayerDataManager.SavePlayerMissionBoardGenerals(client.Database, playerData);
            //PlayerDataManager.SavePlayerMissionBoardMissions(client.Database, playerData);
            //PlayerDataManager.SavePlayerMissionGenerals(client.Database, playerData);
            //PlayerDataManager.SavePlayerStoryGenerals(client.Database, playerData);
            //PlayerDataManager.SavePlayerStoryHelperStateSettings(client.Database, playerData);

            //// Save inventory
            //ListPair<int, PlayerDataInventoryItem> updatedInventory = new ListPair<int, PlayerDataInventoryItem>();
            //for (int i = 1; i <= Inventory.Count; i++) {
            //    if (Inventory[i].Updated) {
            //        updatedInventory.Add(i, Inventory[i].BaseInventoryItem);
            //        Inventory[i].Updated = false;
            //    }
            //}
            //PlayerDataManager.SavePlayerInventoryUpdates(client.Database, CharID, updatedInventory);

            //// Save bank
            //ListPair<int, PlayerDataInventoryItem> updatedBank = new ListPair<int, PlayerDataInventoryItem>();
            //for (int i = 1; i <= Bank.Count; i++) {
            //    if (Bank[i].Updated) {
            //        updatedBank.Add(i, Bank[i].BaseInventoryItem);
            //        Bank[i].Updated = false;
            //    }
            //}
            //PlayerDataManager.SavePlayerBankUpdates(client.Database, CharID, updatedBank);

            //// Save trigger events
            //playerData.TriggerEvents.Clear();
            //for (int i = 0; i < triggerEvents.Count; i++) {
            //    PlayerDataTriggerEvent triggerEvent = new PlayerDataTriggerEvent();
            //    triggerEvents[i].Save(triggerEvent);
            //    playerData.TriggerEvents.Add(triggerEvent);
            //}
            //PlayerDataManager.SavePlayerTriggerEvents(client.Database, playerData);

            //// Save team
            //for (int i = 0; i < team.Length; i++) {
            //    playerData.TeamMembers[i].RecruitIndex = team[i].RecruitIndex;
            //    playerData.TeamMembers[i].UsingTempStats = team[i].InTempMode;
            //    if (team[i].Loaded) {
            //        team[i].Save();
            //    }
            //}
            //PlayerDataManager.SavePlayerTeam(client.Database, playerData);

            PlayerDataManager.SavePlayerRecruit(dbConnection.Database, characterData.CharID, 0, leaderData);

            if (silent == false) {
                Messenger.SendChars(dbConnection, client);
                Messenger.PlainMsg(client, "Character has been created!", Enums.PlainMsgType.Chars);
            }
        }
示例#3
0
        private void CopyDataToRecruitData()
        {
            if (recruitData == null) {
                recruitData = new RecruitData();
            }

            // General
            recruitData.UsingTempStats = this.InTempMode;
            recruitData.Name = this.Name;
            recruitData.Nickname = this.Nickname;
            recruitData.NpcBase = this.NpcBase;
            recruitData.Species = this.Species;
            recruitData.Sex = (byte)this.Sex;
            recruitData.Form = this.Form;
            recruitData.Shiny = (int)this.Shiny;
            recruitData.Level = this.Level;
            recruitData.Exp = this.Exp;
            recruitData.HP = this.HP;
            recruitData.StatusAilment = (int)this.StatusAilment;
            recruitData.StatusAilmentCounter = this.StatusAilmentCounter;
            recruitData.IQ = this.IQ;
            recruitData.Belly = this.Belly;
            recruitData.MaxBelly = this.MaxBelly;
            recruitData.AtkBonus = this.AtkBonus;
            recruitData.DefBonus = this.DefBonus;
            recruitData.SpeedBonus = this.SpeedBuff;
            recruitData.SpclAtkBonus = this.SpclAtkBonus;
            recruitData.SpclDefBonus = this.SpclDefBonus;

            // Moves
            for (int i = 0; i < this.Moves.Length; i++) {
                RecruitMove move = this.Moves[i];

                recruitData.Moves[i].MoveNum = move.MoveNum;
                recruitData.Moves[i].CurrentPP = move.CurrentPP;
                recruitData.Moves[i].MaxPP = move.MaxPP;
                //recruitData.Moves[i].Sealed = move.Sealed;
            }

            // Volatile status
            recruitData.VolatileStatus.Clear();
            for (int i = 0; i < this.VolatileStatus.Count; i++) {
                Characters.VolatileStatus recruitDataVolatileStatus = new Characters.VolatileStatus();
                recruitDataVolatileStatus.Name = this.VolatileStatus[i].Name;
                recruitDataVolatileStatus.Emoticon = this.VolatileStatus[i].Emoticon;
                recruitDataVolatileStatus.Counter = this.VolatileStatus[i].Counter;

                recruitData.VolatileStatus.Add(recruitDataVolatileStatus);
            }
        }
示例#4
0
        public void LoadFromRecruitData(RecruitData recruitData, int recruitIndex)
        {
            this.recruitData = recruitData;
            base.RecruitIndex = recruitIndex;

            CopyDataFromRecruitData();

            if (Level <= -1) {
                return;
            }
            // Do checks
            if (base.HP < 0)
                base.HP = 1;
            if (IQ < 0)
                IQ = 0;
            if (MaxBelly <= 0) {
                MaxBelly = 100;
                Belly = MaxBelly;
            }
            if (Belly < 0 || Belly > MaxBelly) {
                Belly = MaxBelly;
            }

            //if (SpeciesOverride > 0 && SpeciesOverride <= Constants.TOTAL_POKEMON) {
            //    Species = SpeciesOverride;
            //} else {
            //Pokedex.Pokemon pokemon = Pokedex.Pokedex.FindBySprite(Sprite);
            //if (pokemon != null) {
            //    Species = pokemon.ID;
            //} else {
            //    Species = 0;
            //}
            //}
            if (Species < 0 || Species > Constants.TOTAL_POKEMON) {
                Species = 0;
            }

            CalculateOriginalSprite();
            CalculateOriginalStats();
            CalculateOriginalType();
            CalculateOriginalAbility();

            //CalculateOriginalMobility();

            // Do some more checks
            if (base.HP > MaxHP) {
                base.HP = MaxHP;
            }

            Loaded = true;

            if (Loaded) {
                // Verify move PP
                for (int i = 0; i < Moves.Length; i++) {
                    if (Moves[i].MoveNum > 0) {
                        if (Moves[i].MaxPP == -1 || Moves[i].MaxPP != MoveManager.Moves[Moves[i].MoveNum].MaxPP) {
                            Moves[i].MaxPP = MoveManager.Moves[Moves[i].MoveNum].MaxPP;
                        }
                        if (Moves[i].CurrentPP == -1 || Moves[i].CurrentPP > Moves[i].MaxPP) {
                            Moves[i].CurrentPP = Moves[i].MaxPP;
                        }
                    }
                }

                // Add Active Items
                LoadActiveItemList();
            }
        }
示例#5
0
文件: Main.cs 项目: MandL27/Server
 public static void CharacterCreated(string accountName, int slot, PlayerData characterData, RecruitData leaderData)
 {
     try {
         leaderData.Level = 5;
     } catch (Exception ex) {
         Messenger.AdminMsg("Error: CharacterCreated", Text.Black);
     }
 }
        public static RecruitData LoadPlayerRecruit(MySql database, string charID, int recruitIndex, bool usingTempStats)
        {
            RecruitData recruitData = new RecruitData();

            // Load general
            string query = "SELECT recruit_data.Name, recruit_data.Nickname, " +
                "recruit_data.NpcBase, recruit_data.Species, recruit_data.Sex, recruit_data.Shiny, recruit_data.Form, recruit_data.HeldItemSlot, " +
                "recruit_data.Level, recruit_data.Experience, recruit_data.HP, " +
                "recruit_data.StatusAilment, recruit_data.StatusAilmentCounter, " +
                "recruit_data.IQ, recruit_data.Belly, recruit_data.MaxBelly, recruit_data.AttackBonus, " +
                "recruit_data.DefenseBonus, recruit_data.SpeedBonus, recruit_data.SpecialAttackBonus, " +
                "recruit_data.SpecialDefenseBonus " +
                "FROM recruit_data " +
                "WHERE recruit_data.CharID = \'" + database.VerifyValueString(charID) + "\' " +
                "AND recruit_data.RecruitIndex = \'" + recruitIndex + "\' " +
                "AND recruit_data.UsingTempStats = \'" + usingTempStats.ToIntString() + "\';";

            DataColumnCollection row = database.RetrieveRow(query);
            if (row != null) {
                recruitData.UsingTempStats = usingTempStats;
                recruitData.Name = row["Name"].ValueString;
                recruitData.Nickname = row["Nickname"].ValueString.ToBool();
                recruitData.NpcBase = row["NpcBase"].ValueString.ToInt();
                recruitData.Species = row["Species"].ValueString.ToInt();
                recruitData.Sex = row["Sex"].ValueString.ToByte();
                recruitData.Shiny = row["Shiny"].ValueString.ToInt();
                recruitData.Form = row["Form"].ValueString.ToInt();
                recruitData.HeldItemSlot = row["HeldItemSlot"].ValueString.ToInt(-1);
                recruitData.Level = row["Level"].ValueString.ToInt();
                recruitData.Exp = row["Experience"].ValueString.ToUlng();
                recruitData.HP = row["HP"].ValueString.ToInt();
                recruitData.StatusAilment = row["StatusAilment"].ValueString.ToInt();
                recruitData.StatusAilmentCounter = row["StatusAilmentCounter"].ValueString.ToInt();
                recruitData.IQ = row["IQ"].ValueString.ToInt();
                recruitData.Belly = row["Belly"].ValueString.ToInt();
                recruitData.MaxBelly = row["MaxBelly"].ValueString.ToInt();
                recruitData.AtkBonus = row["AttackBonus"].ValueString.ToInt();
                recruitData.DefBonus = row["DefenseBonus"].ValueString.ToInt();
                recruitData.SpeedBonus = row["SpeedBonus"].ValueString.ToInt();
                recruitData.SpclAtkBonus = row["SpecialAttackBonus"].ValueString.ToInt();
                recruitData.SpclDefBonus = row["SpecialDefenseBonus"].ValueString.ToInt();
            } else {
                return null;
            }

            // Load moves
            query = "SELECT recruit_moves.MoveSlot, recruit_moves.MoveNum, " +
               "recruit_moves.CurrentPP, recruit_moves.MaxPP " +
               "FROM recruit_moves " +
               "WHERE recruit_moves.CharID = \'" + charID + "\' " +
               "AND recruit_moves.RecruitIndex = \'" + recruitIndex + "\' " +
               "AND recruit_moves.UsingTempStats = \'" + usingTempStats.ToIntString() + "\' " +
               "ORDER BY recruit_moves.MoveSlot";

            foreach (DataColumnCollection columnCollection in database.RetrieveRowsEnumerable(query)) {
                int slot = columnCollection["MoveSlot"].ValueString.ToInt();

                recruitData.Moves[slot] = new Characters.Move();
                recruitData.Moves[slot].MoveNum = columnCollection["MoveNum"].ValueString.ToInt();
                recruitData.Moves[slot].CurrentPP = columnCollection["CurrentPP"].ValueString.ToInt();
                recruitData.Moves[slot].MaxPP = columnCollection["MaxPP"].ValueString.ToInt();
                //recruitData.Moves[slot].Sealed = columnCollection["Sealed"].ValueString.ToBool();
            }

            // Load volatile statuses
            query = "SELECT recruit_volatile_status.Name, recruit_volatile_status.Emoticon, " +
               "recruit_volatile_status.Counter, recruit_volatile_status.Tag " +
               "FROM recruit_volatile_status " +
               "WHERE recruit_volatile_status.CharID = \'" + charID + "\' " +
               "AND recruit_volatile_status.RecruitIndex = \'" + recruitIndex + "\' " +
               "AND recruit_volatile_status.UsingTempStats = \'" + usingTempStats.ToIntString() + "\' " +
               "ORDER BY recruit_volatile_status.StatusNum";

            recruitData.VolatileStatus.Clear();
            foreach (DataColumnCollection columnCollection in database.RetrieveRowsEnumerable(query)) {
                Characters.VolatileStatus volatileStatus = new Characters.VolatileStatus();

                volatileStatus.Name = columnCollection["Name"].ValueString;
                volatileStatus.Emoticon = columnCollection["Emoticon"].ValueString.ToInt();
                volatileStatus.Counter = columnCollection["Counter"].ValueString.ToInt();
                volatileStatus.Tag = columnCollection["Tag"].ValueString;

                recruitData.VolatileStatus.Add(volatileStatus);
            }

            return recruitData;
        }
        public static void SavePlayerRecruit(MySql database, string charID, int recruitIndex, RecruitData recruitData)
        {
            database.UpdateOrInsert("recruit_data", new IDataColumn[] {
                database.CreateColumn(false, "CharID", charID),
                database.CreateColumn(false, "RecruitIndex", recruitIndex.ToString()),
                database.CreateColumn(false, "UsingTempStats", recruitData.UsingTempStats.ToIntString()),
                database.CreateColumn(false, "Name", recruitData.Name),
                database.CreateColumn(false, "Nickname", recruitData.Nickname.ToIntString()),
                database.CreateColumn(false, "NpcBase", recruitData.NpcBase.ToString()),
                database.CreateColumn(false, "Species", recruitData.Species.ToString()),
                database.CreateColumn(false, "Sex", recruitData.Sex.ToString()),
                database.CreateColumn(false, "Shiny", recruitData.Shiny.ToString()),
                database.CreateColumn(false, "Form", recruitData.Form.ToString()),
                database.CreateColumn(false, "HeldItemSlot", recruitData.HeldItemSlot.ToString()),
                database.CreateColumn(false, "Level", recruitData.Level.ToString()),
                database.CreateColumn(false, "Experience", recruitData.Exp.ToString()),
                database.CreateColumn(false, "HP", recruitData.HP.ToString()),
                database.CreateColumn(false, "StatusAilment", recruitData.StatusAilment.ToString()),
                database.CreateColumn(false, "StatusAilmentCounter", recruitData.StatusAilmentCounter.ToString()),
                database.CreateColumn(false, "IQ", recruitData.IQ.ToString()),
                database.CreateColumn(false, "Belly", recruitData.Belly.ToString()),
                database.CreateColumn(false, "MaxBelly", recruitData.MaxBelly.ToString()),
                database.CreateColumn(false, "AttackBonus", recruitData.AtkBonus.ToString()),
                database.CreateColumn(false, "DefenseBonus", recruitData.DefBonus.ToString()),
                database.CreateColumn(false, "SpeedBonus", recruitData.SpeedBonus.ToString()),
                database.CreateColumn(false, "SpecialAttackBonus", recruitData.SpclAtkBonus.ToString()),
                database.CreateColumn(false, "SpecialDefenseBonus", recruitData.SpclDefBonus.ToString())
            });

            for (int i = 0; i < recruitData.Moves.Length; i++) {
                database.UpdateOrInsert("recruit_moves", new IDataColumn[] {
                    database.CreateColumn(false, "CharID", charID),
                    database.CreateColumn(false, "RecruitIndex", recruitIndex.ToString()),
                    database.CreateColumn(false, "UsingTempStats", recruitData.UsingTempStats.ToIntString()),
                    database.CreateColumn(false, "MoveSlot", i.ToString()),
                    database.CreateColumn(false, "MoveNum", recruitData.Moves[i].MoveNum.ToString()),
                    database.CreateColumn(false, "CurrentPP", recruitData.Moves[i].CurrentPP.ToString()),
                    database.CreateColumn(false, "MaxPP", recruitData.Moves[i].MaxPP.ToString()),
                    //database.CreateColumn(false, "Sealed", recruitData.Moves[i].Sealed.ToIntString()),
                });
            }

            // Delete extra statuses
            database.ExecuteNonQuery("DELETE FROM recruit_volatile_status WHERE CharID = \'" + charID + "\' " +
              "AND RecruitIndex = \'" + recruitIndex + "\' " +
              "AND StatusNum > " + (recruitData.VolatileStatus.Count - 1));
            // Update statuses
            for (int i = 0; i < recruitData.VolatileStatus.Count; i++) {
                database.UpdateOrInsert("recruit_volatile_status", new IDataColumn[] {
                    database.CreateColumn(false, "CharID", charID),
                    database.CreateColumn(false, "RecruitIndex", recruitIndex.ToString()),
                    database.CreateColumn(false, "UsingTempStats", recruitData.UsingTempStats.ToIntString()),
                    database.CreateColumn(false, "StatusNum", i.ToString()),
                    database.CreateColumn(false, "Name", recruitData.VolatileStatus[i].Name),
                    database.CreateColumn(false, "Emoticon", recruitData.VolatileStatus[i].Emoticon.ToString()),
                    database.CreateColumn(false, "Counter", recruitData.VolatileStatus[i].Counter.ToString()),
                    database.CreateColumn(false, "Tag", recruitData.VolatileStatus[i].Tag),
                });
            }
        }