注册 | 登录

游侠NETSHOW论坛





查看: 19609|回复: 43
打印 上一主题 下一主题

[原创] 王权2 ——mod技术初探 [复制链接]

天邈汉化组翻译【中级】

游侠荣誉会员勋章

帖子
9655
精华
6
积分
6581
金钱
9224
荣誉
55
人气
11
评议
0
跳转到指定楼层
楼主
发表于 2009-9-19 18:01:06 |只看该作者 |倒序浏览
一、先将游戏目录下\resource\resource.pak内文件全部解压缩到当前目录,并将文件resource.pak更名
以下分号后为注释,请请注意本人并未针对以下每项进行测试,具体效果请自己测试



二、\resource\entity\
数据和定义主要都存放在*.def文件中


以\resource\entity\buildings\castle\castle.def为例

;#line 18:         (include "extenders/upgrades.inc")
;#line 18: /entity/buildings/castle/extenders/upgrades.inc BEGIN
{"Upgrades"        ;升级部分
        {available
                {;1升第一级
                        {money 75}
                        {health 1000}                                ;升级增加的生命
                        {building_value 1}
                        {cost                                        ;升级消耗的金币
                        "money" 2000
                        }
                }
                {;2?囡沭彘?
                        {money 150}
                        {health 1500} ;念徉怆弪 蹊蝻铊眚钼        
                        {building_value 1}
                        {cost                                        ;羊铊祛耱?囡疸彘溧
                        "money" 5000
                        }
                }
        }
}


;#line 22:         (include "extenders/guard_point.inc")
;#line 22: /entity/buildings/castle/extenders/guard_point.inc BEGIN
{"guard_point"        ;守卫活动范围
        {ZoneRadius 15.0}
        {GuardRadius 20.0}
}
;#line 22: /entity/buildings/castle/extenders/guard_point.inc END


;#line 23:         (include "extenders/treasures_generator.inc")
;#line 23: /entity/buildings/castle/extenders/treasures_generator.inc BEGIN
{"TreasuresGenerator"
        {PerDay
                "money" 50        ;每日提供的税金
        }
}
;#line 23: /entity/buildings/castle/extenders/treasures_generator.inc END


;#line 26:         (include "extenders/spawner_extender.inc")
;#line 26: /entity/buildings/castle/extenders/spawner_extender.inc BEGIN
{"spawner_extender"        ;自动产生的建筑和单位
        {global_spawn_progs "peasant_house_spawner1 peasant_house_spawner2 peasant_house2_spawner3 peasant_house_spawner4 peasant_house2_spawner5 peasant_mill_spawner6 peasant_mill_spawner7 grave_yard sewers_spawner1 sewers_spawner2 sewers_spawner3 sewers_spawner4 sewers_spawner5 sewers_spawner6 taxer_spawner1 taxer_spawner2 taxer_spawner3 guard_spawner1 guard_spawner2 guard_spawner3 peasant_spawner"}
}


;#line 26: /entity/buildings/castle/extenders/spawner_extender.inc END

        {"FogVisor" {radius 50}}        ;建筑的视野
        




三、\resource\gameData
数据部分二

1.  \resource\gameData\inventions\inventions.graphml
定义各个建筑内可升级的项目
以市场上的血瓶为例

Building=market;         ;建筑
Time = 15;         ;升级时间
Building Level=1;</y:AttributeLabel>
            <y:MethodLabel/>
          </y:UML>
        </y:UMLClassNode>
      </data>
      <data key="d1"/>
    </node>
    <node id="n10">                ;估计为项目代码
      <data key="d0">
        <y:UMLClassNode>
          <y:Geometry height="146.0" width="177.0" x="2560.13279564611" y="116.22777022776273"/>
          <y:Fill color="#008000" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" f f f hasBackgroundColor="false" hasLineColor="false" height="19.92626953125" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="89.0" x="44.0" y="3.0">Health potion</y:NodeLabel>
          <y:UML clipC c omitDetails="false" stereotype="" use3DEffect="true">
            <y:AttributeLabel>Cost money=150;         ;升级花费



2.  \resource\gameData\magic\spells.xml
定义国家法术的基本属性
以治疗法术为例

                <spell name="magic_heal" cost_money="250" ;花费的金币 icon="magic_heal" ;图标 player_spell_gfx="heal" ;法术视觉效果>
                        <conditions target="friend" ;目标判断(敌/友)area="0" ;有效区域 culldownTime="1" ;冷却时间/>
                        <s_invention>magic_heal</s_invention>
                        <fliter> ;对象判断
                                <s_elem>unit</s_elem>  ;适用于单个单位
                        </fliter>
                        <Blocks>
                                <HealBlock> ;法术效果(治疗,杀伤等)
                                        <f_strength>300</f_strength>  ;法术效力(治疗效果)
                                </HealBlock>
                        </Blocks>
                </spell>



