骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买霸主CDKEY 购买战帆CDKEY
查看: 9326|回复: 22

[功能与代码] 用触发器做的名将系统

[复制链接]

224

主题

6034

回帖

2982

积分

男爵[离任版主]

Rank: 5Rank: 5Rank: 5

UID
169987
第纳尔
15231
精华
1
互助
101
荣誉
50
贡献
1605
魅力
252
注册时间
2009-11-28

元老骑士勋章汉匈决战正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之奉献勋章骑士美德之高贵勋章骑砍中文站微博会员勋章

鲜花(1473) 鸡蛋(56)
发表于 2016-1-18 09:53:10 | 显示全部楼层
本帖最后由 蛋清 于 2016-1-18 10:09 编辑

try begin 可以用else try进行循环判定。还有,用物品攻击作为触发的话,一旦将领换武器就直接失效。为何不用ti on agent hit
另外,获取party不如获取team,因为在战场上party的影响很小,都是通过team来甄别敌我

待会儿用电脑看能不能帮阁下优化一下

224

主题

6034

回帖

2982

积分

男爵[离任版主]

Rank: 5Rank: 5Rank: 5

UID
169987
第纳尔
15231
精华
1
互助
101
荣誉
50
贡献
1605
魅力
252
注册时间
2009-11-28

元老骑士勋章汉匈决战正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之奉献勋章骑士美德之高贵勋章骑砍中文站微博会员勋章

鲜花(1473) 鸡蛋(56)
发表于 2016-1-18 11:17:41 | 显示全部楼层
本帖最后由 蛋清 于 2016-1-18 11:38 编辑
  1. (store_trigger_param_1,":var_0"),
  2. (agent_get_team, ":var_3", ":var_0"),
  3. (try_for_agents,":var_1"),
  4.     (agent_get_position,pos2,":var_1"),
  5.     (get_distance_between_positions,":var_2",pos1,pos2),
  6.     (agent_get_team, ":var_4", ":var_1"),
  7.     (store_random_in_range,":var_5",0,10),
  8.     (agent_get_troop_id,":var_6",":var_0"),
  9.     (try_begin),
  10.         (is_between,":var_5",0,1),#触发几率1是10%,2是20%
  11.         (eq,":var_6","trp_knight_2_1"),
  12.         (neg|gt,":var_2",500),#触发距离500就是方圆10米
  13.         (neg|eq,":var_3",":var_4"),
  14.         (agent_deliver_damage_to_agent,":var_0",":var_1",45),#45是范围伤害数值
  15.         (play_sound,"snd_guanerge"),#播放声音,比如特定人物张飞,可以在这播放录制的张飞的声音,比如燕人张翼德在此
  16.    (else_try),
  17.         (is_between,":var_5",0,1),#触发几率1是10%,2是20%
  18.         (eq,":var_6","trp_knight_2_2"),
  19.         (neg|gt,":var_2",500),#触发距离500就是方圆10米
  20.         (neg|eq,":var_3",":var_4"),
  21.         (agent_deliver_damage_to_agent,":var_0",":var_1",55),#55是范围伤害数值可以设置不同人不同范围和不同伤害数值
  22.         (play_sound,"snd_zhangfei"),#播放声音,以下都一样,看你想设定几个人
  23.    (else_try),
  24.         (is_between,":var_5",0,1),
  25.         (eq,":var_6","trp_knight_2_3"),
  26.         (neg|gt,":var_2",500),
  27.         (neg|eq,":var_3",":var_4"),
  28.         (agent_deliver_damage_to_agent,":var_0",":var_1",50),
  29.         (play_sound,"snd_zhaoyun"),
  30.   (else_try),
  31.         (is_between,":var_5",0,1),
  32.         (eq,":var_6","trp_knight_2_4"),
  33.         (neg|gt,":var_2",500),
  34.         (neg|eq,":var_3",":var_4"),
  35.         (agent_deliver_damage_to_agent,":var_0",":var_1",40),
  36.         (play_sound,"snd_machao"),
  37.    (else_try),
  38.         (is_between,":var_5",0,2),
  39.         (eq,":var_6","trp_kingdom_10_lord"),
  40.         (neg|gt,":var_2",600),
  41.         (neg|eq,":var_3",":var_4"),
  42.         (agent_deliver_damage_to_agent,":var_0",":var_1",60),
  43.         (play_sound,"snd_lvbu"),
  44.     (try_end),
  45. (try_end),
