骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买霸主CDKEY 购买战帆CDKEY
查看: 333|回复: 4

[功能与代码] party_add_xp_to_stack电脑无效?干脆另写个部队单个兵种升级函数

[复制链接]

8

主题

64

回帖

22

积分

随仆

Rank: 1

UID
2557955
第纳尔
134
精华
0
互助
0
荣誉
0
贡献
0
魅力
10
注册时间
2015-7-9
鲜花(1) 鸡蛋(0)
发表于 2026-4-14 16:28:33 | 显示全部楼层 |阅读模式
本帖最后由 afl001 于 2026-4-23 00:30 编辑

party_add_xp_to_stack 这个指令添加在24小时触发的简单触发器,给电脑加经验,好像就读档第一天有效,之后都没反应。其实第一天也不确定是这个指令生效,还是电脑触发了另外的升级条件。
另外add_xp_to_troop这个指令要怎么用?这个指令并没有获取party信息,如何确定经验是加在哪个party中的兵种上的?
————
干脆重新写了个部队单个兵种升级函数,给电脑升级用。在3楼。

8

主题

64

回帖

22

积分

随仆

Rank: 1

UID
2557955
第纳尔
134
精华
0
互助
0
荣誉
0
贡献
0
魅力
10
注册时间
2015-7-9
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2026-4-14 17:56:43 | 显示全部楼层
本帖最后由 afl001 于 2026-4-23 00:27 编辑

party_add_xp_to_stack似乎是只能给玩家部队中具体兵种加经验
add_xp_to_troop 似乎是给英雄单位加经验
party_upgrade_with_xp 是给部队中的兵种随机加经验并升级
不知道有没有理解错

8

主题

64

回帖

22

积分

随仆

Rank: 1

UID
2557955
第纳尔
134
精华
0
互助
0
荣誉
0
贡献
0
魅力
10
注册时间
2015-7-9
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2026-4-18 21:16:15 | 显示全部楼层
本帖最后由 afl001 于 2026-4-22 10:18 编辑

