public static byte[] CreateSpawnPacket(uint monsterid, uint uniqueid, _Position pos, byte monstertype) { PacketWriter writer = new PacketWriter(); writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_SPAWN); writer.AppendDword(monsterid); writer.AppendDword(uniqueid); writer.AppendByte(pos.XSector); writer.AppendByte(pos.YSector); writer.AppendFloat(pos.X); writer.AppendFloat(pos.Z); writer.AppendFloat(pos.Y); writer.AppendWord(0); writer.AppendByte(0); writer.AppendByte(1); writer.AppendByte(0); writer.AppendWord(0); writer.AppendWord(1); writer.AppendByte(0); writer.AppendFloat(16f); writer.AppendFloat(16f); writer.AppendFloat(16f); writer.AppendByte(0); writer.AppendByte(0); writer.AppendByte(monstertype); writer.AppendByte(1); return writer.getWorkspace(); }
public static byte[] CreateSpawnPacket(uint monsterid, uint uniqueid, _Position pos, byte monstertype) { PacketWriter writer = new PacketWriter(); writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_SPAWN); writer.AppendDword(monsterid); writer.AppendDword(uniqueid); writer.AppendByte(pos.XSector); writer.AppendByte(pos.YSector); writer.AppendFloat(pos.X); writer.AppendFloat(pos.Z); writer.AppendFloat(pos.Y); writer.AppendWord(0); writer.AppendByte(0); writer.AppendByte(1); writer.AppendByte(0); writer.AppendWord(0); writer.AppendWord(1); writer.AppendByte(0); writer.AppendFloat(16f); writer.AppendFloat(16f); writer.AppendFloat(16f); writer.AppendByte(0); writer.AppendByte(0); writer.AppendByte(monstertype); writer.AppendByte(1); return(writer.getWorkspace()); }
public static void CreateSpawnPacket(ref PacketWriter writer, uint monsterid, uint uniqueid, _Position pos, byte monstertype) { writer.AppendDword(monsterid); writer.AppendDword(uniqueid); writer.AppendByte(pos.XSector); writer.AppendByte(pos.YSector); writer.AppendFloat(pos.X); writer.AppendFloat(pos.Z); writer.AppendFloat(pos.Y); writer.AppendWord(0); writer.AppendByte(0); writer.AppendByte(1); writer.AppendByte(0); writer.AppendWord(0); writer.AppendWord(1); writer.AppendByte(0); writer.AppendFloat(16f); writer.AppendFloat(16f); writer.AppendFloat(16f); writer.AppendByte(0); writer.AppendByte(0); writer.AppendByte(monstertype); writer.AppendByte(1); }
public static double CalculateDistance(_Position Object_1, _Position Object_2) { double distance_x = Object_1.X - Object_2.X; double distance_y = Object_1.Y - Object_2.Y; double x = 0; if (distance_x < 0 && distance_x != 0) x = distance_x * -1; else x = distance_x; if (distance_y < 0 && distance_y != 0) return ((distance_y * -1) + x); return x + distance_y; }
public static bool MoveToObject(int Index_, ref _Position obj_1, _Position obj_2, uint uniqueid, uint characterid, double weapondistance, byte weapontype, bool Monster) { double distance_x = obj_1.X - obj_2.X; double distance_y = obj_1.Y - obj_2.Y; double distance = Formula.CalculateDistance(distance_x, distance_y); if (weapontype == 6 || weapontype == 12) { weapondistance = 250; distance_y -= 100; distance_x -= 150; } if (distance > weapondistance) { distance_x = (distance_x - ((distance_x * 10) / distance)); distance_y = (distance_y - ((distance_y * 10) / distance)); obj_1.X -= (float)distance_x; obj_1.Y -= (float)distance_y; writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_MOVEMENT); writer.AppendDword(uniqueid); writer.AppendByte(1); writer.AppendByte(obj_1.XSector); writer.AppendByte(obj_1.YSector); writer.AppendWord((ushort)obj_1.X); writer.AppendWord((ushort)obj_1.Z); writer.AppendWord((ushort)obj_1.Y); writer.AppendByte(0); if (Monster) { ServerSocket.SendPacketIfMonsterIsSpawned(writer.getWorkspace(), Index_); } else { ServerSocket.SendPacketIfPlayerIsSpawned(writer.getWorkspace(), Index_); } if (characterid != 0) { DatabaseCore.WriteQuery("UPDATE characters SET xpos='{0}',ypos='{1}' WHERE id='{2}'", (int)obj_1.X, (int)obj_2.Y, characterid); } return(false); } return(true); }
public static byte[] CreateSpawnPacket(Item._General general, _Position pos) { PacketWriter writer = new PacketWriter(); Silkroad.Item_ tmpItem = Silkroad.GetItemById(general.Pk2ID); if (tmpItem.ITEM_TYPE_NAME.Contains("CH") || tmpItem.ITEM_TYPE_NAME.Contains("EU")) { writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_SPAWN); writer.AppendDword(general.Pk2ID); writer.AppendByte(general.Plus); writer.AppendDword(general.UniqueID); writer.AppendByte(pos.XSector); writer.AppendByte(pos.YSector); writer.AppendFloat(pos.X); writer.AppendFloat(pos.X); writer.AppendFloat(pos.Y); writer.AppendWord(0xAAA6); writer.AppendByte(0); writer.AppendByte(0); writer.AppendByte(6); writer.AppendDword(general.DroppedByUniqueId); } else if (tmpItem.ITEM_TYPE_NAME.Contains("ETC")) { writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_SPAWN); writer.AppendDword(general.Pk2ID); if (general.Pk2ID == 1 || general.Pk2ID == 2 || general.Pk2ID == 3) { writer.AppendDword(general.Quantity); } writer.AppendDword(general.UniqueID); writer.AppendByte(pos.XSector); writer.AppendByte(pos.YSector); writer.AppendFloat(pos.X); writer.AppendFloat(pos.X); writer.AppendFloat(pos.Y); writer.AppendWord(0xAAA6); writer.AppendByte(0); writer.AppendByte(0); writer.AppendByte(6); writer.AppendDword(general.DroppedByUniqueId); } return(writer.getWorkspace()); }
public static bool MoveToObject(int Index_, ref _Position obj_1, _Position obj_2, uint uniqueid, uint characterid, double weapondistance, byte weapontype, bool Monster) { double distance_x = obj_1.X - obj_2.X; double distance_y = obj_1.Y - obj_2.Y; double distance = Formula.CalculateDistance(distance_x, distance_y); if (weapontype == 6 || weapontype == 12) { weapondistance = 250; distance_y -= 100; distance_x -= 150; } if (distance > weapondistance) { distance_x = (distance_x - ((distance_x * 10) / distance)); distance_y = (distance_y - ((distance_y * 10) / distance)); obj_1.X -= (float)distance_x; obj_1.Y -= (float)distance_y; writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_MOVEMENT); writer.AppendDword(uniqueid); writer.AppendByte(1); writer.AppendByte(obj_1.XSector); writer.AppendByte(obj_1.YSector); writer.AppendWord((ushort)obj_1.X); writer.AppendWord((ushort)obj_1.Z); writer.AppendWord((ushort)obj_1.Y); writer.AppendByte(0); if (Monster) ServerSocket.SendPacketIfMonsterIsSpawned(writer.getWorkspace(), Index_); else ServerSocket.SendPacketIfPlayerIsSpawned(writer.getWorkspace(), Index_); if (characterid != 0) DatabaseCore.WriteQuery("UPDATE characters SET xpos='{0}',ypos='{1}' WHERE id='{2}'", (int)obj_1.X, (int)obj_2.Y, characterid); return false; } return true; }
public static double CalculateDistance(_Position Object_1, _Position Object_2) { double distance_x = Object_1.X - Object_2.X; double distance_y = Object_1.Y - Object_2.Y; double x = 0; if (distance_x < 0 && distance_x != 0) { x = distance_x * -1; } else { x = distance_x; } if (distance_y < 0 && distance_y != 0) { return((distance_y * -1) + x); } return(x + distance_y); }
public static byte[] CreateSpawnPacket(Item._General general,_Position pos) { PacketWriter writer = new PacketWriter(); Silkroad.Item_ tmpItem = Silkroad.GetItemById(general.Pk2ID); if (tmpItem.ITEM_TYPE_NAME.Contains("CH") || tmpItem.ITEM_TYPE_NAME.Contains("EU")) { writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_SPAWN); writer.AppendDword(general.Pk2ID); writer.AppendByte(general.Plus); writer.AppendDword(general.UniqueID); writer.AppendByte(pos.XSector); writer.AppendByte(pos.YSector); writer.AppendFloat(pos.X); writer.AppendFloat(pos.X); writer.AppendFloat(pos.Y); writer.AppendWord(0xAAA6); writer.AppendByte(0); writer.AppendByte(0); writer.AppendByte(6); writer.AppendDword(general.DroppedByUniqueId); } else if (tmpItem.ITEM_TYPE_NAME.Contains("ETC")) { writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_SPAWN); writer.AppendDword(general.Pk2ID); if (general.Pk2ID == 1 || general.Pk2ID == 2 || general.Pk2ID == 3) writer.AppendDword(general.Quantity); writer.AppendDword(general.UniqueID); writer.AppendByte(pos.XSector); writer.AppendByte(pos.YSector); writer.AppendFloat(pos.X); writer.AppendFloat(pos.X); writer.AppendFloat(pos.Y); writer.AppendWord(0xAAA6); writer.AppendByte(0); writer.AppendByte(0); writer.AppendByte(6); writer.AppendDword(general.DroppedByUniqueId); } return writer.getWorkspace(); }
public static byte[] CreateSpawnPacket(Player._General general, Player._Flags flags, _Position position, Player._Stats stats, Player._Speeds speeds) { PacketWriter writer = new PacketWriter(); writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_SPAWN); writer.AppendDword(stats.Model); writer.AppendByte(stats.Volume); if (flags.GM == 1) writer.AppendByte(1); else writer.AppendByte((byte)(stats.Level < 20 ? 1 : 0)); writer.AppendByte(1); writer.AppendByte(general.MaxSlots); int tmpCharacterIndex = DatabaseCore.Character.GetIndexByName(general.CharacterName); int[] CharacterItemIndex = DatabaseCore.Item.GetIndexByName(general.CharacterName); byte PlayerItemCount = 0; for (byte j = 0; j < 10; j++) { if (DatabaseCore.Item.ItemId[CharacterItemIndex[j]] != 0) PlayerItemCount++; } writer.AppendByte(PlayerItemCount); for (int j = 0; j < 10; j++) { if (DatabaseCore.Item.ItemId[CharacterItemIndex[j]] != 0) { writer.AppendDword(DatabaseCore.Item.ItemId[CharacterItemIndex[j]]); writer.AppendByte(DatabaseCore.Item.PlusValue[CharacterItemIndex[j]]); } } writer.AppendByte(4); writer.AppendByte(0); writer.AppendByte(0); writer.AppendDword((uint)general.UniqueID); writer.AppendByte(position.XSector); writer.AppendByte(position.YSector); writer.AppendFloat(position.X); writer.AppendFloat(position.Z); writer.AppendFloat(position.Y); writer.AppendWord(0); writer.AppendByte(0); writer.AppendByte(1); writer.AppendByte(0); writer.AppendWord(0); writer.AppendWord(1); writer.AppendByte(flags.Berserk); writer.AppendFloat(speeds.WalkSpeed); writer.AppendFloat(speeds.RunSpeed); writer.AppendFloat(speeds.BerserkSpeed); writer.AppendByte(0); if (flags.GM == 1) { string gmname = string.Format("[GM]{0}", general.CharacterName); writer.AppendWord((ushort)gmname.Length); writer.AppendString(false, gmname); } else { writer.AppendWord((ushort)general.CharacterName.Length); writer.AppendString(false, general.CharacterName); } writer.AppendByte(0); writer.AppendByte(1); writer.AppendDword(0); writer.AppendDword(0); writer.AppendDword(0); writer.AppendDword(0); writer.AppendDword(0); writer.AppendDword(0); writer.AppendDword(0); writer.AppendByte(1); writer.AppendByte((byte)flags.PvP); return writer.getWorkspace(); }
public static bool MoveToObject(int Index_, ref _Position obj_1, _Position obj_2, Player._General general, bool Monster) { return(MoveToObject(Index_, ref obj_1, obj_2, general.UniqueID, general.CharacterID, 28, general.WeaponType, Monster)); }
public static bool MoveToObject(int Index_, ref _Position obj_1, _Position obj_2, uint uniqueid, bool Monster) { return(MoveToObject(Index_, ref obj_1, obj_2, uniqueid, 0, 28, 0, Monster)); }
public static bool MoveToObject(int Index_, ref _Position obj_1, _Position obj_2, Player._General general, bool Monster) { return MoveToObject(Index_, ref obj_1, obj_2, general.UniqueID, general.CharacterID, 28, general.WeaponType, Monster); }
public static bool MoveToObject(int Index_, ref _Position obj_1, _Position obj_2, uint uniqueid, bool Monster) { return MoveToObject(Index_, ref obj_1, obj_2, uniqueid, 0, 28, 0, Monster); }