《半神(Demigod)》的物品修改与技能修改DIY初级教程

             

作者:suwei0206 来源:3dmgame

前提: 把游戏根目录下的dgdata.zip里面的所有文件解压至根目录\\bindata目录下覆盖,然后把dgdata.zip重命名为dgdata1.zip即可

注意: 不要删除掉了dgdata.zip,局域网或互联网联机需要保证数据的原始同步,即无修改,所以dgdata.zip是联机检测的关键文件,自己修改游戏的时候按以上方法,解压完毕后,重命名dgdata.zip为dgdata1.zip, 如果要连网对战了, 就把dgdata1.zip的名字改回来即可, 其它的不用动,操作很方便

================关于物品的数据================

所在目录
游戏根目录\\bindata\\lua\\common\\Items\\下

文件名单
Achievement_Items.lua #成就项目
Artifact_Items.lua #工艺物品
Boot_Items.lua #鞋子装备
Chest_Items.lua #装甲
Consumable_Items.lua #消耗品 药水等
Generals_Items.lua  #Idol类
Glove_Items.lua #手套类
Helm_Items.lua #头盔类
Ring_Items.lua #戒指类

修改举例
以Boot_Items.lua为例
用记事本打开它,
每一个物品前面都有三行注释,很好辩认,
格式如下
########################################################################
# 物品名称
########################################################################
这一个文件当中,总共写入了7件鞋类物品
以第一件为例
代码与相应的注释为下

#############################################################################################

####################
# Footman's Sabatons
#############################################################################################

####################
@以上是物品注释,不用管

ItemBlueprint { '物品属性
    Name = 'Item_Boot_010', '唯一代号,不能改
    DisplayName = 'Footman\\'s Sabatons',
@显示物品的名字,其中的<>内的标签与文件strings_db(即汉化补丁的核心字符文件)里面的标签一一对应;而在这个标签后字符的作用是当前面标签加载不正确时,就显示后面的默认英文,也就是为什么一些朋友把语言包全删了,还是会显示英文的缘故,注,lua文件里面的字符在游戏中不支持双字节加载,所以别在LUA文件里面写汉字
    GetHealthBonus = function(self) return Buffs['Item_Boot_010'].Affects.MaxHealth.Add end,
    GetManaBonus = function(self) return Buffs['Item_Boot_010'].Affects.MaxEnergy.Add end,
@以上两行为新建两个变量,分别获取该物品的两项属性(加血和加蓝)的值,以便在物品说明中调用
    Tooltip = {
        Bonuses = {
            '+[GetHealthBonus] Health',
            '+[GetManaBonus] Mana',
        },
    },
@以上是物品标签,即在是游戏中鼠标移上面时显示的字符,其中<>标签是对应汉化文本里面的字符,而[]标签内就是上面设定的两个变量,在游戏中就会显示"+ XX 生命, +XX 魔法"
    Mesh = '/meshes/items/chest/chest_mesh',
@模型结构的调用路径,不管
    Animation = '/meshes/items/chest/Animations/chest_Idle_anim.gr2',
@描绘的GR文件调用路径,还是不管
    MeshScale = 0.10,
@物品在游戏中的尺寸
    Icon = 'NewIcons/Boots/Boot1',
@在商店中显示的物品图标
    Abilities = { @物品属性的母标签,好了,下面是修改的主要范围
        AbilityBlueprint { @物品属性的二级标签,可以有多重性,暂时不理
            Name = 'Item_Boot_010',@物品的唯一代号,同第一行一样
            AbilityType = 'Quiet',@物品的类别
            FromItem = 'Item_Boot_010',@物品唯一代号,同上,不能改
            Icon = 'NewIcons/Boots/Boot1',@显示的图标
            Buffs = { @好了,这里是buffs的变量内容了,也就是物品的主要属性,在下面可以随意更改
                BuffBlueprint {
                    Name = 'Item_Boot_010',
                    BuffType = 'BOOTEVADE',@效果类型,不管
                    Debuff = false,
                    EntityCategory = 'ALLUNITS',
                    Stacks = 'ALWAYS',
                    Duration = -1,@效果持继时间,由于是物品属性,所以设为-1,代表效果无限
                    Affects = { @以下就是更改的核心内容,属性值
                        MaxHealth = {Add = 50},@增加最大生命值50
                        MaxEnergy = {Add = 60},@增加最大魔法值60
                    },
                }
            },
        }
    },
}

对于只改装备效果属性的,看上面的最后两行就行了,两个值随意更改,如把第一个属性改成
MaxHealth = {Add = 5000}
那么游戏中买到该鞋就会给你增加5000生命
同样的,包括其它的物品LUA文件,更改手法一样.
可以自定义特效,需要建立子函数,比较麻烦,暂时不讲

[$HR getPages$]               

关于物品的属性的基本格式,就是 属性代码 = {ADD或者Mult(分别代表增加值或增加率,一个是整数,一个是小数) = 属性值}

类似的其它属性还有

[复制到剪贴板]CODE:
MoveMult = {Mult = 0.10},代表移动速度+10%
RateOfFire = {Mult = 0.05},攻击速度+5%
Evasion = {Add = 1},闪避+1
Regen = {Add = 1},生命值每秒回复+1
EnergyRegen = {add = 1},法力每秒回复+1
Armon = {Add = 1},护甲+1
DamageReturn = {Add = 1},遭受攻击后对敌人伤害返回1点
VisionRadius = {Add = 1},半神的视觉半径
DamageRating = { Mult = -0.1 },伤害机率-10%

其它物品文件修改大同小异,只要读懂脚本,这个开源游戏就是一个免费的个人游戏"引擎"

================关于技能的数据================

所在路径
游戏根目录\\bindata\\units\\heroes\\下,
里面有每个英雄都有对应的文件夹,比如修改oak的技能,则进入里面的HOak文件夹
里面的HOak_Abilities.lua即英雄的技能文件
用记事本开打,这里就不再详述每行的函意,只写出更改的主要部份
同物品一样,每个技能上方都有三行用#包围起来的注释行,很好辩认

比如第一个技能
# Shield I

找到下面的核心数据段
    EnergyCost = 400,@魔法消耗
    RangeMax = 20,@最大影响范围
    Cooldown = 35,@技能冷却时间
    CastingTime = 0.1,@施法时间
    FollowThroughTime = 0.7,@过程时间
    CastAction = 'Shield',@施法姿态,不用管
    UISlot = 1,@技能槽位,位于第1个槽位,范围是1到4,建议别改
    HotKey = '1',@热键,在游戏中学到后按1施放
如果是主动攻击技能的话,下面还会有两行
    DamageAmt = XXX, @技能攻击力
    DamageType = 'Spell', @技能类型,这里统一都为spell,魔法

以上随意更改即可,自定义技能比较麻烦,