注册 | 登录

游侠NETSHOW论坛





查看: 12295|回复: 19
打印 上一主题 下一主题

[原创] 更新了下载链接!【国王的恩赐:交错世界】自定义兵种MOD教程补全(含新兵种下载) [复制链接]

帖子
45
精华
0
积分
23
金钱
391
荣誉
0
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2010-12-4 17:28:27 |只看该作者 |倒序浏览
      因为制作自定义单位走了不少弯路。。怨念颇多,所以想把自定义兵种的方法补完一下,弯路嘛。。走一次就够多了~~~
                                                                                               以下分5个部分:

                                                                                     1,          新兵简介和附件下载
                                                                                     2,   兵种.atom文件重要部分功能补全
                                                                                     3,详细说说强大的 posthitmaster=
                                                                                     4,              一些常用API
                                                                                     5,         个人的一些经验分享


1,先看看加入的新兵吧




附件:
[/free]
附件说明:
此兵种用于交错世界
1,添加了新兵种“独眼巨精”(设计思路为:防御兼辅助控制型兵种,自认为不会破坏游戏平衡吧 哈哈)
2,开放了训练所5级兵种训练,但考虑平衡性,仅支持把“独眼巨人”训练成“独眼巨精”(主要是为玩家老存档提供获得“独眼巨精”的途径,同时避免开新图没刷出“独眼巨精”没得玩的情况,不喜欢的话可以不用)



3,新建存档或老存档逃跑后有“独眼巨精”加入(方便体验新兵种,同样的,不喜欢可以不要 嘎~~我真啰嗦。。)

“独眼巨精”的特性:肉盾,可治疗和复活,魔法弱点,射击距离6格以上受到30%伤害惩罚
“独眼巨精”的技能:普通攻击有一定几率晕眩,可以击退目标,击退距离与目标等级有关
          使用方法请参见压缩包里的说明文件


      之前有篇帖子“【国王的恩赐:戎装公主】MOD学,兵种MOD方向教程”收录在本区精华索引里,或者百度一下就行,里面很多地方已经说的比较详细了,就不再重复,下面是扩展部分:

2,为方便说明,还是把zcyclop.atom拿出来晒晒的~~顺便把几处重点项强调说明一下~~
main {
  class=chesspiece
  model {
    0=zcyclop.bma
    1=cyclop_death.bma
  }
  cullcat=0
}
arena_params {
  features_label=cpi_zcyclop_feat
  features_hints=shot_header/shot_hint,agedsniper_header/agedsniper_hint,stonefairy_header/stonefairy_hint,no_melee_header/no_melee_hint
  race=neutral
  cost=12000
  level=5
  leadership=1700
  attack=47
  defense=77
  defenseup=17
  initiative=3
  speed=2
  hitpoint=770
  movetype=0
  krit=17
  hitback=1
  hitbackprotect=0
attacks=moveattack,throw,stun //攻击和特技列表,这里列出的是函数名,函数的定义就在下面。PS:关于这条的应用  “【国王的恩赐:戎装公主】MOD学,兵种MOD方向教程”里已经讲的很清楚了,我就不再废话了。
posthitmaster=zcyclop_stun,zcyclop_posthit //每次攻击后调用的脚本函数名,这里是调用lua脚本,函数的定义在某些.lua文件里(比如这里调用的函数就在zcyclop.lua里)。在自定义单位技能方面,个人感觉这里应用起来非常方便,所以下面会详细说明
  features=shot,poison_immunitet //兵种的特性函数调用表,对应着unit_features.lua和addon_unit_features.lua内定义的函数,比如 独眼巨人 不能治疗和复活,就是在这里设置的
  resistances {
    physical=55
    poison=70
    magic=0
    fire=60
astral=30 //星抗性  PS:如果出现在 damage {  }函数中则是 星伤害,比如 damage { astral=1,2 } 星伤害1~2
  }
  moveattack {
    group=1,1
    nonextifenemy=1
    ad_factor=1
    damage {
      physical=35,87
    }
    custom_params {
      stun=33 // posthitmaster=调用的zcyclop_stun函数需要读取的数值,在函数中判断 晕眩 的几率
    }
  }
  stun {
    class=throw
    hinthead=special_zcyclop_potentthrow_head
    hint=special_zcyclop_potentthrow_hint
    reload=3
    distance=100
    penalty=1
    mindist=1
    picture=BA1_Push_
    picture_small=BA1_Push_small.png
    animation=cast/throw/thtarget
    throw=cyclopcast //远程攻击 弹丸 文件,对应同名的.atom文件,比如这里是 cyclopcast.atom (这个文件里可以定义 弹丸 的模型文件、飞行速度还可以加载控制动画效果等等,很强大~)
    framekey=x
    damage {
      physical=60,120
    }
    custom_params {
    fury=1 //posthitmaster=调用的zcyclop_posthit函数需要读取的数值,在函数中判断 是否要执行 击退 效果
    }
  }
  throw {
    class=throw
    group=1,2
    distance=6 //射程定义,单位是格数
    picture=ba1_waterflask_
    picture_small=ba1_waterflask_small.png
    mindist=1
    base_attack=1
    penalty=0.7 //惩罚系数,当目标距离超过 distance定义的数字时,伤害*该系数。
    showdmg=1
    animation=cast/throw/thtarget
    throw=cyclopcast
    framekey=x
    damage {
      physical=35,87
    }
    custom_params {
      stun=33
    }
  }
}

