PSOBB Addon Plugin (Lua UI addons)

If you don't mind, I'd like to request for a function to lock the addons in place so I don't accidentally move some of them when I want to move the scroll bar.
My addons remember the position you set in their options so you just need to refresh it to go back to their previous position.

I'll see if I can add a lock but in the meantime you could try that workaround.
 
I just released a new version of the Kill Counter addon today. The latest version adds some additional configuration options for locking the Global Kill Counter and Session Kill Counter displays into a user-configurable set of dimensions. If you lock them, then they won't change even if you switch areas. I think this is most useful for the Session Kill Counter on timed quests like ma4c, where there is no other way to review the kill counts you got in Crater at the end of the quest if you entered Subterranean Desert before the time ran out.

Also, I fixed an issue where the Kill Counter was reading the section ID of the party leader from memory, rather than the section ID of the game. This should make the global kill counters more accurate if you often play games where the party leader changes.

If you don't mind, I'd like to request for a function to lock the addons in place so I don't accidentally move some of them when I want to move the scroll bar.
I actually already created a simple addon for my own personal use that does exactly that. Just drop this code into a file called init.lua, and put the file in its own subfolder inside your addons folder. After that, all your windows will be locked in place. If you do decide you want to move a window around, you should be able to toggle the lock by pressing the NUMPAD- key (that is, the 'minus' key on the numpad).

Code:
local enabled = true

local function key_pressed(key)
    if (key == 109) then
        enabled = not enabled
    end
end

local function init()
    local imguiBegin = imgui.Begin
    local imguiBeginTable = {}

    imgui.Begin = function(name, p_open, flags)
        if not enabled or not imguiBeginTable[name] then
            imguiBeginTable[name] = true
            return imguiBegin(name, p_open, flags)
        end

        flags = flags or {}
        table.insert(flags, "NoResize")
        table.insert(flags, "NoMove")
        return imguiBegin(name, p_open, flags)
    end

    return
    {
        name = "Window Lock",
        version = "1.0.0",
        author = "staphen",
        description = "Locks window sizes and positions (use NUMPAD- to toggle)",
        key_pressed = key_pressed
    }
end

return {
    __addon = {
        init = init
    }
}
 
My addons have been updated as well.
If you don't want to have to enable the Window Lock on every start up (I don't think it saves it's settings yet?)
Or you just want to keep specific windows from moving, then just enable the No move check box in it's respective configuration.

I'll be making a pull request for other addons that I have added configuration similar to my own (like Chatlog and XpBar).
 
Last edited:
My addons have been updated as well.
If you don't want to have to enable the Window Lock on every start up (I don't think it saves it's settings yet?)
Yeah, I wrote the addon for my own personal use so I wasn't really planning on making it customizable. I don't mind turning it into a full-fledged project if there's demand for it.
 
I made another quick little addon today that shows your coordinates. (linky) Figured it might be useful for mapping or just for those who are curious about their positioning. I did notice one issue though : when in the lobby it seems to show the coordinates for the first player in the lobby ? It worked fine otherwise when I was playing by my lonesome. :p

I assume I'd have to add an offset based on my position in the lobby, anyone know how I would find that ?
 
I made another quick little addon today that shows your coordinates. (linky) Figured it might be useful for mapping or just for those who are curious about their positioning. I did notice one issue though : when in the lobby it seems to show the coordinates for the first player in the lobby ? It worked fine otherwise when I was playing by my lonesome. :p

I assume I'd have to add an offset based on my position in the lobby, anyone know how I would find that ?
Use the memory address for the player index:
https://github.com/Solybum/PSOBBMod-Addons/blob/master/solylib/items/items.lua#L36

Read the index from memory:
https://github.com/Solybum/PSOBBMod-Addons/blob/master/solylib/items/items.lua#L441

Use it to calculate the offset when reading from the player array:
https://github.com/Solybum/PSOBBMod-Addons/blob/master/solylib/items/items.lua#L446
 
Ah thanks ! I'm gonna give that a go tomorrow when I wake up. Thanks again ^^
 
