public static void SendAttackDamage(MapObject from, ushort objectID, ushort damage, bool crit, uint hpleft, ushort counter) { using (var packet = new Packet(SH9Type.AttackDamage)) { packet.WriteUShort(from.MapObjectID); packet.WriteUShort(objectID); packet.WriteBool(crit); packet.WriteUShort(damage); packet.WriteUInt(hpleft); packet.WriteUShort(counter); packet.WriteByte(4); packet.WriteByte(100); from.MapSector.Broadcast(packet); } }
public void UpdateCharacterHpSp(ZoneCharacter pChar) { using (Packet packet = new Packet(SH14Type.UpdatePartyMemberStats)) { packet.WriteByte(0x01); // UNK packet.WriteString(pChar.Name, 16); packet.WriteUInt(pChar.HP); packet.WriteUInt(pChar.SP); AnnouncePacketToUpdatable(packet); } using(Packet packet = new Packet(SH14Type.SetMemberStats)) { packet.WriteByte(1); // UNK packet.WriteString(pChar.Name, 16); packet.WriteByte((byte) pChar.Job); packet.WriteByte(pChar.Level); packet.WriteUInt(pChar.MaxHP); packet.WriteUInt(pChar.MaxSP); packet.WriteByte(0x00); // UNK } }
public static void SendSkillPosition(MapObject user, ushort animid, ushort skillid, uint x, uint y) { // 9 81 | [32 29] [B8 10] [56 0A 00 00] [3A 27 00 00] [75 70] using (var packet = new Packet(SH9Type.SkillAnimationPosition)) { packet.WriteUShort(user.MapObjectID); packet.WriteUShort(skillid); packet.WriteUInt(x); packet.WriteUInt(y); packet.WriteUShort(animid); user.MapSector.Broadcast(packet); } }
public static void SendUpdateSP(ZoneCharacter character) { using (var p = new Packet(SH9Type.HealSP)) { p.WriteUInt(character.SP); p.WriteUShort(character.UpdateCounter); character.Client.SendPacket(p); } }
public void WriteUpdateStats(Packet packet) { packet.WriteUInt(HP); packet.WriteUInt(MaxHP); // Max HP packet.WriteUInt(SP); packet.WriteUInt(MaxSP); // Max SP packet.WriteByte(Level); packet.WriteUShort(this.UpdateCounter); }
public static void SendSkill(MapObject user, ushort animid, List<SkillVictim> victims) { using (var packet = new Packet(SH9Type.SkillAnimationTarget)) { packet.WriteUShort(animid); packet.WriteUShort(user.MapObjectID); packet.WriteByte((byte)(victims.Count > 255 ? 255 : victims.Count)); for (byte i = 0; i < victims.Count && i != 255; i++) { var victim = victims[i]; packet.WriteUShort(victim.MapObjectID); packet.WriteByte(victim.Stance1); packet.WriteByte(victim.Stance2); packet.WriteUInt(victim.Damage); packet.WriteUInt(victim.HPLeft); packet.WriteUShort(victim.HPCounter); } user.MapSector.Broadcast(packet); } }
public static void SendPremiumItemList(ZoneCharacter character) { using (var packet = new Packet(SH4Type.CharacterItemList)) { ushort count = 0; packet.WriteUShort(count); // Count for (ushort i = 0; i < count; i++) { packet.WriteUShort(0x0010); // Inventory packet.WriteUShort(0x0000); // Slot packet.WriteUShort(0x033B); // Item Handle // (Iron Case, to add 4 extra inventories :P) packet.WriteUInt(1992027391); // Activation Time (1992027391 - Permanent) packet.WriteUInt(1992027391); // Expiring Time (1992027391 - Permanent) } character.Client.SendPacket(packet); } }
public void WriteDetailedInfoExtra(Packet packet, bool levelUP = false) { if (!levelUP) { packet.WriteUShort(this.MapObjectID); } packet.WriteLong(this.Exp); packet.WriteULong(DataProvider.Instance.GetMaxExpForLevel(this.Level)); packet.WriteInt(BaseStats.Strength); packet.WriteInt(BaseStats.Strength + GetExtraStr()); packet.WriteInt(BaseStats.Endurance); packet.WriteInt(BaseStats.Endurance + GetExtraEnd()); packet.WriteInt(BaseStats.Dexterity); packet.WriteInt(BaseStats.Dexterity + GetExtraDex()); packet.WriteInt(BaseStats.Intelligence); packet.WriteInt(BaseStats.Intelligence + GetExtraInt()); packet.WriteInt(0); // Wizdom. It isn't set in the server so it can contain shit from old buffers... :D packet.WriteInt(0); // I once had a name here :P packet.WriteInt(BaseStats.Spirit); packet.WriteInt(BaseStats.Spirit + GetExtraSpr()); packet.WriteInt(GetWeaponDamage()); //base damage packet.WriteInt(GetWeaponDamage(true)); //increased damage (e.g. buffs) packet.WriteInt(GetMagicDamage()); //magic dmg packet.WriteInt(GetMagicDamage(true)); //inc magic dmg packet.WriteInt(GetWeaponDefense()); //todo equip stats loading (weapondef) packet.WriteInt(GetWeaponDefense(true)); //weapondef inc packet.WriteInt(GetAim()); //TODO: basestats aim + dex? packet.WriteInt(GetAim(true)); //aim inc (calcuate later based on dex) packet.WriteInt(GetEvasion()); //evasion packet.WriteInt(GetEvasion(true)); //evasion inc packet.WriteInt(GetWeaponDamage()); //damage block again packet.WriteInt(GetWeaponDamage(true)); packet.WriteInt(GetMagicDamage()); //magic damage packet.WriteInt(GetMagicDamage(true)); packet.WriteInt(GetMagicDefense()); //magic def packet.WriteInt(GetMagicDefense(true)); //magic def inc packet.WriteInt(1); packet.WriteInt(20); packet.WriteInt(2); packet.WriteInt(40); packet.WriteUInt(BaseStats.MaxHP); //max HP packet.WriteUInt(BaseStats.MaxSP); //max SP packet.WriteInt(0); // UNK packet.WriteInt(BaseStats.MaxSoulHP); // Max HP Stones packet.WriteInt(BaseStats.MaxSoulSP); // Max SP Stones packet.Fill(64, 0); if (!levelUP) { packet.WriteInt(this.Position.X); packet.WriteInt(this.Position.Y); } }
public static void SendHouseList(ZoneCharacter character) { //TODO: house loading using (var packet = new Packet(SH4Type.CharacterItemList)) { byte count = 0; packet.WriteByte(count); // Count packet.WriteByte(0x0C); // Inventory packet.WriteByte(0x35); // UNK (In newest client it exists, in bit older, not) for (byte i = 0; i < count; i++) { packet.WriteByte(8); // Item Data Length packet.WriteByte(i); // Slot packet.WriteByte(0x30); // UNK packet.WriteUShort((ushort)(31000 + i * 3)); // Item ID packet.WriteUInt(1992027391); // Expiring Time (1992027391 - Permanent) } character.Client.SendPacket(packet); } }
public static void SendPremiumEmotions(ZoneCharacter character) { using (var packet = new Packet(SH4Type.CharacterItemList)) { byte count = 0; packet.WriteByte(count); // Count packet.WriteByte(0x0F); // Inventory packet.WriteByte(0xCB); // UNK (In newest client it exists, in bit older, not) for (byte i = 0; i < count; i++) { packet.WriteByte(8); // Item Data Length packet.WriteByte(i); // Slot packet.WriteByte(0x3C); // Inventory thing packet.WriteUShort((ushort)(31500 + (16 < i ? 1 : 0) + i * 2)); // Item ID packet.WriteUInt(1992027391); // Expiring Time (1992027391 - Permanent) } character.Client.SendPacket(packet); } }
public void WriteStats(Packet Packet) { Packet.WriteUShort(ItemInfo.ItemID); switch (ItemInfo.Class) { case ItemClass.Mount: Packet.WriteUShort(100); // food ? Packet.WriteUInt(0); // use time? Packet.WriteUInt(1992027391); // expire time? Packet.WriteUShort(0); // unk ? break; case ItemClass.QuestItem: Packet.WriteByte(0); // unk ? break; case ItemClass.PremiumItem: Packet.WriteUInt(0); // use time Packet.WriteUInt(1992027391); // expire time break; case ItemClass.CollectCard: Packet.WriteUInt(1000); // serial Packet.WriteByte(5); // stars break; } }
public void WriteEquipStats(Packet Packet) { var length = GetEquipLength(this); var statCount = GetInfoStatCount(this); length += (byte)(statCount * 3); Packet.WriteUShort(ItemInfo.ItemID); switch (ItemInfo.Slot) { case ItemSlot.Weapon: case ItemSlot.Weapon2: case ItemSlot.Armor: case ItemSlot.Pants: case ItemSlot.Boots: case ItemSlot.Helm: case ItemSlot.Pet: Packet.WriteByte(0);//upgrades Packet.WriteByte(0); // unk Packet.WriteUInt(0); // unk2 Packet.WriteByte(0); // unk3 if ((ItemInfo.Slot == ItemSlot.Weapon || ItemInfo.Slot == ItemSlot.Weapon2) && ItemInfo.Class != ItemClass.Shield) { Packet.WriteUShort(0xFFFF); // title mob 1 Packet.WriteUInt(0); // title mob 1 kill count Packet.WriteUShort(0xFFFF); // title mob 2 Packet.WriteUInt(0); // title mob 2 kill count Packet.WriteUShort(0xFFFF); // title mob 3 Packet.WriteUInt(0); // title mob 3 kill count Packet.WriteUShort(0xFFFF); // unk Packet.WriteString("", 16); // license adder name Packet.WriteByte(0); } Packet.WriteUInt(1992027391); // unk4 break; case ItemSlot.Necklace: case ItemSlot.Earings: case ItemSlot.Ring: case ItemSlot.Ring2: Packet.WriteUInt(1992027391); // expire time? Packet.WriteUInt(0); // time ? Packet.WriteByte(0);//upgrades Packet.WriteUShort(0); // refinement stats? Packet.WriteUShort((ushort)UpgradeStats.Str); Packet.WriteUShort((ushort)UpgradeStats.End); Packet.WriteUShort((ushort)UpgradeStats.Dex); Packet.WriteUShort((ushort)UpgradeStats.Int); Packet.WriteUShort((ushort)UpgradeStats.Spr); break; default: Packet.WriteUInt(0); Packet.WriteUInt(1992027391); // expire time? break; } switch (ItemInfo.Slot) { case ItemSlot.Weapon: case ItemSlot.Weapon2: case ItemSlot.Armor: case ItemSlot.Pants: case ItemSlot.Boots: case ItemSlot.Helm: case ItemSlot.Pet: case ItemSlot.Necklace: case ItemSlot.Earings: case ItemSlot.Ring: case ItemSlot.Ring2: Packet.WriteByte((byte)(statCount << 1 | 1)); if (ItemInfo.Stats.Str > 0) { Packet.WriteByte(0); Packet.WriteUShort((ushort)ItemInfo.Stats.Str); } if (ItemInfo.Stats.End > 0) { Packet.WriteByte(1); Packet.WriteUShort((ushort)ItemInfo.Stats.End); } if (ItemInfo.Stats.Dex > 0) { Packet.WriteByte(2); Packet.WriteUShort((ushort)ItemInfo.Stats.Dex); } if (ItemInfo.Stats.Spr > 0) { Packet.WriteByte(3); Packet.WriteUShort((ushort)ItemInfo.Stats.Spr); } if (ItemInfo.Stats.Int > 0) { Packet.WriteByte(4); Packet.WriteUShort((ushort)ItemInfo.Stats.Int); } break; } }
public static void GotIngame(WorldClient client, Packet packet) { /* using (var p1 = new Packet(SH4Type.CharacterGuildacademyinfo)) { if(client.Character.GuildAcademy != null) { } else { p1.Fill(5, 0); } client.SendPacket(p1); } using (var p2 = new Packet(SH4Type.CharacterGuildinfo)) { if (client.Character.Guild != null) { client.Character.Guild.Details.WriteMessageAsGuildMember(p2, client.Character.Guild); } else { p2.WriteInt(0); } client.SendPacket(p2); }*/ // dafuq no op code.. using (var p = new Packet(0x581C)) { //p.WriteShort(); p.WriteUInt(0x4d0bc167); // 21h client.SendPacket(p); } // dafuq no op code.. using (var p3 = new Packet(0x581D)) { p3.WriteShort(0); //zero kingdom quests! client.SendPacket(p3); } using (var p4 = new Packet(21, 7)) { p4.WriteByte((byte)client.Character.Friends.Count); client.Character.WriteFriendData(p4); client.SendPacket(p4); } using (var p5 = new Packet(SH2Type.UnkTimePacket)) { p5.WriteShort(256); client.SendPacket(p5); } if (!client.Character.IsIngame) { client.Character.IsIngame = true; client.Character.OneIngameLoginLoad(); MasterManager.Instance.SendMasterList(client); //SendMasterList(pClient); } Managers.CharacterManager.InvokdeIngame(client.Character); client.Character.OnGotIngame(); }
public void UpdateCharacterLevel(ZoneCharacter pChar) { using (Packet packet = new Packet(SH14Type.SetMemberStats)) { packet.WriteByte(0x01); // UNK packet.WriteString(pChar.Name, 16); packet.WriteByte((byte)pChar.Job); packet.WriteByte(pChar.Level); packet.WriteUInt(pChar.MaxHP); packet.WriteUInt(pChar.MaxSP); packet.WriteByte(0x01); // UNK AnnouncePacket(packet); } }
public static void SendGainExp(ZoneCharacter who, uint amount, ushort mobid = (ushort) 0xFFFF) { using (var packet = new Packet(SH9Type.GainExp)) { packet.WriteUInt(amount); packet.WriteUShort(mobid); who.Client.SendPacket(packet); } }
public void WriteDetailedInfo(Packet pPacket) { pPacket.WriteInt(ID); pPacket.WriteString(this.Name, 16); pPacket.WriteByte(this.Slot); pPacket.WriteByte(this.Level); pPacket.WriteLong(this.Exp); pPacket.WriteInt(12345678); // UNK pPacket.WriteShort(this.StonesHP); pPacket.WriteShort(this.StonesSP); pPacket.WriteUInt(this.HP); pPacket.WriteUInt(this.SP); pPacket.WriteInt(this.Fame); pPacket.WriteLong(this.Inventory.Money); pPacket.WriteString(this.Map.MapInfo.ShortName, 12); pPacket.WriteInt(this.Position.X); pPacket.WriteInt(this.Position.Y); pPacket.WriteByte(this.Rotation); pPacket.WriteByte(this.Str);// -. pPacket.WriteByte(this.End);// | pPacket.WriteByte(this.Dex);// | Boni pPacket.WriteByte(this.Int);// | pPacket.WriteByte(this.Spr);// -' pPacket.WriteShort(0); // UNK pPacket.WriteUInt(0); // Killpoints (TODO) pPacket.Fill(7, 0); // UNK }
public static void SendSkill(MapObject user, ushort animid, ushort victimid, uint damage, uint newhp, ushort counter, byte special1 = (byte) 0x10, byte special2 = (byte) 0x00) { // 9 82 | [E5 3F] [8A 27] [01] [8A 27] [10 00] [09 00 00 00] [5E 00 00 00] [A7 4C] // 9 82 | [9A 35] [8A 27] [01] [C2 05] [10 00] [0A 00 00 00] [1D 01 00 00] [73 37] // 9 82 | [43 3C] [42 15] [01] [AC 4C] [01 01] [7A 02 00 00] [00 00 00 00] [35 09] // 9 82 | [0E 39] [42 15] [01] [00 4A] [21 01] [1C 03 00 00] [00 00 00 00] [8C 0E] using (var packet = new Packet(SH9Type.SkillAnimationTarget)) { packet.WriteUShort(animid); packet.WriteUShort(user.MapObjectID); packet.WriteBool(true); packet.WriteUShort(victimid); packet.WriteByte(special1); packet.WriteByte(special2); packet.WriteUInt(damage); packet.WriteUInt(newhp); packet.WriteUShort(counter); user.MapSector.Broadcast(packet); } }
public void WriteUpdateStats(Packet packet) { packet.WriteUInt(this.HP); packet.WriteUInt(BaseStats.MaxHP); packet.WriteUInt(this.SP); packet.WriteUInt(BaseStats.MaxSP); packet.WriteByte(this.Level); packet.WriteUShort(this.UpdateCounter); }
private void Test99(ZoneCharacter character, params string[] param) { using (var packet = new Packet(SH14Type.UpdatePartyMemberStats)) { packet.WriteByte(1);//unk packet.WriteString("Stan", 16); packet.WriteUInt(character.HP); packet.WriteUInt(character.SP); character.Client.SendPacket(packet); } using (var ppacket = new Packet(SH14Type.SetMemberStats))//when character has levelup in group { ppacket.WriteByte(1); ppacket.WriteString("Stan", 16); ppacket.WriteByte((byte)character.Job); ppacket.WriteByte(character.Level); ppacket.WriteUInt(character.MaxHP);//maxhp ppacket.WriteUInt(character.MaxSP);//MaxSP ppacket.WriteByte(1); character.Client.SendPacket(ppacket); } }