3,好吧,现在来详细说说 posthitmaster= 项的应用:
      posthitmaster=后列出的函数会在攻击后被无条件调用(无条件的意思是:不论是普通攻击还是技能攻击。。所以如果是希望,特定技能攻击才触发的效果需要利用一些变量作为判定条件,比如上面的fury=1 ),多个函数名用逗号隔开,函数实现可以写在任意.lua文件里~~

具体的定义的格式如下:
function 任意函数名(damage,addrage,attacker,receiver,minmax,userdata,hitbacking)
参数表解释:
damage     -- 伤害
addrage    -- 增加的狂怒值
attacker   -- 发动攻击的单位
receiver   -- 攻击的目标单位
minmax     -- 用于某种逻辑判断,具体不详。。使用时照搬格式就好,哈哈
userdata   -- 不详。。
hitbacking -- 反击判断


参数很多,个人感觉常用的就是attacker和receiver吧~我们来举个简单例子直观说明一下:

实现 普通攻击有几率产生击晕效果 的代码

function zcyclop_stun(damage,addrage,attacker,receiver,minmax) //定义函数,函数名就是 posthitmaster= 后接的函数名~~废话。。
if minmax==0  and damage>0 then //minmax的逻辑判断,照搬就好~~

local stun=tonumber(Attack.get_custom_param("stun")) //从调用本函数的原函数的custom_param代码段中读取“stun”的值(这里就是取zcyclop.atom文件  stun {}中的custom_param{}的stun值),赋给stun PS:这个API函数很重要,可以实现.lua和.atom代码的互动,实现更多功能(个人感觉有了它,无所不能。。。)
if stun~=nil then
  local rnd=Game.CurLocRand(1,100) //取1~100的一个随机数
  if rnd<=stun then
   effect_stun_attack(receiver,0,2) //调用effect_stun_attack函数(游戏原有的 晕眩 处理函数,代码在spell_effects.lua文件里)
   return -damage,addrage
  end
end
end
  return damage,addrage
end

总之利用这个接口,大家就尽情发挥想象力吧~~~~

4,列出了游戏的一些API,希望对喜欢自定义兵种的朋友有点帮助:
因为人很懒,有部分API解释做了直接引用。。

Attack类:
Attack.get_target():得到攻击对象的index,index几乎就可以视作是一个对象,下面所有idx开头的参数都可以使用这个index来调用。另外一般来说index=0的对象就是调用函数的那个兵,比如某兵被攻击调用了posthitslave,那么在该函数里index=0的就是被攻击的兵
Attack.cell_adjacent(idx ,dir):返回在dir列表中与idx所在格子相邻的一个格子
Attack.trace (idx , dir):返回dir列表中,从idx的位置向右数的所有格子的总数,是一个数值
Attack.angleto(attacker,receiver):返回攻击者与目标之间的角度,实际就是返回两个格子之间的角度
Attack.aseq_rotate(idx_actor, idx_target):使idx_actor的朝向转向idx_target。
Attack.aseq_time(idx, “x”):等待返回的时间,然后执行后面的代码。
Attack.act_aseq(idx, action):在idx的动作序列里面增加action动作并立即返回,一般与Attack.aseq_time(idx, “x”)连用,以保证视觉效果的逻辑性(程序会有专门的另外线程处理动作,会按照动作序列一个个播放)。
Attack.act_size(idx):返回idx的数量。
Attack.act_totalhp(idx):返回idx的总血量。
Attack.act_get_par(idx, par):返回idx的各种属性(比如par=”initiative”时返回主动性)。
Attack.atom_spawn(idx, t, atom):在t时刻在idx的位置生成一个atom对象(一般用来生成一些特效之类一次性的东西),atom为atom文件名。
Attack.cell_resurrect(idx, hp, t):在t时刻复活idx,hp为复活的血量。
Attack.get_custom_param(par):读取原函数对应的custom_params里的参数,par指定参数名,注意返回值为string类型
Attack.act_del_spell(idx, effect):去除idx的effect状态,effect省略时去除所有状态。
Attack.act_enable_attack(idx, attack, enable):允许/禁止idx的某种特技,attack为特技名,enable为true时允许,false时禁止。
Attack.resort(idx):根据主动性重新排列行动的先后顺序(一般在类似召唤了新兵的场合使用)。

