CageyRabbit
Member
- Gender
 - Male
 
- Guildcard
 - 42052497
 
That's the same post I used to get it running in WINE as well. Between that and the changes that Soly made recently it runs great in Linux now.
				
			Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Well... it is as "easy" as you described it... grab the player data and get the tech levels from it...I'm trying to determine how to color code a tech drop in the floor window to stand out if its a higher level than what i currently have learned, without going into the .lua after each playthrough and updating the table manually. Is there a way to reference what level the tech is with the maximum level i have learned any apply a color variant if true?

EphineaPSO\addons\Monster Reader\init.lua
local function PresentMonsters()
-- Get how many columns we'll need
lib_helpers.TextC(false, 0xFF00FF00, defTech.name .. defTech.level .. string.rep(" ", 2 - #tostring(defTech.level)) .. " ")
local function PresentTargetMonster(monster)
-- Show J/Z status and Frozen, Confuse, or Paralyzed status
lib_helpers.TextC(false, 0xFF00FF00, defTech.name .. defTech.level .. string.rep(" ", 2 - #tostring(defTech.level)) .. " ")
The Zalure color was taken from https://convertingcolors.com/android-color-4278255360.html?search=0xFF00FF00
	
View attachment 12794
I edited my monster reader lua to calculate the optimal techs to use as a force based solely on the enemies resistance. Also added an inventory counter to be displayed on the AIO frame. I need to determine how to calculate better tech usage based on enemy resistance AND current player tech level. Maybe a damage calculation that i can use to compare?
An issue i noticed last night though, every encounter with De Rol Le would break my monster reader completely. I forgot to check to log to see what was causing it so i'll have to go back in. I'm not sure if its because of something I may have done or if its a known issue.
Edit: Solution was found to the De Rol Le issue, i needed to add additional lines to the function CopyMonster. In my arguements to determine what resistance is lowest, it was breaking on De Rol Le because the head was being copied for HP purposes but no additional stats, so when i was checking if Efr <= Eic for example, it was returnin a nil value for both.
Curious, whenever i reload the addon while in-game, my monster reader windows reset to the default position. Is there a way to save where i manually resize and move them to?

--[[
popup test
Catherine S (IzumiDaye/NeonLuna)
2020-02-20
]]
local core_mainmenu = require('core_mainmenu')
local showwindow
local showtestpopup
local function present()
   if not showwindow then return end
 
   if imgui.BeginPopup('testpopup') then
       imgui.Text'test popup'
       if imgui.Button'close' then imgui.CloseCurrentPopup() end
   imgui.EndPopup() end
 
   if showtestpopup then
       imgui.OpenPopup'testpopup'
       showtestpopup = false
   end
 
   imgui.SetNextWindowSize(600,300,'FirstUseEver')
   local success
   success, showwindow = imgui.Begin('popup test', true)
       if not success then
           imgui.End()
           return
       end
     
       if imgui.Button'show test popup' then showtestpopup = true end
     
   imgui.End()
end -- local function present()
local function init()
   core_mainmenu.add_button('popup test', function() showwindow = not showwindow end)
 
   return
       {
       name = 'popup test',
       version = '0.1',
       author = 'IzumiDaye',
       description = 'test popup with a barebones addon',
       present = present,
       }
end
return {__addon = {init = init}}
	I think you're suppose to call OpenPopup() before BeginPopup(), and also End before close (although imgui.cpp seems to indicate Close() should be called inside Begin() and End() but oh well).
local function present()
    if not showwindow then
        return
    end
    --imgui.SetNextWindowSize(600,300,'FirstUseEver')
    local success
    success = imgui.Begin('popup test', true)
    if not success then
        return
    end
   
    if imgui.Button('show test popup') then
        showtestpopup = true
    end
    imgui.End()
    if showtestpopup then
        imgui.OpenPopup('testpopup')
        imgui.BeginPopup('testpopup')
        imgui.Text('test popup')
        if imgui.Button('close') then
            showtestpopup = false
        end
        imgui.EndPopup()
        if not showtestpopup then
            imgui.CloseCurrentPopup()
        end
    end
end -- local function present()
	Thanks, fixed.also, i noticed that in the theme editor, color components are labeled A,B,G,B instead of A,R,G,B.
Afaik I have been grabbing the release build to put on github...Also they're only on in debug mode. Soly is doing his releases with debug builds which should probably be changed to be release because iirc there's some automatic stack balancing in the plugin from a commit by @staphen some years back. But I wouldn't want to rely on that to coverup an addon's bug (which could be detrimental if it's covering up the right mistake elsewhere).
local function present()
    if imgui.Begin('popup test', true) then
        if imgui.Button('show test popup') then
            imgui.OpenPopup('testpopup')
        end
        
        if imgui.BeginPopup('testpopup') then
            imgui.Text('test popup')
            if imgui.Button('close') then
                imgui.CloseCurrentPopup()
            end
            imgui.EndPopup()
        end
        
        imgui.End()
    end
end -- local function present()
	153: balance_all_stacks = override_stack_functions()
224: balance_all_stacks()
	@Soly any idea how to determine what the player's highest level learned for each technique would be? I was able to find the player's MST address. I want to create a function to determine the most optimal tech to cast for each enemy using the tech damage formula on pso-world, and this is the one piece im missing. Otherwise i would have to manually edit the function every time a new tech is learned.
	local self = lib_characters.GetSelf()
local foie = lib_characters.GetPlayerTechniqueLevel(self, lib_characters.Techniques.Foie)
	
public static IReadOnlyList<string> CharacterClassNames = new List<string> {
    "humar",
    "hunewearl",
    "hucast",
    "ramar",
    "racast",
    "racaseal",
    "fomarl",
    "fonewm",
    "fonewearl",
    "hucaseal",
    "fomar",
    "ramarl",
};