金庸群侠传系列游戏
—天书劫MOD扩展部分教程
一、如何突破生命最大值、内力最大值、经验最大值的限制。
(一)首先用upedit修改器导出原来游戏的Excel表格内容。
(二)修改jyconst.lua里面的人物定义
CC.PersonSize = 239 --(后面新增加了,这里的数字也要修改)
CC.Person_S = {}
CC.Person_S[“代号”] = { 0, 0, 2 }
CC.Person_S[“头像代号”] = { 2, 0, 2 }
CC.Person_S[“生命增长”] = { 4, 0, 2 }
CC.Person_S[“无用”] = { 6, 0, 2 }
CC.Person_S[“姓名”] = { 8, 2, 10 }
CC.Person_S[“外号”] = { 18, 2, 10 }
CC.Person_S[“性别”] = { 28, 0, 2 }
CC.Person_S[“等级”] = { 30, 0, 2 }
CC.Person_S[“经验”] = { 32, 3, 4 }
CC.Person_S[“生命”] = { 36, 3, 4 }
CC.Person_S[“生命最大值”] = { 40, 3, 4 }
CC.Person_S[“受伤程度”] = { 44, 0, 2 }
CC.Person_S[“中毒程度”] = { 46, 0, 2 }
CC.Person_S[“体力”] = { 48, 0, 2 }
CC.Person_S[“物品修炼点数”] = { 50, 0, 2 }
CC.Person_S[“武器”] = { 52, 0, 2 }
CC.Person_S[“防具”] = { 54, 0, 2 }
fori = 1, 5 do
CC.Person_S[“出招动画帧数” .. i] = { 56 + 2 * (i - 1), 0, 2 }
CC.Person_S[“出招动画延迟” .. i] = { 66 + 2 * (i - 1), 0, 2 }
CC.Person_S[“武功音效延迟” .. i] = { 76 + 2 * (i - 1), 0, 2 }
end
CC.Person_S[“内力性质”] = { 86, 0, 2 }
CC.Person_S[“内力”] = { 88, 3, 4 }
CC.Person_S[“内力最大值”] = { 92, 3, 4 }
CC.Person_S[“攻击力”] = { 96, 0, 2 }
CC.Person_S[“轻功”] = { 98, 0, 2 }
CC.Person_S[“防御力”] = { 100, 0, 2 }
CC.Person_S[“医疗能力”] = { 102, 0, 2 }
CC.Person_S[“用毒能力”] = { 104, 0, 2 }
CC.Person_S[“解毒能力”] = { 106, 0, 2 }
CC.Person_S[“抗毒能力”] = { 108, 0, 2 }
CC.Person_S[“拳掌功夫”] = { 110, 0, 2 }
CC.Person_S[“御剑能力”] = { 112, 0, 2 }
CC.Person_S[“耍刀技巧”] = { 114, 0, 2 }
CC.Person_S[“特殊兵器”] = { 116, 0, 2 }
CC.Person_S[“暗器技巧”] = { 118, 0, 2 }
CC.Person_S[“武学常识”] = { 120, 0, 2 }
CC.Person_S[“品德”] = { 122, 0, 2 }
CC.Person_S[“攻击带毒”] = { 124, 0, 2 }
CC.Person_S[“左右互搏”] = { 126, 0, 2 }
CC.Person_S[“声望”] = { 128, 0, 2 }
CC.Person_S[“资质”] = { 130, 0, 2 }
CC.Person_S[“修炼物品”] = { 132, 0, 2 }
CC.Person_S[“修炼点数”] = { 134, 0, 2 }
fori = 1, 10 do
CC.Person_S[“武功” .. i] = { 136 + 2 * (i - 1), 0, 2 }
CC.Person_S[“武功等级” .. i] = { 156 + 2 * (i - 1), 0, 2 }
end
fori = 1, 4 do
CC.Person_S[“携带物品” .. i] = { 176 + 2 * (i -1), 0, 2 }
CC.Person_S[“携带物品数量” .. i] = { 184 + 2 * (i - 1), 0, 2 }
end
CC.Person_S[“特殊”] = { 192, 0, 2 }
CC.Person_S["生命str"]={194,2,9}
CC.Person_S["生命最大值str"]={203,2,9}
CC.Person_S["内力str"]={212,2,9}
CC.Person_S["内力最大值str"]={221,2,9}
CC.Person_S[“经验str”]={230,2,9}
红色的是修改的,绿色的是新增加的,其原理就是在lua层面定义字符串数字映射到原来的生命、内力、经验等地方,从而欺骗底层二进制的读取机制。
(三)修改up.ini中的定义。
TypeName1 =人物
TypedataItem1 = 89
data(1,0) = 1 1 2 0 0 -1 代号人物代号,仅作为标志,游戏不使用,偏移0
data(1,1) = 1 1 2 0 0 -1 头像/战斗代号人物头像代号(hdgrp)和战斗动作编号Fight***,偏移2
data(1,2) = 1 1 2 0 0 -1 生命增长升级时生命增长幅度,每升一级生命最大值增长:3*生命增长+(0-6)随机,偏移4
data(1,3) = 1 1 2 0 0 -1 无用无用,偏移6
data(1,4) = 1 1 10 1 1 -1 姓名姓名,最多4个汉字,偏移8
data(1,5)= 1 1 10 1 0 -1 外号外号,最多5个汉字,程序中似乎不用,偏移18
data(1,6) = 1 1 2 0 0 -1 性别性别,0男1女2太监,偏移28
data(1,7) = 1 1 2 0 0 -1 等级等级,最多30级,偏移30
data(1,8) = 1 1 4 0 0 -1 经验值 经验值,最高60000,偏移32
data(1,9) = 1 1 4 0 0 -1 生命 生命值,最高999,偏移34
data(1,10) = 1 1 4 0 0 -1 生命最大值 生命最大值,最高999,偏移36
data(1,11) = 1 1 2 0 0 -1 受伤程度受伤程度,最高100。过重影响医疗,不能住宿恢复生命等。医疗/吃药可减少,偏移38
data(1,12) = 1 1 2 0 0 -1 中毒程度中毒程度,中毒后战斗每回合减少生命,中毒越深减少越多。,偏移40
data(1,13) = 1 1 2 0 0 -1 体力体力,最大100,偏移42
data(1,14) = 1 1 2 0 0 -1 物品修炼点数物品修炼点数,修炼能练出物品的秘笈时使用,偏移44
data(1,15) = 1 1 2 0 0 2 武器武器物品代号,偏移46
data(1,83) = 1 1 2 0 0 2 特殊特殊物品代号,偏移182
data(1,16) = 1 1 2 0 0 2 防具防具物品代号,偏移48
data(1,17) = 1 1 2 0 0 -1 出招动画帧数 fight***中每方向动画帧数,1医疗/用毒/解毒,起始偏移50
data(1,18) = 1 1 2 0 0 -1 出招动画帧数 fight***中每方向动画帧数,2拳,起始偏移52
data(1,19) = 1 1 2 0 0 -1 出招动画帧数 fight***中每方向动画帧数,3剑,起始偏移54
data(1,20) = 1 1 2 0 0 -1 出招动画帧数 fight***中每方向动画帧数,4刀,起始偏移56
data(1,21) = 1 1 2 0 0 -1 出招动画帧数 fight***中每方向动画帧数,5特殊,起始偏移58
data(1,22) = 1 1 2 0 0 -1 出招动画延迟 1医疗/用毒/解毒出招动画延迟帧数,出招动画开始到此延迟帧数后才显示武功效果,起始偏移60
data(1,23) = 1 1 2 0 0 -1 出招动画延迟 2拳出招动画延迟帧数,出招动画开始到此延迟帧数后才显示武功效果,起始偏移62
data(1,24) = 1 1 2 0 0 -1 出招动画延迟 3剑出招动画延迟帧数,出招动画开始到此延迟帧数后才显示武功效果,起始偏移64
data(1,25) = 1 1 2 0 0 -1 出招动画延迟 4刀出招动画延迟帧数,出招动画开始到此延迟帧数后才显示武功效果,起始偏移66
data(1,26) = 1 1 2 0 0 -1 出招动画延迟 5特殊出招动画延迟帧数,出招动画开始到此延迟帧数后才显示武功效果,起始偏移68
data(1,27) = 1 1 2 0 0 -1 武功音效延迟相应的武功音效延迟帧数,出招动画开始到此延迟帧数后才播放武功音效,起始偏移70
data(1,28) = 1 1 2 0 0 -1 武功音效延迟相应的武功音效延迟帧数,出招动画开始到此延迟帧数后才播放武功音效,起始偏移72
data(1,29) = 1 1 2 0 0 -1 武功音效延迟相应的武功音效延迟帧数,出招动画开始到此延迟帧数后才播放武功音效,起始偏移74
data(1,30) = 1 1 2 0 0 -1 武功音效延迟相应的武功音效延迟帧数,出招动画开始到此延迟帧数后才播放武功音效,起始偏移76
data(1,31) = 1 1 2 0 0 -1 武功音效延迟相应的武功音效延迟帧数,出招动画开始到此延迟帧数后才播放武功音效,起始偏移78
data(1,32) = 1 1 2 0 0 -1 内力性质内力性质,0阴性、1阳性、2阴阳调和,偏移80
data(1,33) = 1 1 4 0 0 -1 内力 内力,最大999,偏移82
data(1,34) = 1 1 4 0 0 -1 内力最大值 内力最大值,最大999,偏移84
data(1,35) = 1 1 2 0 0 -1 攻击力攻击力,最大100,偏移86
data(1,36) = 1 1 2 0 0 -1 轻功轻功,最大100,偏移88
data(1,37) = 1 1 2 0 0 -1 防御力防御力,最大100,偏移90
data(1,38) = 1 1 2 0 0 -1 医疗医疗,最大100,偏移92
data(1,39) = 1 1 2 0 0 -1 用毒用毒,最大100,偏移94
data(1,40) = 1 1 2 0 0 -1 解毒解毒,最大100,偏移96
data(1,41) = 1 1 2 0 0 -1 抗毒抗毒,最大100,偏移98
data(1,42) = 1 1 2 0 0 -1 拳掌拳掌,最大100,偏移100
data(1,43) = 1 1 2 0 0 -1 御剑御剑,最大100,偏移102
data(1,44) = 1 1 2 0 0 -1 耍刀耍刀,最大100,偏移104
data(1,45) = 1 1 2 0 0 -1 特殊兵器特殊兵器,最大100,偏移106
data(1,46) = 1 1 2 0 0 -1 暗器技巧暗器技巧,最大100,偏移108
data(1,47) = 1 1 2 0 0 -1 武学常识武学常识,最大100,偏移110
data(1,48) = 1 1 2 0 0 -1 品德品德,最大100,偏移112
data(1,49) = 1 1 2 0 0 -1 攻击带毒攻击带毒,最大100,偏移114
data(1,50) = 1 1 2 0 0 -1 左右互搏左右互搏,0战斗攻击一次,1战斗攻击两次,偏移116
data(1,51) = 1 1 2 0 0 -1 声望个人声望,偏移118
data(1,52) = 1 1 2 0 0 -1 资质资质,资质越高修炼所需经验越少,偏移120
data(1,53) = 1 1 2 0 0 2 修练物品当前修练物品代号,偏移122
data(1,54) = 1 1 2 0 0 -1 修炼点数修炼点数,当前修炼点数,偏移124
data(1,55) = 1 1 2 0 0 4 所会武功1 所会武功1代号,0表示没有武功,起始偏移126
data(1,56) = 1 1 2 0 0 4 所会武功2 所会武功2代号,0表示没有武功,起始偏移128
data(1,57) = 1 1 2 0 0 4 所会武功3 所会武功3代号,0表示没有武功,起始偏移130
data(1,58) = 1 1 2 0 0 4 所会武功4 所会武功4代号,0表示没有武功,起始偏移132
data(1,59) = 1 1 2 0 0 4 所会武功5 所会武功5代号,0表示没有武功,起始偏移134
data(1,60) = 1 1 2 0 0 4 所会武功6 所会武功6代号,0表示没有武功,起始偏移136
data(1,61) = 1 1 2 0 0 4 所会武功7 所会武功7代号,0表示没有武功,起始偏移138
data(1,62) = 1 1 2 0 0 4 所会武功8 所会武功8代号,0表示没有武功,起始偏移140
data(1,63) = 1 1 2 0 0 4 所会武功9 所会武功9代号,0表示没有武功,起始偏移142
data(1,64) = 1 1 2 0 0 4 所会武功10 所会武10功代号,0表示没有武功,起始偏移144
data(1,65) = 1 1 2 0 0 -1 所会武功1等级所会武功1等级,100分一级,900点十级,起始偏移146
data(1,66) = 1 1 2 0 0 -1 所会武功2等级所会武功2等级,100分一级,900点十级,起始偏移148
data(1,67) = 1 1 2 0 0 -1 所会武功3等级所会武功3等级,100分一级,900点十级,起始偏移150
data(1,68) = 1 1 2 0 0 -1 所会武功4等级所会武功4等级,100分一级,900点十级,起始偏移152
data(1,69) = 1 1 2 0 0 -1 所会武功5等级所会武功5等级,100分一级,900点十级,起始偏移154
data(1,70) = 1 1 2 0 0 -1 所会武功6等级所会武功6等级,100分一级,900点十级,起始偏移156
data(1,71) = 1 1 2 0 0 -1 所会武功7等级所会武功7等级,100分一级,900点十级,起始偏移158
data(1,72) = 1 1 2 0 0 -1 所会武功8等级所会武功8等级,100分一级,900点十级,起始偏移160
data(1,73) = 1 1 2 0 0 -1 所会武功9等级所会武功9等级,100分一级,900点十级,起始偏移162
data(1,74) = 1 1 2 0 0 -1 所会武功10等级所会武功10等级,100分一级,900点十级,起始偏移164
data(1,75) = 1 1 2 0 0 2 携带物品1 携带物品1代号,起始偏移166
data(1,76) = 1 1 2 0 0 2 携带物品2 携带物品2代号,起始偏移168
data(1,77) = 1 1 2 0 0 2 携带物品3 携带物品3代号,起始偏移170
data(1,78) = 1 1 2 0 0 2 携带物品4 携带物品4代号,起始偏移172
data(1,79) = 1 1 2 0 0 -1 携带物品1数量携带物品1数量,起始偏移174
data(1,80) = 1 1 2 0 0 -1 携带物品2数量携带物品2数量,起始偏移176
data(1,81) = 1 1 2 0 0 -1 携带物品3数量携带物品3数量,起始偏移178
data(1,82) = 1 1 2 0 0 -1 携带物品4数量携带物品4数量,起始偏移180
data(1,84) = 1 1 91 1 -1 生命 生命值,最高999999,偏移10
data(1,85) = 1 1 9 1 1 -1 生命最大值 生命最大值,最高999999,偏移10
data(1,86) = 1 1 9 1 1 -1 内力 内力值,最高999999,偏移10
data(1,87) = 1 1 9 1 1 -1 内力最大值 内力最大值,最高999999,偏移10
data(1,88) = 1 1 9 1 1 -1 经验 ,最高999999,偏移10
这里也一样,红色的是修改的,绿色的是新增的,注意这里面的偏移数值不能改,改了会出错,应该是底层二进制的原因,修改不了。
(四)现在就可以将之前导出的Excel表格数据再导入进去(用快速导出和导入,要不然会很慢,记得点击保存。)
(五)修改jymain.lua主游戏文件中的代码,这里要修改很多,光修改生命和内存,改的少,修改经验就麻烦。
首先找到function LoadRecord(id)这个函数,然后在他前面新增增加两段代码,我用红色标出来。