SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5374|回复: 4
打印 上一主题 下一主题

[MOD] 战役实例:群雄争霸

[复制链接]

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
跳转到指定楼层
楼主
发表于 2020-11-29 11:13:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要制作新mod或查看、编辑已有mod,须下载源码包。

战役至少要包含三个文件:

(二楼)战役概述:<data>\campaigns\Hero_Race\main_.cfg
(三楼)战役场景:<data>\campaigns\Hero_Race\scenarios\01_hero_race.cfg
(四楼)战役地图:<data>\campaigns\Hero_Race\maps\sanguo
回复

使用道具 举报

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
沙发
 楼主| 发表于 2020-11-29 11:14:07 | 只看该作者

战役概述(main_.cfg)

  1. #textdomain wesnoth-race
  2. [textdomain]
  3.         name="wesnoth-race"
  4. [/textdomain]
复制代码
定义本战役要使用到的多国语言包。cfg文件中类似_"Hero Race"或_ "Hero Race"(下横符和字符串之间有一个空格),这种称为可翻译字符串,也就是说它们显示界面上的字符会随着选择语言不同而不同。像_"Hero Race",英文时显示“Hero Race”,中文则是“群雄争霸”。

在WML语法中‘#’指示以它开始的那一行是注释行,但这里的#textdomain是特殊的,不是。#textdomain wesnoth-race作用是告知该战役使用wesnoth-race.mo这个语言包。

[textdomain]...[/textdomain]块作用是向系统注册wesnoth-race.mo这个语言包。由于wesnoth-race.mo只有群雄争霸才需要,这里需要自注册一下,以让系统包含这个包。

  1. [campaign]
  2.         id=hero_race
  3.         rank=110
  4.         name=_"Hero Race"
  5.         abbrev= _ "RACE"
  6.         define=CAMPAIGN_HERO_RACE
  7.         icon="data/campaigns/Hero_Race/images/icon.png"       
  8.         first_scenario=hero_race
  9.         image="data/campaigns/Hero_Race/images/campaign_image.png"
  10.         description= _ "Hero Race description"
  11.         hero_data="^xwml/hero.dat"
  12.         rpg_mode=yes
  13. [/campaign]
复制代码
定义战役概述。
id:战役标识。你可以认为这等于同剧本标识,像184年的黄巾之乱,208年赤壁之战。id一大作用是编辑器要据它生成bin文件,群雄争霸对应的就是hero_race.bin。
name:战役名。它是显示给用户看的。
abbrev:战役名缩写。像存储文件就使用它作为前缀,WOK-南郡战役_回合_1.gz'中的WOK。
define:选择了该战役后就预定义宏。
icon:选择战役对话框中出现在文字左侧的图标。
first_scenario:王国战争战役设计类似《曹操传》,是一幕接着一幕,first_scenaio是战役的第一场景,就像《曹操传》中的“颖川之战”。
image:选择战役对话框中出现在右侧的图像。
description:战役描述。显示在image正上方的一段描述性文字。
hero_data:战役要使用到的武将数据文件。脱字符表示从游戏目录树根开始,
[player]...[/player]:可选择玩家列表。对列表中每一项,hero:武将序号,像12是马超,136是袁绍,(武将序号详见hero.dat)。程序会跟据这个列表弹出一个选择框,选中的那一个玩家控制,其它的就是AI。
  1. #ifdef CAMPAIGN_HERO_RACE
  2. [compaign_addon]
  3.         [binary_path]        
  4.                 path=data/campaigns/Hero_Race
  5.         [/binary_path]
复制代码
#ifdef CAMPAIGN_WAR_OF_KINGDOM这是一个类似C语言的宏判断。一旦选择了本战投后,CAMPAIGN_HERO_RACE将被WML解析器视为一个已定义宏(见上面[campaign]标签中的define字段),所以#ifdef/#endif中的语句将被执行。
一旦选择了本战役后,要搜索图像将多出一条搜索路径。在这里可以放置只有本战役才需要的图像文件。
  1.         [+units]
  2.                 {campaigns/Hero_Race/units}
  3.         [/units]
