骑马与砍杀中文站论坛

标题: 关于火矢的制作的py代码求助 [打印本页]

作者: false幻境    时间: 2023-9-21 14:46
标题: 关于火矢的制作的py代码求助
本人砍砍砍也将近10年,游玩过很多优秀的mod,上大学之后,玩了砍二,却感觉没有战团的感觉,也许是闲得无聊,决定自己整合做一个小mod,现在正在想怎么制作火矢,遇上了困难,我参考了帖子(没有挖坟)

【魔球教程】制作火箭 - 单机综合讨论区(原版/战团/火与剑) - 骑马与砍杀中文站论坛 - Powered by Discuz! (mountblade.com.cn)
一方面过于久远没有了图,另一方面,本人不用魔球,所以看了一下,觉得本贴的核心实际上是在箭矢射中时添加一个触发器,在该地方生成火焰的粒子效果。如果想要路径上有火焰,需要额外导入模型,比较复杂,因此我参考了火把(torch)的代码:

["torch",         "Torch", [("club",0)], itp_type_one_handed_wpn|itp_primary, itc_scimitar, 11 , weight(2.5)|difficulty(0)|spd_rtng(95) | weapon_length(95)|swing_damage(11 , blunt) | thrust_damage(0 ,  pierce),imodbits_none,
[(ti_on_init_item, [(set_position_delta,10,60,10),(particle_system_add_new, "psys_torch_fire"),(particle_system_add_new, "psys_torch_smoke"),(set_current_color,150, 130, 70),(add_point_light, 10, 60)])]],

其中[(ti_on_init_item, [(set_position_delta,10,60,10),(particle_system_add_new, "psys_torch_fire"),(particle_system_add_new, "psys_torch_smoke"),(set_current_color,150, 130, 70),(add_point_light, 10, 60)])]这个代码的含义就是一此物品为参考在10,60,10的位置添加fire和smoke的粒子效果,因此,对于其他的item我们同样可以这样操作,复制粘贴,改改参数,很轻松就可以做出火焰剑的效果,但是把他搞到了arrow(箭矢)上

["fire_arrows_100_amount","Practice fire Arrows", [("arrow",0),("flying_missile",ixmesh_flying_ammo),("quiver", ixmesh_carry)], itp_type_arrows, itcf_carry_quiver_back, 10000,weight(1.5)|weapon_length(95)|max_ammo(100),imodbits_missile,[(ti_on_init_item,[(set_position_delta,0,0,0),(particle_system_add_new, "psys_arrow_fire"),(particle_system_add_new, "psys_torch_smoke"),(set_current_color,150, 130, 70),(add_point_light, 10, 30)])]],
########################## MOD things END###############

就没有任何的效果,如果 this item的主要是箭囊,照例即使射出去的箭矢没火焰,箭囊也应该有效果,但是实际上没有任何效果,求教各位大佬


作者: 龙静颜    时间: 2023-9-21 19:52
wse2里有个用于投射物的触发器,ti_on_init_missile。但是原版没有,需要另辟蹊径
作者: 武安apk43    时间: 2023-9-23 20:53
本帖最后由 武安apk43 于 2023-9-23 22:21 编辑

-------------------------------------------
作者: 武安apk43    时间: 2023-9-23 21:00
本帖最后由 武安apk43 于 2023-9-23 22:13 编辑

ti_on_init_missile和ti_on_missile_hit, 火箭飞行时的火焰效果是改了模型
作者: false幻境    时间: 2023-9-23 22:12
武安apk43 发表于 2023-9-23 21:00
ti_on_init_missile和ti_on_missile_hit

我没有使用wse2,所以我只有missile hit的触发器,没有init的触发器
作者: 武安apk43    时间: 2023-9-23 22:16
本帖最后由 武安apk43 于 2023-9-23 22:19 编辑
false幻境 发表于 2023-9-23 22:12
我没有使用wse2,所以我只有missile hit的触发器,没有init的触发器

