让战友们也享受装备奖励的快感^^

字体:        | 上一篇 下一篇 | 打印

空格先前我看过了魔方大侠的这个帖子如何编辑PY代码实现特殊装备或套装附加奖励(就像TLD里的那样,真是受益匪浅,并且利用这种方法实现了许多有趣的效果。感谢魔方的分享!
      在上面的帖子,包括一些有同类奖励效果的mod中,所有的附加奖励都只对玩家有效。而在游戏中,当各种极品装备越攒越多时,玩家往往会把一些不用的极品发给npc们。遗憾的是这些极品装备到npc身上也只是数据相对普通的较好一点,没有附加奖励的效果,极品的成色打了折扣。为了让npc装备极品时能同样获得附加奖励,我改编了一下原来的代码,成功的达到了目的,在这里和大家分享一下。这对于各位高手来说应该是小菜一碟,在下斗胆在此班门弄斧,恳请各位老大多多批评指教!


我就用nativeplus中的“唐刀”举例说明,在moudle_triggers.py中加入三个触发器:

  (0.2, 0, 0.0, [
        (assign,"$troop_equ_trtd",0),  #将$troop_equ_trtd赋值为0,用作表示此时无人装备itm_trtd。
        (party_get_num_companion_stacks, ":num_stacks","p_main_party"), #获得玩家部队的troop堆栈
        (try_for_range, ":i_stack", 0, ":num_stacks"), #将所有堆栈循环一遍
                (party_stack_get_troop_id, ":this_hero","p_main_party",":i_stack"),
                     (this_or_next|eq, ":this_hero", "trp_player"),
                     (is_between, ":this_hero", companions_begin, companions_end), #如果troop是玩家或者hero。“companions_begin, companions_end“包括了native中的四个npc的id.
                (try_begin),
                     (troop_has_item_equipped,":this_hero","itm_trtd"), #如果其装备了itm_trtd,
                     (assign,"$troop_equ_trtd",1), #就将$troop_equ_trtd赋值为1
                (try_end),               
        (try_end),
        (eq,"$troop_equ_trtd",0), #这个条件使得有人装备itm_trtd时该触发器就不会触发。
      ],
      [(assign,"$trtd_equ",0)]), #如果没有人装备itm_trtd,就将$trtd_equ赋值为0


  (0.2, 0, 0.0, [(map_free,0),(eq,"$trtd_equ",0), #如果没有人装备itm_trtd
        (party_get_num_companion_stacks, ":num_stacks","p_main_party"),
        (try_for_range, ":i_stack", 0, ":num_stacks"),
                (party_stack_get_troop_id, ":this_hero","p_main_party",":i_stack"),
                (this_or_next|eq, ":this_hero", "trp_player"),
                (is_between, ":this_hero", companions_begin, companions_end),
                (try_begin),
                     (troop_has_item_equipped,":this_hero","itm_trtd"),#如果有人装备了itm_trtd,
                     (assign,"$trtd_troop", ":this_hero"), #将装备itm_trtd的troop id赋予$trtd_troop
                     (assign,"$troop_equ_trtd",1), #将$troop_equ_trtd赋值为1
                (try_end),               
        (try_end),
        (eq,"$troop_equ_trtd",1), #如果此时有人装备上了itm_trtd,就会触发下面执行块里的内容。
    ],
  [
  (assign,"$trtd_equ",1), #等于1时表示有人装备了itm_trtd
  (assign,"$trtd_add",1), #等于1时表示itm_trtd的附加奖励已经执行
  (troop_raise_attribute,"$trtd_troop",ca_strength,1), #对装备了itm_trtd的$trtd_troop进行奖励
  (troop_raise_attribute,"$trtd_troop",ca_agility,3),
  (troop_raise_proficiency_linear,"$trtd_troop",wpt_one_handed_weapon,30),
  (str_store_troop_name,s59,"$trtd_troop"), #将装备itm_trtd的troop的名字储存在s59里,以便在之后的str_equ_trtd中显示
  (display_message,"str_equ_trtd",0x5555bb),
  (display_message,"str_effect_add_trtd",0x5555bb),
  ]),


  (0.2, 0, 0.0, [
        (party_get_num_companion_stacks, ":num_stacks","p_main_party"),
        (try_for_range, ":i_stack", 0, ":num_stacks"),
           (party_stack_get_troop_id, ":this_hero","p_main_party",":i_stack"),
           (this_or_next|eq, ":this_hero", "trp_player"),
           (is_between, ":this_hero", companions_begin, companions_end),
           (try_begin),
               (troop_has_item_equipped,":this_hero","itm_trtd"), #如果有人装备了itm_trtd,
               (neq,"$trtd_troop", ":this_hero"), #而此时装备itm_trtd的troop发生了变化。这个很重要,因为:this_hero包括玩家和npc,当玩家和npc们交换装备时时间是停止的,所以即使卸下itm_trtd交给了npc,玩家受到的奖励也不会被扣除。npc之间也是如此。
               (assign,"$trtd_equ",0), #则将$trtd_equ赋值为0(和没有人装备itm_trtd时一样)
           (try_end),               
        (try_end),
        (eq,"$trtd_add",1),(eq,"$trtd_equ",0), #同时如果奖励发生过,并且被奖励的troop此时没有装备itm_trtd
                 ],
   [
  (troop_raise_attribute,"$trtd_troop",ca_strength,-1), #则扣除$trtd_troop获得的奖励
  (troop_raise_attribute,"$trtd_troop",ca_agility,-3),
  (troop_raise_proficiency_linear,"$trtd_troop",wpt_one_handed_weapon,-30),
  (assign,"$trtd_add",0), #将trtd_add赋值为0,表示itm_trtd的奖励效果已不存在
  (str_store_troop_name,s59,"$trtd_troop"), #将被扣除奖励的troop的名字储存在s59里,以便在之后的"str_not_equ_trtd"中显示
  (display_message,"str_not_equ_trtd",0x5555bb),
  (display_message,"str_effect_sub_trtd",0x5555bb)     
  ]),

如此一来,就能使队伍中的npc在装备了稀有装备之后,也能获得附加奖励了。经过测试完全没有问题 。

      笨嘴拙舌的比划了半天,希望我把意思讲清楚了^^。在此发出来,希望能够给予喜欢diy的骑友和各位mod作者一点帮助。不知道我如此写法是否过于繁琐,或者还有更为简洁的方法,请各位前辈高人不吝赐教,感激不尽!

[ 本帖最后由 oolonglgx 于 2008-2-4 01:15 编辑 ]

查看全部评论(1) 最新评论

查看全部评论(1)我来说两句

-5 -3 -1 - +1 +3 +5