private void ShowEtcSkillList(L2Player talker, int type) { TAcquireSkillsEntry skills = TSkillTable.getInstance().getPledgeSkills(); SortedList <int, TAcquireSkill> avail = new SortedList <int, TAcquireSkill>(); int nextLvl = 800; foreach (TAcquireSkill e in skills.skills) { if (e.get_lv > talker.Clan.Level) { if (nextLvl > e.get_lv) { nextLvl = e.get_lv; } continue; } if (avail.ContainsKey(e.id)) { continue; } if (talker.Clan.MainSkill.ContainsKey(e.id)) { if (talker.Clan.MainSkill[e.id] >= e.lv) { continue; } if (!avail.ContainsKey(e.id)) { avail.Add(e.id, e); break; } } else { avail.Add(e.id, e); } } talker.ActiveSkillTree = avail; talker.sendPacket(new AcquireSkillList(AcquireSkillList.ESTT_CLAN, talker)); }
protected internal override void use(L2Player admin, string alias) { if (!(admin.CurrentTarget is L2Player)) { admin.sendMessage("target is not a player."); return; } L2Player target = admin.CurrentTarget as L2Player; TAcquireSkillsEntry skills = TSkillTable.getInstance().getAllRegularSkills(target.ActiveClass.ClassId.Id); SortedList <int, TAcquireSkill> avail = new SortedList <int, TAcquireSkill>(); Dictionary <int, int> updDel = new Dictionary <int, int>(); int nextLvl = 800; foreach (TAcquireSkill e in skills.skills) { if (e.get_lv > target.Level) { if (nextLvl > e.get_lv) { nextLvl = e.get_lv; } continue; } if (avail.ContainsKey(e.id)) { continue; } if (target._skills.ContainsKey(e.id)) { TSkill skill = target._skills[e.id]; if (skill.level >= e.lv) { continue; } if (!avail.ContainsKey(e.id)) { avail.Add(e.id, e); updDel.Add(e.id, e.lv); break; } } else { avail.Add(e.id, e); } } //foreach (int a in updDel.Keys) // target.removeSkill(a, true, false); //updDel.Clear(); foreach (TAcquireSkill sk in avail.Values) { TSkill skill = TSkillTable.getInstance().get(sk.id, sk.lv); if (skill != null) { target.addSkill(skill, false, false); } else { target.sendMessage("no skill #" + sk.id + "-" + sk.lv); } } target.ActiveSkillTree = avail; target.sendPacket(new AcquireSkillList(0, target)); target.updateSkillList(); target.sendMessage("gor all skills [" + skills.skills.Count + "][" + avail.Count + "] for lv" + target.Level + ", class @" + target.ActiveClass.ClassId.Id.ToString()); }