예제 #1
0
        public static PartyData LoadCharacterParty(MySql database, string charID)
        {
            PartyData partyData = new PartyData();

            string query = "SELECT parties.PartyID " +
                "FROM parties " +
                "WHERE parties.CharID = \'" + charID + "\';";
            List<DataColumnCollection> rows = database.RetrieveRows(query);
            if (rows != null) {
                for (int i = 0; i < rows.Count; i++) {
                    partyData.PartyID = rows[i]["PartyID"].ValueString;
                }
            } else {
                return null;
            }

            query = "SELECT parties.CharID " +
                "FROM parties " +
                "WHERE parties.PartyID = \'" + partyData.PartyID + "\';";
            rows = database.RetrieveRows(query);
            if (rows != null) {
                for (int i = 0; i < rows.Count; i++) {
                    partyData.Members.Add(rows[i]["CharID"].ValueString);
                }
            }
            return partyData;
        }
예제 #2
0
 public static void LoadParty(MySql database, PartyData partyData)
 {
     string query = "SELECT parties.CharID " +
         "FROM parties " +
         "WHERE parties.PartyID = \'" + partyData.PartyID + "\';";
     List<DataColumnCollection> rows = database.RetrieveRows(query);
     if (rows != null) {
         for (int i = 0; i < rows.Count; i++) {
             partyData.Members.Add(rows[i]["CharID"].ValueString);
         }
     }
 }
예제 #3
0
    public static List <Character> GetSavedPlayerManager()
    {
        List <Character> playerManager = new List <Character>();

        var data = ReadBytesFromFile(Application.persistentDataPath + "/save/", "partyData.data");

        if (data != null)
        {
            PartyData partyData = DeserializeToType <PartyData>(data);

            playerManager = partyData.PartyCharacterData;
            foreach (var character in playerManager)
            {
                character.Equipment.Character = character;
            }
        }

        return(playerManager);
    }
예제 #4
0
    public static List <Character> GetSavedClanData()
    {
        List <Character> clan = new List <Character>();

        var data = ReadBytesFromFile(Application.persistentDataPath + "/save/", "partyData.data");

        if (data != null)
        {
            PartyData partyData = DeserializeToType <PartyData>(data);

            clan = partyData.ClanCharacterData;
            foreach (var character in clan)
            {
                character.Equipment.Character = character;
            }
        }

        return(clan);
    }
