public static void LearnSkillRequest(IRealmClient client, RealmPacketIn packet) { short skillId = packet.ReadInt16(); byte level = packet.ReadByte(); SkillLearnStatus status = client.ActiveCharacter.PlayerSpells.TryLearnSpell(skillId, level); if (status == SkillLearnStatus.Ok) { return; } SendSkillLearnedResponse(status, client.ActiveCharacter, 0U, 0); }
public static void SendSkillLearnedResponse(SkillLearnStatus status, Character ownerChar, uint id, int level) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.SkillLearned)) { packet.WriteByte((byte)status); packet.WriteInt16(ownerChar.Spells.AvalibleSkillPoints); packet.WriteInt32(ownerChar.Money); packet.WriteInt16(id); packet.WriteByte(level); packet.WriteSkip(stab16); packet.WriteInt16(ownerChar.Asda2Strength); packet.WriteInt16(ownerChar.Asda2Agility); packet.WriteInt16(ownerChar.Asda2Stamina); packet.WriteInt16(ownerChar.Asda2Spirit); packet.WriteInt16(ownerChar.Asda2Intellect); packet.WriteInt16(ownerChar.Asda2Luck); packet.WriteInt16(0); packet.WriteInt16(0); packet.WriteInt16(0); packet.WriteInt16(0); packet.WriteInt16(0); packet.WriteInt16(0); packet.WriteInt16(ownerChar.Asda2Strength); packet.WriteInt16(ownerChar.Asda2Agility); packet.WriteInt16(ownerChar.Asda2Stamina); packet.WriteInt16(ownerChar.Asda2Spirit); packet.WriteInt16(ownerChar.Asda2Intellect); packet.WriteInt16(ownerChar.Asda2Luck); packet.WriteInt32(ownerChar.MaxHealth); packet.WriteInt16(ownerChar.MaxPower); packet.WriteInt32(ownerChar.Health); packet.WriteInt16(ownerChar.Power); packet.WriteInt16((short)ownerChar.MinDamage); packet.WriteInt16((short)ownerChar.MaxDamage); packet.WriteInt16(ownerChar.MinMagicDamage); packet.WriteInt16(ownerChar.MaxMagicDamage); packet.WriteInt16((short)ownerChar.Asda2MagicDefence); packet.WriteInt16((short)ownerChar.Asda2Defence); packet.WriteInt16((short)ownerChar.Asda2Defence); packet.WriteFloat(ownerChar.BlockChance); packet.WriteFloat(ownerChar.BlockValue); packet.WriteInt16(15); packet.WriteInt16(7); packet.WriteInt16(4); packet.WriteSkip(stub87); ownerChar.Send(packet, false); } }