代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。

原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html


  1
  2二四九.橡树盆栽(用化肥种橡树盆栽,每天掉落橡果,靠近可补脑,鼠标左键点击树叶可变色)
  3
  4	MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/fertilizer.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
  5
  6local function createoak(inst)
  7	local pt = inst:GetPosition()
  8	local oak = SpawnPrefab("fertilizer")
  9	oak.Transform:SetPosition(pt.x, pt.y, pt.z)
 10	oak.AnimState:SetBank("fertilizer")
 11	oak.AnimState:SetBuild("fertilizer")
 12	oak.AnimState:PlayAnimation("idle")
 13	oak.Transform:SetScale(1.2, 1.2, 1.2)
 14	oak:RemoveComponent("inventoryitem")
 15	oak:RemoveComponent("finiteuses")
 16	oak:RemoveComponent("fertilizer")
 17	oak:RemoveComponent("smotherer")
 18	oak:RemoveComponent("deployable")
 19	oak:AddTag("NOCLICK")
 20	oak:ListenForEvent( "daytime", function()
 21		local pos = Vector3(oak.Transform:GetWorldPosition())
 22		local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 2)
 23		for k,v in pairs(ents) do
 24			if v.components.inventoryitem and not v.components.inventoryitem:IsHeld() then
 25			   if v.prefab == "acorn" then
 26				  v:Remove()
 27			   end
 28			end
 29		end
 30		oak:DoTaskInTime(0.3, function(oak)
 31			oak:StartThread(function()
 32				for k = 1,math.random(3,6) do
 33					local pt1 = oak:GetPosition()
 34					local acorn = SpawnPrefab("acorn")
 35					acorn.Transform:SetPosition(pt1.x+(math.random(2)-math.random(2)), 5, pt1.z+(math.random(2)-math.random(2)))
 36					Sleep(0.3)
 37				end
 38			end )
 39		end )
 40	end , GetWorld() )
 41	oak:AddTag("oak")
 42	oak.tree = SpawnPrefab("fertilizer")
 43	oak.tree.AnimState:SetBank("tree_leaf")
 44	oak.tree.AnimState:SetBuild("tree_leaf_trunk_build")
 45	local names = {"tree_leaf_green_build","tree_leaf_red_build","tree_leaf_orange_build","tree_leaf_yellow_build"}
 46	local name = names[math.random(#names)]
 47	oak.tree.AnimState:OverrideSymbol("swap_leaves", name, "swap_leaves")
 48	oak.tree.AnimState:PlayAnimation("idle_tall")
 49	oak.tree.Transform:SetScale(0.8, 0.8, 0.8)
 50	oak.tree.Physics:SetActive(false)
 51	oak.tree:RemoveComponent("inventoryitem")
 52	oak.tree:RemoveComponent("finiteuses")
 53	oak.tree:RemoveComponent("fertilizer")
 54	oak.tree:RemoveComponent("smotherer")
 55	oak.tree:RemoveComponent("deployable")
 56	local follower = oak.tree.entity:AddFollower()
 57	follower:FollowSymbol( oak.GUID, "swap_object", -1, -115, 0 )
 58	oak.tree:AddComponent("sanityaura")
 59	oak.tree.components.sanityaura.aura = TUNING.SANITYAURA_MED
 60	oak.tree:AddComponent("workable")
 61	oak.tree.components.workable:SetWorkAction(ACTIONS.CHOP)
 62	oak.tree.components.workable:SetWorkLeft(1)
 63	oak.tree.components.workable:SetOnFinishCallback(function()
 64		SpawnPrefab("collapse_big").Transform:SetPosition(oak.tree.Transform:GetWorldPosition())
 65		GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
 66		local pos = Vector3(oak.tree.Transform:GetWorldPosition())
 67		local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 1)
 68		for k,v in pairs(ents) do
 69			if v:HasTag("oak") then
 70			   v:Remove()
 71			end
 72		end
 73		oak.tree:Remove()
 74	end )
 75	oak.tree.components.inspectable.getstatus = function()
 76		local names = {"tree_leaf_green_build","tree_leaf_red_build","tree_leaf_orange_build","tree_leaf_yellow_build"}
 77		local name = names[math.random(#names)]
 78		oak.tree.AnimState:OverrideSymbol("swap_leaves", name, "swap_leaves")
 79	end
 80	oak.tree:AddTag("goodbye")
 81end
 82local function OnDeploy (inst, pt)
 83	createoak(inst)
 84	inst:Remove()
 85end
 86	inst:AddComponent("deployable")
 87	inst.components.deployable.ondeploy = OnDeploy
 88local function onsave(inst, data)
 89	if inst:HasTag("goodbye") then
 90		data.goodbye = true
 91	end
 92	if inst:HasTag("oak") then
 93		data.oak = true
 94	end
 95end
 96local function onload(inst, data)
 97	if data and data.goodbye then
 98	   inst:Remove()
 99	end
100	if data and data.oak then
101	   createoak(inst)
102	   inst:Remove()
103	end
104end
105	inst.OnSave = onsave
106	inst.OnLoad = onload
107
108	即可用化肥种橡树盆栽,四季常青,每天清晨掉落橡果,靠近可补脑。鼠标左键点橡树,可改变树叶的颜色。不想要橡树盆栽了,用斧子砍掉即可。化肥在种植选项(画着胡萝卜)下,用3个便便、2个硬骨头、4个木头制造