使用
DOTA_SpawnMapAtPosition(sMapName: string, vPosition: Vector, bTriggerCompletion: bool, hReady: handle, hComplete: handle, handle_6: handle): int
在指定位置生成一个加载一个地形(.vmap)。bTriggerCompletion为true时,需要手动ManuallyTriggerSpawnGroupCompletion来完成地形加载。vPosition必须是64的倍数,否则创建失败。函数返回一个SpawnGroup。可以通过UnloadSpawnGroupByHandle(hSpawnGroup)卸载地图。
-- Example 1
function CMapRoom:LoadExitRooms()
local hSpawnGroup = DOTA_SpawnMapAtPosition( "base_map", Vector(64, 64, 0), true, Dynamic_Wrap( CMapRoom, "OnRoomReadyToSpawn" ), Dynamic_Wrap( CMapRoom, "OnSpawnRoomComplete" ), CMapRoom )
end
function CMapRoom:OnRoomReadyToSpawn(self, hSpawnGroup)
ManuallyTriggerSpawnGroupCompletion(hSpawnGroup)
end
function CMapRoom:OnSpawnRoomComplete(self, hSpawnGroup)
print("OnSpawnRoomComplete")
end
-- Example 2
local hSpawnGroup = DOTA_SpawnMapAtPosition( "base_map", Vector(64, 64, 0), false, function ()
end, function ()
end, nil )
UnloadSpawnGroupByHandle(hSpawnGroup) -- 卸载
特性
- 地形动态地形的位置必须刷在64倍数的位置上,否则刷不出来,超出主地图的最大范围也会刷不出来
BUG
- 如果同一张地图重复刷了好几次,地图上的触发机制会触发同名的实体。举个例子,你做了个地刺陷阱,人物走上去触发后,其他地图的地刺也会触发
- 有些实体无法卸载,比如肉山坑的视野阻挡实体(名字忘了),该实体经测试会在创建的瞬间就被移除,但是视野阻挡的效果会永久残留。
- 如果使用了dota_ent_tree也就是树的实体,那么在卸载的时候会闪退。
- 地形的可行走区域在卸载后会残留,比如原来是128高度的高地,现在重新刷成0高度的水面,那人物会站着原有的128的高度上。
- 不要在地形刚创建的时候在上面刷单位,有概率闪退