3.  \resource\gameData\spawn\global_spawn_settings.set
定义建筑或单位自动的产生

以老鼠与下水道为例

{"rat"  ;老鼠
        {"spawn type" units}  ;产生的类型
        {raw beast_rat}
        {Nationality Same}
        {level 0}  ;等级
        {"AI task"
                {task none}  ;生成后默认分派的任务
        }
        {postspawn}
        {postspawn_i 1}
        {gold 0}   ;产出需消耗的金币
        {count "1 2"}   ;每次的产量(1-2)
        {"spawn time" 60}  生成的间隔
        {"max count" 2}  ;每次生成的上限
}


{"sewers_spawner2"  ;第2个下水道
        {"spawn type" buildings}
        {Prerequsities_list city_value}
        {Prerequsities
                {city_value
                        {Min_city_summ 3}        ;生成所需的城市规模
                        {Max_city_summ 999}
                }
        }
        {raw sewers_l1}
        {"Rand turn" 50}
        {Nationality Enemy}
        {Remoutness 10}
        {gold 0}
        {count "1 1"}
        {"spawn time" 20}
        {"max count" 1}
}


4.  \resource\gameData\units\ask.xml
定义了各单位行动时触发语音的概率
以猎人为例

                <hunter>
                        <hero>
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#CLASS_HUNTERSOUND_ASK</s_val0>
                        </hero>
                        <fight>        ;战斗
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#ATTACK_HUNTERSOUND_ASK</s_val0>
                        </fight>
                        <level_up>         ;升级
                                <f_prob>0.6</f_prob>
                                <s_val0>asks/#NEWLEVEL_HUNTERSOUND_ASK</s_val0>
                                <b_use_skip_counter>false</b_use_skip_counter>
                        </level_up>
                        <pay_duty>         ;付款
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#PAYDUTY_HUNTERSOUND_ASK</s_val0>
                        </pay_duty>
                        <collect_duty/>     ;收税
                        <help>          ;请求帮助
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#HELP_HUNTERSOUND_ASK</s_val0>
                        </help>
                        <theft/>         ;偷窃
                        <repair/>        ;修理建筑
                        <buying>                ;购物
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#GOODSTUFF_HUNTERSOUND_ASK</s_val0>
                        </buying>
                        <purchase>        ;购物
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#BUY_HUNTERSOUND_ASK</s_val0>
                        </purchase>
                        <go_safety_building_fear>        ;因恐惧逃跑
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#FEAR_HUNTERSOUND_ASK</s_val0>
                        </go_safety_building_fear>
                        <go_safety_building_lazy>        ;回家
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#REST_HUNTERSOUND_ASK</s_val0>
                        </go_safety_building_lazy>
                        <assign_leader>                ;担任领队
                                <f_prob>0.8</f_prob>
                                <s_val0>asks/#LEADER_HUNTERSOUND_ASK</s_val0>
                        </assign_leader>
                        <collect_loot>                ;搜刮宝物
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#GOODSTUFF_HUNTERSOUND_ASK</s_val0>
                        </collect_loot>
                        <search_adventure>        ;主动外出探索
                                <f_prob>0.2</f_prob>
                                <s_val0>asks/#HUNTING_HUNTERSOUND_ASK</s_val0>
                        </search_adventure>
                        <attack_quest>                ;接受攻击任务(旗帜)
                                <f_prob>0.8</f_prob>
                                <s_val0>asks/#ATTACKQUEST_HUNTERSOUND_ASK</s_val0>
                        </attack_quest>
                        <protect_quest>
                                <f_prob>0.6</f_prob>        ;接受防守任务(旗帜)
                                <s_val0>asks/#DEFENCEQUEST_HUNTERSOUND_ASK</s_val0>
                                <f_min_pause>1</f_min_pause>
                                <f_max_pause>3</f_max_pause>
                        </protect_quest>
                        <explore_quest>
                                <f_prob>0.8</f_prob>        ;接受探索任务(旗帜)
                                <s_val0>asks/#EXPLOREQUEST_HUNTERSOUND_ASK</s_val0>
                                <f_min_pause>1</f_min_pause>
                                <f_max_pause>3</f_max_pause>
                        </explore_quest>
                        <undergo_treatment>       ;接受治疗
                                <f_prob>0.5</f_prob>
                                <s_val0>asks/#REST_HUNTERSOUND_ASK</s_val0>
                        </undergo_treatment>
                </hunter>


