qqskynet 发表于 2010-9-3 11:15

《战神的挑战2》lua脚本修改心得(不定期更新)

Lua是一种嵌入式的脚本,可以编写一些逻辑供其他主程序调用
一、首先说一个最令我高兴的发现,搜刮宝箱小游戏
Puzzle Quest 2AssetsScriptsPuzzlesPuzzleConfiguration.lua,这个脚本是小游戏全局设置PuzzleConfiguration.HOARD =
{
      GEM_DISTRIBUTION = {
                Gold5 = 60,
                Gold50 = 48,
                Gold500 = 36,
                Chest1 = 3,
                Chest5 = 1,
      },注意这个GEM_DISTRIBUTION,程序员的命名习惯相当好啊,百度一下就知道,这个是指小游戏中随机出现的宝石种类和几率,
Gold5从命名上就知道是价值为5的金币,Chest1是普通宝箱,Chest5是稀有宝箱,也就是说,开宝箱的小游戏中,5元的金币最多,其次是50、500的金币,随机出现的箱子是最少的。由于不知道程序的具体设计,所以,最好是互换这几组数字,而不是随心所欲的改动,以防游戏出错
Gold5=1,
Gold50=3,
Gold500=36,
Chest1=48,
Chest5=60,
改完后保存,重新启动游戏,再次开宝箱时,你会发现,哇塞,满屏幕的金箱子啊~~~

二、法师的WildMana技能
在指定的位置处创建一个+3的通配符,有这个技能,无限连、收集魔法,就容易多了,仅仅+3你会不会嫌少呢,要是+7该多好啊
Puzzle Quest 2AssetsScriptsSpellsWildMana.luaWildMana.cost = {
      green = 1,
      blue = 1,这一段大家都知道了,耗蓝量修改,不多说了local TRANSFORM_MAP = {
      Wildcard2 = "Wildcard4",
      Wildcard3 = "Wildcard5",
      Wildcard4 = "Wildcard6",
      Wildcard5 = "Wildcard7",
      Wildcard6 = "Wildcard7",
      Wildcard7 = "Wildcard7",
}
……
function WildMana:Apply(params)
      local gemtype = params.grid.name
      
      params.notify:PushAttribute("gemx", params.targetX)
      params.notify:PushAttribute("gemy", params.targetY)

      return function ()
                Spell:Pause(Spell.SPELL_INTRO_PAUSE)
                Spell:TransformGem(params, params.targetX, params.targetY, TRANSFORM_MAP or "Wildcard3")
                Spell:Pause(Spell.SPELL_MIN_DURATION)
                Spell:Pause(Spell.SPELL_OUTRO_PAUSE)
      end
end

关键是这一段,什么意思呢,就是在一个通配符上释放该魔法时,如果是+2通配符,就会变成+4,+3变+5,以此类推,那么,只要把以上“”中的都改成Wildcard7就行了
如:Wildcard2="Wildcard7"
别急,还没完,还有更重要的一步要改,刚才只改了在通配符上放魔法都会变+7,还要改在普通宝石上放魔法也变+7
留意代码中的WildMana函数Spell:TransformGem(params, params.targetX, params.targetY, TRANSFORM_MAP or "Wildcard3")这句是说,释放该魔法时,利用刚刚改的那个数组改变宝石(也就是通配符+2,最高+7),或者,对于普通宝石,改成+3通配符,把"Wildcard3"改成"Wildcard7",这样你用Wildmana(通配魔法)时,就会变一个+7的通配符出来了
注意,最高只能+7,如果你改成"Wildcard9",那么用该魔法时就会创建一个看不见消不掉的BUG石头出来了

什么,你说这魔法只能法师用,其他职业只能干瞪眼,没关系,小改一下,让每个职业都能高速收集魔法吧
Puzzle Quest 2AssetsScriptsHero 目录下有 Assassin.lua(刺客)、Barbarian.lua(野蛮人)、Inquisitor.lua(骑士)、WarMage.lua(巫师)四个文件定义四个职业的初始属性和能学到的技能level_bonuses =
      {
                { }, -- Level 1
                { spell      = "SwiftStrike"},                -- Level 2
                { spell      = "Confuse"},                        -- Level 3
                { spell      = "Stealth"},                        -- Level 4
                { spell      = "StoneStrike" },                -- Level 5
                { spell      = "SeekShadows"},
                { spell      = "Disarm"},
                { spell      = "PressurePoints"},
…………
{ upgrade         = true},
                { spell      = "DualShot" },                -- Level 40
                { },
                { },
                { },
                { upgrade         = true},
                { },                                                                -- Level 45
                { },
                { },看有很多个{}里是空的把,照着脚本的格式在空的{}里加上想要的技能就可以了,PS:-- Level 45 这是脚本注释,程序会忽略以 -- 开头直到行末的内容
如{ spell = "WildMana" },这样在角色达到{}所代表的等级时学到WildMana技能了 PS: 第一个{}代表第1级,以此类推 -- Level ×× 的注释正是说明了该技能多少级可以学到

三、野蛮人的Skull Crusher技能
利用盘中的骷髅让对方无法行动,爽吧,但没5个骷髅才停一次,郁闷吧
Puzzle Quest 2AssetsScriptsSpellsSkullCrusher.luafunction SkullCrusher:Apply(params)
      
      local numSkulls = params.grid:CountByName("Skull") + params.grid:CountByName("Skull5")
      local numTurns = 1 + math.floor(numSkulls/5)
      
      return function ()
                -- Destroy Skulls
                Spell:Pause(Spell.SPELL_INTRO_PAUSE)
                Spell:ExplodeGemByName(params, "Skull", false, Spell.SPELL_TRANSFORM_PAUSE)
                Spell:ExplodeGemByName(params, "Skull5", false, Spell.SPELL_TRANSFORM_PAUSE)
                -- Stun Enemy
                Spell:ApplyStatusEffectTo(params.target, params, self, "Stun", 2*numTurns)
                Spell:Pause(Spell.SPELL_MIN_DURATION)
                Spell:Pause(Spell.SPELL_OUTRO_PAUSE)
      end
end看看这个函数,local numSkulls = params.grid:CountByName("Skull") + params.grid:CountByName("Skull5")
这个变量获取盘中骷髅的数目,Skull是普通骷髅,Skull5是+5骷髅,一视同仁,其实你可以改成
local numSkulls = params.grid:CountByName("Skull") + params.grid:CountByName("Skull5")*5,
这样+5的骷髅会算5个而不是一个
local numTurns = 1 + math.floor(numSkulls/5)
这个变量获取敌方停止的次数,关键位置啊,表示至少停一回合,外加骷髅数/5(忽略小数)个回合,啊,直接把/5删掉吧,一个骷髅停他一回合(觉得BT了可以改成
local numTurns = 1 + math.floor(numSkulls/3)什么的)

乐♂神 发表于 2010-9-3 11:38

武器之类的也可以改的 而且更直观更好改~~

qqskynet 发表于 2010-9-3 12:38

回复 2# 乐♂神 的帖子

其实改武器有个担忧,万一敌方拿的正好是你改过的武器……你就可能被秒了
而职业魔法,貌似没有怪物会

qqskynet 发表于 2010-9-3 12:40

呃,那个开宝箱的改后容易卡死……,估计是宝箱爆太多了,算了,还是改回去,反正
初始魔法+5的项链我正好打到了……

qqskynet 发表于 2010-9-3 14:23

经过一点尝试,开宝箱小游戏的爆率可以使用如下数字
GEM_DISTRIBUTION = {
                Gold5 = 1,
                Gold50 = 48,
                Gold500 = 60,
                Chest1 = 3,
                Chest5 = 36,
        },
特点,不会出现卡死的情况(至少我玩了4小时,开了10多个箱子,没出现卡死),金箱子照样多 ,钱也相当多,一个宝箱能开出10000以上的金币,唯一不足就是,由于金箱子太多了,木箱子会被你忽视掉,得到的材料会减少……

crmking 发表于 2010-9-3 16:07


钱不缺
就缺材料

chenjq 发表于 2010-9-3 16:32

为什么的我脚本修改了没用。。。。

ccqsk 发表于 2010-9-3 16:55

补充
1.AssetsScriptsItemsItemConfiguration各种装备和词缀的等级要求
2.AssetsScriptsHeroStatsConstants
level_bonus_interval职业的属性点加成(默认每5级加成1点)
blocking_effectiveness_base格挡成功后伤害减免(默认50%)
mana_earn_multiplier每消除宝石后获得的额外加成(默认1)

qqskynet 发表于 2010-9-3 17:25

回复 6# crmking 的帖子

那你就这样改嘛,如下
GEM_DISTRIBUTION = {
      Gold5 = 1,
      Gold50 = 3,
      Gold500 = 60,
      Chest1 = 48,
      Chest5 = 36,
    },
这样就满屏的木箱子(材料)了,不过,装备箱子就少多了,钱还是最多了,
因为如果箱子最多的话可能会卡死

qqskynet 发表于 2010-9-3 17:32

回复 8# ccqsk 的帖子

求教:2代里人物属性对 宝石获得的加成最高为+10,也就是消3宝石最多得到13点,如何修改这个值?
求教:那个 全初始魔法+5的项链,能不能改成 +10、+20?

草鞋王 发表于 2010-9-3 18:02

Puzzle Quest 2AssetsScriptsHeroStatsConstants.lua      -- Class Specific:
                assassin = {
                        -- POINT bonus
                        start = {
                              agility = 400,
                              intelligence = 200,
                              morale = 300,
                              stamina = 100,
                              strength = 100,
                        },這個是刺客的初始屬性,下面的職業自己設定                        per_level_interval = {
                              agility = 1,
                              intelligence = 0,
                              morale = 1,
                              stamina = 0,
                              strength = 0,
                        }這個是每次系統加成屬性所獲得的點數
配合樓上寫的HeroStatsConstants.level_bonus_interval = 5每5級加成一次,可以獲得大量點數
但是不能高於9999,因為HeroStatsConstants.ranks = {
      { name = "Low",               max_points = 2 },                -- 0 (lua counts from 1, so iterating over this table with ipair yields 1-11, adjust accordingly)
      { name = "Average",         max_points = 5 },                -- 1
      { name = "Good",               max_points = 9 },                -- 2
      { name = "VeryGood",         max_points = 14 },                -- 3
      { name = "Excellent",         max_points = 20 },                -- 4
      { name = "Superior",         max_points = 27 },                -- 5
      { name = "Heroic",               max_points = 35 },                -- 6
      { name = "Legendary",         max_points = 44 },                -- 7
      { name = "Epic",               max_points = 54 },                -- 8
      { name = "Paragon",         max_points = 65 },                -- 9
      { name = "Godlike",         max_points = 9999 },      -- 10最高只能識別9999,過了就沒屬性加成了HeroStatsConstants.mana_start_multiplier = 0.5初始魔法HeroStatsConstants.mana_max_multiplier = 5最大魔法HeroStatsConstants.mana_earn_multiplier = 1消除所獲得的魔法加成

草鞋王 发表于 2010-9-3 18:24


钱不缺
就缺材料
crmking 发表于 2010/9/3 16:07:00http://bbs.blacksheepgame.com/images/common/back.gif

材料不夠的看下http://bbs.blacksheepgame.com/showtopic-1433911.htmlhttp://bbs.blacksheepgame.com/showtopic-1434846.html2位大神的帖子,修改爆率,然後固定回合,
我爆率改成50,目前一場材料能有每種材料200+

ps234 发表于 2010-9-3 19:18

修改美啊~ 期待 继续更新·····

cytd 发表于 2010-9-3 23:18

真期待啊

swk09 发表于 2010-9-5 20:27

很实用的帖子啊!

一定要强烈支持!

期待楼主继续更新!

woesunday 发表于 2010-9-5 22:20

请问有没装备方面的修改?

jackleey 发表于 2010-9-9 02:29

Puzzle 改了怎么没效果啊。。。。。。。。。。

woshiwk 发表于 2010-9-28 19:21

很不错啊,支持更新

六翼天使Ⅱ 发表于 2010-9-30 12:11

PuzzleConfiguration.HOARD =
{
      GEM_DISTRIBUTION = {
                Gold5 = 60,
                Gold50 = 48,
                Gold500 = 36,
                Chest1 = 3,
                Chest5 = 1,
      },

这个数字是就是出现的机率吧,算法应该就是 单物品机率值/(各物品机率值之和)

silasa 发表于 2010-10-21 07:40

PuzzleConfiguration.HOARD =
{
      GEM_DISTRIBUTION = {
                Gold5 = 60,
                Gold50 = 48,
                Gold500 = 36,
                Chest1 = 3,
                Chest5 = 1,
      },这个数字是就是出现的机率吧,算法应该就是 单物品机率值/(各物品机率值之和)六翼天使Ⅱ 发表于 2010/9/30 12:11:00http://bbs.blacksheepgame.com/images/common/back.gif

呃,我给改了一下,
PuzzleConfiguration.HOARD =
{
      GEM_DISTRIBUTION = {
                Gold5 = 0,
                Gold50 = 0,
                Gold500 = 144,
                Chest1 = 3,
                Chest5 = 1,
      },
结果就是下面这个截图……每个回合几乎都要2、3分钟才能结束

well166 发表于 2010-10-21 11:44

这个太强悍了。。

sxdragon 发表于 2010-10-29 20:59

刚试了下,很实用的。

lwj23 发表于 2010-11-27 14:52

相当邪恶。。顶!

wndsc 发表于 2011-8-7 09:38

能修改侠客的位置吗? 因为我卡死在戈尔根的洞穴里了,。。。。。。。。。。

龍小俠 发表于 2016-11-7 21:40

你们用的都是非ZIP版本啊,我的是直接一个Assets压缩包,解压这个压缩包修改完再压缩就黑屏!!!!!!!!!!!

wcl3060768 发表于 2017-3-26 21:39

用记事本修改后无效 还是老样子 文件也覆盖了 各种办法都用了 就是没用
页: [1]
查看完整版本: 《战神的挑战2》lua脚本修改心得(不定期更新)