[MOD] 实例:增加一种实时可建造建筑物,箭塔

增加建筑物分两个步骤:

  1. 编写建筑物配置文件;
  2. 在建造菜章中增加对应建造该建筑物的按钮。

以下分别叙述这两个步骤。

 

一、编写建筑物配置文件

箭塔配置文件:tower.cfg。文件名可以自定义,以cfg为扩展名就行。

tower.cfg放置位置:文件放在<wok>/data/core/units/building目录的根下。注:这文件可以放在<wok>data/core/units目录下的其它子目录下,例如humans,甚至一个新建目录(如果新建须要在<wok>/data/core/units.cfg写上该目录),但除非特别应用,一般不要那么做。

文件内容:

// 这文件中出现的可翻译字符串定义在wesnoth-wok.mo中

#textdomain wesnoth-wok
[unit_type]
	// 箭塔类型标识,它是物中唯一。当然你也可以不是tower,像tower0,只是一旦定下后其它地方就要多次用到这个标识。
	id=tower
	name= _"tower"
	race=human
	// 放置在地图上图像
	image="units/building/tower.png"
	{MAGENTA_IS_THE_TEAM_COLOR}
	hitpoints=150
	alignment=lawful
	// 造一个箭塔花费70金
	cost=70
	movement_type=smallfoot
	movement=0
	// 该建筑物可建在它之上的地形。Gg:草原,Rr:道路。
	terrains=Gg,Rr
	[resistance]
		arcane=80
		blade=100
		cold=100
		fire=80
		impact=100
		pierce=100
	[/resistance]
	// 和兵种一样,建筑物也是可升级的。
	level=1
	// 上层物种没了,所以一旦到达最大经验,执行的是ALMA。
	advances_to=null
	{AMLA_DEFAULT}
	// 升级须要经验
	experience=750
	[abilities]
		{ABILITY_STEADFAST}
	[/abilities]
	usage=fighter
	description= _"market0 description"+{SPECIAL_NOTES}+{SPECIAL_NOTES_STEADFAST}+{SPECIAL_NOTES_MAGICAL}
	die_sound={SOUND_LIST:HUMAN_DIE}
	[attack]
		name=staff
		description= _"staff"
		icon=attacks/staff-magic.png
		type=impact
		range=melee
		damage=8
		number=2
	[/attack]
	[attack]
		name=lightning
		description= _"lightning"
		icon=attacks/lightning.png
		type=fire
		range=ranged
		[specials]
			{WEAPON_SPECIAL_MAGICAL}
		[/specials]
		damage=8
		number=2
	[/attack]
    
	#{DEFENSE_ANIM "units/human-kingdom/zhoushushi-defend.png" "units/human-kingdom/zhoushushi-defend.png" {SOUND_LIST:HUMAN_HIT} }

#define DUDU_LIGHTNING DIRECTION_NUMBER
	[attack_anim]
	[filter_attack]
		name=lightning
	[/filter_attack]

	{LIGHTNING_BOLT {DIRECTION_NUMBER} }

	[/attack_anim]
#enddef

	{DUDU_LIGHTNING 1}
	{DUDU_LIGHTNING 2}
	{DUDU_LIGHTNING 3}

#undef DUDU_LIGHTNING
[/unit_type]

 

二、在建造菜章中增加对应建造该建筑物的按钮

上下文菜单是在主题(theme)中指定,可建造建筑物就在修改<wok>/data/themes/default.cfg。(第三步其实已和default.cfg无关,归类到这里是认为那一步也和按钮有关。)

 

2.1 定位到建造菜单

建造菜单是id=build的[menu]标签。类似以下这个实例。

[menu]
	id=build
	parent=main
	is_context_menu=true
	items=build_c:market, build_c:farm
	ref=middle-bottom-panel
	rect="=+9,=+5,+72,+72"
	xanchor=fixed
	yanchor=bottom
[/menu]

 

2.2 向建造菜单的items键的值增加build_c:tower

对于以上例子就是把items改为:[code]items=build_c:market, build_c:farm, build_c:tower[/code]经过这样改动后,箭塔图标就出现在农场(farm)之后。

注:

1:build_c:tower。build_c,它指出实行的build命令,‘_c’指示执行完这个命令后上下文菜单消失。‘:’指示后面字符串是build命令参数,以上就是tower。tower对应的是tower.cfg中的type键的值。

 

2.3 向<wok>/data/core/images/buttons目录增加上下文菜单中和“箭塔”按钮相关的三个png文件

这三个文件是建造上文菜单中“箭塔”按钮皮肤用的,它们是:

 

tower.png:通常情况下显示。

tower-active.png:当玩家鼠标落在“箭塔”按钮上时显示。

tower-pressed.png:当玩家按下“箭塔”按钮后显示。

三个文件的文件名是被约定的。tower和build_c:tower中的tower对应,-active和-pressed是系统要求。

说到图像,有人会联想到建造好箭塔后放置在地图上的箭塔图像。那个图像和以上这三个文件无关,它们是在tower.cfg中指定。

全部评论: 0

    写评论: