public static Combatant GetPlayerData() { Combatant player = new Combatant(); var scanCombatants = GetScanCombatants(); if (scanCombatants == null) return null; var item = scanCombatants.GetType().InvokeMember("GetPlayerData", BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, scanCombatants, null); FieldInfo fi = item.GetType().GetField("JobID", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetField); player.Job = (int)fi.GetValue(item); return player; }
public static List<Combatant> GetCombatantList() { List<Combatant> result = new List<Combatant>(); try { var scanCombatants = GetScanCombatants(); if (scanCombatants == null) return null; var item = scanCombatants.GetType().InvokeMember("GetCombatantList", BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, scanCombatants, null); FieldInfo fi = item.GetType().GetField("_items", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField); Type[] nestedType = item.GetType().GetNestedTypes(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public); object tmp = fi.GetValue(item); if (tmp.GetType().IsArray) { foreach (object temp in (Array)tmp) { if (temp == null) break; Combatant combatant = new Combatant(); fi = temp.GetType().GetField("ID", BindingFlags.Public | BindingFlags.Instance); combatant.ID = (uint)fi.GetValue(temp); fi = temp.GetType().GetField("OwnerID", BindingFlags.Public | BindingFlags.Instance); combatant.OwnerID = (uint)fi.GetValue(temp); fi = temp.GetType().GetField("Order", BindingFlags.Public | BindingFlags.Instance); combatant.Order = (int)fi.GetValue(temp); fi = temp.GetType().GetField("type", BindingFlags.Public | BindingFlags.Instance); combatant.type = (byte)fi.GetValue(temp); fi = temp.GetType().GetField("Level", BindingFlags.Public | BindingFlags.Instance); combatant.Level = (int)fi.GetValue(temp); fi = temp.GetType().GetField("Job", BindingFlags.Public | BindingFlags.Instance); combatant.Job = (int)fi.GetValue(temp); fi = temp.GetType().GetField("Name", BindingFlags.Public | BindingFlags.Instance); combatant.Name = (string)fi.GetValue(temp); fi = temp.GetType().GetField("CurrentHP", BindingFlags.Public | BindingFlags.Instance); combatant.CurrentHP = (int)fi.GetValue(temp); fi = temp.GetType().GetField("MaxHP", BindingFlags.Public | BindingFlags.Instance); combatant.MaxHP = (int)fi.GetValue(temp); fi = temp.GetType().GetField("CurrentMP", BindingFlags.Public | BindingFlags.Instance); combatant.CurrentMP = (int)fi.GetValue(temp); fi = temp.GetType().GetField("MaxMP", BindingFlags.Public | BindingFlags.Instance); combatant.MaxMP = (int)fi.GetValue(temp); fi = temp.GetType().GetField("CurrentTP", BindingFlags.Public | BindingFlags.Instance); combatant.CurrentTP = (int)fi.GetValue(temp); result.Add(combatant); } } } catch { } return result; }