复制代码
一旦选择了本战役后,多出的单位类型定义。例如你想增加一个兵种:炮车,这个兵种别地方是用不到的,你就可以放在这里。(系统默认放在<data>\core\units目录下,这里是私藏的)
  1.                 {campaigns/Hero_Race/scenarios}
  2. [/compaign_addon]
  3. #endif
复制代码
告知WML解析器,继续解析data/campaigns/War_of_Kingdom/scenarios下的所有*.cfg文件。在这里也就是要解析文件:01_hero_race.cfg
回复 支持 反对

使用道具 举报

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
板凳
 楼主| 发表于 2020-11-29 11:14:41 | 只看该作者

战役场景(01_hero_race.cfg)

  1. # scenario是场景块标签。
  2. [scenario]

  3.         # 本场景标识。注意下二楼[campaign]标签中的first_scenario字段
  4.         id=hero_race
  5.         # 本场景胜利结束后下一场景。群雄争霸只一个场景,结束就没了
  6.         next_scenario=null
  7.    
  8.         # 本场景叫什么:群雄争霸
  9.         name=_"race of hero"
  10.         # 本场景使用到的地图
  11.         map_data="{campaigns/Hero_Race/maps/sanguo}"
  12.         # 本场景限定回合数。-1表示不限回合
  13.         turns=-1
  14.    
  15.         # 一天内分哪些时段。在不同时段不同兵种部队能力可能有不同表现。像守序单位在白天有25%加成
  16.         # 第一时段:黎明
  17.         {DAWN}
  18.         # 第二时段:白天(早上)
  19.         {MORNING}
  20.         # 第三时段:白天(下午)
  21.         {AFTERNOON}
  22.         # 第四时段:黄昏
  23.         {DUSK}
  24.         # 第五时段:晚上(前半夜)
  25.         {FIRST_WATCH}
  26.         # 第六时段:晚上(后半夜)
  27.         {SECOND_WATCH}
  28.    
  29.         # 游戏中使用到的背景音乐  
  30.         {INTRO_AND_SCENARIO_MUSIC legends_of_the_north.ogg transience.ogg}
  31.         {EXTRA_SCENARIO_MUSIC underground.ogg}
  32.         {EXTRA_SCENARIO_MUSIC knolls.ogg}
  33.         {EXTRA_SCENARIO_MUSIC battle.ogg}
  34.         {EXTRA_SCENARIO_MUSIC vengeful.ogg}
  35.         {EXTRA_SCENARIO_MUSIC revelation.ogg}
  36.   
  37.         # 定义一个事件,触发时机:prestart,初始化场景时被执行
  38.         [event]
  39.                 name=prestart
  40.                
  41.                 # 定义本场景胜利条件和失败条件. (它们只是提示用,不会作为判断条件)
  42.                 [objectives]
  43.                         [objective]
  44.                                 description= _"defeat all heros"
  45.                                 condition=win
  46.                         [/objective]
  47.                         [objective]
  48.                                 description= _"you are defeated"
  49.                                 condition=lose
  50.                         [/objective]
  51.                 [/objectives]
  52.         [/event]

  53.   
  54.         # 接下开始定义势力。势力,就是类似魏、吴、蜀。  
  55.         [side]
  56.                 # 势力编号。它必须从1始,逐1增
  57.                 side=1
  58.                
  59.                 {PLAYER_IF 12}
  60.                         # “选择玩家”中选择了[player]...hero=12[/player]后就会进入这里,一旦选择那它就是玩家
  61.                         # 是否使用战争黑幕。$指示这是一个全局变量,player.shroud不在if条件中,需要加$
  62.                         shroud=$player.shroud
  63.                         # 是否使用战争迷雾。
  64.                         fog=$player.fog       
  65.                         # 控制:玩家
  66.                         controller=human
  67.                 {PLAYER_ELSE}
  68.                         # “选择玩家”时玩家没有选择该势力,那就是作为ai势力
  69.                         # 控制:ai
  70.                         controller=ai
  71.                 {PLAYER_ENDIF_ELSE}
  72.                        
  73.                 # 势力领袖武将
  74.                 leader=12
  75.                 id=machao
  76.         
  77.                 # 弥补AI不足,让AI每回合有更多金和一开始就能招3级兵
  78.                 {PLAYER_IF 12}
  79.                         # 玩家选择了该势力,初始金100
  80.                         gold=100
  81.                         # 每回合基本收入0
  82.                         income=0
  83.                         # 能直接招募的兵种,全是一级兵
  84.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  85.                 {PLAYER_ELSE}
  86.                         # AI势力,初始金200
  87.                         gold=200
  88.                         # 每回合基本收入120
  89.                         income=120
  90.                         # 能直接招募的兵种,全是三级兵
  91.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  92.                 {PLAYER_ENDIF_ELSE}               
  93.                
  94.                 # 在(19,2)坐标处放置一个城市, 该城市属于side=1,城市编号1, 城市序号125(它和武将被统一编号)
  95.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 1 1 19 2 125 220}
  96.                 [+artifical]
  97.                         # 城市一开始“空闲武将”
  98.                         service_heros=2,48,113,146,159,199,200,201
  99.                         # 城市一开始“在野武将”
  100.                         wander_heros=170
  101.                         # 属于该城市的经济区
  102.                         economy_area=(25,4)
  103.                         # 该城市辖区(左上角x坐标,左上角y坐标,宽度,高度)
  104.                         district=(17,1,5,4)
  105.                 [/artifical]
  106.                 # 在(19,4)坐标处放置一只部队,兵种commander5,部队主将:12
  107.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 1 (commander5) 19 4 12 25 0 -20% 1 1 1}
  108.                 [+unit]
  109.                         canrecruit=yes
  110.                 [/unit]
  111.                 #{ANONYMITY_LOYAL_MERITORIOUS_UNIT 1 (horseman6) 35 28 48 25 0 -20% 1 1 1}
  112.                 #{ANONYMITY_LOYAL_MERITORIOUS_UNIT 1 (bowman6) 46 5 48 -100 0 -90% 1 1 1}
  113.         [/side]
  114.    
  115.         {STARTING_VILLAGES 1 7}
  116.    
  117.         [side]
  118.                 side=2
  119.                
  120.                 {PLAYER_IF 136}
  121.                         shroud=$player.shroud
  122.                         fog=$player.fog       
  123.                         controller=human
  124.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  125.                         gold=100
  126.                         income=0
  127.                 {PLAYER_ELSE}
  128.                         controller=ai
  129.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  130.                         gold=200
  131.                         income=120
  132.                 {PLAYER_ENDIF_ELSE}
  133.    
  134.                 leader=136
  135.                 id=yuanshao
  136.         
  137.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 2 2 47 2 126 220}
  138.                 [+artifical]
  139.                         service_heros=44,87,119,141,142,144,155,161,163,180,202,204
  140.                         wander_heros=185
  141.                         economy_area=(46,5)
  142.                         district=(45,1,5,4)
  143.                 [/artifical]
  144.                
  145.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 2 (commander5) 47 4 136 50 0 -20% 1 1 1}
  146.                 [+unit]
  147.                         canrecruit=yes
  148.                 [/unit]
  149.                 #{ANONYMITY_LOYAL_MERITORIOUS_UNIT 3 (bowman6) 47 5 87 50 15 -90% 0 1 1}
  150.         [/side]
  151.    
  152.         {STARTING_VILLAGES 2 4}
  153.    
  154.         [side]
  155.                 side=3
  156.                
  157.                 {PLAYER_IF 3}
  158.                         shroud=$player.shroud
  159.                         fog=$player.fog       
  160.                         controller=human
  161.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  162.                         gold=100
  163.                         income=0
  164.                 {PLAYER_ELSE}
  165.                         controller=ai
  166.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  167.                         gold=200
  168.                         income=150
  169.                 {PLAYER_ENDIF_ELSE}

  170.                 leader=3
  171.                 id=caocao
  172.                
  173.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 3 3 58 16 128 300}
  174.                 [+artifical]
  175.                         service_heros=7,8,9,13,15,16,35,36,37,39,45,46,47,63,64,83,86,88,94,95,97,99,101,102,107,108,122,210
  176.                         wander_heros=17,18,19,77,79,89,90,91,92,93,96,118
  177.                         economy_area=(54,18)
  178.                         district=(56,14,5,5)
  179.                 [/artifical]
  180.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 3 (commander5) 58 18 3 20 0 -20% 1 1 1}
  181.                 [+unit]
  182.                         canrecruit=yes
  183.                 [/unit]
  184.         [/side]

  185.         {STARTING_VILLAGES 3 5}
  186.         {STARTING_VILLAGES_AREA 3 42 32 4}
  187.    
  188.         [side]
  189.                 side=4
  190.                
  191.                 {PLAYER_IF 140}
  192.                         shroud=$player.shroud
  193.                         fog=$player.fog       
  194.                         controller=human
  195.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  196.                         gold=100
  197.                         income=0
  198.                 {PLAYER_ELSE}
  199.                         controller=ai
  200.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  201.                         gold=200
  202.                         income=120
  203.                 {PLAYER_ENDIF_ELSE}
  204.                
  205.                 leader=140
  206.                 id=yuanshu
  207.         
  208.                 #{ANONYMITY_LOYAL_MERITORIOUS_CITY 4 4 54 31 129 220}
  209.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 4 4 54 31 129 0}
  210.                 [+artifical]
  211.                         service_heros=143,153,158,166,197,198
  212.                         wander_heros=34,65,66,67,68,69,111
  213.                         economy_area=(49,29)
  214.                         district=(52,29,5,5)
  215.                 [/artifical]
  216.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 4 (commander5) 54 33 140 25 0 -20% 1 1 1}
  217.                 [+unit]
  218.                         canrecruit=yes
  219.                 [/unit]
  220.         [/side]
  221.    
  222.         {STARTING_VILLAGES 4 4}
  223.    
  224.         [side]
  225.                 side=5
  226.                
  227.                 leader=139
  228.                 id=sunjian

  229.                 {PLAYER_IF 139}
  230.                         shroud=$player.shroud
  231.                         fog=$player.fog       
  232.                         controller=human
  233.                         gold=100
  234.                         income=0
  235.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  236.                 {PLAYER_ELSE}
  237.                         controller=ai
  238.                         gold=200
  239.                         income=150
  240.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  241.                 {PLAYER_ENDIF_ELSE}

  242.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 5 5 63 39 130 300}
  243.                 [+artifical]
  244.                         service_heros=0,6,14,20,21,22,23,24,25,26,27,28,29,30,41,100,115,116,156,187,188,189,191,193
  245.                         wander_heros=173,182,183,184,190,192
  246.                         economy_area=(63,36)
  247.                         district=(61,37,5,5)
  248.                 [/artifical]
  249.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 5 (commander5) 63 41 139 20 0 -20% 1 1 1}
  250.                 [+unit]
  251.                         canrecruit=yes
  252.                 [/unit]
  253.         [/side]
  254.    
  255.         {STARTING_VILLAGES 5 5}
  256.    
  257.         [side]
  258.                 side=6

  259.                 leader=138
  260.                 id=liubiao

  261.                 {PLAYER_IF 138}
  262.                         shroud=$player.shroud
  263.                         fog=$player.fog       
  264.                         controller=human
  265.                         gold=100
  266.                         income=0
  267.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  268.                 {PLAYER_ELSE}
  269.                         controller=ai
  270.                         gold=200
  271.                         income=120
  272.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  273.                 {PLAYER_ENDIF_ELSE}
  274.         
  275.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 6 6 39 47 50 220}
  276.                 [+artifical]
  277.                         service_heros=1,33,40,110,145,148,149,160,171,172,177,178,179,196
  278.                         wander_heros=43,85
  279.                         economy_area=(40,44)
  280.                         district=(37,45,5,5)
  281.                 [/artifical]
  282.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 6 (commander5) 39 49 138 25 0 -20% 1 3 4}
  283.                 [+unit]
  284.                         canrecruit=yes
  285.                 [/unit]
  286.         [/side]
  287.    
  288.         {STARTING_VILLAGES 6 6}
  289.         {STARTING_VILLAGES_AREA 6 13 2 4}
  290.    
  291.         [side]
  292.                 side=7
  293.                
  294.                 leader=137
  295.                 id=menghuo

  296.                 {PLAYER_IF 137}
  297.                         shroud=$player.shroud
  298.                         fog=$player.fog       
  299.                         controller=human
  300.                         gold=100
  301.                         income=0
  302.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  303.                 {PLAYER_ELSE}
  304.                         controller=ai
  305.                         gold=200
  306.                         income=100
  307.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  308.                 {PLAYER_ENDIF_ELSE}

  309.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 7 7 18 47 131 220}
  310.                 [+artifical]
  311.                         service_heros=154,167,176,194,195,203,207
  312.                         economy_area=(23,48)
  313.                         district=(16,45,5,5)
  314.                 [/artifical]
  315.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 7 (commander5) 18 49 137 20 0 -20% 1 1 1}
  316.                 [+unit]
  317.                         canrecruit=yes
  318.                 [/unit]
  319.         [/side]
  320.    
  321.         {STARTING_VILLAGES 7 4}
  322.    
  323.         [side]
  324.                 side=8

  325.                 leader=4
  326.                 id=liubei

  327.                 {PLAYER_IF 4}
  328.                         shroud=$player.shroud
  329.                         fog=$player.fog       
  330.                         controller=human
  331.                         gold=100
  332.                         income=0
  333.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  334.                 {PLAYER_ELSE}
  335.                         controller=ai
  336.                         gold=200
  337.                         income=150
  338.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  339.                 {PLAYER_ENDIF_ELSE}        
  340.                
  341.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 8 8 15 33 132 300}
  342.                 [+artifical]
  343.                         service_heros=5,10,11,31,32,42,58,59,60,61,80,81,82,106,162,168,209,212,213
  344.                         wander_heros=150,211
  345.                         economy_area=(16,37)
  346.                         district=(13,31,5,5)
  347.                 [/artifical]       
  348.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 8 (commander5) 15 35 4 20 0 -20% 1 1 1}
  349.                 [+unit]
  350.                         canrecruit=yes
  351.                 [/unit]
  352.         [/side]

  353.         [side]
  354.                 side=9

  355.                 leader=135
  356.                 id=dongzhuo

  357.                 {PLAYER_IF 135}
  358.                         shroud=$player.shroud
  359.                         fog=$player.fog       
  360.                         controller=human
  361.                         gold=100
  362.                         income=0
  363.                         recruit=footman1,horseman1,bowman1,catapult1,commander1,pikeman1,mage1
  364.                 {PLAYER_ELSE}
  365.                         controller=ai
  366.                         gold=200
  367.                         income=120
  368.                         recruit=footman3,horseman3,bowman3,catapult3,commander3,pikeman3,whitemage3,redmage3
  369.                 {PLAYER_ENDIF_ELSE}        
  370.                
  371.                 {ANONYMITY_LOYAL_MERITORIOUS_CITY 9 9 3 22 134 220}
  372.                 [+artifical]
  373.                         service_heros=98,103,104,105,120,121,147,152,157,174,181,186,205,206,208
  374.                         wander_heros=117,164,165,169,175
  375.                         economy_area=(7,21)
  376.                         district=(1,20,5,5)
  377.                 [/artifical]       
  378.                 {ANONYMITY_LOYAL_MERITORIOUS_UNIT 9 (commander5) 3 24 135 20 0 -20% 1 1 1}
  379.                 [+unit]
  380.                         canrecruit=yes
  381.                 [/unit]
  382.         [/side]

  383.         [side]
  384.                 # 演艺圈势力,打这势力中部队很涨经验
  385.                 side=10
  386.                 controller=ai
  387.                 # 势力名称       
  388.                 user_team_name=_"actor"

  389.                 leader=123
  390.                 id=actor
  391.                 name= _"actor"
  392.         
  393.                 recruit=horseman1
  394.                
  395.                 gold=0
  396.                 income=0
  397.         [/side]
  398.    
  399.         [event]
  400.                 name=start

  401.                 [unit]
  402.                         # 溜二拐上场
  403.                         type=stage player
  404.                         profile=liuxiang.png
  405.                         # 部队武将:38
  406.                         heros_army=38
  407.                         # 属于势力10:演艺圈
  408.                         side=10
  409.                         # 仔细看可以发现,一直都没有定义cityno=0的城市,
  410.                         # 而这里置cityno等于0,是故意要让指向一个不存在城市,也就是说这支部队是流浪部队
  411.                         cityno=0
  412.                         #x,y=34, 28
  413.                         # 溜二拐初始出现在座标(48, 5)格子
  414.                         x,y=48, 5
  415.                 [/unit]
  416.                 [unit]
  417.                         type=famous director
  418.                         heros_army=123,124
  419.                         side=10
  420.                         cityno=0
  421.                         #x,y=34, 27
  422.                         x,y=48, 4
  423.                 [/unit]
  424.         [/event]

  425.         # 挂接新回合时事件。
  426.         [event]
  427.                 name=new turn
  428.                 first_time_only=no
  429.                
  430.                 # 每次新回合,要执行在野武将自荐
  431.                 [recommend]
  432.                 [/recommend]
  433.                 [ai]
  434.                         # ai是否各顾各。no时,一旦玩家达到压倒性优势,所有敌对ai会自动同盟
  435.                         selfish=no
  436.                 [/ai]
  437.         [/event]

  438.         # 挂接外交事件
  439.         [event]
  440.                 name=diplomatism
  441.                 first_time_only=no
  442.                
  443.                 # ai遇到危情况时,像只剩一城,而且被围攻,会自动向其它AI请求同盟
  444.                 [ally]
  445.                 [/ally]
  446.         [/event]

  447.         # 挂接溜二拐被打得退场时事件
  448.         [event]
  449.                 name=last breath
  450.                 # [filter]是个筛选器
  451.                 [filter]
  452.                         # liuxiang
  453.                         # 快退场角色必须是溜二拐为主将部队,否则不执行以下动作
  454.                         master_hero=38
  455.                 [/filter]
  456.                 # 这个事件不仅执行一次
  457.                 first_time_only=no
  458.                
  459.                 [if]
  460.                         [variable]
  461.                                 # 85%几率执行then块中操作, 15%几率执行[else]块中操作
  462.                                 name=random
  463.                                 less_than=85
  464.                         [/variable]
  465.                         [then]
  466.                                 # 定义一个变量。初写mod时定义这变量目的为了简单,使用下来这种方式不行。但先暂时搁着,我是要实现这种方式的
  467.                                 # 为实现同样目的,现在在用的是后面那个变量:lxword
  468.                                 [set_variable]
  469.                                         name=lxidx
  470.                                         rand=1..6
  471.                                 [/set_variable]
  472.                
  473.                                 # 定义一个变量
  474.                                 [set_variable]
  475.                                         # 变量名lxword,值是后面那9个字符串中一个,随机取值
  476.                                         name=lxword
  477.                                         rand=_"liuxiang word: 1", _"liuxiang word: 2", _"liuxiang word: 3", _"liuxiang word: 4", _"liuxiang word: 5", _"liuxiang word: 6", _"liuxiang word: 7", _"liuxiang word: 8", _"liuxiang word: 9"
  478.                                 [/set_variable]
  479.         
  480.                                 # 定义一个变量
  481.                                 [set_variable]
  482.                                         # 变量名coor_x,值是18..39中一个数字,随机取值
  483.                                         name=coor_x
  484.                                         rand=18..39
  485.                                 [/set_variable]
  486.         
  487.                                 # 定义一个变量
  488.                                 [set_variable]
  489.                                         # 变量名coor_y,值是后面那8..29中一个数字,随机取值
  490.                                         name=coor_y
  491.                                         rand=8..29
  492.                                 [/set_variable]
  493.                                 # 因为头像很难看,暂不显示。等改善对话框开再打开
  494. #ifdef NORMAL
  495.                                 # 溜二拐快退场时会干什么呢?
  496.                                 # 1. 说出一句至理名言。名言内容就是lxword中内容,也就是或_"liuxiang word: 1", 或_"liuxiang word: 2",类推
  497.                                 [message]
  498.                                         speaker=38
  499.                                         #message= _ "liuxiang word: $lxidx"
  500.                                         pop_in_fog=no
  501.                                         message= $lxword
  502.                                 [/message]
  503. #endif
  504.                                 # 2. 告知我退场了,自我爆炸
  505.                                 [kill]
  506.                                         master_hero=38
  507.                                         #animate=yes
  508.                                 [/kill]
  509.         
  510.                                 # 3. 他改为出现在coor_x和coor_y指定格子处
  511.                                 [unit]
  512.                                         type=stage player
  513.                                         profile=liuxiang.png
  514.                                         heros_army=38
  515.                                         side=10
  516.                                         cityno=0
  517.                                         x,y=$coor_x, $coor_y
  518.                                 [/unit]
  519.                         [/then]
  520.                         [else]
  521.                                 # 15%几率是加入高稀屎部队
  522. #ifdef NORMAL
  523.                                 [message]
  524.                                         speaker=123
  525.                                         pop_in_fog=no
  526.                                         message= _"You have perfect potential, Come on!"
  527.                                 [/message]
  528.                                 [message]
  529.                                         speaker=38
  530.                                         pop_in_fog=no
  531.                                         message= _"I'm looking forward to it always"
  532.                                 [/message]
  533.                                 [message]
  534.                                         speaker=123
  535.                                         pop_in_fog=no
  536.                                         message= _"Bitch work together!"
  537.                                 [/message]
  538. #endif                               
  539.                                 [kill]
  540.                                         master_hero=38
  541.                                 [/kill]
  542.                                 # 加入高稀屎部队
  543.                                 [join]
  544.                                         master_hero=123
  545.                                         join_hero=38
  546.                                 [/join]
  547.                         [/else]
  548.                 [/if]
  549.         [/event]

  550.         # 挂接高稀屎被打得退场时事件
  551.         [event]
  552.                 name=last breath
  553.                 [filter]
  554.                         # gxx
  555.                         master_hero=123
  556.                 [/filter]
  557.                 first_time_only=no
  558.         
  559.                 [set_variable]
  560.                         name=gxxidx
  561.                         rand=1..6
  562.                 [/set_variable]
  563.                
  564.                 [set_variable]
  565.                         name=gxxword
  566.                         rand=_"gxx word: 1", _"gxx word: 2", _"gxx word: 3", _"gxx word: 4", _"gxx word: 5", _"gxx word: 6", _"gxx word: 7", _"gxx word: 8", _"gxx word: 9"
  567.                 [/set_variable]

  568.                 [if]
  569.                         [variable]
  570.                                 # 20%几率“信春哥,原地复活”
  571.                                 # 80%几率在另一个地方出现
  572.                                 name=random
  573.                                 less_than=20
  574.                         [/variable]
  575.                         [then]
  576.                                 [set_variable]
  577.                                         name=coor_x
  578.                                         value=$unit.x
  579.                                 [/set_variable]
  580.                                 [set_variable]
  581.                                         name=coor_y
  582.                                         value=$unit.y
  583.                                 [/set_variable]
  584. #ifdef NORMAL
  585.                                 [message]
  586.                                         speaker=123
  587.                                         pop_in_fog=no
  588.                                         message= _"Believe chun! Resurrection Man-state in-situ!"
  589.                                 [/message]
  590. #endif
  591.                         [/then]
  592.                         [else]
  593.                                 [set_variable]
  594.                                         name=coor_x
  595.                                         rand=18..39
  596.                                 [/set_variable]
  597.                                 [set_variable]
  598.                                         name=coor_y
  599.                                         rand=8..29
  600.                                 [/set_variable]
  601.                         [/else]
  602.                 [/if]               
  603.         
  604.                 [kill]
  605.                         master_hero=123
  606.                         #animate=yes
  607.                 [/kill]
  608.         
  609.                 # 这个部队中可能有溜二拐,如果是,复活时要出来两只部队
  610.                 [unit]
  611.                         type=famous director
  612.                         heros_army=123,124
  613.                         side=10
  614.                         cityno=0
  615.                         x,y=$coor_x, $coor_y
  616.                 [/unit]
  617.                 [if]
  618.                         [have_unit]
  619.                                 master_hero=38
  620.                         [/have_unit]
  621.                         [then]
  622.                         [/then]
  623.                         [else]
  624.                                 [unit]
  625.                                         type=stage player
  626.                                         profile=liuxiang.png
  627.                                         heros_army=38
  628.                                         side=10
  629.                                         cityno=0
  630.                                         x,y=$coor_x, $coor_y
  631.                                 [/unit]
  632.                         [/else]
  633.                 [/if]
  634.         [/event]

  635. [/scenario]
