注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 全面战争全系列MOD讨论区 【原创】交换国家的script及植入方法
查看: 12655|回复: 33
打印 上一主题 下一主题

【原创】交换国家的script及植入方法 [复制链接]

帖子
120
精华
2
积分
470
金钱
422
荣誉
1
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2005-11-1 12:41:50 |只看该作者 |倒序浏览
看见有人问起怎样交换国家看其它国家的情况,想必大家都想吧,呵呵,我们总是很好奇地想了解对方。好的,没问题,写个脚本。
新建个文本文档,随便起个名字,不过要是英文的,比如xchange。把以下内容写进xchange里。

script
if I_LocalFaction empire_west
console_command control empire_east
terminate_script
end_if
if I_LocalFaction empire_east
console_command control empire_west
terminate_script
end_if
end_script[/SIZE][/FONT][/FONT]

我用东、西罗马来举例。前一个if―end结构用来从自己的国家西罗马跳到别的国家东罗马,后一个则跳回来。你可以根据自己的要求仿照写各种形式的跳转。

把这个xchange文档放到bi\data\scripts\show_me文件夹中,作为一个show_me脚本。然后在bi\data里的export_descr_advice.txt文档中找2137号trigger,即搜索“AdviceThread Help_Campaign_Keyboard_Shortcuts_Scroll_Thread”。你会看到这个thread里有些语句,这个其实对应的游戏中的事件是“按下F1键获得战略地图快捷键菜单”。可以看到这个thread中的语句有Title,Text两句。在这两句的中间,加一句:
script bi\data\scripts\show_me\xchange.txt

这样在进入游戏按下F1键时,出现了战略地图快捷键菜单,点菜单右上角的问号,左上角出现女顾问,点女顾问头像下的“show me how(教我如何做)”按钮,就会运行xchange脚本中的内容了。很熟悉这个操作吗,恩,一年四回合也是这样嵌入的。show_me脚本都是这样嵌入的。

不过注意,交换国家时并非立刻交换。按照上面的步骤按下“show me how”按钮时,该回合立刻结束,屏幕上把每个国家都转一遍,新的回合开始时,你才开始控制另一个国家。想换回来再做一遍就可以,因为这个脚本只用来两个国家间来回交换,你可以根据自己的要求写别的东西。

不过我看过别的国家的情况了,电脑是全部委任管理的。不用羡慕别的国家月亮圆,一切都是概率。

使用道具 举报

帖子
120
精华
2
积分
470
金钱
422
荣誉
1
人气
0
评议
0
沙发
发表于 2005-11-1 12:51:14 |只看该作者
虽然罗马有这种脚本功能,但太针对化了,太特殊了,event,condition和command保留字太多了,用的时候还要查,不方便。文明4的MOD功能很好,可以用python和xml写。

使用道具 举报

帖子
3321
精华
0
积分
1661
金钱
3473
荣誉
0
人气
0
评议
0
板凳
发表于 2005-11-1 12:55:57 |只看该作者
……这帖太好了……【支持】 【支持】 【支持】

使用道具 举报

帖子
2298
精华
0
积分
1849
金钱
2492
荣誉
70
人气
0
评议
0
地板
发表于 2005-11-1 12:59:04 |只看该作者
salaam 'aleikum
真厉害啊  

使用道具 举报

帖子
120
精华
2
积分
470
金钱
422
荣誉
1
人气
0
评议
0
5#
发表于 2005-11-1 13:03:42 |只看该作者
谢谢,呵呵,我会安息的,马上,立刻,睡午觉安息。

使用道具 举报

帖子
120
精华
2
积分
470
金钱
422
荣誉
1
人气
0
评议
0
6#
发表于 2005-11-1 13:06:20 |只看该作者
谢谢,呵呵,我会安息的,马上,立刻,去睡午觉。Peace to you,too.另外你信伊斯兰吗?

使用道具 举报

游侠荣誉会员勋章

帖子
24031
精华
5
积分
13880
金钱
34285
荣誉
86
人气
36
评议
0
7#
发表于 2005-11-1 13:24:08 |只看该作者
哈哈太感谢血浴了!!!!【开心】 【开心】 另外你知道有什么方法能让1.3的国家能和BI一样以上来只有军队没有城市也能生存么?

使用道具 举报

