本文整理匯總了C#中WCell.RealmServer.Entities.Character.CanLearn方法的典型用法代碼示例。如果您正苦於以下問題:C# Character.CanLearn方法的具體用法?C# Character.CanLearn怎麽用?C# Character.CanLearn使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類WCell.RealmServer.Entities.Character
的用法示例。
在下文中一共展示了Character.CanLearn方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: SendTrainerList
public static void SendTrainerList(this NPC trainer, Character chr, IEnumerable<TrainerSpellEntry> spells,
string msg)
{
using (
var packet = new RealmPacketOut(RealmServerOpCode.SMSG_TRAINER_LIST, 8 + 4 + 4 + (30 * 38) + msg.Length + 1))
{
packet.Write(trainer.EntityId);
packet.Write((uint)trainer.TrainerEntry.TrainerType);
var countPos = packet.Position;
packet.Position += 4;
var spellCount = 0;
foreach (var trainerSpell in spells)
{
if (!chr.CanLearn(trainerSpell))
{
continue;
}
var spell = trainerSpell.Spell;
if (spell.IsTeachSpell)
{
spell = spell.LearnSpell;
}
//packet.Position = offset + (spell.Index * entryLength);
packet.Write(trainerSpell.Spell.Id);
packet.Write((byte)trainerSpell.GetTrainerSpellState(chr));
packet.Write(trainerSpell.GetDiscountedCost(chr, trainer));
packet.Write(spell.Talent != null ? 1u : 0u); // talent cost
packet.Write(trainerSpell.Spell.IsProfession && trainerSpell.Spell.TeachesApprenticeAbility ? 1 : 0); // Profession cost
packet.Write((byte)trainerSpell.RequiredLevel);
packet.Write((uint)trainerSpell.RequiredSkillId);
packet.Write(trainerSpell.RequiredSkillAmount);
packet.Write((uint)trainerSpell.RequiredSpellId);
// The following are infrequent Ids of some sort - Possibly spell replacements?
packet.Write(0u);
packet.Write(0u);
++spellCount;
}
packet.Write(msg);
packet.Position = countPos;
packet.Write(spellCount);
chr.Send(packet);
}
}