复制代码
回复 支持 反对

使用道具 举报

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
地板
 楼主| 发表于 2020-11-29 11:15:05 | 只看该作者

战役地图(nanjun)


游戏提供专门编辑器用于编辑地图。

地图除了定义地形还定义了各个玩家阵营。就像以上就须要定义9个阵营,在地图中定义了每个阵营头头所在格子坐标,像阵营1(side=1),头头是除晃,在01_battle_nanjun.cfg中并没有指定站在哪个格子,因为他站的地方已由地图决定。
回复 支持 反对

使用道具 举报

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
5#
 楼主| 发表于 2020-11-29 11:15:26 | 只看该作者

FAQ

A:ANONYMITY_LOYAL_MERITORIOUS_CITY宏
Q:ANONYMITY_LOYAL_MERITORIOUS_CITY宏用于在地图上放置一个城市。以实例说如何使用这宏。
  1. {ANONYMITY_LOYAL_MERITORIOUS_CITY 18 12 117 51 223 220}
复制代码
  • 18: 城市标号。定义城外部队时要用它指示部队归属到的城市。自然数。不同城市必须不一样。一般做法是把第一个城市置为1,然后接下城市不断加1。
  • 12: 势力标号。指市该城市归属的势力。[side]中的side值。
  • (117, 51):城市在地图上坐标。
  • 223:城市在hero.dat中的序号。
  • 220:城市HP增加。220就是指该城比默认HP大220,可能是负值,像-100,就是指该城比默认HP小100。


ANONYMITY_LOYAL_MERITORIOUS_CITY在<src>/data/core/macros/unit-utils.cfg中定义。
  1. #define ANONYMITY_LOYAL_MERITORIOUS_CITY CITYNO SIDE X Y HEROS_ARMY HITPOINTS
  2.         [artifical]
  3.                 side={SIDE}
  4.                 type=city_city0
  5.                 heros_army={HEROS_ARMY}
  6.                 x={X}
  7.                 y={Y}
  8.                 cityno={CITYNO}
  9.                 random_traits=yes
  10.                 random_gender=yes
  11.                 [modifications]
  12.                         {TRAIT_LOYAL}
  13.                         {TRAIT_ARCHITECTURE {HITPOINTS} 20 0 0 0}
  14.                 [/modifications]
  15.         [/artifical]
  16. #enddef
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2025-5-1 23:14 , Processed in 0.050164 second(s), 19 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表