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

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



二四五.如来神掌(按键盘J键,主角飞起并砸向地面,引发威力巨大的地震)

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

TheInput:AddKeyUpHandler(KEY_J, function()
	if not inst:HasTag("jump") then
	   inst.components.hunger:DoDelta(-50)
	   inst.components.playercontroller:Enable(false)
	   inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
	   shadow:SetSize( 0, 0 )
	   inst:AddTag("jump")
	   inst.jump = inst:DoPeriodicTask(.01, function() inst.Physics:SetMotorVelOverride(0,15,0) end)
	   inst:DoTaskInTime(5, function()
			if inst.jump then inst.jump:Cancel() inst.jump = nil end
			local pos = inst:GetPosition()
			GetSeasonManager():DoLightningStrike(pos)
			inst.sg:GoToState("hit")
			inst.jump2 = inst:DoPeriodicTask(.01, function() inst.Physics:SetMotorVelOverride(0,-55,0) end)
	   end )
	   inst:DoTaskInTime(6.35, function()
			if inst.jump2 then inst.jump2:Cancel() inst.jump2 = nil end
			inst.sg:GoToState("hit")
			inst.AnimState:SetBloomEffectHandle("")
			shadow:SetSize( 1.3, .6 )
			SpawnPrefab("collapse_big").Transform:SetPosition(inst.Transform:GetWorldPosition())
			GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
			for k = 1,math.random(5) do
				local pt = Vector3(inst.Transform:GetWorldPosition())
				SpawnPrefab("rocks").Transform:SetPosition(pt.x+(math.random(3)-math.random(3)), 0, pt.z+(math.random(3)-math.random(3)))
			end
			inst.components.playercontroller:ShakeCamera(inst, "FULL", 2.5, 0.03, 2, 30)
	   end )
	   inst:DoTaskInTime(6.5, function()
			local pos = Vector3(inst.Transform:GetWorldPosition())
			local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 30)
			for k,v in pairs(ents) do
				if v.components.workable and v.components.workable.workleft > 0 and not v.components.inventoryitem then
				   v.components.workable:Destroy(inst)
				end
				if v:HasTag("monster") or v.prefab == "beefalo" or v.prefab == "babybeefalo" or v.prefab == "bunnyman" or v.prefab == "pigman" or v.prefab == "pigguard"
				   or v.prefab == "merm" or v.prefab == "monkey" or v.prefab == "tallbird" or v.prefab == "walrus" or v.prefab == "little_walrus" or v.prefab == "wasphive"
				   or v.prefab == "beehive" or v.prefab == "koalefant_summer" or v.prefab == "koalefant_winter" or v.prefab == "lureplant" or v.prefab == "penguin"
				   or v.prefab == "perd" or v.prefab == "rocky" or v.prefab == "slurper" or v.prefab == "snurtle" or v.prefab == "slurtle" or v.prefab == "slurtlehole"
				   or v.prefab == "spiderden" or v.prefab == "spiderden_2" or v.prefab == "spiderden_3" then
				   v.components.health:DoDelta(-3000)
				end
			end
			inst:RemoveTag("jump")
			inst.components.playercontroller:Enable(true)
	   end )
	end
end )

	即可按下键盘J键使出如来神掌,你将腾空而起并砸向地面(不会伤血),引发剧烈的地震,震毁周围一切建筑、石头、树木,并震死绝大多数动物(不伤宠物等同伴)。如来神掌是迄今为止威力最大的武林绝学,追求和谐游戏的玩家请慎用。每次发功消耗50点饥饿值