예제 #5
0
        public void DisplayPartyMemberData(int slot)
        {
            PartyData party = Players.PlayerManager.MyPlayer.Party;

            if (party != null)
            {
                PartyMember member = party.Members[slot];
                if (member != null)
                {
                    picMemberMugshot[slot].Image = Logic.Graphics.GraphicsManager.GetMugshot(member.MugshotNum, member.MugshotForm, (int)member.MugshotShiny, (int)member.MugshotGender).GetEmote(0);//Tools.CropImage(Logic.Graphics.GraphicsManager.Speakers, new Rectangle(((member.Mugshot - 1) % 15) * 40, ((member.Mugshot - 1) / 15) * 40, 40, 40));
                    lblMemberName[slot].Text     = member.Name;

                    pgbMemberHP[slot].Value  = MathFunctions.CalculatePercent(member.HP, member.MaxHP);
                    pgbMemberExp[slot].Value = (int)MathFunctions.CalculatePercent(member.Exp, member.MaxExp);

                    pgbMemberHP[slot].Text  = "HP: " + member.HP + "/" + member.MaxHP;
                    pgbMemberExp[slot].Text = "Exp: " + pgbMemberExp[slot].Percent + "%";

                    if (member.HP < member.MaxHP / 5)
                    {
                        pgbMemberHP[slot].BarColor = Color.Red;
                    }
                    else if (member.HP < member.MaxHP / 2)
                    {
                        pgbMemberHP[slot].BarColor = Color.Yellow;
                    }
                    else
                    {
                        pgbMemberHP[slot].BarColor = Color.Green;
                    }

                    ChangeSlotVisibility(slot, true);
                }
                else
                {
                    ChangeSlotVisibility(slot, false);
                }
            }
            else
            {
                ChangeSlotVisibility(slot, false);
            }
        }
 public bool Write(DAIIO io, bool skiplength = false)
 {
     try
     {
         if (!skiplength)
         {
             io.WriteBits(Length, LengthBits);
         }
         if (PartyData == null)
         {
             PartyData = new PartyData();
         }
         PartyData.Write(io);
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
예제 #7
0
    public void load()
    {
        foreach (Playable player in partyMembers)
        {
            player.load();
        }

        if (File.Exists(Application.persistentDataPath + "/PartyData.dat"))
        {
            BinaryFormatter bf   = new BinaryFormatter();
            FileStream      file = File.Open(Application.persistentDataPath + "/PartyData.dat", FileMode.Open);

            PartyData data = bf.Deserialize(file) as PartyData;
            file.Close();

            activeMembers = data.partyAvailable;

            fillCharacters(activeMembers);
        }
    }
예제 #8
0
    protected void Sure_Add(object sender, EventArgs e)
    {
        if (Request.QueryString["studentnum"] == null)
        {
            return;
        }

        string    studentnum = Request.QueryString["studentnum"].ToString();
        PartyData pd         = pidc.PartyData.FirstOrDefault(p => p.StudentNum == studentnum);

        if (pd != null)
        {
            if (RemovePlace.Text != "")
            {
                if (pd.RemovePlace == "")
                {
                    pd.RemovePlace = RemovePlace.Text;
                    pidc.SubmitChanges();
                    m.MessageBox(this, "档案转出成功");
                }
                else
                {
                    m.MessageBox(this, "档案已转出");
                }
            }
            else
            {
                m.MessageBox(this, "档案转出地不能为空");
            }
        }

        Record_Details rd = new Record_Details();

        rd.StudentNum       = studentnum;
        rd.Detail_Type      = 3;
        rd.Details_Contents = "档案转出到:" + RemovePlace.Text;
        rd.Operate          = DateTime.Now;
        rd.Operator         = m.Get_FieId_Data("Name", "PartyData", " where StudentNum='" + Session["StudentNum"].ToString() + "'");
        pidc.Record_Details.InsertOnSubmit(rd);
        pidc.SubmitChanges();
    }
예제 #9
0
        public static KPQStartResult TryStart(Character chr, PartyData pt)
        {
            var leader     = pt.Leader;
            var memberList = GetAvailablePartyMembers(pt).ToList();


            if (chr.PartyID == 0)
            {
                return(KPQStartResult.NOT_IN_PARTY);
            }
            else if (chr.ID != leader)
            {
                return(KPQStartResult.MUST_BE_LEADER);
            }
            else if (memberList.Count != 4)
            {
                return(KPQStartResult.PARTY_TOO_SMALL);
            }
            else if (_instance != null)
            {
                return(KPQStartResult.PARTY_INSIDE);
            }
            else
            {
                //check if all in same channel
                if (memberList.Any(x => Server.Instance.CharacterList.ContainsKey(x) == false))
                {
                    return(KPQStartResult.NOT_ALL_MEMBERS_PRESENT);
                }
                var characters = LoadCharactersFromParty(pt).ToList();

                if (!characters.TrueForAll(e => e.MapID == KerningCity.ID)) //check if all are in Kerning City
                {
                    return(KPQStartResult.NOT_ALL_MEMBERS_PRESENT);
                }

                _instance = new KPQ(chr, characters);
                characters.ForEach(m => m.ChangeMap(103000800, "st00")); //this is not in constructor to make timer appear properly
                return(KPQStartResult.SUCCESS);
            }
        }
예제 #10
0
    public static void SavePartyData(PartyInventory partyInventory, PlayerManager playerManager, ClanManager clanManager)
    {
        if (partyInventory == null || playerManager == null)
        {
            return;
        }
        PartyData partyData = new PartyData();

        partyData.PartyInventory = partyInventory.Inventory;
        partyData.Gold           = partyInventory.Gold;

        //Party characets
        if (playerManager != null)
        {
            //check if players are dead, if so remove them
            foreach (var character in playerManager.Characters)
            {
                if (!character.Alive)
                {
                    playerManager.RemoveCharacter(character);
                }
            }
            partyData.PartyCharacterData = playerManager.Characters;
        }
        else
        {
            partyData.PartyCharacterData = GetSavedPlayerManager();
        }

        if (clanManager != null)
        {
            partyData.ClanCharacterData = clanManager.SpareCharacterPool;
        }
        else
        {
            partyData.ClanCharacterData = GetSavedClanData();
        }

        SaveBytesToFile(Application.persistentDataPath + "/save/", "partyData.data", SerializeToBytes(partyData));
    }
예제 #11
0
    protected void login_click(object sender, EventArgs e)
    {
        string cookie = Request.Cookies["CheckCode"].Value.ToLower();

        if (cookie != "")
        {
            if (User_Account.Text != "" && Passwrod.Text != "" && VerificationCode.Text != "")
            {
                if (VerificationCode.Text.ToLower() == cookie)
                {
                    string    account  = User_Account.Text.Trim();
                    string    password = Passwrod.Text.Trim();
                    PartyData pd       = pidc.PartyData.FirstOrDefault(p => p.StudentNum == account && p.Password == m.MD5(password));
                    if (pd == null)
                    {
                        m.MessageBox(this, "账号和密码不正确");
                        return;
                    }
                    else
                    {
                        Session["StudentNum"] = account;
                        m.MessageBox_Redirect(this, "登陆成功", "Main.aspx");
                    }
                }
                else
                {
                    m.MessageBox(this, "验证码不正确");
                }
            }
            else if (User_Account.Text == "" || Passwrod.Text == "")
            {
                m.MessageBox(this, "账号密码不能为空");
                return;
            }
            else if (VerificationCode.Text == "")
            {
                m.MessageBox(this, "验证码不能为空");
            }
        }
    }
예제 #12
0
        public override async UniTask <PartyData> ReadParty(int id)
        {
            PartyData result = null;

            await ExecuteReader((reader) =>
            {
                if (reader.Read())
                {
                    result = new PartyData(id,
                                           reader.GetBoolean(0),
                                           reader.GetBoolean(1),
                                           reader.GetString(2));
                }
            }, "SELECT shareExp, shareItem, leaderId FROM party WHERE id=@id LIMIT 1",
                                new MySqlParameter("@id", id));

            // Read relates data if party exists
            if (result != null)
            {
                // Party members
                await ExecuteReader((reader) =>
                {
                    SocialCharacterData partyMemberData;
                    while (reader.Read())
                    {
                        // Get some required data, other data will be set at server side
                        partyMemberData               = new SocialCharacterData();
                        partyMemberData.id            = reader.GetString(0);
                        partyMemberData.dataId        = reader.GetInt32(1);
                        partyMemberData.characterName = reader.GetString(2);
                        partyMemberData.level         = reader.GetInt16(3);
                        result.AddMember(partyMemberData);
                    }
                }, "SELECT id, dataId, characterName, level FROM characters WHERE partyId=@id",
                                    new MySqlParameter("@id", id));
            }
            return(result);
        }
예제 #13
0
        void RunQuery()
        {
            if (noQuery)
            {
                return;
            }

            SelectedParty = null;

            if (queryIsRunning)
            {
                needRequery = true;
                return;
            }

            if (entryQuery.HasFocus)
            {
                Thread queryThread = new Thread(fillAutocomplete);
                queryThread.IsBackground = true;
                queryIsRunning           = true;
                queryThread.Start();
            }
        }
예제 #14
0
        /// <summary>
        /// Provides the latest party data. This will always be the latest party data update sent by the current party leader.
        /// </summary>
        /// <param name="partyData">The latest version of the party data sent by the party leader.</param>
        public static Result GetPartyData(out PartyData partyData)
        {
            var ptr    = IntPtr.Zero;
            var result = trail_ptk_get_party_data(SDK.Raw, out ptr);

            if (result.IsError())
            {
                partyData = new PartyData();
                return(result);
            }

            if (ptr == IntPtr.Zero)
            {
                partyData = new PartyData();
                return(Result.Ok);
            }

            var c = (PartyDataC)Marshal.PtrToStructure(ptr, typeof(PartyDataC));

            partyData = c.ToData;

            return(result);
        }
예제 #15
0
        private void buttonSaveParty_Click(object sender, EventArgs e)
        {
            textInputModal.Text = "Save Party";
            textInputModal.Label = "Enter a new party name or the same name to overwrite an existing party.";
            textInputModal.Value = (string)comboBoxSavedParties.SelectedItem;
            if (textInputModal.ShowDialog(this) != DialogResult.OK)
            {
                return;
            }

            PartyData data = new PartyData();

            for (int i = 0; i < 5; i++)
            {
                data.PartyMembers[i] = new Dictionary<string, uint>();
                GameData.DataBuddyInformation character = (GameData.DataBuddyInformation)characterBoxes[i].SelectedItem;
                if (character == null)
                {
                    continue;
                }
                data.PartyMembers[i]["characterId"] = character.BuddyId;
                data.PartyMembers[i]["weaponId"] = weaponBoxes[i].SelectedItem != null ? ((GameData.Party.DataEquipmentInformation)weaponBoxes[i].SelectedItem).InstanceId : 0;
                data.PartyMembers[i]["armorId"] = armorBoxes[i].SelectedItem != null ? ((GameData.Party.DataEquipmentInformation)armorBoxes[i].SelectedItem).InstanceId : 0;
                data.PartyMembers[i]["accessoryId"] = accessoryBoxes[i].SelectedItem != null ? ((GameData.Party.DataEquipmentInformation)accessoryBoxes[i].SelectedItem).InstanceId : 0;
                data.PartyMembers[i]["recordMateriaId"] = recordMateriaBoxes[i].SelectedItem != null ? ((DataRecordMateriaInformation)recordMateriaBoxes[i].SelectedItem).RecordMateriaId : 0;
                data.PartyMembers[i]["ability1Id"] = abilityBoxes[i * 2].SelectedItem != null ? ((GameData.Ability)abilityBoxes[i * 2].SelectedItem).AbilityId : 0;
                data.PartyMembers[i]["ability2Id"] = abilityBoxes[i * 2 + 1].SelectedItem != null ? ((GameData.Ability)abilityBoxes[i * 2 + 1].SelectedItem).AbilityId : 0;
                data.PartyMembers[i]["soulBreakId"] = soulBreakBoxes[i].SelectedItem != null ? ((GameData.SoulBreak)soulBreakBoxes[i].SelectedItem).SoulBreakId : 0;
            }
            data.RealmSynergy = RealmSynergy.SeriesId;
            data.Shout = checkBoxShout.Checked;
            data.HotE = checkBoxHotE.Checked;
            data.Focus = checkBoxFocus.Checked;
            data.Faith = checkBoxFaith.Checked;
            data.FullBreak = checkBoxFullBreak.Checked;
            data.ArmorBreakdown = checkBoxArmorBreakdown.Checked;
            data.MentalBreakdown = checkBoxMentalBreakdown.Checked;
            data.ArmorBreakResistant = checkBoxArmorBreakResistant.Checked;
            data.MentalBreakResistant = checkBoxMentalBreakResistant.Checked;
            data.BanishingBlade = checkBoxBanishingBlade.Checked;
            data.EnemyDef = textBoxEnemyDef.Text;
            data.EnemyRes = textBoxEnemyRes.Text;
            foreach (DataGridViewRow row in dataGridViewBossElementReactions.Rows)
            {
                data.ElementalVulnerabilities[(ushort)row.Cells[ElementColumn.Name].Tag] = (ElementAdvantage)row.Cells[VulnerabilityColumn.Name].Value;
            }

            string partyName = textInputModal.Value;
            savedPartyData[partyName] = data;
            WriteSavedPartiesFile(partyName);
        }
예제 #16
0
    protected void application_pass_click(object sender, EventArgs e)
    {
        if (m.Get_FieId_Data("Power_NO", "Personal_Data", " where StudentNum='" + Session["StudentNum"].ToString() + "'") != "003")
        {
            int         id = Convert.ToInt32(Request.QueryString["id"]);
            Update_Data ud = pidc.Update_Data.FirstOrDefault(p => p.ID == id);
            if (ud != null)
            {
                if (ud.Update_Status == 0)
                {
                    if (ud.Update_Type == 1)
                    {
                        PartyData pd = pidc.PartyData.FirstOrDefault(p => p.StudentNum == ud.Update1);
                        #region  个人信息新盖审核
                        if (pd != null)
                        {
                            pd.PlaceOfOrigin = ud.Update2;
                            pd.Telephone     = ud.Update3;
                            pd.Address       = ud.Update4;
                            ud.Update_Time   = DateTime.Now;
                            ud.Update_Remark = Remark.Text;
                            ud.Audit_Person  = m.Get_FieId_Data("name", "PartyData", " where studentnum='" + ud.Update1 + "'");
                            ud.Update_Status = 1;
                            pidc.SubmitChanges();
                            m.MessageBox(this, "审核通过");
                        }
                        #endregion
                    }
                    #region  密码申诉审核
                    else if (ud.Update_Type == 3)
                    {
                        PartyData pd = pidc.PartyData.FirstOrDefault(p => p.StudentNum == ud.Update1);
                        if (pd != null)
                        {
                            ud.Update_Time   = DateTime.Now;
                            pd.Password      = ud.Update3;
                            ud.Update_Remark = Remark.Text;
                            ud.Audit_Person  = m.Get_FieId_Data("name", "PartyData", " where studentnum='" + ud.Update1 + "'");
                            ud.Update_Status = 1;
                            pidc.SubmitChanges();
                            m.MessageBox(this, "审核通过");
                        }
                    }
                    #endregion

                    #region  党员考核
                    else if (ud.Update_Type == 4)
                    {
                        PartyStatus ps = pidc.PartyStatus.FirstOrDefault(p => p.StudentNum == ud.Update1);
                        if (ps != null)
                        {
                            if (ps.AuditTime1 != null)
                            {
                                ps.AuditTime1    = ud.Review_Time;
                                ps.Auditor1      = ud.Audit_Person;
                                ps.AuditOpinion1 = Remark.Text;
                                if (ud.Update2 != "正式党员")
                                {
                                    ps.MemberStatus_NO = (Convert.ToInt32(m.Get_FieId_Data("TypeNO", "Category", " where TypeName='" + ud.Update2 + "'")) - 1).ToString();
                                }

                                ud.Update_Time = DateTime.Now;

                                ud.Update_Remark = Remark.Text;
                                //ud.Audit_Person = m.Get_FieId_Data("name", "PartyData", " where studentnum='" + ud.Update1 + "'");
                                ud.Update_Status = 1;
                                pidc.SubmitChanges();
                                m.MessageBox(this, "审核通过");
                            }
                            else
                            {
                                if (ps.AuditTime2 != null)
                                {
                                    ps.AuditTime2    = ud.Review_Time;
                                    ps.Auditor2      = ud.Audit_Person;
                                    ps.AuditOpinion2 = Remark.Text;
                                    if (ud.Update2 != "正式党员")
                                    {
                                        ps.MemberStatus_NO = (Convert.ToInt32(m.Get_FieId_Data("TypeNO", "Category", " where TypeName='" + ud.Update2 + "'")) - 1).ToString();
                                    }

                                    ud.Update_Time = DateTime.Now;

                                    ud.Update_Remark = Remark.Text;
                                    //ud.Audit_Person = m.Get_FieId_Data("name", "PartyData", " where studentnum='" + ud.Update1 + "'");
                                    ud.Update_Status = 1;
                                    pidc.SubmitChanges();
                                    m.MessageBox(this, "审核通过");
                                }
                                else
                                {
                                    if (ps.AuditTime3 != null)
                                    {
                                        ps.AuditTime3    = ud.Review_Time;
                                        ps.Auditor3      = ud.Audit_Person;
                                        ps.AuditOpinion3 = Remark.Text;
                                        if (ud.Update2 != "正式党员")
                                        {
                                            ps.MemberStatus_NO = (Convert.ToInt32(m.Get_FieId_Data("TypeNO", "Category", " where TypeName='" + ud.Update2 + "'")) - 1).ToString();
                                        }

                                        ud.Update_Time = DateTime.Now;

                                        ud.Update_Remark = Remark.Text;
                                        //ud.Audit_Person = m.Get_FieId_Data("name", "PartyData", " where studentnum='" + ud.Update1 + "'");
                                        ud.Update_Status = 1;
                                        pidc.SubmitChanges();
                                        m.MessageBox(this, "审核通过");
                                    }
                                }
                            }
                        }
                    }
                    #endregion

                    #region    资料审核
                    if (ud.Update_Type == 5)
                    {
                        ud.Update_Status = 1;
                        ud.Audit_Person  = m.Get_FieId_Data("name", "PartyData", " where studentnum='" + Session["studentnum"].ToString() + "'");
                        ud.Update_Remark = Remark.Text;
                        Datum d = pidc.Datum.FirstOrDefault(p => p.Datum_ID == Convert.ToInt32(ud.Update3));
                        if (d != null)
                        {
                            d.Audit_State = 1;
                        }
                        pidc.SubmitChanges();

                        m.MessageBox(this, "审核通过");
                    }
                    #endregion
                }
                else
                {
                    m.MessageBox(this, "只能审核未审核的");
                }
            }
        }
    }
예제 #17
0
        protected static void SetAdditionalData(Broker entity)
        {
            var party = PartyData.PostBasicEntity();

            entity.Party = party.ToMdmId().ToEntityId();
        }
예제 #18
0
 public void Deserialize(NetDataReader reader)
 {
     PartyData = reader.GetValue <PartyData>();
 }
예제 #19
0
 void Completion_MatchSelected(object o, MatchSelectedArgs args)
 {
     SelectedParty = (PartyData)args.Model.GetValue(args.Iter, 0);
     args.RetVal   = true;
 }
예제 #20
0
 private string MailAddressField(PartyData party)
 {
     return(party.MailAddress);
 }
예제 #21
0
 internal RentalAgreementTextBuilder SetManager(PartyData manager)
 {
     this.manager = manager;
     return(this);
 }
예제 #22
0
 public static void DeleteParty(MySql database, PartyData partyData)
 {
     database.ExecuteNonQuery("DELETE FROM parties WHERE PartyID = \'" + partyData.PartyID + "\'");
 }
예제 #23
0
 private static IEnumerable <Character> LoadCharactersFromParty(PartyData pt)
 {
     return(GetAvailablePartyMembers(pt)
            .Where(m => Server.Instance.CharacterList.ContainsKey(m))
            .Select(m => Server.Instance.CharacterList[m]));
 }
 public PartyDataC(PartyData data)
 {
     count  = data.Count;
     fields = Common.NewStructArray <PartyDataField, PartyDataField>(data.fields, (i, x) => x);
 }
예제 #25
0
 public static IEnumerator SpawnBattleRoutine(PartyData enemyData, string bgmTag = null)
 {
     return(SpawnBattleRoutine(new Party(enemyData), bgmTag));
 }
예제 #26
0
        public override void AC_OnPacketInbound(Packet packet)
        {
            ISServerMessages msg = (ISServerMessages)packet.ReadByte();

            ////Console.WriteLine("received centerserver message: " + msg);
            try
            {
                switch (msg)
                {
                case ISServerMessages.Pong:
                case ISServerMessages.Ping: break;

                case ISServerMessages.ChangeCenterServer:
                {
                    var ip   = packet.ReadBytes(4);
                    var port = packet.ReadUShort();
                    disconnectExpected              = true;
                    Server.Instance.CenterIP        = new IPAddress(ip);
                    Server.Instance.CenterPort      = port;
                    Server.Instance.CenterMigration = true;
                    Disconnect();
                    break;
                }

                case ISServerMessages.ChangeRates:
                {
                    double mobexprate      = packet.ReadDouble();
                    double mesosamountrate = packet.ReadDouble();
                    double dropchancerate  = packet.ReadDouble();

                    if (mobexprate > 0 && mobexprate != Server.Instance.RateMobEXP)
                    {
                        Server.Instance.RateMobEXP = mobexprate;
                        Program.MainForm.LogAppend("Changed EXP Rate to {0}", mobexprate);
                    }
                    if (mesosamountrate > 0 && mesosamountrate != Server.Instance.RateMesoAmount)
                    {
                        Server.Instance.RateMesoAmount = mesosamountrate;
                        Program.MainForm.LogAppend("Changed Meso Rate to {0}", mesosamountrate);
                    }
                    if (dropchancerate > 0 && dropchancerate != Server.Instance.RateDropChance)
                    {
                        Server.Instance.RateDropChance = dropchancerate;
                        Program.MainForm.LogAppend("Changed Drop Rate to {0}", dropchancerate);
                    }

                    var currentDateTime = MasterThread.CurrentDate;
                    Server.Instance.CharacterList.ForEach(x => x.Value?.SetIncExpRate(currentDateTime.Day, currentDateTime.Hour));

                    SendUpdateRates();
                    break;
                }

                case ISServerMessages.WSE_ChangeScrollingHeader:
                {
                    var str        = packet.ReadString();
                    var newIsEmpty = string.IsNullOrEmpty(str);
                    var oldIsEmpty = string.IsNullOrEmpty(Server.Instance.ScrollingHeader);

                    // Do not update if there's already a message running
                    if ((newIsEmpty && !oldIsEmpty) ||
                        (!newIsEmpty && oldIsEmpty))
                    {
                        Server.Instance.SetScrollingHeader(str);
                    }

                    break;
                }

                case ISServerMessages.ReloadNPCScript:
                {
                    var scriptName = packet.ReadString();

                    Program.MainForm.LogAppend("Processing reload npc script request... Script: " + scriptName);

                    Server.Instance.ForceCompileScriptfile(
                        Server.Instance.GetScriptFilename(scriptName),
                        null
                        );
                    break;
                }

                case ISServerMessages.ServerAssignmentResult:
                {
                    var inMigration = Server.Instance.InMigration = packet.ReadBool();
                    Server.Instance.ID = packet.ReadByte();

                    GlobalContext.Properties["ChannelID"] = Server.Instance.ID;

                    if (inMigration)
                    {
                        Program.MainForm.LogAppend("Server Migration in process...");
                        Server.Instance.IsNewServerInMigration = true;
                    }
                    else if (!Server.Instance.CenterMigration)
                    {
                        Server.Instance.StartListening();

                        Program.MainForm.LogAppend($"Handling as Game Server {Server.Instance.ID} on World {Server.Instance.WorldID} ({Server.Instance.WorldName})");
                    }
                    else
                    {
                        Program.MainForm.LogAppend("Reconnected to center server?");
                    }

                    Server.Instance.CenterMigration = false;
                    break;
                }

                case ISServerMessages.ServerMigrationUpdate:
                {
                    var pw = new Packet(ISClientMessages.ServerMigrationUpdate);
                    switch ((ServerMigrationStatus)packet.ReadByte())
                    {
                    case ServerMigrationStatus.StartListening:
                    {
                        Server.Instance.StartListening();
                        pw.WriteByte((byte)ServerMigrationStatus.DataTransferRequest);
                        SendPacket(pw);
                        break;
                    }

                    case ServerMigrationStatus.DataTransferRequest:
                    {
                        pw.WriteByte((byte)ServerMigrationStatus.DataTransferResponse);

                        using (var uncompressedPacket = new Packet())
                        {
                            var mapsWithDrops =
                                DataProvider.Maps.Where(x => x.Value.DropPool.Drops.Count > 0)
                                .ToArray();
                            uncompressedPacket.WriteInt(mapsWithDrops.Length);
                            foreach (var map in mapsWithDrops)
                            {
                                uncompressedPacket.WriteInt(map.Key);
                                map.Value.DropPool.EncodeForMigration(uncompressedPacket);
                            }

                            PartyData.EncodeForTransfer(uncompressedPacket);

                            uncompressedPacket.GzipCompress(pw);

                            Program.MainForm.LogAppend("Sent " + mapsWithDrops.Length + " map updates... (packet size: " + pw.Length + " bytes)");
                        }

                        SendPacket(pw);
                        break;
                    }

                    case ServerMigrationStatus.DataTransferResponse:
                    {
                        using (var gzipStream = new GZipStream(packet.MemoryStream, CompressionMode.Decompress))
                            using (var decompressedPacket = new Packet(gzipStream))
                            {
                                var maps = decompressedPacket.ReadInt();
                                for (var i = 0; i < maps; i++)
                                {
                                    var mapid = decompressedPacket.ReadInt();
                                    DataProvider.Maps[mapid].DropPool
                                    .DecodeForMigration(decompressedPacket);
                                }

                                if (decompressedPacket.Length != decompressedPacket.Position)
                                {
                                    PartyData.DecodeForTransfer(decompressedPacket);
                                }

                                Program.MainForm.LogAppend("Updated " + maps + " maps...");
                            }

                        pw.WriteByte((byte)ServerMigrationStatus.FinishedInitialization);
                        SendPacket(pw);
                        break;
                    }

                    case ServerMigrationStatus.FinishedInitialization:
                    {
                        Program.MainForm.LogAppend("Other side is ready, start CC. Connections: " + Pinger.CurrentLoggingConnections);

                        int timeout = 15;

                        var  startTime           = MasterThread.CurrentTime;
                        bool sentPacket          = false;
                        bool disconnectedPlayers = false;
                        MasterThread.RepeatingAction.Start(
                            "Client Migration Thread",
                            date =>
                                {
                                    if (Pinger.CurrentLoggingConnections == 0 ||
                                        (date - startTime) > timeout * 1000)
                                    {
                                        Program.MainForm.LogAppend($"Almost done. Connections left: {Pinger.CurrentLoggingConnections}, timeout {(date - startTime) > timeout * 1000}");
                                        if (sentPacket == false)
                                        {
                                            var _pw = new Packet(ISClientMessages.ServerMigrationUpdate);
                                            _pw.WriteByte((byte)ServerMigrationStatus.PlayersMigrated);
                                            SendPacket(_pw);
                                            sentPacket = true;
                                            Program.MainForm.LogAppend("Sent Migration Done packet");
                                        }
                                        else
                                        {
                                            Program.MainForm.Shutdown();
                                        }
                                    }
                                    else if (!disconnectedPlayers)
                                    {
                                        Server.Instance.PlayerList.ForEach(x =>
                                        {
                                            if (x.Value.Character == null)
                                            {
                                                return;
                                            }
                                            try
                                            {
                                                x.Value.Character.CleanupInstances();
                                                x.Value.Socket.DoChangeChannelReq(Server.Instance.ID);
                                            }
                                            catch { }
                                        });
                                        disconnectedPlayers = true;
                                    }
                                    else
                                    {
                                        Program.MainForm.LogAppend("Waiting for DC...");
                                    }
                                },
                            0,
                            5000
                            );
                        break;
                    }

                    case ServerMigrationStatus.PlayersMigrated:
                    {
                        Server.Instance.InMigration = false;
                        Program.MainForm.LogAppend("Other server is done");
                        break;
                    }

                    case ServerMigrationStatus.StartMigration:
                    {
                        Server.Instance.InMigration            = true;
                        Server.Instance.IsNewServerInMigration = false;
                        Program.MainForm.LogAppend("Started migration to new server");
                        Server.Instance.StopListening();
                        pw.WriteByte((byte)ServerMigrationStatus.StartListening);
                        SendPacket(pw);
                        break;
                    }
                    }
                    break;
                }

                default:
                    if (!TryHandlePartyPacket(packet, msg) &&
                        !TryHandlePlayerPacket(packet, msg))
                    {
                        Program.MainForm.LogAppend("UNKOWN CENTER PACKET: " + packet);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                Program.MainForm.LogAppend(ex + "\r\nPACKET: " + packet);
            }
        }
예제 #27
0
 private string KnownAsField(PartyData party)
 {
     return(party.KnownAs);
 }
예제 #28
0
 private static IEnumerable <int> GetAvailablePartyMembers(PartyData pt)
 {
     return(pt.Members.Where(x => x != 0));
 }
예제 #29
0
        private void Dadataload(int ld_pk, string restxt)
        {
            string        cnstr = Program.AppConfig["mscns"];
            SqlConnection cn    = new SqlConnection(cnstr);

            cn.Open();
            string     sqlerr = "update cntload set ld_status = @ld_status, stopdate = getdate()  where ld_pk = @ld_pk";
            SqlCommand cmderr = new SqlCommand(sqlerr, cn);

            try
            {
                string sql = "insert into cntload_detail (ls_ld,  ls_inn,  ls_status,  ls_actuality_date, ls_type, ls_full_with_opf,  ls_short_with_opf, ls_load_status) " +
                             " values (@ls_ld,  @ls_inn,  @ls_status,  @ls_actuality_date, @ls_type, @ls_full_with_opf,  @ls_short_with_opf, @ls_load_status) ";
                SqlCommand cmd  = new SqlCommand(sql, cn);
                dadataINN  di   = new dadataINN();
                string[]   inns = restxt.Split("\n", StringSplitOptions.None);
                for (int i = 1; i < inns.Length; i++)
                {
                    string    inn            = inns[i].Trim();
                    string    ls_load_status = "";
                    PartyData pdata          = null;
                    try
                    {
                        pdata = di.exec(inn);
                        if (pdata == null)
                        {
                            ls_load_status = "Не найдено";
                        }
                    }
                    catch (Exception ee)
                    {
                        ls_load_status = ee.Message;
                    }
                    string ls_status         = "";
                    string ls_actuality_date = "";
                    string ls_type           = "";
                    string ls_full_with_opf  = "";
                    string ls_short_with_opf = "";
                    if (pdata != null)
                    {
                        ls_status = pdata.state.status.ToString();

                        if (pdata.state.actuality_date_fmt != null)
                        {
                            ls_actuality_date = pdata.state.actuality_date_fmt;
                        }

                        ls_type = pdata.type.ToString();

                        if (pdata.name.full_with_opf != null)
                        {
                            ls_full_with_opf = pdata.name.full_with_opf;
                        }

                        if (pdata.name.short_with_opf != null)
                        {
                            ls_short_with_opf = pdata.name.short_with_opf;
                        }
                    }
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@ls_ld", ld_pk);
                    cmd.Parameters.AddWithValue("@ls_inn", inn + "/");
                    cmd.Parameters.AddWithValue("@ls_status", ls_status);
                    cmd.Parameters.AddWithValue("@ls_actuality_date", ls_actuality_date);
                    cmd.Parameters.AddWithValue("@ls_type", ls_type);
                    cmd.Parameters.AddWithValue("@ls_full_with_opf", ls_full_with_opf);
                    cmd.Parameters.AddWithValue("@ls_short_with_opf", ls_short_with_opf);
                    cmd.Parameters.AddWithValue("@ls_load_status", ls_load_status);
                    cmd.ExecuteNonQuery();
                    //Thread.Sleep(1050);
                }
                cmderr.Parameters.AddWithValue("ld_pk", ld_pk);
                cmderr.Parameters.AddWithValue("ld_status", "OK");
                cmderr.ExecuteNonQuery();
                cn.Close();
            }
            catch (Exception ex)
            {
                cmderr.Parameters.AddWithValue("ld_pk", ld_pk);
                cmderr.Parameters.AddWithValue("ld_status", ex.Message);
                cmderr.ExecuteNonQuery();
                cn.Close();
            }
        }
예제 #30
0
        private void Dadataupdate()
        {
            string         cnstr  = Program.AppConfig["mscns"];
            string         sql0   = "select  * from v_not_cntdadata";
            SqlDataAdapter da     = new SqlDataAdapter(sql0, cnstr);
            DataTable      resTab = new DataTable();

            da.Fill(resTab);
            SqlConnection cn = new SqlConnection(cnstr);

            cn.Open();
            try
            {
                string sql = "insert into cntdadata (contractor_id,  ls_inn,  ls_status,  ls_actuality_date, ls_type, ls_full_with_opf,  ls_short_with_opf, ls_load_status) " +
                             " values (@ls_ld,  @ls_inn,  @ls_status,  @ls_actuality_date, @ls_type, @ls_full_with_opf,  @ls_short_with_opf, @ls_load_status) ";
                SqlCommand cmd = new SqlCommand(sql, cn);
                dadataINN  di  = new dadataINN();

                for (int i = 0; i < resTab.Rows.Count; i++)
                {
                    if (!Program.FlagDadataUpdate)
                    {
                        break;
                    }
                    string    inn            = resTab.Rows[i]["contractor_inn"].ToString().Trim();
                    string    ls_load_status = "";
                    PartyData pdata          = null;
                    try
                    {
                        pdata = di.exec(inn);
                        if (pdata == null)
                        {
                            ls_load_status = "Не найдено";
                        }
                    }
                    catch (Exception ee)
                    {
                        ls_load_status = ee.Message;
                    }
                    string ls_status         = "";
                    string ls_actuality_date = "";
                    string ls_type           = "";
                    string ls_full_with_opf  = "";
                    string ls_short_with_opf = "";
                    if (pdata != null)
                    {
                        ls_status = pdata.state.status.ToString();

                        if (pdata.state.actuality_date_fmt != null)
                        {
                            ls_actuality_date = pdata.state.actuality_date_fmt;
                        }

                        ls_type = pdata.type.ToString();

                        if (pdata.name.full_with_opf != null)
                        {
                            ls_full_with_opf = pdata.name.full_with_opf;
                        }

                        if (pdata.name.short_with_opf != null)
                        {
                            ls_short_with_opf = pdata.name.short_with_opf;
                        }
                    }
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@ls_ld", resTab.Rows[i]["contractor_id"]);
                    cmd.Parameters.AddWithValue("@ls_inn", inn);
                    cmd.Parameters.AddWithValue("@ls_status", ls_status);
                    cmd.Parameters.AddWithValue("@ls_actuality_date", ls_actuality_date);
                    cmd.Parameters.AddWithValue("@ls_type", ls_type);
                    cmd.Parameters.AddWithValue("@ls_full_with_opf", ls_full_with_opf);
                    cmd.Parameters.AddWithValue("@ls_short_with_opf", ls_short_with_opf);
                    cmd.Parameters.AddWithValue("@ls_load_status", ls_load_status);
                    cmd.ExecuteNonQuery();
                    Thread.Sleep(2000);
                }
                Program.FlagDadataUpdate = false;
                cn.Close();
            }
            catch
            {
                Program.FlagDadataUpdate = false;
                cn.Close();
            }
        }
예제 #31
0
 internal RentalAgreementTextBuilder SetLandord(PartyData landlord)
 {
     this.landlord = landlord;
     return(this);
 }
예제 #32
0
    // Start is called before the first frame update
    void Start()
    {
        healCharges   = 3;
        reviveCharges = 1;
        loseBoard.SetActive(false);
        winBoard.SetActive(false);
        int       i  = 0;
        PartyData pd = SaveSystem.GetPartyData();

        Debug.Log("loading " + pd.members.Count + " members");
        foreach (MemberData md in pd.members)
        {
            GameObject mirage = Instantiate(characterPrefab, characterPlace);
            mirage.transform.localPosition = new Vector2((i - 1) * 2, 1 - i);
            SpriteHandler msh = mirage.GetComponent <SpriteHandler>();
            BattleEntity  be  = mirage.GetComponent <BattleEntity>();
            be.stats = md.stats;
            #region adding character traits
            //job trait
            switch (md.jobTraitIndex)
            {
            case 0:
                be.traits.Add(tl.traits[0]);
                be.attackMethod = AttackMethod.attackSingle;
                msh.body.sprite = bodySprites[0];
                break;

            case 1:
                be.traits.Add(tl.traits[1]);
                be.attackMethod = AttackMethod.Heal;
                msh.body.sprite = bodySprites[1];
                break;

            case 2:
                be.traits.Add(tl.traits[2]);
                be.attackMethod = AttackMethod.attackAll;
                msh.body.sprite = bodySprites[2];
                break;

            case 3:
                be.traits.Add(tl.traits[6]);
                be.attackMethod = AttackMethod.attackSingle;
                msh.body.sprite = bodySprites[3];
                break;
            }

            //race trait
            switch (md.raceTraitIndex)
            {
            case 0:
                be.traits.Add(tl.traits[3]);
                msh.head.sprite = headSprites[0];
                break;

            case 1:
                be.traits.Add(tl.traits[4]);
                msh.head.sprite = headSprites[1];
                break;

            case 2:
                be.traits.Add(tl.traits[5]);
                msh.head.sprite = headSprites[2];
                break;
            }
            #endregion
            be.hp = be.GetTraitMultiplier(StatTypes.maxHp, be.stats.maxHp);

            GameObject  barSet = Instantiate(statusBarPrefab, HUDBar);
            StatHandler sh     = barSet.GetComponent <StatHandler>();
            be.timeScaler = sh.timeScaler;
            be.hpScaler   = sh.healthScaler;

            be.hpScaler.maxValue   = be.GetTraitMultiplier(StatTypes.maxHp, be.stats.maxHp);
            be.timeScaler.maxValue = 5;
            sh.barText.text        = md.memberName;
            i++;
            be.bm = bm;



            bm.allies.Add(be);
        }
    }
예제 #33
0
        public static void SaveParty(MySql database, PartyData partyData)
        {
            database.ExecuteNonQuery("DELETE FROM parties WHERE PartyID = \'" + partyData.PartyID + "\'");
            //database.DeleteRow("friends", "CharID = \'" + playerData.CharID + "\'");

            for (int i = 0; i < partyData.Members.Count; i++) {
                database.UpdateOrInsert("parties", new IDataColumn[] {
                    database.CreateColumn(false, "PartyID", partyData.PartyID),
                    database.CreateColumn(false, "PartySlot", i.ToString()),
                    database.CreateColumn(false, "CharID", partyData.Members[i])
                });
            }
        }
예제 #34
0
 /// <summary>
 /// How many dead party members there are.
 /// </summary>
 /// <returns>&gt;=0</returns>
 public int DeadPartyMembers() =>
 PartyData?.Count(m => m != OpenVIII.Characters.Blank && Characters[m].IsDead) ?? 0;
예제 #35
0
 public OpponentInfo(PartyData data)
 {
     name   = data.Name;
     trophy = data.Trophy;
 }