ActorData GetActorInfo(uint id) { string query_str = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "id" , id.ToString()); var table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query_str); if (table_reader == null) { return null; } if (!table_reader.HasRows) { table_reader.Close(); table_reader.Dispose(); return null; } if (!table_reader.Read()) { table_reader.Close(); table_reader.Dispose(); return null; } ActorData ad = new ActorData(); ad.name = GetReaderString(table_reader, "name"); ad.vocation = DBTextResource.ParseBT(GetReaderString(table_reader, "vocation")); ad.level = DBTextResource.ParseUI(GetReaderString(table_reader, "level")); ad.color = (Monster.QualityColor)DBTextResource.ParseBT_s(GetReaderString(table_reader, "color"), 0); ; ad.type = DBTextResource.ParseBT(GetReaderString(table_reader, "type")); ad.war_tag = DBTextResource.ParseBT(GetReaderString(table_reader, "war_tag")); ad.race_id = DBTextResource.ParseUI(GetReaderString(table_reader, "race_id")); ad.skill_count = DBTextResource.ParseBT(GetReaderString(table_reader, "skill_count")); if (ad.skill_count > 0) { ad.skill_idx = new uint[ad.skill_count]; ad.cast_rate = new byte[ad.skill_count]; for (int k = 0; k < ad.skill_count; ++k) { ad.skill_idx[k] = DBTextResource.ParseUI_s(GetReaderString(table_reader, string.Format("skill_idx_{0}", k)), 0); ad.cast_rate[k] = DBTextResource.ParseBT(GetReaderString(table_reader, string.Format("cast_rate_{0}", k))); } } ad.model_id = DBTextResource.ParseUI(GetReaderString(table_reader, "model_id")); ad.runspeed = (ushort)GetReaderFloat(table_reader, "runspeed"); ad.motion_radius = DBTextResource.ParseBT(GetReaderString(table_reader, "motion_radius")); ad.behaviour_tree = GetReaderString(table_reader, "behaviour_tree"); ad.summon_behaviour_tree = GetReaderString(table_reader, "summon_behaviour_tree"); ad.attack_rotaion = DBTextResource.ParseBT(GetReaderString(table_reader, "attack_rotaion")); ad.hp_bar_count = DBTextResource.ParseBT(GetReaderString(table_reader, "hp_bar_count")); ad.gravity = DBTextResource.ParseUS_s(GetReaderString(table_reader, "gravity"), DBActor.Gravity); ad.dead_notify = DBTextResource.ParseByteArray(GetReaderString(table_reader, "dead_notify")); ad.spawn_timeline = DBTextResource.ParseUI(GetReaderString(table_reader, "spawn_timeline")); ad.dead_timeline = DBTextResource.ParseUI(GetReaderString(table_reader, "dead_timeline")); string isHideShadow = GetReaderString(table_reader, "is_hide_shadow"); if (isHideShadow == string.Empty || isHideShadow == "0") { ad.is_hide_shadow = false; } else { ad.is_hide_shadow = true; } string isHideSelectEffect = GetReaderString(table_reader, "is_hide_select_effect"); if (isHideSelectEffect == string.Empty || isHideSelectEffect == "0") { ad.is_hide_select_effect = false; } else { ad.is_hide_select_effect = true; } ad.attr_param = DBTextResource.ParseUI_s(GetReaderString(table_reader, "attr_param"), 0); ad.default_actor_id = DBTextResource.ParseUI_s(GetReaderString(table_reader, "default_actor_id"), 0); data[id] = ad; table_reader.Close(); table_reader.Dispose(); return ad; }