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

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



九.宝物猎人(地面每天出宝贝,限时寻宝赢奖金)

	用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/forest.lua文件,在inst:AddComponent("hunter")的下一行插入以下内容:

local function OnDay(inst)
	local names = {"trinket_1","trinket_2","trinket_3","trinket_4","trinket_5","trinket_6","trinket_7","trinket_8","trinket_9","trinket_10","trinket_11","trinket_12"}
	inst.name = names[math.random(#names)]
	local player = GetPlayer()
	local pt = Vector3(player.Transform:GetWorldPosition())
	local gold = SpawnPrefab(inst.name)
	gold.Transform:SetPosition(pt.x+(math.random(500)-math.random(500)), 0, pt.z+(math.random(500)-math.random(500)))
	gold:RemoveComponent("tradable")
	gold:RemoveComponent("stackable")
	local minimap = gold.entity:AddMiniMapEntity()
	minimap:SetIcon( "abigail_flower.png" )
	inst:DoTaskInTime(60+math.random(5), function()
		if not gold.components.inventoryitem:IsHeld() then
		   SpawnPrefab("collapse_small").Transform:SetPosition(gold.Transform:GetWorldPosition())
		   SpawnPrefab("collapse_small").Transform:SetPosition(player.Transform:GetWorldPosition())
		   player.SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
		else
		   for k = 1, 10+math.random(10) do
		   SpawnPrefab("goldnugget").Transform:SetPosition(player.Transform:GetWorldPosition())
		   player.SoundEmitter:PlaySound("dontstarve/HUD/get_gold")
		   end
		end
		gold:Remove()
	end)
end
	inst:ListenForEvent( "daytime", function() OnDay(inst) end, GetWorld())

	即可在每天天亮时,地面随机出现宝物(12种收藏品之一),小地图上将显示红花的图标,在1分钟内捡到就可获得奖金,错过时间宝物将消失(生起一团烟就说明寻宝失败)。当寻宝计时结束,你也已经捡到宝物的话,将获得10-20个黄金的奖励(出现在脚下)。注意,宝物很有可能出现在海上,如果没有修改过“地图全开”、“主角可渡海”,就只能望洋兴叹了