代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2二0六.糖豆敢死队(按键盘T键召唤糖豆敢死队,对敌发动自杀式爆炸,鼠标左键点击可退钱)
3
4 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/player_common.lua文件,在inst:AddComponent("playercontroller")的下一行插入以下内容:
5
6TheInput:AddKeyUpHandler(KEY_T, function()
7 if inst.components.inventory:Has("goldnugget", 2) then
8 inst.components.inventory:ConsumeByName("goldnugget", 2)
9 inst.AnimState:PlayAnimation("give")
10 inst.SoundEmitter:PlaySound("dontstarve/HUD/research_available")
11 local bean = SpawnPrefab("goatmilk")
12 local pt = GetPlayer():GetPosition()
13 bean.Transform:SetPosition(pt.x+(math.random(3)-math.random(3)), 0, pt.z+(math.random(3)-math.random(3)))
14 SpawnPrefab("collapse_small").Transform:SetPosition(bean.Transform:GetWorldPosition())
15 bean.AnimState:SetBank("treedrake")
16 bean.AnimState:SetBuild("treedrake_build")
17 bean.AnimState:PlayAnimation("enter")
18 bean.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
19 bean.Transform:SetScale(1.2, 1.2, 1.2)
20 bean.Transform:SetFourFaced()
21 local sound = bean.entity:AddSoundEmitter()
22 local shadow = bean.entity:AddDynamicShadow()
23 shadow:SetSize(1.25, .75)
24 MakeCharacterPhysics(bean, 1, .25)
25 local colours= { {198/255,43/255,43/255}, {79/255,153/255,68/255}, {35/255,105/255,235/255}, {233/255,208/255,69/255}, {109/255,50/255,163/255}, {222/255,126/255,39/255} }
26 bean.colour_idx = math.random(#colours)
27 bean.AnimState:SetMultColour(colours[bean.colour_idx][1],colours[bean.colour_idx][2],colours[bean.colour_idx][3],1)
28 bean:RemoveComponent("edible")
29 bean:RemoveComponent("perishable")
30 bean:RemoveComponent("stackable")
31 bean:RemoveComponent("inventoryitem")
32 bean:RemoveTag("catfood")
33 bean.persists = false
34 bean:AddComponent("named")
35 bean.components.named:SetName("Jelly Bean")
36 bean:AddComponent("follower")
37 bean.components.follower:SetLeader(GetPlayer())
38 bean:AddComponent("health")
39 bean.components.health:SetMaxHealth(10)
40 bean.components.health:SetInvincible(true)
41 bean:AddComponent("combat")
42 bean.components.combat:SetDefaultDamage(1)
43 bean.components.combat:SetAttackPeriod(2)
44 bean.components.combat:SetRange(0.5)
45 bean.components.combat:SetRetargetFunction(1, function(bean)
46 if not bean.components.health:IsDead() then
47 return FindEntity(bean, 25, function(guy)
48 if guy.components.combat then
49 return guy.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == guy or guy:HasTag("monster")
50 end
51 end )
52 end
53 end )
54 bean.components.combat:SetKeepTargetFunction(function(bean, target) return target and target:IsValid() end )
55 bean:AddComponent("locomotor")
56 bean.components.locomotor.walkspeed = 15
57 bean:SetStateGraph("SGbirchnutdrake")
58 local brain = require "brains/abigailbrain"
59 bean:SetBrain(brain)
60 bean:DoPeriodicTask(0.25, function()
61 local pos = Vector3(bean.Transform:GetWorldPosition())
62 local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 2)
63 for k,v in pairs(ents) do
64 if v and v.components.combat and v.components.health and not v.components.health:IsDead() then
65 if v.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == v or v.components.combat.target == bean or bean.components.combat.target == v or v:HasTag("monster") then
66 GetPlayer().SoundEmitter:PlaySound("dontstarve_DLC001/creatures/glommer/foot_ground")
67 SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())
68 SpawnPrefab("explode_small").Transform:SetPosition(v.Transform:GetWorldPosition())
69 GetClock():DoLightningLighting()
70 GetPlayer().components.playercontroller:ShakeCamera(v, "FULL", 0.7, 0.02, .5, 40)
71 v.components.health:Kill()
72 bean:Remove()
73 end
74 end
75 end
76 end )
77 bean.components.inspectable.getstatus = function(bean)
78 inst.SoundEmitter:PlaySound("dontstarve/HUD/research_available")
79 SpawnPrefab("collapse_small").Transform:SetPosition(bean.Transform:GetWorldPosition())
80 for k = 1, 2 do
81 local goldnugget = SpawnPrefab("goldnugget")
82 inst.components.inventory:GiveItem(goldnugget)
83 end
84 bean:Remove()
85 end
86 bean:AddTag("companion")
87 bean:AddTag("beans")
88 end
89end )
90
91 即可按键盘T键召唤糖豆敢死队,花费2个黄金,身上黄金数不足时无法召唤。糖豆敢死队员将冲向你的敌人,对其发动自杀式爆炸,并杀伤周边敌人。鼠标点击多余的糖豆敢死队员,可清退它们,换回2个黄金(放入主角物品栏)。存档退出后再读档,糖豆敢死队将离开,在之前将它们都清退掉吧