public void SendData() { using (var packet = new InterPacket(InterHeader.ASSIGNED)) { packet.WriteStringLen(ConnectionStringbuilder.CreateEntityString(Settings.Instance.Entity)); packet.WriteByte(ID); packet.WriteStringLen(String.Format("{0}-{1}", Settings.Instance.GameServiceURI, ID)); packet.WriteUShort((ushort)(Settings.Instance.ZoneBasePort + ID)); packet.WriteInt(Maps.Count); foreach (var m in Maps) { packet.WriteUShort(m.ID); packet.WriteStringLen(m.ShortName); packet.WriteStringLen(m.FullName); packet.WriteInt(m.RegenX); packet.WriteInt(m.RegenY); packet.WriteByte(m.Kingdom); packet.WriteUShort(m.ViewRange); } this.SendPacket(packet); } }
public static AccountEntity GetAccountEntity(EntitySetting setting) { string connectionstring = ConnectionStringbuilder.CreateEntityString(setting); return(new AccountEntity(connectionstring)); }
public void Update() { Log.WriteLine(LogLevel.Info, "Looking for database updates..."); int version = 0; int patch = 0; using (SqlConnection connection = new SqlConnection(ConnectionStringbuilder.CreateConnectionString(this._setting))) { connection.Open(); // Check DB version try { using (var reader = new SqlCommand("SELECT [Version] FROM [ZepheusVersion]", connection).ExecuteReader()) { if (reader.Read()) { version = reader.GetInt32(0); } } } catch { } // default is set to 0 :D Log.WriteLine(LogLevel.Debug, "Current Database version is {0}", version); // Now we have the function, lets see which files there are... if (Directory.Exists("SQL")) { string type = _type == DatabaseTypes.Login ? "login" : "world"; foreach (string filename in Directory.GetFiles("SQL", type + "_*.sql")) { try { string[] pieces = filename.Split('_'); // login_XX_dat-a-lawl.sql int p = int.Parse(pieces[1]); if (p <= version) { continue; // Already ran this one! } if (p < patch) { Log.WriteLine(LogLevel.Warn, "Patch ID out of order O.o. Using last patch ID instead: {0}", patch); } else { patch = p; } string message = pieces[2].Replace(".sql", ""); Log.WriteLine(LogLevel.Info, "Trying to update {0} database with patch {1}. Message:", type, patch); Log.WriteLine(LogLevel.Info, message); RunFile(filename, connection); } catch (Exception ex) { Log.WriteLine(LogLevel.Exception, "Could not parse file {0}: {1}", filename, ex.ToString()); Console.ReadLine(); Environment.Exit(400); } } if (version < patch) { Log.WriteLine(LogLevel.Info, "Database updated!"); version = patch; // Try to update table to new version using (SqlCommand cmd = new SqlCommand("DELETE FROM [ZepheusVersion];", connection)) cmd.ExecuteNonQuery(); using (SqlCommand cmd = new SqlCommand("INSERT INTO [ZepheusVersion] VALUES (" + patch.ToString() + ");", connection)) cmd.ExecuteNonQuery(); } else { Log.WriteLine(LogLevel.Info, "Database up-to-date!"); } } else { Log.WriteLine(LogLevel.Error, "Couldn't find SQL dir. Cannot update db."); } connection.Close(); } }
public static WorldEntity GetWorldEntity(EntitySetting setting) { string connectionstring = ConnectionStringbuilder.CreateEntityString(setting); return(new WorldEntity(connectionstring)); }