どうも少し調べた限り、オブジェクトIDはHSPのシステムが内部で使用しているIDを
そのまま使っているようで、これをユーザーが任意の値に設定するというのは
難しそうな様子です。
(HSPが内部で使用している構造体を弄る必要がある?)
buhioさんの言う通り、オブジェクトIDを後で使う必要があるなら、
「これのIDは○○だ」と決め打ちするのではなく、
オブジェクトIDを何かしらの変数に記憶させておき、
それを元に色々やるのがベストではないかと。
たとえば、オブジェクトIDを配列変数に記憶させておき、
objprm等の命令はオブジェクトIDを直接指定するのではなく、
配列変数を指定して行うようにするとか。
dim id,100
button gosub "テスト0",*hoge0 : id(0)=stat
button gosub "テスト1",*hoge1 : id(1)=stat
button gosub "テスト2",*hoge2 : id(2)=stat
button gosub "テスト3",*hoge3 : id(3)=stat //←たとえばこれを削除しても、id(3)が欠番になるだけ。
button gosub "テスト4",*hoge4 : id(4)=stat
stop
*hoge0
objprm id(0),"押した" : return
*hoge1
objprm id(1),"押した" : return
*hoge2
objprm id(2),"押した" : return
*hoge3
objprm id(3),"押した" : return
*hoge4
objprm id(4),"押した" : return