string类,字符串操作
string.format("atom%xxi",d):将%xxi部分替换成d的值添加到atom字符串,xx是一个两位数字,比如01、02、10这类的,表示添加字符的宽度。一般与Attack.atom_spawn(idx, t, atom)联用实现atom文件的特定显示,比如d=1,那么Attack.atom_spawn(idx, t, string.format("zz%02i",d)),就是显示zz01.atom文件。

Game类
Game.GVNum ("talant_",num):修改公主的特定属性值为num,返回值是指定的属性修改后的值。num参数省略时返回指定属性的当前值。公主的属性表示有很多,比如talant_collector_race_human 为1时表示可以训练人族部队,talant_collector_army_level的数值表示可以训练的部队等级,等等。。
Game.Ang2Dir(angle):返回某个角度上的所有格子的列表。类似一个数组啥的
Game.CurLocRand(min, max):在min和max之间产生随机数。

5,最后把自己做自定义兵种的几点经验分享一下:
1,游戏的函数定义都在.lua文件里,因为lua不是wingdows默认支持的文件格式,所以无法查找其内部字段,可以用批量后缀名修改工具全部改成.txt文件,这样通过函数名查找函数代码就方便多了

2,通道注册文件textures.sub,一定要放在data\下才有用,其他地方无法成功注册,会造成贴图显示错误
3,兵种用的图像文件.png,一定要压进.kfs文件中(不一定是游戏原有的.kfs自己建一个也可以,但必须是.kfs文件),不然刚进游戏的读档界面兵种头像会黑掉。。(脑袋想爆了也不晓得啥原因。。)
4,交错世界1.30版本的文件调用顺序貌似是先加载data\再用sessions\orcs\下去覆盖,所以MOD建议放在sessions\orcs\下比较好(只是建议~~)但参见2,条~textures.sub例外还是在data\下才有用。。

                          祝大家玩的开心~对兵种有意见或是补充欢迎提出,谢谢支持~~

附件:
[free]


