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

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


 1
 2二一0.无尽的任务(点路牌接任务,讨伐怪物赚赏金)
 3
 4	MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/homesign.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
 5
 6local function GetStatus(inst)
 7	if not inst:HasTag("westart") then
 8	   GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
 9	   inst:AddTag("westart")
10	   inst.AnimState:SetMultColour(255/255,0/255,0/255,1)
11	   local names = {"spiderqueen","deerclops","leif_sparse","minotaur","knight","bishop","rook","firehound"}
12	   local name = names[math.random(#names)]
13	   local bonuspoints = math.random(6)
14	   local pt = inst:GetPosition()
15	   local wanted = SpawnPrefab(name)
16	   wanted.Transform:SetPosition(pt.x+(math.random(300)-math.random(300)), 0, pt.z+(math.random(300)-math.random(300)))
17	   wanted.components.health:SetMaxHealth(1000 * bonuspoints)
18	   wanted.components.health:DoDelta(1000 * bonuspoints)
19	   wanted.AnimState:SetMultColour(255/255,0/255,0/255,1)
20	   wanted.Transform:SetScale(1.5, 1.5, 1.5)
21	   local minimap = wanted.entity:AddMiniMapEntity()
22	   minimap:SetIcon( "lucy_axe.png" )
23	   wanted:ListenForEvent("death", function()
24		   inst:RemoveTag("westart")
25		   inst.AnimState:SetMultColour(35/255,105/255,235/255,1)
26		   for k = 1, 20*bonuspoints do
27			   SpawnPrefab("goldnugget").Transform:SetPosition(GetPlayer().Transform:GetWorldPosition())
28			   GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold")
29		   end
30	   end )
31	   inst:DoTaskInTime(180, function()
32		   if not wanted.components.health:IsDead() then
33			  SpawnPrefab("die_fx").Transform:SetPosition(wanted.Transform:GetWorldPosition())
34			  SpawnPrefab("die_fx").Transform:SetPosition(GetPlayer().Transform:GetWorldPosition())
35			  GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
36			  wanted:Remove()
37			  inst:RemoveTag("westart")
38			  inst.AnimState:SetMultColour(35/255,105/255,235/255,1)
39		   end
40	   end)
41	end
42end
43	inst.components.inspectable.getstatus = GetStatus
44	inst.AnimState:SetMultColour(35/255,105/255,235/255,1)
45
46	即可点路牌接任务,地图随机位置将出现一个被通缉的怪物,全身红色,小地图上显示为红色斧子图标,血量随机在1000-6000点,不由怪物品种决定(1只狗可能拥有6000的血量)。在3分钟内(游戏中6个小时)找到并杀死它,即讨伐成功,赏金会出现在主角身边,错过时间则任务失败(升起黑烟),被通缉的怪物将人间蒸发。赏金为20-120个黄金,杀死的怪物血量越高,赏金越高。怪物有可能出现在海上,如果没有修改过“地图全开”、“主角可渡海”,就只能望洋兴叹了。这是一个无尽的任务系统,如果同时修改了“巨型超市”,则可以用赏金购买造装备的材料及补血料理,从此开始赏金猎人的生涯吧