party_add_xp_to_stack 既然对电脑效果存疑,干脆写一条不通过经验,直接按比例直接给电脑部队单个兵种升级用的函数
#(call_script, "script_party_upgrade_stack",arg1,arg2,arg3,arg4),
#arg1=partyID
#arg2=stack序号(非兵种ID)
#arg3=升级比例:1-100
#arg4=升到路线1兵种比例:1-100(路线2兵种为100-这个数;若只有1个路线,此比例无效
#返回
#reg0=升级兵种1
#reg1=升级兵种2
#reg2=升级兵种1人数
#reg3=升级兵种2人数
("party_upgrade_stack",
    [
      (store_script_param, ":party_no", 1),
      (store_script_param, ":stack_no", 2),
      (store_script_param, ":upgrade_ratio", 3),
      (store_script_param, ":path_1_ratio", 4),

      (party_stack_get_troop_id, ":stack_troop", ":party_no", ":stack_no"),
      (party_stack_get_size, ":stack_size", ":party_no", ":stack_no"),
      (store_mul, ":stack_upgrade_num", ":stack_size", ":upgrade_ratio"),
      (val_div, ":stack_upgrade_num", 100),
      (troop_get_upgrade_troop, ":path_1_troop", ":stack_troop", 0),
      (troop_get_upgrade_troop, ":path_2_troop", ":stack_troop", 1),
      (assign, ":return_0", -1),
      (assign, ":return_1", -1),
      (assign, ":return_2", -1),
      (assign, ":return_3", -1),
      (try_begin),
        (gt, ":stack_troop", -1),
        (neg|troop_is_hero, ":stack_troop"),
        (gt, ":stack_upgrade_num", 0),
        (assign, ":upgrade_type", 0),
        (try_begin),
          (gt, ":path_1_troop", 0),
          (le, ":path_2_troop", 0),
          (assign, ":upgrade_type", 1),
        (else_try),
          (le, ":path_1_troop", 0),
          (gt, ":path_2_troop", 0),
          (assign, ":path_1_troop", ":path_2_troop"),
          (assign, ":upgrade_type", 1),
        (else_try),
          (gt, ":path_1_troop", 0),
          (gt, ":path_2_troop", 0),
          (assign, ":upgrade_type", 2),
        (try_end),
        (try_begin),
          (eq, ":upgrade_type", 1),
          (gt, ":path_1_troop", 0),
          (neg|troop_is_hero, ":path_1_troop"),
          (party_remove_members, ":party_no", ":stack_troop", ":stack_upgrade_num"),
          (party_add_members, ":party_no", ":path_1_troop", ":stack_upgrade_num"),
          (assign, ":return_0", ":path_1_troop"),
          (assign, ":return_2", ":stack_upgrade_num"),
        (else_try),
          (eq, ":upgrade_type", 2),
          (store_mul, ":path_1_upgrade_num", ":stack_upgrade_num", ":path_1_ratio"),
          (val_div, ":path_1_upgrade_num", 100),
          (store_sub, ":path_2_upgrade_num", ":stack_upgrade_num", ":path_1_upgrade_num"),
          (try_begin),
            (gt, ":path_1_upgrade_num", 0),
            (gt, ":path_1_troop", 0),
            (neg|troop_is_hero, ":path_1_troop"),
            (party_remove_members, ":party_no", ":stack_troop", ":path_1_upgrade_num"),
            (party_add_members, ":party_no", ":path_1_troop", ":path_1_upgrade_num"),
            (assign, ":return_0", ":path_1_troop"),
            (assign, ":return_2", ":path_1_upgrade_num"),
          (try_end),
          (try_begin),
            (gt, ":path_2_upgrade_num", 0),
            (gt, ":path_2_troop", 0),
            (neg|troop_is_hero, ":path_2_troop"),
            (party_remove_members, ":party_no", ":stack_troop", ":path_2_upgrade_num"),
            (party_add_members, ":party_no", ":path_2_troop", ":path_2_upgrade_num"),
            (assign, ":return_1", ":path_2_troop"),
            (assign, ":return_3", ":path_2_upgrade_num"),
          (try_end),
        (try_end),
      (try_end),
      (assign, reg0, ":return_0"),
      (assign, reg1, ":return_1"),
      (assign, reg2, ":return_2"),
      (assign, reg3, ":return_3"),
    ]),

8

主题

64

回帖

22

积分

随仆

Rank: 1

UID
2557955
第纳尔
134
精华
0
互助
0
荣誉
0
贡献
0
魅力
10
注册时间
2015-7-9
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2026-4-22 10:21:06 | 显示全部楼层
本帖最后由 afl001 于 2026-4-22 10:56 编辑

楼上的代码修正了一下,之前的有个bug,会把玩家兵种当升级兵种添加。
楼上代码加到module_script.py编译。编译通不过就把所有有中文的行删掉。
用的时候使用下面这条指令给指定部队指定兵种升级
(call_script, "script_party_upgrade_stack",arg1,arg2,arg3,arg4),

输入参数含义
#arg1=partyID(部队、城堡城镇id)
#arg2=stack序号(部队中兵种的排序,非兵种ID)
#arg3=升级比例:1-100
#arg4=升到路线1兵种比例:1-100(路线2兵种比例无须设置,为此兵种升级前总数-升级到路线1的数量。若只有1个路线,此比例无效)
#返回的值(没有的话就是-1)
#reg0=升级兵种1
#reg1=升级兵种2
#reg2=升级兵种1人数
#reg3=升级兵种2人数

16

主题

135

回帖

205

积分

见习骑士

Rank: 3

UID
3304622
第纳尔
690
精华
0
互助
26
荣誉
3
贡献
0
魅力
168
注册时间
2021-12-28
鲜花(31) 鸡蛋(0)
发表于 2026-5-7 08:58:44 | 显示全部楼层
Good 韩了
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2026-5-17 01:04 , Processed in 0.075342 second(s), 20 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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