Skip to content

Commit

Permalink
v1.54.2 merge
Browse files Browse the repository at this point in the history
- fix: adjusting certain stash-ninja settings led to exchange prices being reset
- fix: notes weren't included and searches weren't applied in map-tracker exports
- map-tracker: added <character/build info> as new log data
- map-tracker: improved how items are added to notes
  • Loading branch information
Lailloken authored Jul 16, 2024
2 parents 49b3bc9 + 90f97fa commit 743ff7b
Show file tree
Hide file tree
Showing 12 changed files with 273 additions and 115 deletions.
2 changes: 2 additions & 0 deletions Lailloken UI.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,7 @@ Init_general()
settings.general.trans := 230
settings.general.blocked_hotkeys := {"!": 1, "^": 1, "+": 1}
settings.general.character := ini.settings["active character"]
settings.general.build := !Blank(settings.general.character) ? ini.settings["active build"] : ""
settings.general.dev := !Blank(check := ini.settings["dev"]) ? check : 0
settings.general.dev_env := settings.general.dev * (!Blank(check := ini.settings["dev env"]) ? check : 0)
settings.general.xButton := !Blank(check := ini.UI["button xcoord"]) ? check : 0
Expand All @@ -606,6 +607,7 @@ Init_general()
If (settings.general.fSize < 6)
settings.general.fSize := 6
LLK_FontDimensions(settings.general.fSize, font_height, font_width), settings.general.fHeight := font_height, settings.general.fWidth := font_width
LLK_FontDimensions(settings.general.fSize - 4, font_height, font_width), settings.general.fHeight2 := font_height, settings.general.fWidth2 := font_width
settings.features.browser := !Blank(check := ini.settings["enable browser features"]) ? check : 1