Ah thanks ! I'm gonna give that a go tomorrow when I wake up. Thanks again ^^
Even better
Get the player address right away
https://github.com/Solybum/PSOBBMod-Addons/blob/master/solylib/characters.lua#L4

And use the position offsets that you probably already know.
https://github.com/Solybum/PSOBBMod-Addons/blob/master/Monster Reader/init.lua#L134

I never added position to the player reader, only to the monster reader which I later removed (iirc) but the offsets are still there.
 
I'll probably add getting "my index" to that library since I will need it for the player reader and a GetPosition function too.
 
...which is a simple meseta counter...

Hey, I've tried your addon but I get some weird readings:
TjIA6FX.jpg


Also show 0 meseta in lobby/P2. Do you have an idea why ? :oops:
 
Last edited:
Even better
Get the player address right away
https://github.com/Solybum/PSOBBMod-Addons/blob/master/solylib/characters.lua#L4

And use the position offsets that you probably already know.
https://github.com/Solybum/PSOBBMod-Addons/blob/master/Monster Reader/init.lua#L134

I never added position to the player reader, only to the monster reader which I later removed (iirc) but the offsets are still there.
I gave that a try, but I don't think I used it correctly ? I did something like..
Code:
local _PlayerIndex = 0x00A9C4F4

local playerIndex = pso.read_u32(_PlayerIndex)
local playerAddr = lib_characters.GetPlayer(playerIndex)
and it returned the coordinates of something else, I *think* it may have been an NPC lol, I'm not sure. :oops:

I ended up doing this which worked for what I was doing :
Code:
local _PlayerArray = 0x00A94254
local _PlayerIndex = 0x00A9C4F4

local playerIndex = pso.read_u32(_PlayerIndex)
local playerAddr = pso.read_u32(_PlayerArray + 4 * playerIndex)

Huge thanks goes to you and staphen though, 'cause I don't think I would've found the player index on my own Dx

One more question : I've made skywalker and coordinate codes before back when I made PSP cheats and I always noticed that the coordinates go :
0xXXXXXX38 X : east/west
0xXXXXXX3C Y : up/down
0xXXXXXX40 Z : north/south

It's the same for this game too (and every other I assume lol). But anyway, I displayed the coordinates with Z being up/down instead of Y, because normally when I've worked with coordinates on other things, X and Y would be north, east, south, and west. Would how I'm displaying the coordinates on screen be correct ?
0xXXXXXX38 X : east/west
0xXXXXXX40 Z --> Y : north/south
0xXXXXXX3C Y --> Z : up/down

I've always thought of Z as being like z-index in CSS, so maybe that's why I think of it like that lol.

I'll probably add getting "my index" to that library since I will need it for the player reader and a GetPosition function too.
Oh that'll be useful ! I haven't look over your library entirely yet, but now I wanna take a closer look to see what I can make with it.

Hey, I've tried your addon out but I get some weird readings:
TjIA6FX.jpg


Also show 0 meseta in lobby/P2. Do you have an idea why ? :oops:
Ah it had the same issue as the coordinates ! It was displaying the value of the first person in the lobby/room. I've updated both the addons with the player index, so they should show the correct information now. Hopefully ! xD
 
One more question : I've made skywalker and coordinate codes before back when I made PSP cheats and I always noticed that the coordinates go :
0xXXXXXX38 X : east/west
0xXXXXXX3C Y : up/down
0xXXXXXX40 Z : north/south

It's the same for this game too (and every other I assume lol). But anyway, I displayed the coordinates with Z being up/down instead of Y, because normally when I've worked with coordinates on other things, X and Y would be north, east, south, and west. Would how I'm displaying the coordinates on screen be correct ?
0xXXXXXX38 X : east/west
0xXXXXXX40 Z --> Y : north/south
0xXXXXXX3C Y --> Z : up/down

I've always thought of Z as being like z-index in CSS, so maybe that's why I think of it like that lol.
You should be able to make things work either way; the most important thing is to be consistent. As an example, Blender's Z-axis goes up and down, though I tend to think of the X-axis as being north/south in Blender. Apparently, this convention is used by CAD systems for real-world applications.

