You could also use a function to generate those numbers, I tried something similar to what you are doing a long time ago but as my project got bigger it became a chore to sift through loads of numbers. It also makes it nearly impossible to have more than one type of object.
Here's how I do object numbers, whenever I want a cube for example I do this:
mycube = make_obj_cube(5)
Then I can use the mycube variable whenever I'm using the cube. The make_obj_cube() function will get an unused object id number and make a cube with it. (The parameter is for the cube size.) It's also good with arrays because I can write something like
monster = load_obj("Monster.dbo")
dim monsters(49)
for t = 0 to 49
monsters(t) = instance_obj(monster)
next t
Here's the functions I use to make a cube.
function make_obj_cube(size as dword)
local id as dword
id = free_obj()
make object cube id, size
endfunction id
function free_obj()
local id as dword
repeat
inc id
until object exist(id) = 0
endfunction id
"Did I ever tell you how I got the nickname the Dragon of the West?"
"I'm not interested in a lengthy anecdote, Uncle."
"It's more of a demonstration really."