settings.updater := {"update_check": !Blank(check := ini.settings["update auto-check"]) ? check : 0}
Expand Down
7 changes: 7 additions & 0 deletions data/changelog.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
[
[
["1.54.2", 15402],
"fix: adjusting certain stash-ninja settings led to exchange prices being reset",
"fix: notes weren't included and searches weren't applied in map-tracker exports",
"map-tracker: added <character/build info> as new log data",
"map-tracker: improved how items are added to notes"
],
[
["1.54.1", 15401],
"fix: autohotkey bug caused ini-files to be misconfigured (you may have to update manually, check the full changelog)",
Expand Down
5 changes: 4 additions & 1 deletion data/english/UI.txt
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,7 @@
maptracker_loot1 = "loot"
maptracker_mapinfo = "mods" ;## as in map mods
maptracker_notes = "notes"
maptracker_character = "character"
maptracker_content = "content" ;## refers to map-content (league-mechanics, side-areas, etc.)
maptracker_search = "search:"

Expand Down Expand Up @@ -520,7 +521,8 @@
m_general_kill = "exit x minutes after closing the game:"
m_general_browser = "browser features"
m_general_capslock = "capslock-toggling" ;## by default, AHK will toggle capslock back and forth whenever it sends key-strokes
m_general_character = "active character:"
m_general_character = "current char:"
m_general_build = "current build:"
m_general_level = "lvl"
m_general_client = "game-client settings:"
m_general_language = "language:"
Expand Down Expand Up @@ -721,6 +723,7 @@
m_maptracker_notes = "notes" ;## option to add notes to map runs
m_maptracker_sidearea = "side-areas"
m_maptracker_rename = "tag && rename boss maps" ;## adds a "boss:"-tag to logged map-runs
m_maptracker_character = "character/build info"
m_maptracker_content = "track atlas mechanics"
m_maptracker_dialogue = "–> dialogue tracking:" ;## tracking is done via in-game dialogue in the chat-box
m_maptracker_screen = "–> screen tracking:" ;## tracking is done via screen-reading
Expand Down
10 changes: 4 additions & 6 deletions data/english/client.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
;## these are some global system-settings that are dependant on the target language
system_font = "Fontin SmallCaps" ;## except for Fontin SmallCaps, the specified font-type has to be installed on the system
system_fullstop = "." ;## the type of punctuation mark the language uses at the end of a sentence (e.g. Japanese uses a different fullstop)
system_parenthesis = "(" ;## the level-up message in the game's client.txt log-file "CHARACTER (CLASS) is now Level X" uses a different parenthesis in Japanese at least
system_parenthesis = "(#)" ;## the level-up message in the game's client.txt log-file "CHARACTER (CLASS) is now Level X" uses a different parenthesis in Japanese at least
system_poedb_lang = "us" ;## which language to use on poedb (available: tw, cn, kr, us, jp, ru, po, th, fr, de, es)
system_poedb_lang = "modifiers" ;## it's the localized name of this section on poeDB: https://poedb.tw/us/Modifiers

Expand Down Expand Up @@ -114,7 +114,8 @@
;## REMINDERS: case-sensitivity, match text in chat-window
log_location = "0" ;## certain languages may highlight location-names with characters that need to be removed (e.g. German: 'Hohenpforte')
log_enter = "You have entered" ;## as mentioned earlier, this key may need placeholders depending on the target language
log_level = "is now level"
log_level = "is now level" ;## when your character levels up
log_whois = "is a level # in the" ;## using the /whois in-game command, e.g. "Lailloken is a level 69 Champion in the Standard League..."
log_slain = "has been slain" ;## when your character dies
log_suicide = "has committed suicide" ;## when your character dies from self-damage
log_killed = "You have killed # monsters" ;## when activating the "/kills" command
Expand Down Expand Up @@ -203,10 +204,6 @@
;## NOTE: it's possible that there's a difference in the ALT-CTRL-C text and the easier-to-find text (e.g. German tooltips display "ss" whenever the ALT-CTRL-C text contains "ß"), so be aware of that if the target language has such variations


;## these are some item-names the tool requires to identify what kind of item was clicked
items_voidstone = "Voidstone"


;## these strings are displayed in the in-game tooltip when hovering over an item
items_unidentified = "Unidentified"
items_unmodifiable = "Unmodifiable" ;## example: memories (atlas item), sanctum relics
Expand Down Expand Up @@ -283,6 +280,7 @@
items_currency = "Currency"
;## -----------------------------------------------------------------------------------
items_class = "Item Class:" ;## important: every string in the following lines has to match the one in the "Item Class: XYZ" line in the clipboard-info
items_map fragments = "Map Fragments"
items_heist brooches = "Heist Brooches"
items_heist cloaks = "Heist Cloaks"
items_heist gear = "Heist Gear"
Expand Down
35 changes: 28 additions & 7 deletions data/english/help tooltips.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,22 @@
],
"active character": [
"type in your character name and press <enter>",
"specifying it here enables optional features such as level tracking and e-exp calculations"
"used for optional features such as level tracking, e-exp calculations, and map-tracker logging"
],
"active character status": [
"red: no name specified",
"yellow: char not found / waiting for level-up",
"green: char found, tracking active"
],
"ascendancy": [
"the game only logs ascendancies when a character levels up",
"this status will be out of date if you have recently (re)specced but not leveled up yet",
"click this label to use the \"/whois\" in-game command and force the game to log your ascendancy"
],
"active build": [
"type in a name/description of your build and press <enter>",
"used in the map-tracker feature to log which build was played"
],
"force resolution": [
"you can force the client to run with a custom resolution not available by default",
"it will be applied on every script start, or when starting the client while the script is running",
Expand Down Expand Up @@ -334,6 +343,11 @@
"tags and renames boss maps for easier searching",
"example: <boss: elder> instead of <absence of value and meaning>"
],
"maptracker character": [
"your character's name, class, and level will be logged",
"optional: name/description of the build can also be logged",
"you have to specify this info in the <general> section of the settings"
],
"maptracker side-content": [
"side-areas you enter and the time spent inside will be logged",
"examples: abyssal depths, lab trials, vaal areas"
Expand Down Expand Up @@ -836,7 +850,7 @@
"numbers are clickable for searching:\nclick to paste \"<tier>\" into the search, r-click to paste \"!<tier>\", double-(r-)click to search immediately"
],
"logviewer search run": [
"supported inputs:\n\"x\" (exact time), \"x-y\" (between x and y), or \"x+\" (x or longer)",
"supported inputs:\n\"x\" (exact time), \"x-y\" (between x and y), \"x+\" (x or longer)",
"if x/y don't include any colons, they will be treated as seconds, otherwise as (hh:)mm:ss"
],
"logviewer header run": [
Expand All @@ -847,20 +861,20 @@
"you have to specify your character's name in the <general> section of the settings first"
],
"logviewer search deaths": [
"supported inputs:\n\"x\" (exact value), \"x-y\" (between x and y), or \"x+\" (x or higher)"
"supported inputs:\n\"x\" (exact value), \"x-y\" (between x and y), \"x+\" (x or higher)"
],
"logviewer header deaths": [
"number of deaths in a run",
"header is clickable for searching:\nclick to paste \"1+\" into the search, r-click to paste \"0\", double-(r-)click to search immediately"
],
"logviewer search portals": [
"supported inputs:\n\"x\" (exact value), \"x-y\" (between x and y), or \"x+\" (x or higher)"
"supported inputs:\n\"x\" (exact value), \"x-y\" (between x and y), \"x+\" (x or higher)"
],
"logviewer header portals": [
"number of portals used in a run"
],
"logviewer search kills": [
"supported inputs:\n\"x\" (exact value), \"x-y\" (between x and y), or \"x+\" (x or higher)"
"supported inputs:\n\"x\" (exact value), \"x-y\" (between x and y), \"x+\" (x or higher)"
],
"logviewer header kills": [
"monsters killed in a run (optional, has to be enabled first): uses the in-game /kills command",
Expand All @@ -875,7 +889,7 @@
],
"logviewer search mapinfo": [
"supported inputs:\n\"xyz\" (search), \"!abc\" (exclude), \"xyz !abc\" (search xyz, exclude abc), \"abc, xyz, ...\" (search abc, and xyz, ...)",
"you can search for mods and also general rolls, e.g. \"100q\" for 100% quantity\n(for general rolls, it will always search for <x and above>)"
"you can search for mods and also general rolls, e.g. \"100q\" for 100% quantity\n(for general rolls, it will always search for \"x and above\")"
],
"logviewer header mapinfo": [
"mods rolled on a map (optional, has to be enabled first):\nclick highlighted cells in this column to view a list of logged mods",
Expand All @@ -888,6 +902,13 @@
"custom notes for runs (adding notes during/before the run is optional and has to be enabled first):\nright-click cells in this column to add/edit notes after the run, click highlighted cells to view them",
"header is clickable for searching:\nclick to paste \"yes\" into the search, r-click to paste \"no\", double-(r-)click to search immediately"
],
"logviewer search character": [
"supported inputs:\n\"xyz\" (search), \"!abc\" (exclude), \"xyz !abc\" (search xyz, exclude abc), \"abc, xyz, ...\" (search abc, and xyz, ...)\n\"x\" (exact level), \"x-y\" (between x and y), \"x+\" (x or higher)"
],
"logviewer header character": [
"information about the character (and build) played in the run:\nclick highlighted cells in this column to view this information",
"header is clickable for searching:\nclick to paste \"yes\" into the search, r-click to paste \"no\", double-(r-)click to search immediately"
],
"logviewer search content": [
"supported inputs:\n\"xyz\" (search), \"!abc\" (exclude), \"xyz !abc\" (search xyz, exclude abc), \"abc, xyz, ...\" (search abc, and xyz, ...)",
"available short-hand inputs: \"elder\" for elder guardians, \"sirus\" for conquerors"
Expand All @@ -900,7 +921,7 @@
"maptrackernotes": {
"help": [
"type in custom notes and press <enter>: include \"X#\" before the note to limit it to X runs",
"omni-click map-device items to add them as notes",
"omni-click items to add them to the notes:\nmap-device items are highlighted yellow and limited to 4",
"long-click a note to remove it, or the header to clear everything"
]
},
Expand Down
2 changes: 1 addition & 1 deletion data/versions.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"_release": [15401, "https://github.com/Lailloken/Lailloken-UI/archive/refs/heads/main.zip"]
"_release": [15402, "https://github.com/Lailloken/Lailloken-UI/archive/refs/heads/main.zip"]
}
Binary file added img/GUI/mapping tracker/character.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/GUI/mapping tracker/character0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 42 additions & 10 deletions modules/client log.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@
Else ;when specifying "active character" in the settings menu
{
If !Blank(settings.general.character)
{
log_file := FileOpen(vars.log.file_location, "r", "UTF-8"), log_content := log_file.Read(), log_file.Close()
If Blank(settings.general.character) || !(check := InStr(log_content, " " settings.general.character " " LangTrans("system_parenthesis"),, 0, 1))
check := InStr(log_content, " " settings.general.character " " LangTrans("system_parenthesis"),, 0, 1)
check1 := InStr(log_content, " " settings.general.character " " LangTrans("log_whois"),, 0, 1), check := Max(check, check1)
}
Else
{
vars.log.level := 0
Return
Expand All @@ -20,26 +24,32 @@
vars.log.level := ""
Else
{
vars.log.parsing := "areaID, areaname, areaseed, arealevel, areatier, act, level, date_time"
vars.log.parsing := "areaID, areaname, areaseed, arealevel, areatier, act, level, date_time, character_class"
Loop, Parse, % vars.log.parsing, `,, %A_Space%
vars.log[A_LoopField] := ""

If !settings.general.lang_client
check := InStr(log_content, " Generating level ", 1, 0, 10), LangClient(SubStr(log_content, InStr(log_content, " Generating level ", 1, 0, check ? 10 : 1)))

settings.general.character := LLK_IniRead("ini\config.ini", "settings", "active character"), check := Blank(settings.general.character) ? 0 : InStr(log_content, " " settings.general.character " " LangTrans("system_parenthesis"),, 0, 1)
If !Blank(settings.general.character := LLK_IniRead("ini\config.ini", "settings", "active character"))
{
check := InStr(log_content, " " settings.general.character " " LangTrans("system_parenthesis"),, 0, 1)
check1 := InStr(log_content, " " settings.general.character " " LangTrans("log_whois"),, 0, 1), check := Max(check, check1)
}
Else check := 0
}

If check
log_content_level := SubStr(log_content, check), log_content_level := SubStr(log_content_level, 1, InStr(log_content_level, "`r") - 1), LogParse(log_content_level, areaID, areaname, areaseed, arealevel, areatier, act, level, date_time)
log_content_level := SubStr(log_content, check), log_content_level := SubStr(log_content_level, 1, InStr(log_content_level, "`r") - 1)
, LogParse(log_content_level, areaID, areaname, areaseed, arealevel, areatier, act, level, date_time, character_class)

If mode
{
vars.log.level := level ? level : 0
vars.log.level := level ? level : 0, vars.log.character_class := character_class
Return
}
log_content := SubStr(log_content, InStr(log_content, " Generating level ", 1, 0, 2))
LogParse(log_content, areaID, areaname, areaseed, arealevel, areatier, act, level, date_time) ;pass log-chunk to parse-function to extract the required information: the info is returned via ByRef variables
LogParse(log_content, areaID, areaname, areaseed, arealevel, areatier, act, level, date_time, character_class) ;pass log-chunk to parse-function to extract the required information: the info is returned via ByRef variables
Loop, Parse, % vars.log.parsing, `,, %A_Space%
If Blank(vars.log[A_LoopField]) && !Blank(%A_LoopField%)
vars.log[A_LoopField] := %A_LoopField%
Expand All @@ -66,7 +76,7 @@ LogLoop(mode := 0)
log_content := vars.log.file.Read(), level0 := vars.log.level
If !Blank(log_content)
{
LogParse(log_content, areaID, areaname, areaseed, arealevel, areatier, act, level, date_time)
LogParse(log_content, areaID, areaname, areaseed, arealevel, areatier, act, level, date_time, character_class)
Loop, Parse, % vars.log.parsing, `,, %A_Space%
{
If !Blank(%A_LoopField%)
Expand Down Expand Up @@ -99,6 +109,9 @@ LogLoop(mode := 0)
Break
}
}

If character_class && WinExist("ahk_id " vars.hwnd.settings.main) && (vars.settings.active = "general")
Settings_menu("general",, 0)
}

If mode
Expand Down Expand Up @@ -136,7 +149,7 @@ LogLoop(mode := 0)
}
}

