2010-08-09 10:28

新浪游戏 > 单机游戏 > 游戏攻略 已有_COUNT_条评论

解包《古剑奇谭》脚本文件,发现一些跟成就有关的东西(2)

  ============================================================================

  无伤成就

  本人最在意的还是这个无伤成就。因为貌似失败后,靠读档是行不通的。因此,我自己做了一个大胆的假设(不知道是否正确):假设被伤到后(铁柱观的铁球、雷云之海的雷、祖洲的火球等等),有一个记录无伤的值,就会被写到userdata.SAV里,因为成就都记录在这个文件里。所以,不管你怎么读档,userdata.SAV里都已经记录了你已经被伤到了。

  铁柱观的成就,本人没拿到,后来再怎么读档,也都无法拿到。后来吸取了教训,在打雷云之海、祖洲的时候,我都会把SaveData整个文件夹备份一次,万一被砸到,就马上退出,然后重新替换回原来的SaveData。因此这里两个无伤成就我是都拿到了。唯一遗憾的是铁柱观的成就,当时没有备份SaveData,现在猜想,userdata.SAV里已经记录了我被伤过,所以拿不到了。。- -!

  这里有一段脚本代码,可以再给大家看一下,也稍作解释:(其实LUA脚本我是一点不懂的,我也不是搞程序的,就是大学里学过VB,- -!)

  代码:

  function HitBall()

  --        addMoney(121)

  task()

  .taskSetNpcOverlayAnimation("player","Z04")

  .losePercentHP(0.2)

  .SetMOHitStatus(1,true)

  end 

  这个应该是铁柱观的无伤成就,可以看到HitBall字样,就是说被球砸。后面还有雷云之海的是HitThunder,被雷砸;祖洲的HitFire,被火砸……呵呵,代码的可读性还是比较好的~

  当被球砸到时,losePercentHP(0.2)猜测就是丢失HP的百分比,0.2那就是说五分之一?不知道是不是,没去验证。SetMOHitStatus(1,true)这个是关键,设置我前面讲的某一个记录无伤的值为True,True就是被砸,False就是无伤。这里的1表示的是第一个无伤点,就是铁柱观;2是雷云之海、3是祖洲……

  下面这一段就是判断成就是否达成,GetMOHitStatus(1)就是读取第一个无伤成就的值,如果为false,则执行addEffort(312,1),这个就是把第312成就设置为1,也就是完成!没完成的是设置为0。

  代码:

  if GetMOHitStatus(1)==false then

  addEffort(312,1)

  end

  我目前刚玩到第四章,无伤成就就是铁柱观的没拿到。说了这么一大堆,这个铁柱观的成就怎么办呢?难道代表我永远也完成不了了?下面这段代码给了我一点希望。(还会看到跟二周目有关的东西)

  代码:

  function OnNewGame()

  if getRoundFlag() == 0 then

  task()

  .gValueQuestInit()   --任务,晴雪、Boss全局变量初始化

  .InitTourCamera()                --场景浏览镜头使用与否标识初始化

  .InitBigMap()                        --大地图开启状态标识初始化

  .InitQTE()                                --初始化QTE

  .InitGuide()                        --新手教学初始化

  .InitMOHitStatus()                --无伤成就初始化

  .taskDoPostScreen( 1 , 1.0 , 0)        --黑屏

  .stopMusic(1.5, false)

  --.taskPlayBink("AurogonLogo.bik",true)

  --.taskPlayBink("GBLOGO.bik",true)

  .taskPlayBink("DOH001.bik",true)

  .joinTeam(107,false)

  .addSkill(107,1161)

  .addSkill(107,1162)

  .addSkill(107,2101)

  .addObject(21001,1,0) --树枝

  .equip(107, 21001) --树枝

  .addObject(3001,1,0) --草扎

  .setRoleLevel(107 , 1)

  .fenjiShow(true)

  .TusuShaqi(0)

  .enableReview(0)

  .SetMainStory( 10100 )

  .changeScene("M01","M01P1","null","")

  .startZalu()  --成就项开启

  else

  task()

  .startZalu2()                --二周目成就开启

  .gValueQuestInit()   --任务,晴雪、Boss全局变量初始化

  .InitTourCamera()                --场景浏览镜头使用与否标识初始化

  .InitBigMap()                        --大地图开启状态标识初始化

  .InitQTE()                                --初始化QTE

  .InitGuide()                        --新手教学初始化

  .InitMOHitStatus()                --无伤成就初始化

  .taskDoPostScreen( 1 , 1.0 , 0)        --黑屏

  .stopMusic(1.5, false)

  .taskPlayBink("DOH001.bik",true)

  .joinTeam(107,false)

  .addSkill(107,1161)

  .addSkill(107,1162)

  .addSkill(107,2101)

  .addObject(21001,1,0) --树枝

  .equip(107, 21001) --树枝

  .addObject(3001,1,0) --草扎

  .setRoleLevel(107 , 1)

  .fenjiShow(true)

  .TusuShaqi(0)

  .enableReview(0)

  .SetMainStory( 10100 )

  .changeScene("M01","M01P1","null","")

  --多周目的赠品

  .msgBoxInTable(1000)

  .msgBoxInTable(1001)

  .msgBoxInTable(1002)

  .wait(8)

  .addObject(1221,20,0) --归星砂(二周目鼓励玩家研究不同玩法,特别多给一些)

  .addObject(1222,20,0) --玉女元参

  .addObject(1223,20,0) --归元仙露

  .addObject(1224,20,0) --流霞仙酿

  .addObject(2089,20,0) --金铸钱

  .addObject(2124,10,0) --冰心

  .addObject(22416,1,0) --凤凰金翎

  .addObject(22315,1,0) --琥珀琉璃珠

  .addObject(22450,1,0) --若木火实

  .addObject(22451,1,0) --肃杀金令

  .addObject(22452,1,0) --榣山水镜

  .addObject(22453,1,0) --忘川虚沙

  .addObject(4000,1,0) --外装打包

  end

  end

  大家应该也看到这个了吧?

  InitMOHitStatus()                --无伤成就初始化

  这个也就是说,开始新游戏的时候(OnNewGame),无伤成就是会初始化的!

  代码:

  function InitMOHitStatus()

  --铁柱观    1

  --雷云之海        2

  --祖洲                3

  --紫榕林        4

  --中皇山        5

  --蓬莱                6

  if gValue.MOHit == nil then

  gValue.MOHit = {}

  end

  for i = 1 , 6 do

  gValue.MOHit[ i ] = false

  end

  end

  这一段就是初始化代码,猜测就是把6个无伤点的值都设置为false。

  ============================================================================

  所以现在我猜想,要达成铁柱观成就的办法就是:

  一、重新开始一下游戏,然后保存一个进度。(当然前提是先备份了)按理说,这个时候记录无伤成就的那个值就被初始化过了。然后读取铁柱观的存档过一遍,看能否完成。这也只是假设,还未验证。

  二、如果第一种行不通,那只能重新开始游戏,一直玩到铁柱观,然后备份好存档文件夹,然后一次不碰的冲到最后,碰到就不用读取存档了,直接退出,换回备份的存档文件夹。看看这样到底能否达成。

  三、如果还是不行,没办法,清空存档文件夹,移走userdata.SAV,就当是0成就。然后重头开始玩到铁柱观,备份好存档文件夹,然后无伤过一遍铁柱观,看能否达成。如果这样都不行的话,只能说是BUG了。。。

  暂时先说这么多吧,希望跟大家讨论交流。

  end

[上一页] [1] [2]

相关新闻