飞行要改箭矢模型的,如果要随时切换开关火焰,可以参考PBOD里的:[spoiler= ]

  1. ("cf_agent_set_firearrow",
  2.    [
  3.     (store_script_param_1, ":agent"),
  4.     (store_script_param_2, ":action"),
  5.   
  6.     (agent_get_horse, reg0, ":agent"),
  7.         (le, reg0, 0),
  8.         (agent_get_wielded_item, ":bow", ":agent"),
  9.         (gt, ":bow", itm_no_item),
  10.         (item_get_type, reg0, ":bow"),
  11.         (eq, reg0, itp_type_bow),
  12.         (agent_get_ammo, reg0, ":agent", 1),
  13.         (gt, reg0, 0),

  14.         (agent_get_wielded_item_slot_no, ":ek_slot", ":agent"),
  15.         (try_begin),
  16.                 (eq, ":action", begin),
  17.                 #(agent_set_item_slot, ":agent", ":ek_slot", ":bow", imod_bent), #decrease speed of bow for fire arrows
  18.                 (agent_set_item_slot_modifier, ":agent", ":ek_slot", imod_bent),##Wuan
  19.         (else_try),
  20.                 (agent_get_troop_id, ":troop", ":agent"),
  21.                 (troop_is_hero, ":troop"),
  22.                 (troop_has_item_equipped, ":troop", ":bow"),
  23.                 (assign, reg0, -1),
  24.                 (try_for_range, ":i", 0, ek_head),
  25.                         (troop_get_inventory_slot, reg0, ":troop", ":i"),
  26.                         (eq, reg0, ":bow"),
  27.                         (troop_get_inventory_slot_modifier, reg0, ":troop", ":i"),
  28.                         (break_loop),
  29.                 (try_end),
  30.                 (neq, reg0, -1),
  31.                 #(agent_set_item_slot, ":agent", ":ek_slot", ":bow", reg0), #return to normal
  32.                 (agent_set_item_slot_modifier, ":agent", ":ek_slot", reg0),##Wuan
  33.         (else_try), #not hero
  34.                 #(agent_set_item_slot, ":agent", ":ek_slot", ":bow", 0), #return to no modifier
  35.                 (agent_set_item_slot_modifier, ":agent", ":ek_slot", 0),##Wuan
  36.         (try_end),
  37.         (try_for_range, ":ek_slot", 0, ek_head),
  38.                 (agent_get_item_slot, ":arrows", ":agent", ":ek_slot"),
  39.                 (gt, ":arrows", itm_no_item),
  40.                 (item_get_type, reg0, ":arrows"),
  41.                 (eq, reg0, itp_type_arrows),
  42.                
  43.                 (try_begin),
  44.                         (eq, ":action", begin),
  45.                         (store_sub, reg0, ":arrows", arrows_begin),
  46.             (store_add, ":new_arrows", reg0, firearrows_begin),
  47.                 (else_try),
  48.                         (store_sub, reg0, ":arrows", firearrows_begin),
  49.             (store_add, ":new_arrows", reg0, arrows_begin),
  50.                 (try_end),

  51.                 (agent_get_item_slot_modifier, ":imod", ":agent", ":ek_slot"),
  52.         ##Wuan Fix
  53.                 #(agent_get_item_slot_ammo, ":amount", ":agent", ":ek_slot"),
  54.         #(agent_set_item_slot, ":agent", ":ek_slot", ":new_arrows", ":imod"),
  55.                 (agent_get_ammo_for_slot, ":amount", ":agent", ":ek_slot"),
  56.         (agent_unequip_item, ":agent", ":arrows", ":ek_slot"),
  57.         (agent_equip_item, ":agent", ":new_arrows", ":ek_slot", ":imod"),
  58.         ##Wuan Fix
  59.                 (agent_set_item_slot_ammo, ":agent", ":ek_slot", ":amount"),#WSE
  60.         (try_end),        
  61.    ]),
复制代码
[/spoiler]

这里很多wse的op,不用也可以实现,就是麻烦点。还有modifier这个必须wse
作者: false幻境    时间: 2023-9-23 22:19
武安apk43 发表于 2023-9-23 22:16
飞行要改箭矢模型的,如果要随时切换开关火焰,可以参考PBOD里的:

ok,我在远古帖子找到该模型,谢谢你的控制选项

作者: false幻境    时间: 2023-9-23 22:46
武安apk43 发表于 2023-9-23 22:16
飞行要改箭矢模型的,如果要随时切换开关火焰,可以参考PBOD里的:

这里很多wse的op,不用也可以实现,就 ...

我刚才尝试了使用burst的函数,但是很不幸,它产生了恶性的bug,你无法点击菜单的任何选项,否则就会闪退
作者: 武安apk43    时间: 2023-9-23 23:39
本帖最后由 武安apk43 于 2023-9-24 10:31 编辑
false幻境 发表于 2023-9-23 22:46
我刚才尝试了使用burst的函数,但是很不幸,它产生了恶性的bug,你无法点击菜单的任何选项,否则就会闪退 ...

burst你参考魔戒弩炮点火的代码


  1. ballista_missile_illumination = (0, 0, 0,     [(eq,"$ballista_fire",1)],                               ###### missile illumination
  2.             [(scene_prop_get_instance,":missile_instance", "spr_ballista_missile", "$missile_count"),
  3.              (prop_instance_get_position,pos1,":missile_instance"),
  4.              (position_move_y,pos1,-100),
  5.              (particle_system_burst, "psys_torch_fire",pos1,10),
  6. #             (particle_system_burst, "psys_torch_smoke",pos1,6),
  7.              (particle_system_burst, "psys_torch_fire_sparks",pos1,7),
  8.              (eq,"$missile_flying",1),
  9.                 (prop_instance_get_position,pos1,"$missile_flying_instance"),
  10.                 (position_move_y,pos1,-100),
  11.                 (particle_system_burst, "psys_torch_fire",pos1,10),
  12. #                (particle_system_burst, "psys_torch_smoke",pos1,10),
  13.                 (particle_system_burst, "psys_torch_fire_sparks",pos1,10)])
复制代码







欢迎光临 骑马与砍杀中文站论坛 (https://bbs.mountblade.com.cn/) Powered by Discuz! X3.4