5.  \resource\gameData\units\perks.xml
定义了单位技能的属性

        <Perk>
                <s_name>state_rogue_poison</s_name>        ;盗贼的涂毒
                <f_liveTime>50</f_liveTime>        ;可能是持续时间
                <f_period>1</f_period>                ;可能用于判断是否为永久性作用
                <Blocks>
                        <s_type>HealthChange</s_type>        ;效用
                        <f_value>-5</f_value>                ;具体数值
                </Blocks>
                <Blocks>
                        <s_type>FX</s_type>
                        <s_headFX>state_poison</s_headFX>                ;视觉效果
                </Blocks>
        </Perk>


6.  \resource\gameData\units\rpg_params.xml
定义了英雄的基本属性

以战士为例
                <Params>
                        <s_type>hero_warrior</s_type>
                        <f_strength>14</f_strength>                ;力量
                        <f_agility>6</f_agility>                ;敏捷
                        <f_intellect>5</f_intellect>                ;智力
                        <f_stamina>15</f_stamina>                ;耐力
                        <f_maxHealth>12</f_maxHealth>        ;生命
                        <f_dps_hth>5</f_dps_hth>                ;基本攻击力(每秒)
                        <f_defence_hth>20</f_defence_hth>                ;近战防御
                        <f_defence_range>10</f_defence_range>        ;远程防御
                        <f_defence_magic>0</f_defence_magic>        ;魔法防御
                        <Distance>                                                       ;攻击或技能的有效距离(射程)
                                <f_h2hDa>3</f_h2hDa>
                                <f_h2hDe>4</f_h2hDe>
                                <f_dstDa>12</f_dstDa>
                                <f_dstDe>15</f_dstDe>
                        </Distance>
                        <Angle>
                                <f_h2hDa>10</f_h2hDa>
                                <f_h2hDe>15</f_h2hDe>
                                <f_dstDa>10</f_dstDa>
                                <f_dstDe>15</f_dstDe>
                        </Angle>
                        <AIParams>
                                <SearchAdventureTask>
                                        <f_minDistance>8</f_minDistance>
                                        <f_maxDistance>12</f_maxDistance>
                                </SearchAdventureTask>
                        </AIParams>
                </Params>



7.  \resource\gameData\units\unit_actions.xml
定义基本攻击方式和技能施放

如牧师的治疗
        <Action>
                <s_name>cleric_heal</s_name>
                <s_alignment>help</s_alignment>        ;技能用途(攻击辅助等)
                <s_type>heal</s_type>                ;类型(伤害或治疗等)
                <s_used_skill>magic</s_used_skill>        ;基本攻击方式(近战/远程/魔法)
                <f_skill_mod>6.0</f_skill_mod>        ;倍数
                <b_ranged>true</b_ranged>                ;判断是否为远程
                <f_missile_velocity>50</f_missile_velocity>        ;远程投射物的速度
                <f_mana_cost>15</f_mana_cost>        ;消耗的魔法
                <s_location>target</s_location>
                <Effects/>
                <Target>
                        <Group>
                                <s_type>ally_unit</s_type>                ;目标判断
                        </Group>
                </Target>
                <Units>
                        <s_name>hero_cleric</s_name>        ;所属单位
                </Units>
        </Action>

另,守卫的基本攻击

        <Action>
                <s_name>tower_guard_attack</s_name>
                <s_alignment>harm</s_alignment>
                <s_type>attack</s_type>
                <s_used_skill>missile</s_used_skill>
                <b_ranged>true</b_ranged>
                <f_cool_down>1.5</f_cool_down>        ;冷却时间(攻击频率)
                <s_location>target</s_location>
                <Effects/>
                <Target>
                        <Group>
                                <s_type>enemy_unit</s_type>
                                <s_type>enemy_building</s_type>
                        </Group>
                </Target>
        </Action>




8.  \resource\gameData\units\unit_decour.xml
定义了英雄的基本装备

如战士用剑第二级
                        <Weapon>
                                <s_name>hero_warrior_sword_02</s_name>
                                <f_cost>30</f_cost>        ;消费
                                <f_timeDiff>1</f_timeDiff>
                                <s_soundtype>metal_light</s_soundtype>
                                <s_gui_name>img_sell_swords_1</s_gui_name>
                                <s_gui_name_loc>swords_1</s_gui_name_loc>
                                <Params>
                                        <f_dps_hth>4</f_dps_hth>                ;杀伤附加值(每秒)
                                </Params>





