KaizenSoze Posted January 9 Author Posted January 9 1 hour ago, Carnifax said: Do really wish all Procs logged like pet powers do, as a subpower of the main power. It'd make our lives so much easier here (procs in the pet / patches do, just wish it did the same thing for stuff like Freezing Touch). I have a thread for logging suggestions. The problem is that procs fires are odd side effects of damage. They come from different code sections which don't have power details. 1 hour ago, Carnifax said: But I'd love to see your DPS calc code if you wouldn't mind because my graphs always end up the same way and your figures look way more correct (this is from a Yin I was just on) It's a bit complicated, but here is the basics. Note, you can use Sqlite Studio to look at database in the output directory. It starts with this view: Spoiler select da1.summary_key, da1.line_number, da1.log_date, da1.damage as damage, (CASE WHEN ROUND(((julianday((select da2.log_date from damage_action da2 where da1.summary_key = da2.summary_key AND da2.line_number > da1.line_number limit 1)) - julianday(da1.log_date)) * 86400)) IS NULL THEN 1000000 ELSE ROUND(((julianday((select da2.log_date from damage_action da2 where da1.summary_key = da2.summary_key AND da2.line_number > da1.line_number limit 1)) - julianday(da1.log_date)) * 86400)) END) as delta from damage_action da1 where da1.source_type IN ('Player', 'PlayerPet') order by da1.summary_key You get a table of damage points with the time delta from the next point. Then group by time delta depending on the configured interval. https://github.com/PaulBenHill/cyclops/blob/master/src/db/queries.rs Spoiler pub fn get_damage_intervals_query( conn: &mut SqliteConnection, key: i32, interval: i32, ) -> Vec<Vec<DamageIntervals>> { use crate::schema::damage_intervals::dsl::*; let intervals: Vec<DamageIntervals> = damage_intervals .filter(summary_key.eq(key)) .load(conn) .expect("Unable to load damage intervals"); let mut result: Vec<Vec<DamageIntervals>> = Vec::new(); let mut current_interval: Vec<DamageIntervals> = Vec::new(); for i in intervals { current_interval.push(i.to_owned()); if i.delta >= interval { result.push(current_interval); current_interval = Vec::new(); } } if !current_interval.is_empty() { result.push(current_interval); } result } Then there is some addition to code to total up the damage, calculate the elapsed time, end lines, and then dps. https://github.com/PaulBenHill/cyclops/blob/master/src/web/dps_interval_table.rs Spoiler fn generate_dps_report(context: &AppContext, query: &TableQuery) -> Vec<Interval> { let mut conn1 = db::get_file_conn(query.db_path.clone().into()); let binding = db::queries::get_summary(&mut conn1, query.key); let summary = binding.get(0).unwrap(); let mut conn2 = db::get_file_conn(query.db_path.clone().into()); let damage_intervals = db::queries::get_damage_intervals_query(&mut conn2, query.key, context.dps_interval as i32); let line_count = summary.last_line_number - summary.first_line_number; let mut result = Vec::<Interval>::new(); for intervals in damage_intervals { let first_interval = intervals.first().unwrap(); let last_interval = intervals.last().unwrap(); let mut end_line: i32 = 0; if end_line < line_count { end_line = last_interval.line_number; } else { end_line = line_count; } let total_damage: i32 = intervals.iter().map(|i| i.damage).sum(); let elapsed_seconds = DateTime::parse_from_rfc3339(last_interval.log_date.as_str()) .unwrap() .timestamp() - DateTime::parse_from_rfc3339(first_interval.log_date.as_str()) .unwrap() .timestamp(); if elapsed_seconds > 0 { let elapsed_duration = Duration::from_secs(elapsed_seconds as u64).as_secs(); let pretty_elapsed = format!( "{} min(s) {} second(s)", elapsed_duration / 60, elapsed_duration % 60 ); let mut dps = total_damage as i64; if elapsed_seconds > 0 { dps = dps / elapsed_seconds; } result.push(Interval { start_line: first_interval.line_number, end_line: end_line, total_lines: intervals.len() as i32, elapsed_seconds: elapsed_seconds, pretty_elapsed: pretty_elapsed, total_damage: total_damage, dps: dps as i32, }); } } result } It was one the first things I wrote in the tool, so it could use some refactoring. My SQL Fu wasn't good enough at the time to do more in the database layer. Night Pixie on Excelsior Introduction to Arachnos Widows - Night/Blood/Fortunata
KaizenSoze Posted January 15 Author Posted January 15 New version available. Cyclops 1.3 with new game overlay feature. 3 Night Pixie on Excelsior Introduction to Arachnos Widows - Night/Blood/Fortunata
nekkidtruth Posted February 9 Posted February 9 (edited) On 1/15/2025 at 2:10 PM, KaizenSoze said: New version available. Cyclops 1.3 with new game overlay feature. Ignore me. I'm an idiot. I got it working. At least I think it's working. The overlay won't stay on top of the client. Any fix for that? Edited February 9 by nekkidtruth
KaizenSoze Posted February 9 Author Posted February 9 7 minutes ago, nekkidtruth said: Just trying this for the first time. No matter which overlay file I use, edited or unedited, I get: Monitor configuration file is not readable: ".\\configs\\monitor.whateveriuse.json" They've all been run through JSON Online Validator and come up clean. Could you paste the contents of your overlay.bat file here? Night Pixie on Excelsior Introduction to Arachnos Widows - Night/Blood/Fortunata
nekkidtruth Posted February 9 Posted February 9 (edited) 4 minutes ago, KaizenSoze said: Could you paste the contents of your overlay.bat file here? I figured it out. I'm a moron. The issue was I was pointing at the files directly and they were all still in \examples\, which I was missing when listing the directory. So it's reading them now. My issue now is it won't stay on top of the client. And it seems it's not actually reading anything as all I see is this with no changes: Edited February 9 by nekkidtruth
KaizenSoze Posted February 9 Author Posted February 9 4 minutes ago, nekkidtruth said: I figured it out. I'm a moron. The issue was I was pointing at the files directly and they were all still in \examples\, which I was missing when listing the directory. So it's reading them now. My issue now is it won't stay on top of the client. And it seems it's not actually reading anything as all I see is this with no changes: Glad you figured it out. I will have better UIs next major release to avoid this kinds of issues. As for the overlay not staying on top. There is an issue, where have to run the COH client in windowed mode for the overlay to stay on top. MS Windows makes it very hard to get an overlay to stay on top of a full screen application. I am researching a solution. Thank you for using it! Night Pixie on Excelsior Introduction to Arachnos Widows - Night/Blood/Fortunata
nekkidtruth Posted February 9 Posted February 9 Aha. Yeah I switched to Windowed mode and it stays on top for sure. However, still not getting it to actively work. There doesn't seem to be any data churning. I used the Blaster template and changed Atomic Blast to Nova and left Aim and I'm not getting notifications on my screen for either when using them. As well as the DPS, EXP and Inf are both not showing anything either. I'll keep fiddling.
nekkidtruth Posted February 9 Posted February 9 26 minutes ago, nekkidtruth said: Aha. Yeah I switched to Windowed mode and it stays on top for sure. However, still not getting it to actively work. There doesn't seem to be any data churning. I used the Blaster template and changed Atomic Blast to Nova and left Aim and I'm not getting notifications on my screen for either when using them. As well as the DPS, EXP and Inf are both not showing anything either. I'll keep fiddling. Once again, I'm an idiot. There was a \ missing in the directory name. That will teach me to attempt these things on a Sunday morning before coffee!!! 1
nekkidtruth Posted February 9 Posted February 9 Feedback: Colors I'd like to be able to set colors for specific messages. For example, when a power has recharged, green works perfect. However, when MoG drops for example, I want that in red. Maybe allowing colors to be set under each individual rule would be the best option? Font Size Basically the same as above. More control over the size of font per rule. DPS/EXP/Inf Monitor I'm not clear on what's it doing. It looks like it's showing totals and then, what I'm assuming, is the 5 minute average? This should be a lot more clear. Can you clarify if it's feasible to do per minute for these? Perhaps even the ability to adjust to suit whatever the player is looking for. I understand there may be some limitations, for example it could be that math might need to be used to divide the data into per minute or even per second. I would say use whichever is easiest and then contrive some formula the break it down and give us the option to choose which we'd like to see. Example: Per Hour, Per Minute, Per Second etc. I'm definitely looking forward to seeing this mature. I really miss the old overlay system. This has so much potential. Do you have a Discord or any other place for further discussion? Or just here on the forums? Thank you!
KaizenSoze Posted February 9 Author Posted February 9 53 minutes ago, nekkidtruth said: Feedback: Colors I'd like to be able to set colors for specific messages. For example, when a power has recharged, green works perfect. However, when MoG drops for example, I want that in red. Maybe allowing colors to be set under each individual rule would be the best option? Font Size Basically the same as above. More control over the size of font per rule. DPS/EXP/Inf Monitor I'm not clear on what's it doing. It looks like it's showing totals and then, what I'm assuming, is the 5 minute average? This should be a lot more clear. Can you clarify if it's feasible to do per minute for these? Perhaps even the ability to adjust to suit whatever the player is looking for. I understand there may be some limitations, for example it could be that math might need to be used to divide the data into per minute or even per second. I would say use whichever is easiest and then contrive some formula the break it down and give us the option to choose which we'd like to see. Example: Per Hour, Per Minute, Per Second etc. I'm definitely looking forward to seeing this mature. I really miss the old overlay system. This has so much potential. Do you have a Discord or any other place for further discussion? Or just here on the forums? Thank you! All good suggestions, which I'll write down. You can catch me on Homecoming discord. Usually in the VEATs forums. Or just IM here. Night Pixie on Excelsior Introduction to Arachnos Widows - Night/Blood/Fortunata
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now