private void VisualizarPub_Load(object sender, EventArgs e) { //Traigo la informacion del la publicacion System.Data.SqlClient.SqlCommand comUsu = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getInfoPublicacionXId"); //Defino los parametros System.Data.SqlClient.SqlParameter pUsu = new System.Data.SqlClient.SqlParameter("@id_publ", this.id_pub); comUsu.Parameters.Add(pUsu); // Abro la conexion AccesoDatos.getInstancia().abrirConexion(); System.Data.SqlClient.SqlDataReader pub = AccesoDatos.getInstancia().ejecutaSP(comUsu); if (!pub.HasRows) { MessageBox.Show("Publicacion invalida"); return; } pub.Read(); this.lblUsu.Text = pub.GetString(0); this.txtBoxDesc.Text = pub.GetString(1); this.lblTipo.Text = pub.GetString(2); if (this.lblTipo.Text.Equals("Subasta")) { this.lblStock.Text = "NO APLICABLE"; this.lblPrecio.Text = pub.GetDecimal(5).ToString(); this.btnComprar.Enabled = false; this.txtCant.Enabled = false; } if (this.lblTipo.Text.Equals("Compra Inmediata")) { this.lblStock.Text = pub.GetDecimal(3).ToString(); this.lblPrecio.Text = pub.GetDecimal(4).ToString(); this.btnOfertar.Enabled = false; this.txtOferta.Enabled = false; } this.lblFecVen.Text = pub.GetDateTime(6).ToShortDateString(); if (pub.GetInt16(7) == 0) { this.btnPreg.Enabled = false; } //id del vendedor this.id_vendedor = pub.GetInt32(8); // Cierro la conexion pub.Close(); AccesoDatos.getInstancia().cerrarConexion(); }
///////////////////////////////////////////////////////////////////////////////// // Get Slot Item Information ///////////////////////////////////////////////////////////////////////////////// static Global.slotItem GetItem(uint id, byte slot, int type) { #region Slot item info try { if (id != 0) { Global.slotItem slotItem = new Global.slotItem(); int row = type; MsSQL ms; if (row == 1) { ms = new MsSQL("SELECT * FROM char_items WHERE itemnumber='item" + slot + "' AND storageacc='" + id + "' AND storagetype='" + row + "' AND slot='" + slot + "'"); } else if (row == 3) { ms = new MsSQL("SELECT * FROM char_items WHERE itemnumber='item" + slot + "' AND storagetype='" + row + "' AND slot='" + slot + "'"); } else { ms = new MsSQL("SELECT * FROM char_items WHERE itemnumber='item" + slot + "' AND owner='" + id + "' AND storagetype='" + row + "' AND slot='" + slot + "'"); } using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { while (reader.Read()) { slotItem.dbID = reader.GetInt32(0); slotItem.ID = reader.GetInt32(2); slotItem.PlusValue = reader.GetByte(4); slotItem.Amount = reader.GetInt16(6); slotItem.Durability = reader.GetInt32(7); slotItem.Slot = slot; LoadBluesid(slotItem.dbID); } } ms.Close(); return(slotItem); } } catch (Exception ex) { Console.WriteLine("Data item load error {0}", ex); Systems.Debugger.Write(ex); } return(null); #endregion }
///////////////////////////////////////////////////////////////////////////////// // Arrow Item Check ///////////////////////////////////////////////////////////////////////////////// bool ItemCheckArrow() { #region Check Arrow DB ms = new DB("SELECT * FROM char_items WHERE owner='" + Character.Information.CharacterID + "' AND slot >= '13' AND slot <= '" + Character.Information.Slots + "' AND inavatar='0' AND itemid='62' AND storagetype='0'"); if (ms.Count() == 0) { ms = new DB("SELECT * FROM char_items WHERE owner='" + Character.Information.CharacterID + "' AND slot >= '13' AND slot <= '" + Character.Information.Slots + "' AND inavatar='0' AND itemid='3823' AND storagetype='0'"); } else if (ms.Count() == 0) { ms = new DB("SELECT * FROM char_items WHERE owner='" + Character.Information.CharacterID + "' AND slot >= '13' AND slot <= '" + Character.Information.Slots + "' AND inavatar='0' AND itemid='10302' AND storagetype='0'"); } else if (ms.Count() == 0) { ms = new DB("SELECT * FROM char_items WHERE owner='" + Character.Information.CharacterID + "' AND slot >= '13' AND slot <= '" + Character.Information.Slots + "' AND inavatar='0' AND itemid='10487' AND storagetype='0'"); } if (ms.Count() == 0) { return(false); } else { ObjData.slotItem items = null; using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { while (reader.Read()) { items = ConvertToItem(reader.GetInt32(2), reader.GetByte(5), reader.GetInt16(6), 1); } } ms.Close(); DB.query("UPDATE char_items SET itemnumber='item" + 7 + "',slot='" + 7 + "' WHERE itemnumber='" + "item" + items.Slot + "' AND owner='" + Character.Information.CharacterID + "' AND itemid='" + items.ID + "'"); client.Send(Packet.MoveItem(0, items.Slot, 7, items.Amount, 0, "MOVE_INSIDE_INVENTORY")); Character.Information.Item.sAmount = items.Amount; Character.Information.Item.sID = items.ID; ; return(true); } #endregion }
/////////////////////////////////////////////////////////////////////////// // Grab pet information packet /////////////////////////////////////////////////////////////////////////// public static byte[] Pet_Information_grab(CLGameServer.WorldMgr.pet_obj o, byte slot) { PacketWriter Writer = new PacketWriter(); Writer.Create(OperationCode.SERVER_PET_INFORMATION); try { ////////////////////////////////////////////////////////////////////////////////////// // Grabpet structure ////////////////////////////////////////////////////////////////////////////////////// Writer.DWord(o.UniqueID); //Unique ID Writer.DWord(o.Model); //Pet Model Writer.DWord(0x00006D); //Settings Writer.DWord(0x00006D); //Settings Writer.DWord(0x000047); //Settings 0x47 grab pet active 0 disabled if (o.Petname != "No name") //############### { Writer.Text(o.Petname); // Name region } else // { Writer.Word(0); //############### } Writer.Byte(o.Slots); //Slots count inventory pet ////////////////////////////////////////////////////////////////////////////////////// // Grabpet item inventory ////////////////////////////////////////////////////////////////////////////////////// DB ms = new DB("SELECT * FROM char_items WHERE owner='" + o.OwnerID + "' AND pet_storage_id='" + o.UniqueID + "'"); Writer.Byte(ms.Count()); using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { while (reader.Read()) { Item.AddItemPacket(Writer, reader.GetByte(5), reader.GetInt32(2), reader.GetByte(4), reader.GetInt16(6), reader.GetInt32(7), reader.GetInt32(0), reader.GetInt32(9), reader.GetInt32(30)); } } ms.Close(); ////////////////////////////////////////////////////////////////////////////////////// // Other ////////////////////////////////////////////////////////////////////////////////////// Writer.DWord(o.OwnerID); //Character ID Writer.Byte(slot); //Slot location of the pet ////////////////////////////////////////////////////////////////////////////////////// } catch (Exception ex) { Log.Exception(ex); } return(Writer.GetBytes()); }
private void login_btnIngresar_Click(object sender, EventArgs e) { //Valido el usuario y contraseña List <string> listaValidacion = new List <string>(); string pass_BD; string pass_ingresada; int id_usuario; int intentos_fallidos; string estado_usu; int forzar_cambio; SHA256Managed encriptacionSha256 = new SHA256Managed(); //Validamos los campos obligatorios if (this.login_txtUsr.Text == String.Empty) { listaValidacion.Add("El Nombre de usuario es obligatorio"); } if (this.login_txtpass.Text == String.Empty) { listaValidacion.Add("La Contraseña es obligatoria"); } //Muestro un mensaje con los datos mal cargados if (listaValidacion.Count > 0) { StringBuilder error = new StringBuilder(); error.AppendLine("Por favor corrija los siguientes campos:"); foreach (var i in listaValidacion) { error.AppendLine(i); } MessageBox.Show(error.ToString()); return; } ///////////////////////// //Validacion del login // ///////////////////////// pass_ingresada = Convert.ToBase64String(encriptacionSha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(this.login_txtpass.Text))); //Traigo la contraseña de la BD System.Data.SqlClient.SqlCommand comPass = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getPassXNombre"); //Defino los parametros System.Data.SqlClient.SqlParameter p1 = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim()); //Agrego el parametro a la lista de parametros comPass.Parameters.Add(p1); // Abro la conexion AccesoDatos.getInstancia().abrirConexion(); System.Data.SqlClient.SqlDataReader dup = AccesoDatos.getInstancia().ejecutaSP(comPass); if (!dup.HasRows) { // Cierro la conexion dup.Close(); AccesoDatos.getInstancia().cerrarConexion(); MessageBox.Show("Usuario Inexistente"); return; } dup.Read(); pass_BD = dup.GetString(0); intentos_fallidos = dup.GetInt16(1); estado_usu = dup.GetString(2); forzar_cambio = dup.GetInt16(3); // Cierro la conexion dup.Close(); AccesoDatos.getInstancia().cerrarConexion(); if (!estado_usu.Equals("Habilitado")) { MessageBox.Show("Su usuario no puede ingresar al sistema, contactese con los administradores"); return; } if (!pass_ingresada.Equals(pass_BD)) { //Registro el intento fallido System.Data.SqlClient.SqlCommand comFalla = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_setFallaLoginXNombre"); //Defino los parametros System.Data.SqlClient.SqlParameter pFalla = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim()); //Agrego el parametro a la lista de parametros comFalla.Parameters.Add(pFalla); // Abro la conexion AccesoDatos.getInstancia().abrirConexion(); System.Data.SqlClient.SqlDataReader falla = AccesoDatos.getInstancia().ejecutaSP(comFalla); // Cierro la conexion falla.Close(); AccesoDatos.getInstancia().cerrarConexion(); MessageBox.Show("Contraseña incorrecta"); return; } //Reseteo los intentos fallidos System.Data.SqlClient.SqlCommand comReset = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_resetIntentosXNombre"); //Defino los parametros System.Data.SqlClient.SqlParameter pReset = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim()); //Agrego el parametro a la lista de parametros comReset.Parameters.Add(pReset); // Abro la conexion AccesoDatos.getInstancia().abrirConexion(); System.Data.SqlClient.SqlDataReader reset = AccesoDatos.getInstancia().ejecutaSP(comReset); // Cierro la conexion reset.Close(); AccesoDatos.getInstancia().cerrarConexion(); //////////////////////////////// // Roles del usuario // //////////////////////////////// //Primero traigo el ID de Usuario System.Data.SqlClient.SqlCommand comUsuario = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getIdUsuarioXNombre"); //Defino los parametros System.Data.SqlClient.SqlParameter pUsu = new System.Data.SqlClient.SqlParameter("@nombre", this.login_txtUsr.Text.Trim()); //Agrego el parametro a la lista de parametros comUsuario.Parameters.Add(pUsu); // Abro la conexion AccesoDatos.getInstancia().abrirConexion(); System.Data.SqlClient.SqlDataReader idusuario = AccesoDatos.getInstancia().ejecutaSP(comUsuario); idusuario.Read(); id_usuario = idusuario.GetInt32(0); // Cierro la conexion reset.Close(); AccesoDatos.getInstancia().cerrarConexion(); //Traigo los roles asociados System.Data.SqlClient.SqlCommand comRoles = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getRolesUsuario"); System.Data.SqlClient.SqlParameter pRoles = new System.Data.SqlClient.SqlParameter("@id_usuario", id_usuario); comRoles.Parameters.Add(pRoles); // Abro la conexion AccesoDatos.getInstancia().abrirConexion(); System.Data.SqlClient.SqlDataReader roles = AccesoDatos.getInstancia().ejecutaSP(comRoles); //Cargo el array del resultado ArrayList listaRoles = new ArrayList(); int it = 0; while (roles.Read()) { listaRoles.Add(new DTO.RolDTO(roles.GetInt32(0), roles.GetString(1))); it++; } // Cierro la conexion roles.Close(); AccesoDatos.getInstancia().cerrarConexion(); if (listaRoles.Count == 0) { MessageBox.Show("No posee roles habilitados en el sistema. Contactese con los administradores"); return; } //guardo el id_usuario en el aplicativo this.ppal_id_usuario = id_usuario; if (forzar_cambio == 1) { MessageBox.Show("Debe modificar su contraseña."); Pass.ModPass fPass = new FrbaCommerce.Pass.ModPass(); fPass.idusuario = this.ppal_id_usuario; fPass.ShowDialog(); return; } //Si tiene mas de un rol despliego el form de seleccion int id_rol_seleccionado; if (listaRoles.Count > 1) { Perfil fPerfil = new Perfil(listaRoles); fPerfil.ShowDialog(); id_rol_seleccionado = fPerfil.getRolSeleccionado(); } else { id_rol_seleccionado = ((DTO.RolDTO)listaRoles[0]).idRol; } //guardo el id_rol en el aplicativo this.ppal_id_rol = id_rol_seleccionado; //Traigo las funciones asociadas al rol System.Data.SqlClient.SqlCommand comFunc = new System.Data.SqlClient.SqlCommand("LOS_GESTORES.sp_app_getFuncionesRol"); System.Data.SqlClient.SqlParameter pFunc = new System.Data.SqlClient.SqlParameter("@id_rol", ppal_id_rol); comFunc.Parameters.Add(pFunc); // Abro la conexion AccesoDatos.getInstancia().abrirConexion(); System.Data.SqlClient.SqlDataReader funciones = AccesoDatos.getInstancia().ejecutaSP(comFunc); //Cargo el array del resultado ArrayList listaFunc = new ArrayList(); while (funciones.Read()) { listaFunc.Add(new DTO.RolDTO(funciones.GetInt32(0), funciones.GetString(1))); } // Cierro la conexion funciones.Close(); AccesoDatos.getInstancia().cerrarConexion(); listaFunciones.DataSource = listaFunc; listaFunciones.DisplayMember = "descRol"; listaFunciones.ValueMember = "idRol"; // Blanqueo y Habilito el proximo panel this.login_txtUsr.Clear(); this.login_txtpass.Clear(); this.panelInicio.Hide(); this.panelPpal.Show(); }
public static void ExecuteCommand(string aCommand, Socket aSocket) { try { if (aCommand != null) { string[] command = aCommand.Split(' '); if (command[0] == "/help") { if (aSocket == null) { Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine(" Ingame notice: Type 1 space then message."); Console.WriteLine(" //clear"); Console.WriteLine(" //repairitems"); Console.WriteLine(" //respawn_unique"); Console.WriteLine(" //event"); Console.WriteLine(" //shutdown"); Console.WriteLine(" //manager"); Console.ForegroundColor = ConsoleColor.Yellow; } else { sendSocket(aSocket, "Ingame notice: Type 1 space then message." + Environment.NewLine); sendSocket(aSocket, " //clear = cleanup unused memory" + Environment.NewLine); sendSocket(aSocket, " //repairitems" + Environment.NewLine); sendSocket(aSocket, " //respawn_unique" + Environment.NewLine); sendSocket(aSocket, " //event" + Environment.NewLine); sendSocket(aSocket, " //shutdown" + Environment.NewLine); } } else if (command[0] == "//clear") { System.GC.Collect(); GC.Collect(0, GCCollectionMode.Forced); sendSocket(aSocket, "done memory cleanup" + Environment.NewLine); } else if (command[0] == "//shutdown") { byte waitTime = 5; if (command.Length > 1) { waitTime = System.Convert.ToByte(command[1]); } if (aSocket != null) { aSocket.Send(Encoding.ASCII.GetBytes("SHUTDOWN_START" + Environment.NewLine)); } lock (Systems.clients) { Console.WriteLine("{0}stopping server and sending notice to clients ...", DarkEmu_GameServer.Global.Product.Prefix); sendSocket(aSocket, "SHUTDOWN: stopping server and sending notice to clients ..." + Environment.NewLine); net.ServerCheck(true); net.Stop(); // disable any new connection try { Systems.SendAll(Packet.ChatPacket(7, 0, "The server is stopping, your information will be saved.", "")); Systems.SendAll(Packet.StartingLeaveGame(waitTime, 0)); } catch { } Thread.Sleep(waitTime); Console.WriteLine("@SHUTDOWN: logoff clients ..."); sendSocket(aSocket, "@SHUTDOWN: logoff clients ..." + Environment.NewLine); while (Systems.clients.Count > 0) { try { try { Systems.clients[0].Send(Packet.EndLeaveGame()); } catch { } //Ignore new character case (used for disconnect kick). Systems c = new Systems(); Systems.clients[0].Disconnect("normal"); } catch { } } } sendSocket(aSocket, "SHUTDOWN_END" + Environment.NewLine); cancelServer = true; Systems.UpdateServerInfo(0); //Environment.Exit(0); } else if (command[0] == "//repairitems") { int fixeditem = 0; Systems.MsSQL ms = new Systems.MsSQL("SELECT * FROM char_items"); using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { while (reader.Read()) { short amount = reader.GetInt16(7); if (amount < 1) { fixeditem++; amount = 1; Systems.MsSQL.InsertData("UPDATE char_items SET quantity='" + amount + "' WHERE itemnumber='" + "item" + reader.GetByte(5) + "' AND owner='" + reader.GetInt32(3) + "' AND itemid='" + reader.GetInt32(2) + "'"); } } } Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("@Gameserver: Items Repaired: {0}", fixeditem); Console.ForegroundColor = ConsoleColor.Yellow; sendSocket(aSocket, String.Format("@Gameserver: Items Repaired: {0}", fixeditem) + Environment.NewLine); } else if (command[0] == "//respawn_unique") { DarkEmu_GameServer.GlobalUnique.StartTGUnique(6000 * 10, 6000 * 10); DarkEmu_GameServer.GlobalUnique.StartUriUnique(7000 * 10, 7000 * 10); DarkEmu_GameServer.GlobalUnique.StartIsyUnique(8000 * 10, 8000 * 10); DarkEmu_GameServer.GlobalUnique.StartLordUnique(9000 * 10, 9000 * 10); DarkEmu_GameServer.GlobalUnique.StartDemonUnique(10000 * 10, 10000 * 10); DarkEmu_GameServer.GlobalUnique.StartCerbUnique(11000 * 10, 11000 * 10); DarkEmu_GameServer.GlobalUnique.StartIvyUnique(11000 * 10, 11000 * 10); //Game.GlobalUnique.StartRoc(11000 * 10, 11000 * 10); DarkEmu_GameServer.GlobalUnique.StartMedusa(11000 * 10, 11000 * 10); DarkEmu_GameServer.GlobalUnique.StartNeith(11000 * 10, 11000 * 10); //Game.GlobalUnique.StartSphinx(11000 * 10, 11000 * 10); DarkEmu_GameServer.GlobalUnique.StartIsis(11000 * 10, 11000 * 10); sendSocket(aSocket, "done respawn" + Environment.NewLine); } else if (command[0] == "//event") { EventMain eventnew = new EventMain(System.IO.Directory.GetCurrentDirectory() + "/data/event.txt"); eventnew.Start(); sendSocket(aSocket, "Event Started" + Environment.NewLine); } else if (command[0] == "") { string information = aCommand; DarkEmu_GameServer.Systems c = new DarkEmu_GameServer.Systems(); DarkEmu_GameServer.Systems.SendAll(c.sendnoticecon(7, 0, information, "")); Console.WriteLine("Notice: " + information); sendSocket(aSocket, "Sent Notice: " + information + Environment.NewLine); } } } catch (Exception ex) { Console.WriteLine("Program.Main {0}", ex); } }
public static byte[] GuildStorageData(WorldMgr.character c) { DB getstorage = new DB("SELECT * FROM char_items WHERE guild_storage_id='" + c.Network.Guild.Guildid + "' AND storagetype='3'"); int itemcount = getstorage.Count(); PacketWriter Writer = new PacketWriter(); Writer.Create(OperationCode.SERVER_GUILD_STORAGE3); Writer.Byte(c.Network.Guild.StorageSlots); Writer.Byte(itemcount); if (itemcount != 0) { using (System.Data.SqlClient.SqlDataReader reader = getstorage.Read()) { while (reader.Read()) { Item.AddItemPacket(Writer, reader.GetByte(5), reader.GetInt32(2), reader.GetByte(4), reader.GetInt16(6), reader.GetInt32(7), reader.GetInt32(0), reader.GetInt32(9), reader.GetInt32(30)); } } } getstorage.Close(); return(Writer.GetBytes()); }
//Listening main uses a single packet only so we write our packet here public static byte[] CharacterListing(player p) { //Create new sql query to get all characters except fully deleted Systems.MsSQL ms = new Systems.MsSQL("SELECT TOP 4 * FROM character WHERE account='" + p.AccountName + "' AND deleted='0' OR account='" + p.AccountName + "' AND deleted ='1'"); //Create new packet writer PacketWriter Writer = new PacketWriter(); Writer.Create(Systems.SERVER_CHARACTERSCREEN); // Select opcode Writer.Byte(2); // Static byte 2 Writer.Byte(1); // Static byte 1 Writer.Byte(ms.Count()); // Byte Character Count //Create new sql data reader using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { //While the reader is reading data from the database while (reader.Read()) { Writer.DWord(reader.GetInt32(3)); // DWord Skin Model Writer.Text(reader.GetString(2)); // String Name Writer.Byte(reader.GetByte(4)); // Byte Skin Volume Writer.Byte(reader.GetByte(5)); // Byte Level Writer.LWord(reader.GetInt64(12)); // Long Experience Writer.Word(reader.GetInt16(6)); // Word STR Writer.Word(reader.GetInt16(7)); // Word INT Writer.Word(reader.GetInt16(8)); // Attribute points Writer.DWord(reader.GetInt32(9)); // HP Writer.DWord(reader.GetInt32(10)); // MP //Set defnition for current time DateTime CurrentTime = DateTime.Now; //Subtract the current time with deletion time information TimeSpan TIMESPAN = reader.GetDateTime(43) - DateTime.Now; //If the character has been deleted but still sitting if (reader.GetByte(42) == 1) { //Write state byte 1 for sitting Writer.Byte(1); //Display deletion time reamining Writer.DWord((double)TIMESPAN.TotalMinutes); //If time has expired delete the character if (TIMESPAN.TotalMinutes <= 0) { //Note: There are more ways like full delete but if someone got deleted by someone else's action //It will be easy to recover the character by changing the deletion byte in the database //0 = Not deleted , 1 = Deletion in progress, 2 = Deleted //Set deletion state so it wont be listed again. Systems.MsSQL.UpdateData("UPDATE character SET deleted='2' Where id='" + reader.GetInt32(0) + "'"); } } //If not deleted else { //State byte = 0 Standing Writer.Byte(0); } //Static Writer.Word(0); Writer.Byte(0); //Get normal equipped items upto slot 8 not in avatar slots Function.Items.PrivateItemPacket(Writer, reader.GetInt32(0), 8, 0, false); //Get avatar type items Function.Items.PrivateItemPacket(Writer, reader.GetInt32(0), 5, 1, false); } //Jobtype information int jobinfo = Systems.MsSQL.GetDataInt("SELECT * FROM users WHERE id='" + p.AccountName + "'", "jobtype"); Writer.Byte(Convert.ToByte(jobinfo)); } ms.Close(); //Return all bytes to the client return(Writer.GetBytes()); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////// // Character listening packet //////////////////////////////////////////////////////////////////////////////////////////////////////////// public static byte[] CharacterListing(string name) { DB ms = new DB("SELECT TOP 4 * FROM character WHERE account='" + name + "'"); PacketWriter Writer = new PacketWriter(); Writer.Create(OperationCode.SERVER_CHARACTERSCREEN); // Select opcode Writer.Byte(2); // Static byte 2 Writer.Byte(1); // Static byte 1 Writer.Byte(ms.Count()); // Byte WorldMgr.character count using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { while (reader.Read()) { Writer.DWord(reader.GetInt32(3)); // DWord Skin Model Writer.Text(reader.GetString(2)); // String Name Writer.Byte(reader.GetByte(4)); // Byte Skin Volume Writer.Byte(reader.GetByte(5)); // Byte Level Writer.LWord(reader.GetInt64(12)); // Long Experience Writer.Word(reader.GetInt16(6)); // Word STR Writer.Word(reader.GetInt16(7)); // Word INT Writer.Word(reader.GetInt16(8)); // Attribute points Writer.DWord(reader.GetInt32(9)); // HP Writer.DWord(reader.GetInt32(10)); // MP TimeSpan ts = Convert.ToDateTime(reader.GetDateTime(43)) - DateTime.Now; double time = ts.TotalMinutes; if (Math.Round(time) > 0) { Writer.Byte(1); Writer.DWord(Math.Round(time)); } else { Writer.Byte(0); } if (Math.Round(time) < 0 && DateTime.Now != reader.GetDateTime(43)) { DB.query("UPDATE character SET deleted='1' Where id='" + reader.GetInt32(0) + "'"); } Writer.Word(0); Writer.Byte(0); Function.Items.PrivateItemPacket(Writer, reader.GetInt32(0), 8, 0, false); Function.Items.PrivateItemPacket(Writer, reader.GetInt32(0), 5, 1, false); } //Jobtype information byte jobinfo = Convert.ToByte(DB.GetData("SELECT * FROM users WHERE id='" + name + "'", "jobtype")); Writer.Byte(jobinfo); } ms.Close(); return(Writer.GetBytes()); }
public static byte[] CharacterDataLoad(WorldMgr.character c) { PacketWriter Writer = new PacketWriter(); Writer.Create(OperationCode.SERVER_PLAYERDATA); /////////////////////////////////////////////////////// Character basic info #region Basic info Writer.DWord(c.Ids.GetLoginID); Writer.DWord(c.Information.Model); Writer.Byte(c.Information.Volume); Writer.Byte(c.Information.Level); Writer.Byte(c.Information.Level); Writer.LWord(c.Information.XP); Writer.DWord(c.Information.SpBar); Writer.LWord(c.Information.Gold); Writer.DWord(c.Information.SkillPoint); Writer.Word(c.Information.Attributes); Writer.Byte(c.Information.BerserkBar); Writer.DWord(988); Writer.DWord(c.Stat.SecondHp); Writer.DWord(c.Stat.SecondMP); Writer.Bool(c.Information.Level < 20 ? true : false); #endregion /////////////////////////////////////////////////////// Character Player Kill Info #region Pk information //DB perfection reading with multiple data adapters... while this one is open i can still read anything else from the database //With no speed reduction... DB checkpk = new DB("SELECT * FROM character WHERE name ='" + c.Information.Name + "'"); using (System.Data.SqlClient.SqlDataReader getinfo = checkpk.Read()) { while (getinfo.Read()) { byte dailypk = getinfo.GetByte(48); byte pklevel = getinfo.GetByte(49); byte murderlevel = getinfo.GetByte(50); Writer.Byte(dailypk); Writer.Word(pklevel); Writer.DWord(murderlevel); if (murderlevel != 0) { c.Information.Murderer = true; } } } #endregion /////////////////////////////////////////////////////// Character Title #region Title Writer.Byte(c.Information.Title); #endregion /////////////////////////////////////////////////////// Character Pvpstate #region Pvp Writer.Byte(c.Information.Pvpstate); if (c.Information.Pvpstate > 0) { c.Information.PvP = true; } #endregion /////////////////////////////////////////////////////// Character Items #region Item Writer.Byte(c.Information.Slots); DB ms = new DB("SELECT * FROM char_items WHERE owner='" + c.Information.CharacterID + "' AND slot >= '0' AND slot <= '" + c.Information.Slots + "' AND inavatar='0' AND storagetype='0'"); Writer.Byte(ms.Count()); using (System.Data.SqlClient.SqlDataReader msreader = ms.Read()) { while (msreader.Read()) { short amount = msreader.GetInt16(6); if (amount < 1) { amount = 1; } DB.query("UPDATE char_items SET quantity='" + amount + "' WHERE owner='" + c.Information.CharacterID + "' AND itemid='" + msreader.GetInt32(2) + "' AND id='" + msreader.GetInt32(0) + "' AND storagetype='0'"); if (msreader.GetByte(5) == 6) { c.Information.Item.wID = Convert.ToInt32(msreader.GetInt32(2)); } if (msreader.GetByte(5) == 7) { c.Information.Item.sID = msreader.GetInt32(2); c.Information.Item.sAmount = msreader.GetInt16(6); } Item.AddItemPacket(Writer, msreader.GetByte(5), msreader.GetInt32(2), msreader.GetByte(4), amount, msreader.GetInt32(7), msreader.GetInt32(0), msreader.GetInt32(9), msreader.GetInt32(30)); } } ms.Close(); //Avatar Writer.Byte(5); ms = new DB("SELECT * FROM char_items WHERE owner='" + c.Information.CharacterID + "' AND slot >= '0' AND slot <= '" + c.Information.Slots + "' AND inavatar='1' AND storagetype='0'"); Writer.Byte(ms.Count()); using (System.Data.SqlClient.SqlDataReader msreader = ms.Read()) { while (msreader.Read()) { Item.AddItemPacket(Writer, msreader.GetByte(5), msreader.GetInt32(2), msreader.GetByte(4), msreader.GetInt16(6), msreader.GetInt32(7), msreader.GetInt32(0), msreader.GetInt32(9), msreader.GetInt32(30)); } } ms.Close(); Writer.Byte(0); // job mastery Writer.Byte(0x0B); Writer.Byte(0); Writer.Byte(0); #endregion /////////////////////////////////////////////////////// Mastery #region Mastery if (c.Information.Model <= 12000) { for (byte i = 1; i <= 7; i++) { Writer.Byte(1); Writer.DWord(c.Stat.Skill.Mastery[i]); Writer.Byte(c.Stat.Skill.Mastery_Level[i]); } } else { if (c.Information.Model >= 14000) { for (byte i = 1; i < 7; i++) { Writer.Byte(1); Writer.DWord(c.Stat.Skill.Mastery[i]); Writer.Byte(c.Stat.Skill.Mastery_Level[i]); } } } #endregion /////////////////////////////////////////////////////// Skills #region Skill Writer.Byte(2); Writer.Byte(0); for (int i = 1; i <= c.Stat.Skill.AmountSkill; i++) { Writer.Byte(1); Writer.DWord(c.Stat.Skill.Skill[i]); Writer.Byte(1); } Writer.Byte(2); #endregion /////////////////////////////////////////////////////// Quests #region Quest Writer.Word(1); // how many Quest ids completed/aborted Writer.DWord(1); // Quest id Writer.Byte(0); //number of Quests that are live #endregion Writer.Byte(0); //? for now /////////////////////////////////////////////////////// Talisman #region Talisman Writer.DWord(1); //new Writer.DWord(1); //new Writer.DWord(0); //? for now Writer.DWord(0x0C); //new #endregion /////////////////////////////////////////////////////// Position + id + speed #region Character id / Position / Speed Writer.DWord(c.Information.UniqueID); Writer.Byte(c.Position.xSec); Writer.Byte(c.Position.ySec); if (!FileDB.CheckCave(c.Position.xSec, c.Position.ySec)) { Writer.Float(Formule.packetx(c.Position.x, c.Position.xSec)); Writer.Float(c.Position.z); Writer.Float(Formule.packety(c.Position.y, c.Position.ySec)); } else { Writer.Float(Formule.cavepacketx(c.Position.x)); // Added for cave Coords Writer.Float(c.Position.z); Writer.Float(Formule.cavepackety(c.Position.y)); // Added for cave Coords } Writer.Word(0); // Angle Writer.Byte(0); Writer.Byte(1); Writer.Byte(0); Writer.Word(0); // Angle Writer.Word(0); Writer.Byte(0); Writer.Bool(false); //berserk Writer.Byte(0); //new ? Writer.Float(c.Speed.WalkSpeed); Writer.Float(c.Speed.RunSpeed); Writer.Float(c.Speed.BerserkSpeed); #endregion /////////////////////////////////////////////////////// Premium Tickets #region Premium ticket Writer.Byte(0); //ITEM_MALL_GOLD_TIME_SERVICE_TICKET_4W #endregion /////////////////////////////////////////////////////// GM Check + Name #region GM Check + Name Writer.Text(c.Information.Name); #endregion /////////////////////////////////////////////////////// Character jobs #region Character Job / hunter thief trader ( old job things ) //Writer info with job name when on job /*if (c.Job.state == 1 && c.Job.Jobname != "0") * { * Writer.Text(c.Job.Jobname); * Writer.Byte(3); * Writer.Byte(1); * Writer.DWord(0); * Writer.DWord(0); * Writer.DWord(0); * Writer.Byte(0); * Writer.Byte(0); * Writer.Byte(0); * } * //Write basic info noname * if (c.Job.Jobname == "0") * { * Writer.Word(0); * Writer.Byte(3); * Writer.Byte(1); * Writer.DWord(0); * Writer.DWord(0); * Writer.DWord(0); * Writer.Byte(0); * Writer.Byte(0); * Writer.Byte(0); * } * //Write no info * else * { * Writer.Word(0); * Writer.Byte(0); * Writer.Byte(1); * Writer.DWord(0); * Writer.DWord(0); * Writer.DWord(0); * Writer.Byte(0); * Writer.Byte(0); * Writer.Byte(0); * }*/ #endregion #region New job system if (c.Job.state == 1) { Writer.Text(c.Job.Jobname); Writer.Byte(1); Writer.Byte(c.Job.level); //Level job Writer.Byte(c.Information.Level); //Level char Writer.Byte(1); // job level? myb Writer.LWord(0); // job exp probably y Writer.Byte(0); Writer.Byte(0); Writer.Byte(0); Writer.Byte(0); } else { Writer.Word(0); Writer.Byte(0); Writer.Byte(0); Writer.Byte(2); // job type Writer.Byte(1); // job level? myb Writer.LWord(0); // job exp probably y Writer.Byte(0); Writer.Byte(0); Writer.Byte(0); Writer.Byte(0); } #endregion /////////////////////////////////////////////////////// Pvp / Pk State #region Pvp / Pk State if (c.Information.Pvpstate == 1 || c.Information.Murderer) { Writer.Byte(0x22); } else if (c.Information.Pvpstate == 0 || !c.Information.Murderer) { Writer.Byte(0xFF); } #endregion /////////////////////////////////////////////////////// Guide Data #region Guide Data this data stacks on itself so if guide id is 0400000000000000 and next guide is 0300000000000000 the data to send is 0700000000000000 for (int i = 0; i < 8; ++i) //Main Guide Packet Info { Writer.Byte(c.Guideinfo.G1[i]); //Reads From Int Array } #endregion /////////////////////////////////////////////////////// Account / Gm Check #region Account ID + Gm Check Writer.DWord(c.Account.ID); Writer.Byte(c.Information.GM); #endregion /////////////////////////////////////////////////////// Quickbar + Autopotion #region Bar information Writer.Byte(7); PlayerQuickBar(Writer, c.Information.CharacterID); PlayerAutoPot(Writer, c.Information.CharacterID); #endregion /////////////////////////////////////////////////////// Academy #region Academy Writer.Byte(0); // number of player in academy /* // if we have players there * Writer.Byte(1); * Writer.Text("asd"); */ Writer.Byte(0);//added byte today for 1.310 Writer.Byte(0); Writer.Word(1); Writer.Word(1); Writer.Byte(0); Writer.Byte(1); #endregion return(Writer.GetBytes()); }
public static byte[] OpenWarehouse2(byte storageslots, WorldMgr.player c) { PacketWriter Writer = new PacketWriter(); Writer.Create(OperationCode.SERVER_OPEN_WAREPROB); Writer.Byte(storageslots); DB ms = new DB("SELECT * FROM char_items WHERE storageacc='" + c.ID + "' AND storagetype='1'"); Writer.Byte(ms.Count()); using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { while (reader.Read()) { Item.AddItemPacket(Writer, reader.GetByte(5), reader.GetInt32(2), reader.GetByte(4), reader.GetInt16(6), reader.GetInt32(7), reader.GetInt32(0), reader.GetInt32(9), reader.GetInt32(30)); } } ms.Close(); return(Writer.GetBytes()); }