三、\resource\set
数据部分三

1. \resource\set\inventory\bottles.set
定义了药瓶的基本属性
{bottle_wrap {bottle_type "HealthPotion"}        ;血瓶
        {concrete_bottle {bottle_base {inventory_base {active 0}
                                {effectorparams
                                        {dps "" "" ""}
                                        {defence "" "" ""}
                                }
                                {editorname "healthpotion_0"}
                        }
                        {cost "money" 5                ;售价
                                "wood" 0
                        }
                }
                {effect 50}        ;效力
        }
}
{bottle_wrap {bottle_type "ManaPotion"}        ;魔法瓶
        {concrete_bottle {bottle_base {inventory_base {active 0}
                                {effectorparams
                                        {dps "" "" ""}
                                        {defence "" "" ""}
                                }
                                {editorname "manapotion_1"}
                        }
                        {cost "money" 5                ;售价
                                "wood" 0
                        }
                }
                {effect 25}        ;效力
        }
}


2.  \resource\set\trading\shops.set
定义了建筑与单位的基本属性

以市场为例
                {"market"
                        {enabled}
                        {Cost
                                {money}
                                {"count money" 500}        ;造价
                        }
                        {Entity market}
                        {"Max count" 1}                ;建造数量上限
                        {"Max upgrade" 3}                ;可升级次数
                        {Prerequesities                ;建造的条件
                                {gold 0}
                                {"heroes count" 0}
                        }
                        {"Upgrades prerequsity"        ;升级的条件
                                {"1"
                                        {buildings castle_2}
                                }
                                {"2"
                                        {buildings castle_3}
                                }
                        }
                }
