public ZoneIn(Player player, Zone zone, ushort sync) { id = 0x00A; size = 0x82; // Player Info data.Set <uint>(0x04, player.PlayerId); data.Set <uint>(0x08, player.BaseInfo.TargetId); data.Set <byte[]>(0x0B, Utility.Serialize(player.MoveInfo)); data.Set <byte[]>(0x1E, Utility.Serialize(player.DisplayInfo)); data.Set <uint>(0x20, player.NameFlags.flags); byte dbyte = data.GetByte(0x21); byte val21 = (byte)(dbyte | (byte)(player.Gender * 128 + (1 << player.Look.Size))); data.Set <byte>(0x21, val21); // Zone Animation Info data.Set <byte>(0x27, zone.AnimationInfo.direction); // TODO: apparently this is actually a uint written at 0x24, but for now... data.Set <byte>(0x28, 0x01); data.Set <byte>(0x2A, zone.AnimationInfo.animation); // Zone Info data.Set <ushort>(0x30, zone.ZoneId); data.Set <uint>(0x38, Utility.Timestamp()); data.Set <uint>(0x3C, VanaTime.GetInstance().VanaDate); Complete(); }
private void MoonPhaseForm_Load(object sender, EventArgs e) { this.Icon = Icon.FromHandle(Resources.IMAGE_MOON02.GetHicon()); var v1 = new VanaTime() { Year = api.VanaTime.CurrentYear, Month = api.VanaTime.CurrentMonth, Day = api.VanaTime.CurrentDay, Hour = api.VanaTime.CurrentHour, Minute = api.VanaTime.CurrentMinute, Second = api.VanaTime.CurrentSecond, }; MoonPhase lastMoonPhase = EliteAPIControl.GetMoonPhaseFromVanaTime(v1); for (int i = 0; i <= 4; i++) { gridMoonPhase.Columns[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; gridMoonPhase.Columns[i].HeaderCell.Style.Font = new Font(gridMoonPhase.Font, gridMoonPhase.Font.Style | FontStyle.Bold); } MoonPhase last = EliteAPIControl.GetMoonPhaseFromVanaTime(v1); for (int i = 0; i < 360; i++) { var v2 = EliteAPIControl.addVanaDay(v1, i); MoonPhase m = EliteAPIControl.GetMoonPhaseFromVanaTime(v2); if (last != m) { gridMoonPhase.Rows.Add(); gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].Cells[0].Value = EliteAPIControl.GetEarthTimeFromVanaTime(v2).ToString("yyyy/MM/dd HH:mm"); gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].Cells[1].Value = string.Format("{0:0000}/{1:00}/{2:00}", v2.Year, v2.Month, v2.Day); gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].Cells[2].Value = MainForm.dicWeekDayImage[EliteAPIControl.GetWeekdayFromVanaTime(v2)]; gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].Cells[3].Value = MainForm.dicMoonPhaseImage[m]; gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].Cells[4].Value = MainForm.dicMoonPhaseName[m]; //行の色変更 gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].DefaultCellStyle.ForeColor = Color.Black; gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].DefaultCellStyle.SelectionForeColor = Color.Black; if (m == MoonPhase.New || m == MoonPhase.Full) { gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].DefaultCellStyle.BackColor = Color.FromArgb(0x80, 0xFF, 0xFF); gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].DefaultCellStyle.SelectionBackColor = Color.FromArgb(0x80, 0xFF, 0xFF); } else if (m == MoonPhase.FirstQuarter || m == MoonPhase.LastQuarter) { gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].DefaultCellStyle.BackColor = Color.LightGray; gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].DefaultCellStyle.SelectionBackColor = Color.LightGray; } else { gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].DefaultCellStyle.BackColor = Color.White; gridMoonPhase.Rows[gridMoonPhase.Rows.Count - 1].DefaultCellStyle.SelectionBackColor = Color.White; } } last = m; } }
static void Main(string[] args) { string packetData = "1510C5122B8697C36C76FCBFA69BFC4300000300EC005201873F7B7800000000"; byte[] packetBytes = Utility.StringToByteArray(packetData); Player testPlayer = new Player(); bool success = ClientUpdate.Instance.Handler(testPlayer, packetBytes); VanaTime.TYPE t = VanaTime.GetInstance().Sync(); uint d = VanaTime.GetInstance().VanaDate; uint month = VanaTime.GetInstance().Month; uint day = VanaTime.GetInstance().Day; uint year = VanaTime.GetInstance().Year; uint hour = VanaTime.GetInstance().Hour; uint minute = VanaTime.GetInstance().Minute; Logger.SetLoggingLevel(LOGGINGLEVEL.ALL); //ConfigHandler.ReadConfigs(); SessionHandler.Initialize(); Logger.Info("Session Handler Initialized"); //// TODO: change how configurations are loaded AuthServer.Initialize("127.0.0.1", 54231); Logger.Info("Auth Server Initialized"); ViewServer.Initialize("127.0.0.1", 54001); Logger.Info("View Server Initialized"); DataServer.Initialize("127.0.0.1", 54230); Logger.Info("Data Server Initialized"); //ActiveSession ass = new ActiveSession() //{ // AccountID = 1234, // PlayerID = 4321, // EndPoint = "127.0.0.1:50301", // CurrentZoneID = 245, // NextZoneID = 245, // Zoning = 0, // SessionHash = "000000000000000000000000000000005CE05DAD" //}; //DBClient.InsertOne(DBREQUESTTYPE.ACTIVESESSION, ass); //DBClient.UpdateOne<ActiveSession>(DBREQUESTTYPE.ACTIVESESSION, a => a.AccountID == 1234, new Dictionary<string, object> { { "CurrentZoneID", 206} }); //DBClient.DeleteOne<ActiveSession>(DBREQUESTTYPE.ACTIVESESSION, a => a.AccountID == 1234); //long updated = DBClient.UpdateOne<Account>(DBREQUESTTYPE.ACCOUNT,a => a.AccountId == 1001,new Dictionary<string, object>() { {"PlayerVars.Test", 5 } } ); //Console.WriteLine(updated); }
} // @ public byte GetAbilityID(byte index) /// <summary> /// Gets the current Vana'Diel time information /// </summary> public VanaTime GetVanaTime() { // get the server time (in seconds) long baseTime = (long)GetVanaUTC(_InstanceID); // calculate the difference between server time and // 1/1/1970 00:00:00 unix time -> "Vana'Diel time in seconds" long timeInSeconds = ((long)baseTime + 92514960) * 25; // how many days decimal dayOfYear = Math.Floor((decimal)(timeInSeconds / (decimal)86400)); VanaTime vanaTime = new VanaTime(); vanaTime.DayType = (Weekday)(dayOfYear % 8); vanaTime.Day = (byte)((dayOfYear % 30) + 1); vanaTime.Month = (byte)(((dayOfYear % 360) / 30) + 1); vanaTime.Year = (short)(dayOfYear / 360); vanaTime.Hour = (byte)((timeInSeconds / 3600) % 24); vanaTime.Minute = (byte)((timeInSeconds / 60) % 60); // can't floor on a long, so need to shrink it first vanaTime.Second = (byte)((timeInSeconds - (System.Math.Floor((decimal)(timeInSeconds / 60)) * 60))); // calculate moon phase/percent decimal moonPhase = (dayOfYear + (decimal)26) % 84; // calculate moon percent decimal moonPercent = (((42 - moonPhase) * 100) / 42); if (0 > moonPercent) { moonPercent = Math.Abs(moonPercent); } // get final moon percent vanaTime.MoonPercent = (byte)Math.Floor((moonPercent + (decimal)0.5)); // get final moon phase if (38 <= moonPhase) { vanaTime.MoonPhase = (MoonPhase)Math.Floor((moonPhase - (decimal)38) / (decimal)7); } else { vanaTime.MoonPhase = (MoonPhase)Math.Floor((moonPhase + (decimal)46) / (decimal)7); } return(vanaTime); } // @ public VanaTime GetVanaTime()
} // @ public byte GetAbilityID(byte index) /// <summary> /// Gets the current Vana'Diel time information /// </summary> public VanaTime GetVanaTime () { // get the server time (in seconds) long baseTime = (long)GetVanaUTC(_InstanceID); // calculate the difference between server time and // 1/1/1970 00:00:00 unix time -> "Vana'Diel time in seconds" long timeInSeconds = ( (long)baseTime + 92514960 ) * 25; // how many days decimal dayOfYear = Math.Floor((decimal)( timeInSeconds / (decimal)86400 )); VanaTime vanaTime = new VanaTime(); vanaTime.DayType = (Weekday)( dayOfYear % 8 ); vanaTime.Day = (byte)( ( dayOfYear % 30 ) + 1 ); vanaTime.Month = (byte)( ( ( dayOfYear % 360 ) / 30 ) + 1 ); vanaTime.Year = (short)( dayOfYear / 360 ); vanaTime.Hour = (byte)( ( timeInSeconds / 3600 ) % 24 ); vanaTime.Minute = (byte)( ( timeInSeconds / 60 ) % 60 ); // can't floor on a long, so need to shrink it first vanaTime.Second = (byte)( ( timeInSeconds - ( System.Math.Floor((decimal)( timeInSeconds / 60 )) * 60 ) ) ); // calculate moon phase/percent decimal moonPhase = ( dayOfYear + (decimal)26 ) % 84; // calculate moon percent decimal moonPercent = ( ( ( 42 - moonPhase ) * 100 ) / 42 ); if (0 > moonPercent) moonPercent = Math.Abs(moonPercent); // get final moon percent vanaTime.MoonPercent = (byte)Math.Floor(( moonPercent + (decimal)0.5 )); // get final moon phase if (38 <= moonPhase) vanaTime.MoonPhase = (MoonPhase)Math.Floor(( moonPhase - (decimal)38 ) / (decimal)7); else vanaTime.MoonPhase = (MoonPhase)Math.Floor(( moonPhase + (decimal)46 ) / (decimal)7); return vanaTime; } // @ public VanaTime GetVanaTime()