LogParse(content, ByRef areaID, ByRef areaname, ByRef areaseed, ByRef arealevel, ByRef areatier, ByRef act, ByRef level, ByRef date_time)
LogParse(content, ByRef areaID, ByRef areaname, ByRef areaseed, ByRef arealevel, ByRef areatier, ByRef act, ByRef level, ByRef date_time, ByRef character_class)
{
local
global vars, settings, db
Expand All @@ -160,9 +173,28 @@ LogParse(content, ByRef areaID, ByRef areaname, ByRef areaseed, ByRef arealevel,
If LangMatch(A_LoopField, vars.lang.log_enter)
parse := SubStr(A_LoopField, InStr(A_LoopField, vars.lang.log_enter.1)), areaname := LLK_StringCase(LangTrim(parse, vars.lang.log_enter, LangTrans("log_location")))

If !Blank(settings.general.character) && InStr(A_LoopField, " " settings.general.character " ") && LangMatch(A_LoopField, vars.lang.log_level)
If !Blank(settings.general.character) && InStr(A_LoopField, " " settings.general.character " ")
{
level := SubStr(A_Loopfield, InStr(A_Loopfield, vars.lang.log_level.1)), level := LangTrim(level, vars.lang.log_level)
If LangMatch(A_LoopField, vars.lang.log_level)
{
level := SubStr(A_Loopfield, InStr(A_Loopfield, vars.lang.log_level.1)), level := LangTrim(level, vars.lang.log_level)
If InStr(A_LoopField, settings.general.character " " LangTrans("system_parenthesis"))
character_class := SubStr(A_LoopField, InStr(A_LoopField, LangTrans("system_parenthesis")) + 1)
, character_class := LLK_StringCase(SubStr(character_class, 1, InStr(character_class, LangTrans("system_parenthesis", 2)) - 1))
}
Else If LangMatch(A_LoopField, vars.lang.log_whois)
{
level0 := SubStr(A_LoopField, InStr(A_LoopField, settings.general.character)), parse := ""
Loop, Parse, level0
{
If (A_Index = 1)
level := ""
If IsNumber(A_LoopField)
parse := !parse ? A_Index : parse, level .= A_LoopField
}
level0 := SubStr(level0, parse), level0 := SubStr(level0, InStr(level0, " ") + 1), character_class := LLK_StringCase(SubStr(level0, 1, InStr(level0, " ") - 1))
}

If settings.leveltracker.geartracker && vars.hwnd.geartracker.main
GeartrackerGUI("refresh")
}
Expand Down
Loading

0 comments on commit 743ff7b

Please sign in to comment.