游戏达人
![Rank: 7](static/image/common/star_level3.gif) ![Rank: 7](static/image/common/star_level2.gif) ![Rank: 7](static/image/common/star_level1.gif)
- 贡献度
- 80
- 金元
- 18912
- 积分
- 2221
- 精华
- 1
- 注册时间
- 2010-11-27
|
Mue战天。 发表于 2013-11-6 21:07 ![](static/image/common/back.gif)
我修改了,出现错误,而且我认真看过n次,还是修改错误,我用的版本是22版 ...
我应该找到问题所在了,方便按下面的再改一下,期待你的测试结果,十分感谢
一八三.高压电避难所(按加号键筑一圈带高压电的玄武岩墙,按减号键消失)
1.用记事本打开游戏目录\data\scripts\prefabs\basalt.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
local function OnExplode(inst, target)
if target and not target:HasTag("smallbird") and not target:HasTag("chester") then
SpawnPrefab("lightning_rod_fx").Transform:SetPosition(inst.Transform:GetWorldPosition())
SpawnPrefab("lightning_rod_fx").Transform:SetPosition(target.Transform:GetWorldPosition())
inst.SoundEmitter:PlaySound("dontstarve/common/lightningrod")
target.components.health:DoDelta(-3000)
end
inst:DoTaskInTime(.1, function() inst.components.mine:Reset() end )
end
inst:AddComponent("mine")
inst.components.mine:SetRadius(4)
inst.components.mine:SetAlignment("player")
inst.components.mine:SetOnExplodeFn(OnExplode)
inst.components.mine:Reset()
2.用记事本打开游戏目录\data\scripts\prefabs\player_common.lua文件,在inst:AddComponent("catcher")的下一行插入以下内容:
local function basalt(inst)
local player = GetPlayer()
local pt = Vector3(player.Transform:GetWorldPosition())
for k = 1, 50 do
local theta = 1 * 2 * PI
local radius = 8
local result_offset = FindValidPositionByFan(theta, radius, 50, function(offset)
local x,y,z = (pt + offset):Get()
local ents = TheSim:FindEntities(x,y,z , 1)
return not next(ents)
end)
if result_offset then
local tentacle = SpawnPrefab("basalt_pillar")
tentacle.Transform:SetPosition((pt + result_offset):Get())
GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
local fx = SpawnPrefab("lightning_rod_fx")
local pos = pt + result_offset
fx.Transform:SetPosition(pos.x, pos.y, pos.z)
end
inst.SoundEmitter:PlaySound("dontstarve/common/lightningrod")
end
end
function sleepfn(inst)
local player = GetPlayer()
local range = 15
local pos = Vector3(player.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, range)
for k,v in pairs(ents) do
if v.prefab == "basalt_pillar" then
SpawnPrefab("lightning_rod_fx").Transform:SetPosition(v.Transform:GetWorldPosition())
v:Remove()
end
end
inst.SoundEmitter:PlaySound("dontstarve/common/lightningrod")
return true
end
TheInput:AddKeyUpHandler(KEY_KP_PLUS, function() basalt(inst) end )
TheInput:AddKeyUpHandler(KEY_KP_MINUS, function() sleepfn(inst) end )
即可按小键盘加号键,在主角周围筑起一圈带高压电的玄武岩墙,怪物靠近会被电死,按小键盘减号键自动消失。注意不要离怪物太近时按加号键,会把怪物也圈进来或使墙有缺口
|
|