另以战士为例
{"guild_warrior"
        {entity_id guild_warrior}
        {units
                {"hero_warrior"
                        {enabled}
                        {Cost
                                {money}
                                {"count money" 200}        ;训练所需费用
                        }
                        {Entity hero_warrior}
                        {"Max count" 3}                ;每个工会能训练的人数上限
                        {"Production time" 10}        ;训练所需时间
                }
        }

[ 本帖最后由 Undine 于 2009-9-21 10:37 编辑 ]
已有 1 人评分金钱 收起 理由
284663882 + 30 + 2 原创内容,值得鼓励!

总评分: 金钱 + 30  + 2   查看全部评分

使用道具 举报

❀ Transparent Soul ❀
游侠资深版主
★★★★★★★

版主勋章资深版主勋章勤劳之证

帖子
2955
精华
1
积分
1992
金钱
9525
荣誉
31
人气
23
评议
7

沙发
发表于 2009-9-19 18:03:25 |只看该作者
很有帮助,有待慢慢研究。

使用道具 举报

帖子
1517
精华
0
积分
759
金钱
9188
荣誉
0
人气
3
评议
0
板凳
发表于 2009-9-19 18:16:40 |只看该作者
技术贴。
虽然看不懂
还是感谢楼主分享。
顶呀~

你有一种方法,我有一种方法,交流以后就成为两种方法。

欢迎各种交流^^

使用道具 举报

人类 魔法船乘客

帖子
802
精华
0
积分
421
金钱
12479
荣誉
2
人气
0
评议
0
地板
发表于 2009-9-19 18:57:28 |只看该作者
楼主有没有研究出领主招募数量的文件是哪个?能突破3个就好了。要是有的话,麻烦你分享下!

使用道具 举报

帖子
1517
精华
0
积分
759
金钱
9188
荣誉
0
人气
3
评议
0
5#
发表于 2009-9-19 19:15:56 |只看该作者
原帖由 zerg1213 于 2009-9-19 18:57 发表
楼主有没有研究出领主招募数量的文件是哪个?能突破3个就好了。要是有的话,麻烦你分享下!


用winrar打开resource\resource.pak

resource.pak\set\trading\
里面的shops.set

用记事本打开它
搜索"Max count" 10和"Max count" 5 (注意对应的兵种)
改为自己希望的数量,再保存

这个修改是来自隔壁的会员SUWEI0206。此为转载

你有一种方法,我有一种方法,交流以后就成为两种方法。

欢迎各种交流^^

使用道具 举报

天邈汉化组翻译【中级】

游侠荣誉会员勋章

帖子
9655
精华
6
积分
6581
金钱
9224
荣誉
55
人气
11
评议
0
6#
发表于 2009-9-19 19:56:42 |只看该作者

回复 #4 zerg1213 的帖子

见最后部分
{"Max count" 3}                ;每个工会能训练的人数上限
领主同理

使用道具 举报

帖子
180
精华
0
积分
91
金钱
398
荣誉
0
人气
0
评议
0
7#
发表于 2009-9-19 20:12:43 |只看该作者
厉害,谁做个修改器算了。

.............

使用道具 举报

帖子
987
精华
0
积分
505
金钱
5298
荣誉
1
人气
12
评议
0
8#
发表于 2009-9-19 21:26:43 |只看该作者
强帖     感觉游戏虽然相比原作改动太少  总体感觉还是很好的

使用道具 举报

帖子
3069
精华
0
积分
1545
金钱
6174
荣誉
1
人气
1
评议
0
9#
发表于 2009-9-19 22:23:02 |只看该作者
hao dong xi~~~~~~~~~~~~~~~~~

使用道具 举报

帖子
146
精华
0
积分
73
金钱
789
荣誉
0
人气
0
评议
0
10#
发表于 2009-9-19 22:44:00 |只看该作者
原帖由 Undine 于 2009-9-19 19:56 发表
见最后部分
{"Max count" 3}                ;每个工会能训练的人数上限
领主同理


问题是领主不是同理, hall_of_lords里没有max count的设置。

使用道具 举报

帖子
121
精华
0
积分
61
金钱
230
荣誉
0
人气
0
评议
0
11#
发表于 2009-9-19 23:25:05 |只看该作者
问下,怎么修改存档下自己英雄的属性?上面的属性改了的话,电脑也一样是改了的啊

使用道具 举报

帖子
1452
精华
0
积分
729
金钱
3077
荣誉
0
人气
-1
评议
0
12#
发表于 2009-9-19 23:26:06 |只看该作者
呵呵, 期待高手能弄出些有意思的MOD来

使用道具 举报

帖子
1422
精华
0
积分
762
金钱
3981
荣誉
5
人气
0
评议
0
13#
发表于 2009-9-20 00:52:31 |只看该作者
关于“4.  \resource\gameData\units\ask.xml”
我猜那是发生事件时是否播放声音的概率,否则没法解释<hero>、<level_up>、<assign_leader>、<undergo_treatment>等几个条目

使用道具 举报

天邈汉化组翻译【中级】

游侠荣誉会员勋章

帖子
9655
精华
6
积分
6581
金钱
9224
荣誉
55
人气
11
评议
0
14#
发表于 2009-9-20 08:07:14 |只看该作者

回复 #11 minijia 的帖子

不好意思,和专职的东西搞起来了,这个在建筑属性里估计是找不到的
可能在脚本里有定义,找不到很有可能就是程序控制的

使用道具 举报

帖子
267
精华
0
积分
134
金钱
1482
荣誉
0
人气
0
评议
0
15#
发表于 2009-9-20 17:33:13 |只看该作者
希望发个改的一半不要这么BT的文件`````````

使用道具 举报

帖子
163
精华
0
积分
92
金钱
559
荣誉
1
人气
0
评议
0
16#
发表于 2009-9-20 22:01:07 |只看该作者
强呀,估计MOD马上要出来啦。

使用道具 举报

天邈汉化组翻译【中级】

游侠荣誉会员勋章

帖子
9655
精华
6
积分
6581
金钱
9224
荣誉
55
人气
11
评议
0
17#
发表于 2009-9-21 10:37:54 |只看该作者

回复 #19 谁人 的帖子

谢谢纠正         
已在原贴改正

使用道具 举报

帖子
229
精华
0
积分
125
金钱
1796
荣誉
1
人气
0
评议
0
18#
发表于 2009-9-21 12:11:17 |只看该作者
为啥我在解压完文件并更改\resource\resource.pak的名字后便无法进入游戏了.. 一进去就报错

使用道具 举报

天邈汉化组翻译【中级】

游侠荣誉会员勋章

帖子
9655
精华
6
积分
6581
金钱
9224
荣誉
55
人气
11
评议
0
19#
发表于 2009-9-21 12:18:20 |只看该作者

回复 #21 Vol.13 的帖子

1. 确定一下是否解压到当前目录了,注意保持目录结构
2. 试试把原来文件移到其他地方
3. 如果还是不行,把原始文件备份,解出的文件修改后再放回去就可以了,但是要删掉解出来的文件

使用道具 举报

帖子
141
精华
0
积分
71
金钱
430
荣誉
0
人气
0
评议
0
20#
发表于 2009-9-22 11:06:18 |只看该作者
税收什么的好像改了没效果哦。不知道为什么

使用道具 举报

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

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

GMT+8, 2024-4-27 00:11 , Processed in 0.398411 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到