复制代码
其实用sys语言也不见得有多难,推荐还是学习一下sys,免得被魔球的功能给局限了,这是我随意改的一个用在mt里的sys码,阁下可以参照一下(排版在粘贴的时候出了点问题。。):
  1. (ti_on_agent_hit, 0, 0, [],
  2. [
  3. (store_trigger_param_2, ":agent"),
  4. (copy_position, pos11, pos0),
  5. (gt,":agent",-1),
  6. (agent_is_human,":agent"),
  7. (agent_get_troop_id, ":troop", ":agent"),
  8. (agent_get_team, ":team1", ":agent"),
  9. (try_for_agents,":damaged"),
  10.     (gt,":damaged",-1),
  11.    (agent_is_alive,":damaged"),
  12.     (agent_get_position,pos12,":damaged"),
  13.     (get_distance_between_positions,":dist",pos11,pos12),
  14.     (agent_get_team, ":team2", ":damaged"),
  15.     (store_random_in_range,":val",0,10),
  16.     (agent_get_troop_id,":troop",":agent"),
  17.         (neq,":team1",":team2"),
  18.     (try_begin),
  19.         (is_between,":val",0,1),#触发几率1是10%,2是20%
  20.         (eq,":troop","trp_knight_2_1"),#特定人物1,也就是说这个人拿了这件武器会触发这个效果,其他人不行
  21.         (neg|gt,":dist",500),#触发距离500就是方圆10米
  22.         (agent_deliver_damage_to_agent,":agent",":damaged",45),#45是范围伤害数值
  23.             (agent_play_sound, ":agent", "snd_guanerge"),#播放声音,比如特定人物张飞,可以在这播放录制的张飞的声音,比如燕人张翼德在此
  24.   (else_try),
  25.         (is_between,":val",0,1),#触发几率1是10%,2是20%
  26.         (eq,":troop","trp_knight_2_2"),#特定人物2,也就是说这个人拿了这件武器会触发这个效果,其他人不行
  27.         (neg|gt,":dist",500),#触发距离500就是方圆10米
  28.         (agent_deliver_damage_to_agent,":agent",":damaged",55),#55是范围伤害数值可以设置不同人不同范围和不同伤害数值
  29.                 (agent_play_sound, ":agent", "snd_zhangfei"),#播放声音,以下都一样,看你想设定几个人
  30.    (else_try),
  31.         (is_between,":val",0,1),
  32.         (eq,":troop","trp_knight_2_3"),
  33.         (neg|gt,":dist",500),
  34.         (agent_deliver_damage_to_agent,":agent",":damaged",50),
  35.                 (agent_play_sound, ":agent", "snd_zhaoyun"),
  36.   (else_try),
  37.         (is_between,":val",0,1),
  38.         (eq,":troop","trp_knight_2_4"),
  39.         (neg|gt,":dist",500),
  40.         (agent_deliver_damage_to_agent,":agent",":damaged",40),
  41.                 (agent_play_sound, ":agent", "snd_machao"),
  42.    (else_try),
  43.         (is_between,":val",0,2),
  44.         (eq,":troop","trp_kingdom_10_lord"),
  45.         (neg|gt,":dist",600),
  46.         (agent_deliver_damage_to_agent,":agent",":damaged",60),
  47.         (agent_play_sound, ":agent", "snd_lvbu"),
  48.    (try_end),
  49. (try_end),
  50. ]),
复制代码

评分

参与人数 1互助 +1 收起 理由
孤独的狼 + 1 乐于助人!

查看全部评分

224

主题

6034

回帖

2982

积分

男爵[离任版主]

Rank: 5Rank: 5Rank: 5

UID
169987
第纳尔
15231
精华
1
互助
101
荣誉
50
贡献
1605
魅力
252
注册时间
2009-11-28

元老骑士勋章汉匈决战正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之奉献勋章骑士美德之高贵勋章骑砍中文站微博会员勋章

鲜花(1473) 鸡蛋(56)
发表于 2016-1-18 16:09:17 | 显示全部楼层
hushuailiner2 发表于 2016-1-18 15:01
魔球也能写这个种代码啊, 我还在苦苦研读 PY呢!  如果魔球也嫩写的话, 魔球能实现的用魔球写,不能实现的 ...

PY无论是在适用范围还是编写自由度还是功能强度还是可读性来讲都是秒杀魔球。唯一的不足就是它有相对于魔球相当庞大的代码体系所以才看上去很难。实际上看懂了R大全部教程和MOD资料区的实例之后,基本就能读通所有sys文件了

224

主题

6034

回帖

2982

积分

男爵[离任版主]

Rank: 5Rank: 5Rank: 5

UID
169987
第纳尔
15231
精华
1
互助
101
荣誉
50
贡献
1605
魅力
252
注册时间
2009-11-28

元老骑士勋章汉匈决战正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之奉献勋章骑士美德之高贵勋章骑砍中文站微博会员勋章

鲜花(1473) 鸡蛋(56)
发表于 2016-1-18 16:51:24 | 显示全部楼层
铁加曼—Asterl 发表于 2016-1-18 16:45
第一次看这PY语句,不知道这个触发怎么用呢,魔球里的触发器好像只能复制粘贴整个触发器,而不能粘贴代 ...

