- 好友
 - 1
  
- 在线时间
 - 501 小时
  
- 最后登录
 - 2025-11-2
  
 
 
 
 
扈从 
   
 
- UID
 - 518607
  
- 第纳尔
 - 1290 
  
- 精华
 - 0
  
- 互助
 - 6 
  
- 荣誉
 - 1 
  
- 贡献
 - 10 
  
- 魅力
 - 2 
  
- 注册时间
 - 2011-9-23
  
     
  
  鲜花( 1)   鸡蛋( 0)  
 | 
 
打算用魔球的武器触发器写个特殊效果,通过距离与敌人防御状态模拟近战命中,并通过角色属性来判断是否魅惑成功(基础概率30+进攻方等级+进攻方魅力值)-(防守方等级+防守方智力值) 。 
 
变量0为攻击方 
变量1为敌方(遍历) 
变量2为双方距离 
变量3和变量4为双方party id 
变量5为敌方的troop id 
变量6为攻击方的Team 
变量7-10预留存储攻击方概率变量(比如可以增加俘虏等级之类的继续加权),当前7存储等级,8存储魅力,10存储综合运算后的概率基数(即攻击方概率的和) 
变量11-15预留存储敌方概率变量,当前11存储等级,12存储智力,15存储最终计算后的概率基数(即攻击方-敌方的差) 
变量16存储用于判断概率是否生效的随机数(范围0 - 100,整数型) 
变量20存储agents防守状态,0为未防御,1为闪避,2为格挡 
 
- (store_trigger_param_1,":var_0"),#变量1=攻击方角色
 
 - (agent_get_party_id,":var_3",":var_0"),#变量3=变量1的队伍ID
 
 - (1770,":var_6",":var_0"),#变量6=变量0的队伍
 
 - (assign,":var_10",30),#变量10=30
 
 - (2171,":var_7",":var_0"),#变量7=变量0的等级
 
 - (store_add,":var_10",":var_10",":var_7"),#变量10 = 变量10 + 变量7
 
 - (2172,":var_8",":var_0",3),#变量8 = 变量0的魅力
 
 - (store_add,":var_10",":var_10",":var_8"),#变量10 = 变量10 + 变量8 (即30+等级+魅力)
 
 - (try_for_agents,":var_1"),#遍历所有agents,存入变量1
 
 -     (1712,":var_1"),#确认agents是否激活有效
 
 -     (1704,":var_1"),#确认agents是否为人类
 
 -     (1702,":var_1"),#确认agents是否活着
 
 -     (neg|1706,":var_1"),#确认agents非盟友
 
 -     (agent_get_position,pos2,":var_1"),#获取agents位置,存入pos2
 
 -     (get_distance_between_positions_in_meters,":var_2",pos1,pos2),#获得pos1和pos2之间的距离,单位米
 
 -     (agent_get_party_id,":var_4",":var_1"),#获取agents ID,存入变量4
 
 -     (agent_get_troop_id,":var_5",":var_1"),#获取agents的troop ID,存入变量5
 
 -     (assign,":var_15",":var_10"),#变量15 = 变量10
 
 -     (2171,":var_11",":var_1"),#变量11 = 变量1的等级
 
 -     (store_sub,":var_15",":var_15",":var_11"),#变量15 = 变量15 - 等级
 
 -     (2172,":var_12",":var_1",2),#智力
 
 -     (store_sub,":var_15",":var_15",":var_12"),#变量15 = 变量15 - 智力
 
 -     (store_random_in_range,":var_16",0,100),#在0-100中随机获得一个随机数(整数)
 
 -     (try_begin),
 
 - <font color="#ff0000">        (neq|1507,":var_5"),#确认agents不是英雄(NPC、领主)</font>
 
 -         (neg|gt,":var_2",1),#变量2 即pos1和pos2之间的距离小于等于1 用于判断近战,根据武器长度设置
 
 -         (neg|eq,":var_3",":var_4"),#变量3不等于变量4 即agents和攻击方角色不是一个队伍
 
 -         (1764,":var_20",":var_1"),#获取agents的防守行动,存入变量20,
 
 -         (try_begin),
 
 -             (eq,":var_20",0),#agents未防御
 
 -             (ge,":var_15",":var_16"),#变量15大于等于变量14 变量15为运算后的概率,大于0-100生成的随机数以判断是否触发效果
 
 -             (1771,":var_1",":var_6"),#设置变量1的阵营为变量6 即不同阵营的敌人变为友方阵营
 
 -             (1732,":var_1"),#强制重置agents行为
 
 -             (party_add_prisoners,":var_3",":var_5",1),#将被魅惑的敌人战后当成俘虏
 
 -             (party_remove_members,":var_4",":var_5",1),#将被魅惑的敌人移除原本队伍,防止战后重新开战,即便上一行未能成功加入俘虏名单。
 
 -         (else_try),
 
 -             (eq,":var_20",1),#agents在闪避
 
 -         (else_try),
 
 -             (eq,":var_20",2),#agents在防御
 
 -         (try_end),
 
 -     (try_end),
 
 - (try_end),
 
  复制代码 其中(neq|1507,":var_5"),也就是troop_is_hero无论改是或否都会导致后续代码不生效。 
 
在预想中该代码是预防对方领主或特殊NPC被魅惑并加入我方的代码,返回值按介绍应该是True或False。 
删除该行代码后整段代码都可以正常运行。 
因为泛用性的考虑个人不想给(try_for_agents)加上范围,毕竟许多MOD和mod的更新都可能会导致troop列表的变动,因此来求助神通广大的朋友。 
 |   
 
 
 
 |