第242页:自动门
展开二四二.自动门(用木盔甲种自动门,进出自动开关)
用记事本打开游戏目录\data\DLC0001\scripts\prefabs\armor_wood.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
local function OnDeploy (inst, pt)
local door1 = SpawnPrefab("armorwood")
door1.Transform:SetPosition(pt.x+0.55, pt.y, pt.z-0.55)
door1.AnimState:SetBank("winter_meter")
door1.AnimState:SetBuild("winter_meter")
door1.AnimState:SetPercent("meter", 1)
door1.Transform:SetScale(1, 0.7, 1)
MakeObstaclePhysics(door1, 0.48)
door1:RemoveComponent("inventoryitem")
door1:RemoveComponent("fuel")
door1:RemoveComponent("armor")
door1:RemoveComponent("equippable")
door1:RemoveComponent("burnable")
door1:RemoveComponent("propagator")
door1:RemoveComponent("deployable")
door1:RemoveTag("wood")
door1:AddComponent("workable")
door1.components.workable:SetWorkAction(ACTIONS.HAMMER)
door1.components.workable:SetWorkLeft(2)
door1.components.workable:SetOnFinishCallback(function(door1)
SpawnPrefab("collapse_big").Transform:SetPosition(door1.Transform:GetWorldPosition())
GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
door1:Remove()
end )
door1:AddComponent( "playerprox" )
door1.components.playerprox:SetDist(2,3)
door1.components.playerprox:SetOnPlayerNear(function(door1)
door1.Transform:SetScale(0.1, 0.7, 1)
door1.Physics:SetActive(false)
GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
end )
door1.components.playerprox:SetOnPlayerFar(function(door1)
door1.Transform:SetScale(1, 0.7, 1)
door1.Physics:SetActive(true)
GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
end )
door1.components.inspectable.getstatus = function(door1)
door1.Transform:SetScale(0.1, 0.7, 1)
door1.Physics:SetActive(false)
door1:DoTaskInTime(3, function(door1)
door1.Transform:SetScale(1, 0.7, 1)
door1.Physics:SetActive(true)
end )
end
door1:AddTag("doors")
local door2 = SpawnPrefab("armorwood")
door2.Transform:SetPosition(pt.x-0.55, pt.y, pt.z+0.55)
door2.AnimState:SetBank("winter_meter")
door2.AnimState:SetBuild("winter_meter")
door2.AnimState:SetPercent("meter", 1)
door2.Transform:SetScale(1, 0.7, 1)
MakeObstaclePhysics(door2, 0.48)
door2:RemoveComponent("inventoryitem")
door2:RemoveComponent("fuel")
door2:RemoveComponent("armor")
door2:RemoveComponent("equippable")
door2:RemoveComponent("burnable")
door2:RemoveComponent("propagator")
door2:RemoveComponent("deployable")
door2:RemoveTag("wood")
door2:AddComponent("workable")
door2.components.workable:SetWorkAction(ACTIONS.HAMMER)
door2.components.workable:SetWorkLeft(2)
door2.components.workable:SetOnFinishCallback(function(door2)
SpawnPrefab("collapse_big").Transform:SetPosition(door2.Transform:GetWorldPosition())
GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
door2:Remove()
end )
door2:AddComponent( "playerprox" )
door2.components.playerprox:SetDist(2,3)
door2.components.playerprox:SetOnPlayerNear(function(door2)
door2.Transform:SetScale(0.1, 0.7, 1)
door2.Physics:SetActive(false)
GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
end )
door2.components.playerprox:SetOnPlayerFar(function(door2)
door2.Transform:SetScale(1, 0.7, 1)
door2.Physics:SetActive(true)
GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
end )
door2.components.inspectable.getstatus = function(door2)
door2.Transform:SetScale(0.1, 0.7, 1)
door2.Physics:SetActive(false)
door2:DoTaskInTime(3, function(door2)
door2.Transform:SetScale(1, 0.7, 1)
door2.Physics:SetActive(true)
end )
end
door2:AddTag("doors")
inst:Remove()
end
inst:AddComponent("deployable")
inst.components.deployable.ondeploy = OnDeploy
local function onsave(inst, data)
if inst:HasTag("doors") then
data.doors = true
end
end
local function onload(inst, data)
if data and data.doors then
inst.AnimState:SetBank("winter_meter")
inst.AnimState:SetBuild("winter_meter")
inst.AnimState:SetPercent("meter", 1)
inst.Transform:SetScale(1, 0.7, 1)
MakeObstaclePhysics(inst, 0.48)
inst:RemoveComponent("inventoryitem")
inst:RemoveComponent("fuel")
inst:RemoveComponent("armor")
inst:RemoveComponent("equippable")
inst:RemoveComponent("burnable")
inst:RemoveComponent("propagator")
inst:RemoveComponent("deployable")
inst:RemoveTag("wood")
inst:AddComponent("workable")
inst.components.workable:SetWorkAction(ACTIONS.HAMMER)
inst.components.workable:SetWorkLeft(2)
inst.components.workable:SetOnFinishCallback(function(inst)
SpawnPrefab("collapse_big").Transform:SetPosition(inst.Transform:GetWorldPosition())
GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
inst:Remove()
end )
inst:AddComponent( "playerprox" )
inst.components.playerprox:SetDist(2,3)
inst.components.playerprox:SetOnPlayerNear(function(inst)
inst.Transform:SetScale(0.1, 0.7, 1)
inst.Physics:SetActive(false)
GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
end )
inst.components.playerprox:SetOnPlayerFar(function(inst)
inst.Transform:SetScale(1, 0.7, 1)
inst.Physics:SetActive(true)
GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
end )
inst.components.inspectable.getstatus = function(inst)
inst.Transform:SetScale(0.1, 0.7, 1)
inst.Physics:SetActive(false)
inst:DoTaskInTime(3, function(inst)
inst.Transform:SetScale(1, 0.7, 1)
inst.Physics:SetActive(true)
end )
end
inst:AddTag("doors")
end
end
inst.OnSave = onsave
inst.OnLoad = onload
即可用木盔甲种自动门,进出时自动开关,为方便宠物进出,也可以手动开关,鼠标左键点击可开门,3秒后自动关门。种门时,可先建好一排墙,然后砸掉其中2堵,在留下的空地正中间种下自动门,即可与墙完美契合。自动门有方向的限制,只可种在正面的墙之间(进入游戏默认的方向),不能种在侧面的墙之间。不需要自动门时,用锤子砸毁即可。木盔甲在战斗选项(画着两把剑)下,用8个木头、2个绳子制造
更多相关内容请关注:饥荒专区
责任编辑:Shy夏夏