魂狼下载:专业免费游戏下载中心

《拿破仑:全面战争》scripting.lua脚本作弊浅释

编辑:admin 时间:2012-03-06 11:07:59 来源:魂狼

游侠会员:秋之回忆n 分享
1:世界地图迷雾全开
用记事本打开scripting.lua,然后用=>OnWorldCreated<=搜索
然后找到下面这个脚本事件..

local function OnWorldCreated()
        scripting.game_interface:technology_osmosis_for_playables_enable_culture("european")
        scripting.game_interface:technology_osmosis_for_playables_enable_all()
end

里面添加一行scripting.game_interface:show_shroud(false)
正确的话会变成这样...

local function OnWorldCreated()
        scripting.game_interface:technology_osmosis_for_playables_enable_culture("european")
        scripting.game_interface:technology_osmosis_for_playables_enable_all()
        scripting.game_interface:show_shroud(false)
end

然后保存就可以了~~
OnWorldCreated()事件会在会战创建的时候触发~~~
要注意的是,迷雾全开后,所有AI动作都会被显示,如果不想看的话,把选项里的=>显示CPU移动<=关掉~~

----------------------------------------------------------------------------------------------------------------------------------------------------------------
2:平和的吞并
就在scripting.lua的开头,有个OnFactionTurnStart(context)事件.....
这个事件会在会战里每回合执行一次~~
里面的内容其实就是英国,西班牙和法国在会战里的殖民地小任务触发脚本~~
一些语句格式:

基本条件语句
(单个条件,单个指令)=>if 条件 then 执行指令 end
(多个条件,单个指令)=>if 条件1 and 条件2 and 条件3 then 执行指令 end
(多个条件,多个指令)=>if 条件 then 执行指令
                                     elseif 条件 then 执行指令
                                     elseif 条件 then 执行指令 end

conditions.TurnNumber(context)                                                   获得当前的回合数
conditions.FactionName("国家代码", context)                               检测某个国家是否存在(是否被消灭或未出现)
conditions.FactionIsHuman("国家代码", context)                          检测某个国家是否由玩家控制
scripting.game_interface:trigger_custom_mission()                       触发殖民地小任务(参数不建议修改)
scripting.game_interface:enable_auto_generated_missions(true)   自动触发小任务(用途不明)
scripting.game_interface:grant_faction_handover("吞并国", "被吞并国", 6, 触发回合, context) 今天的主角,强制某个国家获得另一个国家的全部领土

因为这个修改比较复杂,需要有编程或脚本编写基础...所以,除非你清楚了解你在做什么.否则,不建议自己修改~~
这里给个例子,目前偶使用的脚本:

local function OnFactionTurnStart(context)                //当回合开始
if conditions.TurnNumber(context) == 2 then        //如果当前回合是2(注意,是双等号,这个不是一般数学的等式,而是逻辑数学)
  scripting.game_interface:enable_auto_generated_missions(true)   //自动触发小任务
end                                              //语句结束

if conditions.FactionName("portugal", context) and conditions.FactionIsHuman("portugal", context) then  //如果葡萄牙存在,并且葡萄牙是由玩家控制的国家
  scripting.game_interface:grant_faction_handover("portugal", "new_spain", 6, 7, context)                //葡萄牙在第7回合获得新西班牙的全部领土,新西班牙被消灭
end                                                //语句结束
end                                                 //事件结束

不建议把触发的回合数定于5回合之前,因为会战开始的前几回合,有其他的脚本在运行~~
可能会发生冲突,或者错误,造成跳出或坏档~~
吞并国和被吞并国关系可以是任意,并不必须是宗主,同盟或敌对....列强/龙套国家都行~~
如果其中一个国家不存在,就会出错跳出.这就是前面conditions语句的意义,用来避免上述错误的出现.至于conditions.FactionIsHuman(),不是必须~~
另外,不能凭空生出国家,所以,想靠这个命令来产生美国或墨西哥的人,可以死心了...会跳出的~~
而且,只能定义整个国家,不能单独获得某个地区~~
这样的语句可以无数条,也就是说.....让你数回合后立刻当球长都行....国家代码可以在patch.pack/db/factions_tables/faction里查到~~~

热门游戏