帖子
120
精华
2
积分
470
金钱
422
荣誉
1
人气
0
评议
0
8#
发表于 2005-11-1 13:28:43 |只看该作者
BI只有那些可游牧的国家才能初始时只有军队没有城也能活,不能游牧的国家也不行的。1.3应该是不可以的,但不知道BI里能不能把不能游牧的国家改成可以游牧的国家,我没太仔细研究BI,前段时间在忙保研的事情。

使用道具 举报

游侠荣誉会员勋章

帖子
24031
精华
5
积分
13880
金钱
34285
荣誉
86
人气
36
评议
0
9#
发表于 2005-11-1 13:48:41 |只看该作者
没关系感谢血浴了!!【开心】 另外你能不能教教我提取决战欧洲3.0地图到1.3原版的具体步骤?我们试验6次都失败了!可是非常喜欢那个地图阿!不一定非要覆盖帝国会战,象柱子那样单独设一个文件夹也可以,怎样方便怎么来。【开心】【开心】

使用道具 举报

帖子
120
精华
2
积分
470
金钱
422
荣誉
1
人气
0
评议
0
10#
发表于 2005-11-1 13:52:13 |只看该作者
工作量有点大哦。我想知道关于增加一套MOD地图你都了解哪方面的东西,你知道的我就不用说了,或者说讲讲你遇到的问题。

使用道具 举报

帖子
523
精华
0
积分
262
金钱
1112
荣誉
0
人气
0
评议
0
11#
发表于 2005-11-1 13:58:10 |只看该作者
强帖啊,顶起。。。。。。。。。。。。。。

使用道具 举报

游侠荣誉会员勋章

帖子
24031
精华
5
积分
13880
金钱
34285
荣誉
86
人气
36
评议
0
12#
发表于 2005-11-1 13:59:37 |只看该作者
我先上班去了回来咱们再聊【开心】 【开心】

使用道具 举报

航海区特邀会员

帖子
791
精华
2
积分
1096
金钱
2369
荣誉
30
人气
0
评议
0
13#
发表于 2005-11-1 14:57:37 |只看该作者
LZ真的很 弓虽 啊!!!!

支持~~~~~~~~~

能不能告诉我一年4个回合的 脚本语句/原理??
【经典】 【支持】

使用道具 举报

帖子
120
精华
2
积分
470
金钱
422
荣誉
1
人气
0
评议
0
14#
发表于 2005-11-1 17:44:36 |只看该作者
关于脚本,是个大话题。04年罗马全战E3上的Demo中有三个文档,docudemon_events、docudemon_conditions、docudemon_commands。分别记录了可用的事件,条件,命令保留字,当然后来1.2里又增加了新的这里没有包括。但这已些保留字已经够多了,想写一个完成某种目的的脚本真不容易,要一个一个找需要的可能存在的保留字。除了这三个文档外还有一个available_ui_elements.txt也要参照,因为这里有button id和scroll id,有些保留字的参数里要用到。所以我不准备介绍一个脚本怎么写,具体原理怎样。我只简单说一下,另外再说一下一年4回合的脚本,以前宇文寒说过了。

一般常用的脚本就像我上面写的那个还有4回合脚本一样是放到scripts\show_me里的,这种脚本被动运行,需要人为触发。比如4回合利用的是原有的一个帮助触发事件,即“按下F1键获得战略地图快捷键菜单”。本身这个不需要“教我如何做”,也就是说原本没有脚本与它关联,这样我们可以把自己的脚本嵌进去运行。当然你也可以自己写一个trigger或者用别的trigger。还有一种脚本是自动运行的,每次进入战略地图都会自动运行,这个脚本是针对地图的。比如你想给某个地图写一个自动运行的脚本,那么你要在这个地图所在的文件夹,即\world\maps\campaign里相应的文件夹中放置这个脚本,然后在descr_strat.txt的最后增加脚本内容,假设这个脚本的名字叫descr_script.txt,那么增加的内容格式为:

Script
descr_script.txt[/SIZE][/FONT][/FONT]

记得教学吗,教学里的不能存档,部队自动移动到某个地方,自动开战,这些都是脚本实现的,看懂Prologue_Campaign_Script.txt就掌握了脚本。但这种脚本,不太好用,有些细碎的问题还没有搞定。

现在说一下4回合的script。我只写很少一段说明。

