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.
Those addons aren't working because they depend on changes in the base plugin from more recent releases of the base plugin: https://github.com/Solybum/psobbaddonplugin/releases/latestSo I haven't played in a couple of months, but was wanting to get this running on my new pc. I installed bbmod 0.3.5.6 from Soly's github page and it is working great with the xpbar plugin. The problem I'm having is with item reader and monster reader (haven't tried player reader yet). I copied the solylib, Timer, Item Reader, and Monster Reader directories out of the zip file and into the addons folder.
Monster reader crashes pso (actually it is crashing wine!) as soon as I try and make a room. Item reader doesn't crash wine, but it also fails to actually start. Timer exhibits the same behavior. When I open up the log I get this:
https://drive.google.com/file/d/1GU9_9fr0Iy5vzbifa3-2UoREN7t-0RhD/view?usp=sharing
I'm not sure if I'm forgetting a step (like I said, the xpbar plugin is working fine) or if there's some new incompatibility or something?
yes. are you comfortable editing code? if so, i will happily explain how to do it. it's not too complicated.
Also is there a way to add the option to hide window when menu is open. Scape doll addon has it implemented and it would be lovely for everything else as it sucks when trying to find a spot that doesn't hurt the view of your game and doesn't get in the way of the menus.
local fontScale = 1.0
local info = {
name = "Window Visibility",
version = "1.0.0",
author = "staphen",
description = ""
}
local self = {
__addon = {
init = function() return info end
},
windowOpen = false
}
local Visibility = {
NotConfigured = 1,
ShowWithGameMenu = 2,
HideWithGameMenu = 3,
ShowWithAddonMenu = 4,
ShowNever = 5
}
local Configuration = function()
local function getAddonPath()
local psointernal = require("psointernal")
local addons = psointernal.get_addons()
for _,addon in pairs(addons) do
if (addon.module == self) then
return addon.path
end
end
return "Window Visibility"
end
local addonPath = getAddonPath()
local requirePath = string.format("%s.configuration", addonPath)
local filePath = string.format("addons/%s/configuration.lua", addonPath)
local success,config = pcall(require, requirePath)
config = success and config or {}
for k,v in pairs(config) do
if (type(v == "string")) then
config[k] = Visibility[v]
end
end
local modified = false
local wrapper = {}
wrapper.path = addonPath
wrapper.get = function(key)
return config[key]
end
wrapper.set = function(key, value)
config[key] = value
modified = true
end
wrapper.save = function()
if (not modified) then
return
end
local visibilities = {}
for k,v in pairs(Visibility) do visibilities[v] = k end
local file = io.open(filePath, "w+")
if file ~= nil then
local rows = {}
for k,v in pairs(config) do
local key = tostring(k)
local value = tostring(visibilities[v])
local row = string.format(" [\"%s\"] = \"%s\"", key, value)
table.insert(rows, row)
end
io.output(file)
io.write("return {\n")
io.write(table.concat(rows, ",\n") .. "\n")
io.write("}\n")
io.close(file)
end
modified = false
end
wrapper.iterate = function()
return pairs(config)
end
return wrapper
end
local MainWindow = function(config)
local addonModule = self
local self = { name = config.path }
local psoMenuAddress = 0x00A97F44
local imguiBegin = imgui.Begin
local hideAll = false
local beginHidden = function(name, open, flags)
local hiddenName = string.format("Hidden - %s", name)
local hiddenFlags = flags or {}
table.insert(hiddenFlags, "NoSavedSettings")
imgui.SetNextWindowPos(-100, -100)
imgui.SetNextWindowSize(1, 1)
return imguiBegin(hiddenName, open, hiddenFlags)
end
local actions = {
[Visibility.NotConfigured] = function(...)
return imguiBegin(...)
end,
[Visibility.ShowWithGameMenu] = function(name, open, ...)
local isMenuOpen = (pso.read_u32(psoMenuAddress) == 1)
local beginFunction = isMenuOpen and imguiBegin or beginHidden
local success = beginFunction(name, nil, ...)
return success, open
end,
[Visibility.HideWithGameMenu] = function(name, open, ...)
local isMenuOpen = (pso.read_u32(psoMenuAddress) == 1)
local beginFunction = isMenuOpen and beginHidden or imguiBegin
local success = beginFunction(name, nil, ...)
return success, open
end,
[Visibility.ShowWithAddonMenu] = function(name, open, ...)
local beginFunction = addonModule.windowOpen and imguiBegin or beginHidden
local success = beginFunction(name, nil, ...)
return success, open
end,
[Visibility.ShowNever] = function(...)
return beginHidden(...)
end
}
imgui.Begin = function(name, ...)
local visibility = config.get(name)
if hideAll then
visibility = Visibility.ShowNever
end
if (name == self.name) then
visibility = Visibility.ShowWithAddonMenu
end
if (name == "Main") then
visibility = Visibility.ShowWithAddonMenu
end
if (visibility == nil) then
visibility = Visibility.NotConfigured
config.set(name, visibility)
end
local action = actions[visibility]
return action(name, ...)
end
self.update = function()
local windows = {}
for window in config.iterate() do table.insert(windows, window) end
table.sort(windows)
local visibilities = {}
for k,v in pairs(Visibility) do visibilities[v] = k end
imgui.SetNextWindowSize(650, 235, "FirstUseEver")
imgui.Begin(self.name, true)
imgui.SetWindowFontScale(fontScale)
if imgui.Checkbox("Hide all windows temporarily", hideAll) then
hideAll = not hideAll
end
local maxTextWidth = 0
for _,window in ipairs(windows) do
local textWidth = imgui.CalcTextSize(window)
if (textWidth > maxTextWidth) then
maxTextWidth = textWidth
end
end
imgui.Columns(2)
imgui.SetColumnOffset(1, maxTextWidth + 15)
for _,window in ipairs(windows) do
local visibility = config.get(window)
imgui.Text(window)
imgui.NextColumn()
imgui.PushID(window)
for v,k in ipairs(visibilities) do
local active = (visibility == v)
if imgui.RadioButton(string.format("%s", k), active) then
config.set(window, v)
end
imgui.SameLine()
end
imgui.PopID()
imgui.NextColumn()
end
imgui.End()
config.save()
end
return self
end
do
local core_mainmenu = require("core_mainmenu")
local init = core_mainmenu.__addon.init
core_mainmenu.__addon.init = function(...)
local conf = init(...)
conf.key_pressed = nil
return conf
end
end
do
local present
present = function()
local config = Configuration()
local mainWindow = MainWindow(config)
present = mainWindow.update
end
info.present = function() present() end
info.key_pressed = function(key)
if (key == 192) then
self.windowOpen = not self.windowOpen
end
end
end
return self
New stupid-simple utility plugin: system clock display.
THX sooo much, I was looking for sth. like that for long....I have an addon that might help. The idea was to be able to configure the visibility of all my addon windows whether those addons support it or not.