the easiest way would probrably be to create collision boxes, although i'm not sure how to use these, as i make my own collision.
i guess the method would depend on how many you would be using. if it's not too many, you could write your own functions. i'll try to write a sample:
`on initialization
DIM event(2)
DIM eventboxes(2, 5) : `2 boxes
eventboxes(1, 0) = 10 : `left xpos
eventboxes(1, 1) = 20 : `right xpos
eventboxes(1, 2) = 0 : `bottom ypos
eventboxes(1, 3) = 20 : `top ypos
eventboxes(1, 4) = 10 : `shallow zpos
eventboxes(1, 5) = 20 : `deep zpos
eventboxes(1, 0) = 100 : `left xpos
eventboxes(1, 1) = 200 : `right xpos
eventboxes(1, 2) = 0 : `bottom ypos
eventboxes(1, 3) = 0 : `top ypos
eventboxes(1, 4) = 110 : `shallow zpos
eventboxes(1, 5) = 220 : `deep zpos
`in your loop
for i = 1 to 2
event(i) = checkInside(playermodel, i)
next
if event(1) = 1 then openDoor(1)
if event(2) = 1 then carFinished(2)
FUNCTION checkInside(playermodel, i)
ret = 0
if eventboxes(i, 0) = eventboxes(i, 1) then ignorex = 1
if eventboxes(i, 2) = eventboxes(i, 3) then ignorey = 1
if eventboxes(i, 4) = eventboxes(i, 5) then ignorez = 1
if (object position x(playermodel) > eventboxes(i, 0) and object position x(playermodel) < eventboxes(i, 1)) or ignorex = 1
if (object position y(playermodel) > eventboxes(i, 2) and object position y(playermodel) < eventboxes(i, 3)) or ignorey = 1
if (object position z(playermodel) > eventboxes(i, 4) and object position z(playermodel) < eventboxes(i, 5)) or ignorez = 1
ret = 1
endif
endif
endif
ENDFUNCTION ret
sorry that ended up being a bit more complicated than it was going to be hehe. it would be one way of doing it though. you can even set it so it ignores an axis

. could be slow, i'm not sure i havent tested it.
good luck

lecks