However, there are lots of different ways to represent coordinates in a 3-dimensional space. In the default camera view for OpenGL, X-axis goes right/left, Y-axis goes up/down, and Z-axis goes out/in. Direct3D is the same except that the Z-axis points in the opposite direction. These coordinate systems make sense as extensions of the 2-dimensional coordinate system. That is to say, if you start with the camera facing the XY-plane as though you were making 2D graphics, then add the z-axis to provide depth, you'd end up with one of these two coordinate systems.

Anyway, I would recommend against swapping the Y- and Z-coordinates. If you do swap them, you might end up confusing someone who's trying to use your addon since the game does it differently.
 
You should be able to make things work either way; the most important thing is to be consistent. As an example, Blender's Z-axis goes up and down, though I tend to think of the X-axis as being north/south in Blender. Apparently, this convention is used by CAD systems for real-world applications.

However, there are lots of different ways to represent coordinates in a 3-dimensional space. In the default camera view for OpenGL, X-axis goes right/left, Y-axis goes up/down, and Z-axis goes out/in. Direct3D is the same except that the Z-axis points in the opposite direction. These coordinate systems make sense as extensions of the 2-dimensional coordinate system. That is to say, if you start with the camera facing the XY-plane as though you were making 2D graphics, then add the z-axis to provide depth, you'd end up with one of these two coordinate systems.

Anyway, I would recommend against swapping the Y- and Z-coordinates. If you do swap them, you might end up confusing someone who's trying to use your addon since the game does it differently.
I see, that makes a lot more sense now. Thanks a bunch for the explanation ! ^^ I went ahead and changed it so that the coordinates display in their original order.
 
and it returned the coordinates of something else, I *think* it may have been an NPC lol, I'm not sure. :oops:
It's because that function expects a 1-based index
Code:
local playerAddress = pso.read_u32(_PlayerArray + (index - 1) * 4)

Also does the address I use for player's meseta not work for you (if the pointer you are using is causing issues)?
https://github.com/Solybum/PSOBBMod-Addons/blob/master/solylib/items/items.lua#L7

Nvm, I see it was a problem with selecting the player's pointer.
 
Last edited:
Hello, this is probably a long shot, but I'm having trouble getting some of the addons to work on my laptop.

On my desktop, I have:
Player Reader
Item Reader
Monster Reader
Kill Counter
Exp Bar
Echelon Dark Glass HUD

All of which are working fine. However, on my laptop I have everything setup identically to my desktop, but only the exp bar add on works. It doesn't even identify that any of the Soly addons are in the directory. I have the necessary Visual C installed. Any suggestions would be appreciated, thanks.
 
@StevieWonderDownUnder, there should be a button labeled "Log" on the plugin's main window. If you click on that, it should pop up a window with error messages for the addons that failed. Can you take a screenshot of that log window and post it?

EDIT: Perhaps I should also mention, I have a hunch that maybe your laptop is running Windows XP and that maybe you're using an older version of Eidolon's plugin (like, maybe you copied it over from your desktop). If so, you should download the latest version of the plugin (v0.3.4) which fixes an issue that occurred when attempting to read Unicode strings on Windows XP.
 
Last edited:
@StevieWonderDownUnder it seems like you didn't install the latest version of my addons.
Try downloading the latest version.

In this version I made the theme editor optional
Although as I pointed out in the readme, it doesn't hurt to have it there should you want to use custom themes.
 
Hi again guys ! Just posting this to let you all know I made a few updates to my addons. I noticed there were some issues with the window size :
  1. When I set the window dimensions to "Always" the window couldn't be resized.
  2. When I set them to "FirstUseEver" the window size wouldn't be maintained the next time you played.

So... I ended up adding some size/position options similar to soly's plugins, since his work perfectly. (hope that's okay soly ^^) I also took the liberty of adding a few other configuration options to the Meseta Count and Coordinate Viewer to improve customization and usability. You can read more about the changes in the change logs below.

Hope you guys like the updates ! ^^
 
So... I ended up adding some size/position options similar to soly's plugins, since his work perfectly. (hope that's okay soly ^^)
Sure thing, I had a similar issue after I changed some stuff in @tornupgaming's XpBar.
I made it not display certain "error" messages and the window would go 32x32 when it was empty (no idea why)
 
Back
Top