hmm... I did tried to do what you tried to say (and wrote down with those engines)... but it seem bit different from my strings... I think i should give you those strings of mine, so that you would change your strings to mine, to be more clear to understand which string is my string...
Those ones below might not be useful for your array thing but...
if you look carefully, this is for a form of ATB box as X2# is the important key as X2# increase by a formula of heroes's speed, so...
this "X2#" can be same as "currentATB" as I already knew that...
By the way, the max ATB number should be 65536 (i used FF6 ATB-formula).
Also, I used GLOBAL this, so that it can be followed to anywhere on that page, even "GOSUB".
GLOBAL P1Name$ = "Rydia" : GLOBAL P2Name$ = "Tifa" : GLOBAL P3Name$ = "Yuna" : GLOBAL P4Name$ = "Lightning"
GLOBAL P1ATBX1# = 0 : GLOBAL P2ATBX1# = 0 : GLOBAL P3ATBX1# = 0 : GLOBAL P4ATBX1# = 0
GLOBAL P1ATBY1# = 0 : GLOBAL P2ATBY1# = 0 : GLOBAL P3ATBY1# = 0 : GLOBAL P4ATBY1# = 0
GLOBAL P1ATBX2# = 0 : GLOBAL P2ATBX2# = 0 : GLOBAL P3ATBX2# = 0 : GLOBAL P4ATBX2# = 0
GLOBAL P1ATBY2# = 0 : GLOBAL P2ATBY2# = 0 : GLOBAL P3ATBY2# = 0 : GLOBAL P4ATBY2# = 0
ATB Function right below here. It might have string-colors there but it can be changed by depending the X2# number... the more number it gains, the color it changes. (white (zero) to yellow ( --> 255 - INT(P1ATBX2# / 655 * 2.55) <-- on Blue while the others are 255 (so that it is white to start)... as 255 - 0 = 255 blue to 255 - 255 = 0 blue. make sense?)
FUNCTION BattleSpeed()
IF P1MAGSPD# <> 3
INC P1ATBX2#, INT(96 * P1MAGSPD# * (P1SPD# + 20) / 16)
ELSE
INC P1ATBX2#, INT(126 * (P1SPD# + 20) / 16)
ENDIF
IF P2MAGSPD# <> 3
INC P2ATBX2#, INT(96 * P2MAGSPD# * (P2SPD# + 20) / 16)
ELSE
INC P2ATBX2#, INT(126 * (P2SPD# + 20) / 16)
ENDIF
IF P3MAGSPD# <> 3
INC P3ATBX2#, INT(96 * P3MAGSPD# * (P3SPD# + 20) / 16)
ELSE
INC P3ATBX2#, INT(126 * (P3SPD# + 20) / 16)
ENDIF
IF P4MAGSPD# <> 3
INC P4ATBX2#, INT(96 * P4MAGSPD# * (P4SPD# + 20) / 16)
ELSE
INC P4ATBX2#, INT(126 * (P4SPD# + 20) / 16)
ENDIF
IF EnemyMAGSPD# <> 3
INC EnemyATBX2#, INT(((96 * EnemyMAGSPD# * (EnemySPD# + 20)) * (255 - ((BattleSPDOption# - 1) * 24))) / 16)
ELSE
INC EnemyATBX2#, INT(((126 * (EnemySPD# + 20) * (255 - ((BattleSPDOption# - 1) * 24))) / 16)
ENDIF
IF P1ATBX2# >= 65536 THEN P1ATBX2# = 65536
IF P2ATBX2# >= 65536 THEN P2ATBX2# = 65536
IF P3ATBX2# >= 65536 THEN P3ATBX2# = 65536
IF P4ATBX2# >= 65536 THEN P4ATBX2# = 65536
IF EnemyATBX2# >= 65536 THEN EnemyATBX2# = 65536
BOX P1ATBX1#, P1ATBY1#, 420 + (INT(P1ATBX2# / 655) * 2), P1ATBY2#, P1ATBColor, P1ATBColor, P1ATBColor, P1ATBColor
BOX P1ATBX2#, P1ATBY2#, 420 + (INT(P2ATBX2# / 655) * 2), P2ATBY2#, P2ATBColor, P2ATBColor, P2ATBColor, P2ATBColor
BOX P1ATBX3#, P1ATBY3#, 420 + (INT(P3ATBX2# / 655) * 2), P3ATBY2#, P3ATBColor, P3ATBColor, P3ATBColor, P3ATBColor
BOX P1ATBX4#, P1ATBY4#, 420 + (INT(P4ATBX2# / 655) * 2), P4ATBY2#, P4ATBColor, P4ATBColor, P4ATBColor, P4ATBColor
ENDFUNCTION
This below is the command menu while "Attack" can be switched to "Limit Break" when hit the gauge (that if you did played FF7 or any later...).
DIM CommandVars$(8)
CommandVars$(0) = "Ja Attack -->"
CommandVars$(1) = "<-- Ken Attack -->"
CommandVars$(2) = "<-- Po Attack"
CommandVars$(3) = "White Magics"
CommandVars$(4) = "Black Magics"
CommandVars$(5) = "Technicks"
CommandVars$(6) = "Defend"
CommandVars$(7) = "Limit Break"
Finally... This below is the main part of the command menu location. That's how I wrote before getting the problem in this forum. SelectedCommand# is just the point of "selecting" you are trying to choose, so don't worry about it. This is a DRAFT, not FINAL project, so I am sure it will appeared in center of your screen when you test it, instead bottom-right (this is the final project in my mind).
FUNCTION BattleTurn()
DO
IF SelectedCommand# <> 0
INK white, white : CENTER TEXT SCREEN WIDTH() / 2, 200, CommandVars$(0)
ELSE
INK red, red : CENTER TEXT SCREEN WIDTH() / 2, 200, CommandVars$(0)
ENDIF
IF SelectedCommand# <> 1
INK white, white : CENTER TEXT SCREEN WIDTH() / 2, 230, CommandVars$(1)
ELSE
INK red, red : CENTER TEXT SCREEN WIDTH() / 2, 230, CommandVars$(1)
ENDIF
IF SelectedCommand# <> 2
INK white, white : CENTER TEXT SCREEN WIDTH() / 2, 260, CommandVars$(2)
ELSE
INK red, red : CENTER TEXT SCREEN WIDTH() / 2, 260, CommandVars$(2)
ENDIF
IF SelectedCommand# <> 3
INK white, white : CENTER TEXT SCREEN WIDTH() / 2, 290, CommandVars$(3)
ELSE
INK red, red : CENTER TEXT SCREEN WIDTH() / 2, 290, CommandVars$(3)
ENDIF
IF SelectedCommand# <> 4
INK white, white : CENTER TEXT SCREEN WIDTH() / 2, 320, CommandVars$(4)
ELSE
INK red, red : CENTER TEXT SCREEN WIDTH() / 2, 320, CommandVars$(4)
ENDIF
IF UPKEY() = 0 AND up = 1 THEN up = 0
IF DOWNKEY() = 0 AND down = 1 THEN down = 0
IF UPKEY() = 1 AND up = 0
SelectedCommand# = SelectedCommand# - 1
IF SelectedCommand# < 0 THEN SelectedCommand# = 4
ENDIF
IF DOWNKEY() = 1 AND down = 0
SelectedCommand# = SelectedCommand# + 1
IF SelectedCommand# > 4 THEN SelectedCommand# = 0
ENDIF
SYNC
LOOP
ENDFUNCTION
// Before you get complain about it, it is not all I got but the others are just pointless to my problem of Command Menu, so i removed them to decrease the huge size of post.
And...
Okay, but still, you have no right to say that to someone who have a dream to create a RPG game for first time. I am sorry to be angry with you but even so, sometimes I never do "array" codes, it still works without a single array engine though. I had it in my college final-exam and my team with me had been passed that course class easy. It was our class RPG game, to mind you. So, what I am trying to say is that it's just possible to do anything without the important engine, right?
By look at those writings i made, it's not the beginner level, right? Anyway, I am looking forward to see you change what you wrote into my own strings, to clear it bit better.