script
        suspend_during_battle on
        console_command date -270
        console_command season summer
        while I_TurnNumber = 0
        end_while

        console_command date -270
        console_command season summer
        while I_TurnNumber = 1
        end_while

        console_command date -270
        console_command season summer
        while I_TurnNumber = 2
        end_while

        console_command date -270
        console_command season winter
        while I_TurnNumber = 3
        end_while

        console_command date -269
        console_command season summer
        while I_TurnNumber = 4
        end_while
end_script[/SIZE][/FONT][/FONT]

先解释保留字:
命令类保留字:
script和end_script,用于开始一个脚本和结束一个脚本。
console_command,运行控制台命令。命令分为两类,一类是脚本命令,一类是控制台命令。
date,(控制台命令),设定当前的年份。
season,(控制台命令),设定当前的季节,可以接的参数只有两个,summer和winter。
while和end_while,开始和结束while循环,学过语言的都知道吧,while循环一直运行直到条件不满足。
suspend_during_battle,战斗时将脚本挂起。像汇编时的压入堆栈保护一样,为防止进入战斗后新的事件触发其它脚本运行而废弃原来正在运行的脚本。这样战斗结束后继续运行原有脚本。
条件类保留字:
I_TurnNumber,当前已运行的回合数,被记录在存档中。参数是逻辑运算符和数字。

下面解释含义。其实很简单,当前回合数是0-2都令时间为-270年夏季,3则令时间为-270年冬季,以后类推,一直写到你要求的结束年份为止。具体几个夏季几个冬季自己定。

基本就是这样吧。

使用道具 举报

帖子
120
精华
2
积分
470
金钱
422
荣誉
1
人气
0
评议
0
15#
发表于 2005-11-1 17:56:04 |只看该作者
有朋友可能要问这里面的while循环干什么用的,为什么不用if和end_if,为什么不这样写:

script
        suspend_during_battle on
        if I_TurnNumber = 0
        console_command date -270
        console_command season summer
        end_if

        if I_TurnNumber = 1
        console_command date -270
        console_command season summer
                     end_if
。。。。。。
end_script[/SIZE][/FONT][/FONT]

这么想说明你对脚本的运行方式还不了解。和普通程序一样,脚本一旦运行就会顺次向下执行。假设现在刚开始,已运行的回合数是0,那么第一段的条件满足。在执行了date -270和season summer后,程序继续向下,因为当前的I_TurnNumber不等于1,则这一段将不执行,再继续向下,都不会执行,然后脚本就结束退出了。这显然不能达到我们要的效果。而原脚本里的while空循环的作用,就是当执行完该回合的时间设定后,由于回合键一直没有按下,所以I_TurnNumber一直没变,这样就在while这里一直循环不继续执行。当按下回合键后I_TurnNumber加1,原来循环的条件打破,跳出后执行新的时间设定,然后再次进入循环。。。

使用道具 举报

帖子
480
精华
0
积分
640
金钱
859
荣誉
40
人气
0
评议
0
16#
发表于 2005-11-1 18:36:53 |只看该作者
游侠的牛人可真是多呀。。。。。佩服佩服。。。。
叫我写脚本。。我用头去撞墙算了。。。

使用道具 举报

帖子
140
精华
0
积分
70
金钱
826
荣誉
0
人气
0
评议
0
17#
发表于 2005-11-1 23:09:48 |只看该作者

使用道具 举报

帖子
655
精华
0
积分
528
金钱
839
荣誉
20
人气
0
评议
0
18#
发表于 2005-11-11 03:47:14 |只看该作者
好厉害的大人,佩服哦,151515151155【开心】 【开心】 【开心】 【开心】

使用道具 举报

帖子
49
精华
0
积分
25
金钱
104
荣誉
0
人气
0
评议
0
19#
发表于 2005-11-11 12:47:24 |只看该作者
弓虽啊!!!!!!!!!!!!!!!!!!!!!!!!!!

使用道具 举报

帖子
3235
精华
0
积分
1618
金钱
4548
荣誉
0
人气
0
评议
0
20#
发表于 2005-11-20 11:40:44 |只看该作者
血浴兄简直是超牛人一个啊,先受教了。【支持】 【支持】 【支持】
一恨释迦受生,二恨菩提得证,三恨灵鹫结集,四恨金人入梦,五恨白马西来,六恨黄巾未成,七恨一苇东渡,八恨魏武早崩,九恨玄奘归国,十恨六祖登坛,十一恨蒙元入寇,十二恨满清断发!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-9-2 11:58 , Processed in 0.382850 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到