Эм, ты как бе неправ, это тебе не basic. Блитц создает внутри функции локальную переменную и уже оперирует с ней, а не с той, которую ты указал. Прежде чем что-то доказывать - проверь.
Graphics3D 800, 600, 32, 2
Global entity = CreateSphere()
Print "number entity: "+entity
FreeEntityNEPRAVILNO(entity)
Print "after use FreeEntityNEPRAVILNO: "+entity
entity = FreeEntityPRAVILNO(entity)
Print "after use FreeEntityPRAVILNO: "+entity
WaitKey()
End
Function FreeEntityNEPRAVILNO(entity)
FreeEntity entity
entity = 0
End Function
Function FreeEntityPRAVILNO(ent)
;для теста закоментируем
;FreeEntity ent
Return 0
End Function