[ 本帖最后由 hxsgame 于 2010-12-5 10:04 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
471
精华
0
积分
236
金钱
1400
荣誉
0
人气
4
评议
0
沙发
发表于 2010-12-4 18:45:04 |只看该作者
强大啊!就需要乃这样滴神马~
MOD大军需要乃们啊~~感动
显卡:GV-N460OC-1GI CPU:INTEL I5 760 联强版 硬盘:WD 1TB 蓝 主板:GA-H55M-UD2H 机箱:毁灭者K100 电源:安钛克 BP430 PLUS 显示器:飞利浦241E1 键鼠:MK 250 音响:爱国者R201T08 其他:超频3红海

使用道具 举报

帖子
107
精华
0
积分
54
金钱
1982
荣誉
0
人气
0
评议
0
板凳
发表于 2010-12-4 19:02:26 |只看该作者
十分感谢LZ~
希望能继续奉献好DD

使用道具 举报

帖子
299
精华
0
积分
150
金钱
6418
荣誉
0
人气
0
评议
0
地板
发表于 2010-12-4 20:50:00 |只看该作者
[支持]

使用道具 举报

帖子
47648
精华
0
积分
24049
金钱
45797
荣誉
22
人气
46
评议
0
5#
发表于 2010-12-5 04:27:33 |只看该作者
可惜图片全挂了……

使用道具 举报

帖子
75
精华
0
积分
38
金钱
1807
荣誉
0
人气
0
评议
0
6#
发表于 2010-12-5 09:01:37 |只看该作者
需要重开档吗?20202020202020

使用道具 举报

帖子
646
精华
0
积分
393
金钱
999
荣誉
7
人气
0
评议
0
7#
发表于 2010-12-5 09:11:21 |只看该作者

回复 #1 hxsgame 的帖子

好,可以不为找几条龙发愁了。。。

1027227警告说:“兄弟,你有极度灌水的嫌疑了!”“哥们儿你够N的,一晚上刷了那么多回复!不过请仔细阅读版规 三·惩罚制度 的第四项,在此先口头提醒一次!”
leansing回答道“我没有犯'无意义回复'的错误~!”

使用道具 举报

帖子
45
精华
0
积分
23
金钱
391
荣誉
0
人气
0
评议
0
8#
发表于 2010-12-5 09:21:30 |只看该作者
原帖由 toomuchugly 于 2010-12-5 09:01 发表
需要重开档吗?20202020202020



回6L,老存档可以用训练所把 独眼巨人 训练成 独眼巨精,或者逃跑后有加入,但是商店和野外不会出现 独眼巨精

[ 本帖最后由 hxsgame 于 2010-12-5 09:52 编辑 ]

使用道具 举报

帖子
45
精华
0
积分
23
金钱
391
荣誉
0
人气
0
评议
0
9#
发表于 2010-12-5 09:29:17 |只看该作者
原帖由 诸葛用兵 于 2010-12-5 04:27 发表
可惜图片全挂了……


没有吧~~图片看的到呀

使用道具 举报

帖子
45
精华
0
积分
23
金钱
391
荣誉
0
人气
0
评议
0
10#
发表于 2010-12-5 09:51:52 |只看该作者
昨天竟然没看见 上传附件 的选项。。。。
哈哈,这回 附件 正常了,但是图片还是只能引用。。不能上传呀

使用道具 举报

帖子
75
精华
0
积分
38
金钱
1807
荣誉
0
人气
0
评议
0
11#
发表于 2010-12-5 12:13:03 |只看该作者
原帖由 hxsgame 于 2010-12-5 09:21 发表



回6L,老存档可以用训练所把 独眼巨人 训练成 独眼巨精,或者逃跑后有加入,但是商店和野外不会出现 独眼巨精

谢谢,回头玩一下,感谢分享

使用道具 举报

帖子
47648
精华
0
积分
24049
金钱
45797
荣誉
22
人气
46
评议
0
12#
发表于 2010-12-6 02:57:34 |只看该作者
独眼巨精很强大啊~

使用道具 举报

帖子
1
精华
0
积分
0
金钱
31
荣誉
0
人气
0
评议
0
13#
发表于 2010-12-8 14:19:19 |只看该作者
好东西 感谢分享
哦!终于见到传说的地球啊

使用道具 举报

帖子
16
精华
0
积分
8
金钱
178
荣誉
0
人气
0
评议
0
14#
发表于 2011-4-2 19:02:16 |只看该作者
完全看不到图片呀

使用道具 举报

帖子
57
精华
0
积分
29
金钱
1144
荣誉
0
人气
0
评议
0
15#
发表于 2011-6-7 18:42:56 |只看该作者
这个挺不错的吖。。。。

使用道具 举报

帖子
12
精华
0
积分
6
金钱
148
荣誉
0
人气
0
评议
0
16#
发表于 2011-8-20 18:13:52 |只看该作者
谢谢楼主哈哈哈哈哈哈哈

使用道具 举报

帖子
45
精华
0
积分
23
金钱
391
荣誉
0
人气
0
评议
0
17#
发表于 2011-9-10 23:42:46 |只看该作者
感谢楼上两位回帖,哈哈,沉了好久呀~~~

使用道具 举报

帖子
11
精华
0
积分
6
金钱
25
荣誉
0
人气
0
评议
0
18#
发表于 2021-1-21 11:21:07 |只看该作者
好强大!学习了!

使用道具 举报

帖子
11
精华
0
积分
6
金钱
25
荣誉
0
人气
0
评议
0
19#
发表于 2021-1-21 14:49:44 |只看该作者
非常感谢

使用道具 举报

帖子
11
精华
0
积分
6
金钱
25
荣誉
0
人气
0
评议
0
20#
发表于 2021-1-21 15:38:18 |只看该作者
太有用了!学习了,非常感谢

使用道具 举报

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

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

GMT+8, 2025-10-7 14:59 , Processed in 0.430365 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到