渊小乖
发表于 2013-9-29 15:34
yzzn2009 发表于 2013-9-29 15:31 static/image/common/back.gif
好像不是这个,有时候必须要试错才能找到解决问题的方法,你把可能的文件添加区域伤害代码,在游戏中试试 ...
大神你就帮我找找嘛好不求你了:'(
yzzn2009
发表于 2013-9-29 15:41
渊小乖 发表于 2013-9-29 15:34 static/image/common/back.gif
大神你就帮我找找嘛好不求你了
BRSITEM\scripts\prefabs\canno_projectile.lua
打死、烤肉酱
发表于 2013-9-29 15:50
可不可以全人物狂吃疯肉变海狸
yzzn2009
发表于 2013-9-29 15:54
打死、烤肉酱 发表于 2013-9-29 15:50 static/image/common/back.gif
可不可以全人物狂吃疯肉变海狸
理论上可以,但修改过程非常复杂,且要修改许多文件,复制粘帖稍有错误,就导致跳出,太不实用了。我给你看看伍迪变海狸的代码,你就明白了
local function BeaverActionButton(inst)
local attack_target = inst.components.playercontroller:GetAttackTarget()
if attack_target then
if inst.components.combat.target ~= attack_target or inst.sg:HasStateTag("idle") then
return BufferedAction(inst, attack_target, ACTIONS.ATTACK)
end
end
local action_target = FindEntity(inst, 6, function(guy) return (guy.components.edible and inst.components.eater:CanEat(guy)) or
(guy.components.workable and inst.components.worker:CanDoAction(guy.components.workable.action)) end)
if not inst.sg:HasStateTag("busy") and action_target then
if (action_target.components.edible and inst.components.eater:CanEat(action_target)) then
return BufferedAction(inst, action_target, ACTIONS.EAT)
else
return BufferedAction(inst, action_target, action_target.components.workable.action)
end
end
end
local function LeftClickPicker(inst, target_ent, pos)
if inst.components.combat:CanTarget(target_ent) then
return inst.components.playeractionpicker:SortActionList({ACTIONS.ATTACK}, target_ent, nil)
end
if target_ent and target_ent.components.edible and inst.components.eater:CanEat(target_ent) then
return inst.components.playeractionpicker:SortActionList({ACTIONS.EAT}, target_ent, nil)
end
if target_ent and target_ent.components.workable and inst.components.worker:CanDoAction(target_ent.components.workable.action) then
return inst.components.playeractionpicker:SortActionList({target_ent.components.workable.action}, target_ent, nil)
end
end
local function RightClickPicker(inst, target_ent, pos)
return {}
end
local BeaverBadge = Class(Badge, function(self, owner)
Badge._ctor(self, "beaver_meter", owner)
end)
local function onbeavereat(inst, data)
if data.food and data.food.components.edible.woodiness and inst.components.beaverness then
inst.components.beaverness:DoDelta(data.food.components.edible.woodiness)
end
end
local function beaveractionstring(inst, action)
return STRINGS.ACTIONS.GNAW
end
local function beaverhurt(inst, delta)
if delta < 0 then
inst.sg:PushEvent("attacked")
inst.components.beaverness:DoDelta(delta*.25)
TheFrontEnd:GetSound():PlaySound("dontstarve/HUD/health_down")
inst.HUD.controls.beaverbadge:PulseRed()
if inst.HUD.bloodover then
inst.HUD.bloodover:Flash()
end
end
end
local function SetHUDState(inst)
if inst.HUD then
if inst.components.beaverness:IsBeaver() and not inst.HUD.controls.beaverbadge then
inst.HUD.controls.beaverbadge = GetPlayer().HUD.controls.sidepanel:AddChild(BeaverBadge(inst))
inst.HUD.controls.beaverbadge:SetPosition(0,-100,0)
inst.HUD.controls.beaverbadge:SetPercent(1)
inst.HUD.controls.beaverbadge.inst:ListenForEvent("beavernessdelta", function(_, data)
inst.HUD.controls.beaverbadge:SetPercent(inst.components.beaverness:GetPercent(), inst.components.beaverness.max)
if not data.overtime then
if data.newpercent > data.oldpercent then
inst.HUD.controls.beaverbadge:PulseGreen()
TheFrontEnd:GetSound():PlaySound("dontstarve/HUD/health_up")
elseif data.newpercent < data.oldpercent then
TheFrontEnd:GetSound():PlaySound("dontstarve/HUD/health_down")
inst.HUD.controls.beaverbadge:PulseRed()
end
end
end, inst)
inst.HUD.controls.crafttabs:Hide()
inst.HUD.controls.inv:Hide()
inst.HUD.controls.status:Hide()
inst.HUD.controls.mapcontrols.minimapBtn:Hide()
inst.HUD.beaverOL = inst.HUD.under_root:AddChild(Image("images/woodie.xml", "beaver_vision_OL.tex"))
inst.HUD.beaverOL:SetVRegPoint(ANCHOR_MIDDLE)
inst.HUD.beaverOL:SetHRegPoint(ANCHOR_MIDDLE)
inst.HUD.beaverOL:SetVAnchor(ANCHOR_MIDDLE)
inst.HUD.beaverOL:SetHAnchor(ANCHOR_MIDDLE)
inst.HUD.beaverOL:SetScaleMode(SCALEMODE_FILLSCREEN)
inst.HUD.beaverOL:SetClickable(false)
elseif not inst.components.beaverness:IsBeaver() and inst.HUD.controls.beaverbadge then
if inst.HUD.controls.beaverbadge then
inst.HUD.controls.beaverbadge:Kill()
inst.HUD.controls.beaverbadge = nil
end
if inst.HUD.beaverOL then
inst.HUD.beaverOL:Kill()
inst.HUD.beaverOL = nil
end
inst.HUD.controls.crafttabs:Show()
inst.HUD.controls.inv:Show()
inst.HUD.controls.status:Show()
inst.HUD.controls.mapcontrols.minimapBtn:Show()
end
end
end
local function BecomeWoodie(inst)
inst.beaver = false
inst.ActionStringOverride = nil
inst.AnimState:SetBank("wilson")
inst.AnimState:SetBuild("woodie")
inst:SetStateGraph("SGwilson")
inst:RemoveTag("beaver")
inst:RemoveComponent("worker")
inst.components.talker:StopIgnoringAll()
inst.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED
inst.components.combat:SetDefaultDamage(TUNING.UNARMED_DAMAGE)
inst.components.playercontroller.actionbuttonoverride = nil
inst.components.playeractionpicker.leftclickoverride = nil
inst.components.playeractionpicker.rightclickoverride = nil
inst.components.eater:SetOmnivore()
inst.components.hunger:Resume()
inst.components.sanity.ignore = false
inst.components.health.redirect = nil
inst.components.beaverness:StartTimeEffect(2, -1)
inst:RemoveEventCallback("oneatsomething", onbeavereat)
inst.Light:Enable(false)
inst.components.dynamicmusic:Enable()
inst.SoundEmitter:KillSound("beavermusic")
GetWorld().components.colourcubemanager:SetOverrideColourCube(nil)
inst.components.temperature:SetTemp(nil)
inst:DoTaskInTime(0, function() SetHUDState(inst) end)
end
local function onworked(inst, data)
if not inst.components.beaverness:IsBeaver() and data.target and data.target.components.workable and data.target.components.workable.action == ACTIONS.CHOP then
inst.components.beaverness:DoDelta(3)
--local dist = easing.linear(inst.components.beaverness:GetPercent(), 0, .1, 1)
--TheCamera:Shake("SIDE", .15, .05, dist*.66)
else
TheCamera:Shake("SIDE", .15, .05, .1)
end
end
local function BecomeBeaver(inst)
inst.beaver = true
inst.ActionStringOverride = beaveractionstring
inst:AddTag("beaver")
inst.AnimState:SetBuild("werebeaver_build")
inst.AnimState:SetBank("werebeaver")
inst:SetStateGraph("SGwerebeaver")
inst.components.talker:IgnoreAll()
inst.components.combat:SetDefaultDamage(TUNING.BEAVER_DAMAGE)
inst.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED*1.1
--inst.components.inventory:DropEverything()
inst.components.playercontroller.actionbuttonoverride = BeaverActionButton
inst.components.playeractionpicker.leftclickoverride = LeftClickPicker
inst.components.playeractionpicker.rightclickoverride = RightClickPicker
inst.components.eater:SetBeaver()
inst:AddComponent("worker")
inst.components.worker:SetAction(ACTIONS.DIG, 1)
inst.components.worker:SetAction(ACTIONS.CHOP, 4)
inst.components.worker:SetAction(ACTIONS.MINE, 1)
inst.components.worker:SetAction(ACTIONS.HAMMER, 1)
inst:ListenForEvent("oneatsomething", onbeavereat)
inst.components.sanity:SetPercent(1)
inst.components.health:SetPercent(1)
inst.components.hunger:SetPercent(1)
inst.components.hunger:Pause()
inst.components.sanity.ignore = true
inst.components.health.redirect = beaverhurt
inst.components.health.redirect_percent = .25
local dt = 3
local BEAVER_DRAIN_TIME = 120
inst.components.beaverness:StartTimeEffect(dt, (-100/BEAVER_DRAIN_TIME)*dt)
inst.Light:Enable(true)
inst.components.dynamicmusic:Disable()
inst.SoundEmitter:PlaySound("dontstarve/music/music_hoedown", "beavermusic")
GetWorld().components.colourcubemanager:SetOverrideColourCube("images/colour_cubes/beaver_vision_cc.tex")
inst.components.temperature:SetTemp(20)
inst:DoTaskInTime(0, function() SetHUDState(inst) end)
end
local fn = function(inst)
--inst:ListenForEvent("transform", function() if inst.beaver then BecomeWoodie(inst) else BecomeBeaver(inst) end end)
inst:AddComponent("beaverness")
inst.components.beaverness.makeperson = BecomeWoodie
inst.components.beaverness.makebeaver = BecomeBeaver
inst.components.beaverness.onbecomeperson = function()
inst:PushEvent("transform_person")
end
inst.components.beaverness.onbecomebeaver = function()
inst:PushEvent("transform_werebeaver")
--BecomeBeaver(inst)
end
inst.entity:AddLight()
inst.Light:Enable(false)
inst.Light:SetRadius(5)
inst.Light:SetFalloff(.5)
inst.Light:SetIntensity(.6)
inst.Light:SetColour(245/255,40/255,0/255)
local function OnEat(inst, food)
if food.prefab == "monstermeat" and not inst.components.beaverness:IsBeaver() then
if not inst.components.beaverness.doing_transform then
inst.components.beaverness:SetPercent(1)
end
end
end
inst.components.eater:SetOnEatFn(OnEat)
inst:ListenForEvent("working", onworked)
inst.components.inventory:GuaranteeItems(prefabs)
BecomeWoodie(inst)
inst:ListenForEvent("nighttime", function(global, data)
if GetClock():GetMoonPhase() == "full" and not inst.components.beaverness:IsBeaver() then
if not inst.components.beaverness.doing_transform then
inst.components.beaverness:SetPercent(1)
end
end
end, GetWorld())
end
渊小乖
发表于 2013-9-29 15:58
我改插在哪里啊:'(:'(:'(:'(
local assets=
{
Asset("ANIM", "anim/canno_projectile.zip"),
}
local function OnHit(inst, owner, target)
inst:Remove()
end
local function common()
local inst = CreateEntity()
local trans = inst.entity:AddTransform()
local anim = inst.entity:AddAnimState()
MakeInventoryPhysics(inst)
RemovePhysicsColliders(inst)
anim:SetBank("projectile")
anim:SetBuild("canno_projectile")
inst:AddTag("projectile")
inst:AddComponent("projectile")
inst.components.projectile:SetSpeed(80)
inst.components.projectile:SetOnHitFn(OnHit)
inst.components.projectile:SetOnMissFn(OnHit)
return inst
end
local function brp()
local inst = common()
inst.AnimState:PlayAnimation("ice_spin_loop", true)
local light = inst.entity:AddLight()
inst.Light:Enable(true)
inst.Light:SetRadius(5)
inst.Light:SetFalloff(1)
inst.Light:SetIntensity(.7)
inst.Light:SetColour(44/255,117/255,220/255)
return inst
end
return Prefab( "common/inventory/brs_projectile", brp, assets)
yzzn2009
发表于 2013-9-29 16:06
渊小乖 发表于 2013-9-29 15:58 static/image/common/back.gif
我改插在哪里啊
local assets=
{
{:3_92:}拜托,我相信你有这个能力,自己对比研究一下(不行就试错),这样最终成功了,你才有成就感
渊小乖
发表于 2013-9-29 16:09
local assets=
{
Asset("ANIM", "anim/canno_projectile.zip"),
}
local function OnHit(inst, owner, target)
inst:Remove()
end
local function common()
local inst = CreateEntity()
local trans = inst.entity:AddTransform()
local anim = inst.entity:AddAnimState()
MakeInventoryPhysics(inst)
RemovePhysicsColliders(inst)
anim:SetBank("projectile")
anim:SetBuild("canno_projectile")
inst:AddTag("projectile")
inst:AddComponent("projectile")
inst.components.projectile:SetSpeed(80)
inst.components.projectile:SetOnHitFn(OnHit)
inst.components.projectile:SetOnMissFn(OnHit)
local function OnDeath(inst)
inst:DoTaskInTime(0, function()
inst.components.combat:DoAreaAttack(inst, 5)
end)
end
inst:AddComponent("combat")
inst.components.combat:SetDefaultDamage(5000)
inst:ListenForEvent("animover", OnDeath)
return inst
end
local function brp()
local inst = common()
inst.AnimState:PlayAnimation("ice_spin_loop", true)
local light = inst.entity:AddLight()
inst.Light:Enable(true)
inst.Light:SetRadius(5)
inst.Light:SetFalloff(1)
inst.Light:SetIntensity(.7)
inst.Light:SetColour(44/255,117/255,220/255)
return inst
end
return Prefab( "common/inventory/brs_projectile", brp, assets)
我添加了 可是没效果
1344152253
发表于 2013-9-29 16:10
怎么改 传送法杖不掉脑残
渊小乖
发表于 2013-9-29 16:12
大神哥哥啊你确定是canno_projectile?
yzzn2009
发表于 2013-9-29 16:13
本帖最后由 yzzn2009 于 2013-9-29 20:33 编辑
1344152253 发表于 2013-9-29 16:10 static/image/common/back.gif
怎么改 传送法杖不掉脑残
用紫色魔杖不降脑:用记事本打开游戏目录\data\scripts\prefabs\staff.lua文件,将caster.components.sanity:DoDelta(-TUNING.SANITY_HUGE)替换为caster.components.sanity:DoDelta(0)
yzzn2009
发表于 2013-9-29 16:15
渊小乖 发表于 2013-9-29 16:12 static/image/common/back.gif
大神哥哥啊你确定是canno_projectile?
确定,因为它里面有return Prefab( "common/inventory/brs_projectile", brp, assets),只要你发的枪的文件没错
渊小乖
发表于 2013-9-29 16:18
不会:'(:'(
yzzn2009
发表于 2013-9-29 16:24
渊小乖 发表于 2013-9-29 16:18 static/image/common/back.gif
不会
我现在没时间了,你再试试,晚上再说吧
渊小乖
发表于 2013-9-29 16:30
yzzn2009 发表于 2013-9-29 16:24 static/image/common/back.gif
我现在没时间了,你再试试,晚上再说吧
好你先忙没事谢谢打扰你啦大神
渊小乖
发表于 2013-9-29 17:57
yzzn2009 发表于 2013-9-29 17:30 static/image/common/back.gif
我简单看了看,他的mod中问题很多,他的弹只是个抛射物,不是效果,所以不存在跟随目标和自动消除功能, ...
我就说嘛 就是这样我早就想说了 看来不是我笨是这个MOD做得有问题 我之前自己写了语句加进去所有武器都带范围伤害 我一直在想结果是真的 看来这个MOD我要考虑了
渊小乖
发表于 2013-9-29 17:59
yzzn2009 发表于 2013-9-29 17:30 static/image/common/back.gif
我简单看了看,他的mod中问题很多,他的弹只是个抛射物,不是效果,所以不存在跟随目标和自动消除功能, ...
我是在语句里插入
local com = owner.components.combat
inst.ownerAreaHitRange = com.areahitrange
inst.ownerAreaHitDamagePercent = com.areahitdamagepercent
com.areahitrange = 5
com.areahitdamagepercent = 0.5
范围5伤害递减一半结果所有武器都附带这个效果所以还是谢谢大神了 这个问题暂且放一放吧!
1344152253
发表于 2013-9-29 18:26
我突然有个问题 如果都改了的话 会崩溃吗 还是说全改了之后有的代码没反应
1344152253
发表于 2013-9-29 18:51
我要的传送法杖是不掉脑残 不是补脑子
杨昊鹏
发表于 2013-9-29 19:37
楼主以前说了“不掉脑残”修改很麻烦
你先凑合着用吧
杨昊鹏
发表于 2013-9-29 19:39
对了,为什么我在地洞里用不了传送法杖?
我建立传送核心也放了三个宝石,为什么装备法杖按右键只会从天上掉石头?
打死、烤肉酱
发表于 2013-9-29 20:20
可不可以让烧死的树精掉的生命树木不会成灰烬
渊小乖
发表于 2013-9-29 20:24
杨昊鹏 发表于 2013-9-29 19:39 static/image/common/back.gif
对了,为什么我在地洞里用不了传送法杖?
我建立传送核心也放了三个宝石,为什么装备法杖按右键只会从天上 ...
地洞里用就是会让地洞地震这是游戏设定
yzzn2009
发表于 2013-9-29 20:28
杨昊鹏 发表于 2013-9-29 19:39 static/image/common/back.gif
对了,为什么我在地洞里用不了传送法杖?
我建立传送核心也放了三个宝石,为什么装备法杖按右键只会从天上 ...
在地下也能使用紫色魔杖传送到传送核心
用记事本打开游戏目录\data\scripts\prefabs\staff.lua文件,将下列内容:
if ground.topology.level_type == "cave" then
TheCamera:Shake("FULL", 0.3, 0.02, .5, 40)
ground.components.quaker:MiniQuake(3, 5, 1.5, teleportee)
return
end
替换为:
--if ground.topology.level_type == "cave" then
--TheCamera:Shake("FULL", 0.3, 0.02, .5, 40)
--ground.components.quaker:MiniQuake(3, 5, 1.5, teleportee)
--return
--end
即可在地下也能使用紫色魔杖传送到传送核心,但只会传送到地下建的传送核心,而不会传送到地上
yzzn2009
发表于 2013-9-29 20:35
1344152253 发表于 2013-9-29 18:51 static/image/common/back.gif
我要的传送法杖是不掉脑残 不是补脑子
补脑不好吗
用紫色魔杖传送不降脑
用记事本打开游戏目录\data\scripts\prefabs\staff.lua文件,将caster.components.sanity:DoDelta(-TUNING.SANITY_HUGE)替换为caster.components.sanity:DoDelta(0)
即可用紫色魔杖传送不降脑
1344152253
发表于 2013-9-29 20:38
yzzn2009 发表于 2013-9-29 20:35 static/image/common/back.gif
补脑不好吗
用紫色魔杖传送不降脑
不是不好我改了加脑残的了我改了太多加脑残的代码了
yzzn2009
发表于 2013-9-29 21:08
打死、烤肉酱 发表于 2013-9-29 20:20 static/image/common/back.gif
可不可以让烧死的树精掉的生命树木不会成灰烬
树精燃烧时死掉活木头
1.用记事本打开游戏目录\data\scripts\prefabs\livinglog.lua文件,将下列内容:
MakeSmallBurnable(inst, TUNING.MED_BURNTIME)
MakeSmallPropagator(inst)
替换为:
--MakeSmallBurnable(inst, TUNING.MED_BURNTIME)
--MakeSmallPropagator(inst)
2.用记事本打开游戏目录\data\scripts\lootdropper.lua文件,将下列内容:
function LootDropper:DropLoot(pt)
local prefabs = self:GenerateLoot()
if not self.inst.components.fueled and self.inst.components.burnable and self.inst.components.burnable:IsBurning() then
for k,v in pairs(prefabs) do
local cookedAfter = v.."_cooked"
local cookedBefore = "cooked"..v
if PrefabExists(cookedAfter) then
prefabs = cookedAfter
elseif PrefabExists(cookedBefore) then
prefabs = cookedBefore
else
prefabs = "ash"
end
end
end
for k,v in pairs(prefabs) do
self:SpawnLootPrefab(v, pt)
end
end
替换为:
function LootDropper:DropLoot(pt)
local prefabs = self:GenerateLoot()
for k,v in pairs(prefabs) do
self:SpawnLootPrefab(v, pt)
end
end
1344152253
发表于 2013-9-29 22:19
这个 传送法杖不降脑残没用 还是降
yzzn2009
发表于 2013-9-29 22:58
本帖最后由 yzzn2009 于 2013-9-29 23:10 编辑
1344152253 发表于 2013-9-29 22:19 static/image/common/back.gif
这个 传送法杖不降脑残没用 还是降
正常用紫色魔杖传送一次降50点脑,修改后不会减,实测过了,没有问题。你指的没有用,是传送还会降脑吗
如果你指的是夜晚降脑、被打降脑,那是一定的,脑值是变量,只有补脑才能让脑值保持满值
fbi007sos
发表于 2013-9-29 23:26
求教大神 有没有办法 能让背包跟护符同时生效呀?
或者能不能修改成护符使用帽子栏位?
渊小乖
发表于 2013-9-30 03:28
半夜无聊来顶一下 灌个水