我发的那段PY不是物品触发器,而是单纯的用于战斗场景的mission templater trigger。也就是战场触发器。是在战斗中实时监测或者捕获特殊时刻进行运算的触发器。写进武器里的就看上面那一个魔球伪码的触发器吧

224

主题

6034

回帖

2982

积分

男爵[离任版主]

Rank: 5Rank: 5Rank: 5

UID
169987
第纳尔
15231
精华
1
互助
101
荣誉
50
贡献
1605
魅力
252
注册时间
2009-11-28

元老骑士勋章汉匈决战正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之奉献勋章骑士美德之高贵勋章骑砍中文站微博会员勋章

鲜花(1473) 鸡蛋(56)
发表于 2016-1-18 17:28:36 | 显示全部楼层
铁加曼—Asterl 发表于 2016-1-18 17:07
除了物品有触发,只剩下一个触发器专栏,这里面可以放战场触发器是吗,把你改好的第一段也就是sys上面那段 ...

我发的PY码无法用于魔球。至于上面那个,我也不确定能不能用于魔球,因为我对魔球一窍不通。

224

主题

6034

回帖

2982

积分

男爵[离任版主]

Rank: 5Rank: 5Rank: 5

UID
169987
第纳尔
15231
精华
1
互助
101
荣誉
50
贡献
1605
魅力
252
注册时间
2009-11-28

元老骑士勋章汉匈决战正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之奉献勋章骑士美德之高贵勋章骑砍中文站微博会员勋章

鲜花(1473) 鸡蛋(56)
发表于 2016-1-18 17:43:32 | 显示全部楼层
hushuailiner2 发表于 2016-1-18 17:33
PY的功能是远远大于魔球的, 但是从兵种代码来看,不懂英文的话,还要一个一个的看,兵种装备的是什么盔甲 ...

公允的评价,除非英语盲,否则在PY中新建兵种、修改兵种属性等操作比魔球要简单得多。我承认用魔球用的不多,但是我在1.011时代用过类似的美腿修改器,当时的经验跟现在通过PY操作进行修改的经验比起来,PY的优越性要远大于魔球。当然,英语实在不行的可以参照魔球的中英对译。
至于重复而简单,我不明白阁下说的是哪方面,但是根据我现在的经验来看,无论是对兵种属性的批量修改,还是对物品的批量修改,PY占有绝对优势。比如,如果要提高所有士兵的熟练度,PY只需要在编译代码中进行修改或者在开局加一个触发器即可,而魔球本身既不能修改编译源码,又不能添加高级触发器,只能对物品触发器和大地图触发器进行简单修改。如此一比,PY的优势显露无疑。唯一的不足可能就是难以入门,但是面对可以横扫天下的难以驾驭的将领和一个平庸无为而唯命是从的将领,我更倾向于选择三顾茅庐去请前者。

PS:要讨论PY与魔球我乐于奉陪,但是不希望歪楼。阁下如果还有意向的话可以通过站内短消息与我交流,在这里就不要歪楼了。

224

主题

6034

回帖

2982

积分

男爵[离任版主]

Rank: 5Rank: 5Rank: 5

UID
169987
第纳尔
15231
精华
1
互助
101
荣誉
50
贡献
1605
魅力
252
注册时间
2009-11-28

元老骑士勋章汉匈决战正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之奉献勋章骑士美德之高贵勋章骑砍中文站微博会员勋章

鲜花(1473) 鸡蛋(56)
发表于 2016-1-19 09:39:24 | 显示全部楼层
铁加曼—Asterl 发表于 2016-1-19 00:01
我装好python 2.7了,进的是第一个IDLE,然后进去后怎么跟TXT文档编辑器一样啊,复制你写的第一个进去,然 ...

仔细看完置顶区中文站的制作教程吧

224

主题

6034

回帖

2982

积分

男爵[离任版主]

Rank: 5Rank: 5Rank: 5

UID
169987
第纳尔
15231
精华
1
互助
101
荣誉
50
贡献
1605
魅力
252
注册时间
2009-11-28

元老骑士勋章汉匈决战正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之大无畏勋章[杰出会员高级活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之公正勋章[杰出会员高级财富勋章]骑士美德之奉献勋章骑士美德之高贵勋章骑砍中文站微博会员勋章

鲜花(1473) 鸡蛋(56)
发表于 2016-1-30 14:17:35 | 显示全部楼层
皇家木马骑士 发表于 2016-1-29 12:48
蛋清大大求教育!
我在R大的MOD里面的module_mission_templates.py里面加了一个触发器:
  (4.000000,  ...

你把这个MT触发器列表放进哪个场景里面了
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2025-12-21 19:53 , Processed in 0.107650 second(s), 19 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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