骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 衣谷三国
查看: 3498|回复: 37

[求助] 【已解决】萌新代码求助

[复制链接]

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-1 19:31:19 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-1 21:34 编辑

(ti_on_agent_hit, 0, 0, [],
        [
        (store_trigger_param_1, ":agent"),
        (store_trigger_param_3, ":damage"),
        (get_player_agent_no, ":player"),
        (eq, ":agent", ":player"),
        (store_skill_level, ":player_ski","skl_ironflesh", ":player"),
        (try_begin),
            (val_sub, ":damage", ":player_ski"),
            (val_mul, ":player_ski", -10),
            (val_add, ":player_ski", 100),
            (val_mul, ":damage", ":player_ski"),
            (val_div, ":damage", 100),
        (set_trigger_result, ":damage"),
        (try_end),
        ])
中文注释
(ti_on_agent_hit, 0, 0, [],#人物被击打
        [
        (store_trigger_param_1, ":agent"),#获取被攻击者存为agent
        (store_trigger_param_3, ":damage"),#获取伤害存为damage
        (get_player_agent_no, ":player"),#获取玩家战场编号存为player
        (eq, ":agent", ":player"),#如果被攻击者为玩家(编号一样)
        (store_skill_level, ":player_ski","skl_ironflesh", "trp_player"),#获取玩家铁骨值,变量直接写兵种名就行
        (try_begin),
            (val_sub, ":damage", ":player_ski"),
            (val_mul, ":player_ski", -10),
            (val_add, ":player_ski", 100),
            (val_mul, ":damage", ":player_ski"),
            (val_div, ":damage", 100),              #你的计算方程,没动
        (set_trigger_result, ":damage"),#设置返回值
        (try_end),
        ])

你写了很多无用的代码,根本不用遍历所有战场者
ti_on_agent_killed_or_wounded=在人物被杀或者击晕时
(store_trigger_param_1, ":dead_agent_no"),
        (store_trigger_param_2, ":killer_agent_no"),
        #(store_trigger_param_3, ":is_wounded"),
Trigger Param 1(存储器1)=被害者
Trigger Param 2(存储器2)=凶手
Trigger Param 3(存储器3)=是否被击昏

ti_on_agent_knocked_down=在人物被击倒时
Trigger Param 1(存储器1)=被击倒者
Trigger Param 2(存储器2)=击倒者

ti_on_agent_hit=在人物把击打时
# Trigger Param 1: damage inflicted agent_id
# Trigger Param 2: damage dealer agent_id
# Trigger Param 3: inflicted damage
Trigger Param 1(存储器1)=被攻击者
Trigger Param 2(存储器2)=攻击者
Trigger Param 3(存储器3)=攻击伤害
Register 0(reg0)=攻击者的武器
Position Register 0(pos0)=击打的坐标

鲜花鸡蛋

红刀  在2023-8-1 19:47  送朵鲜花  并说:

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-1 20:30:27 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-2 10:42 编辑
红刀 发表于 2023-8-1 20:15
厚着脸皮再请问一下,如果要获取指定的一匹马的id比如玩家的马该怎么做,我想把减伤效果也加在坐骑的身上 ...

没事,尽管问看16楼
(ti_on_agent_hit, 0, 0, [],
        [
        (store_trigger_param_1, ":agent"),
        (store_trigger_param_3, ":damage"),
       (get_player_agent_no, ":player"),
        (store_skill_level, ":player_ski","skl_ironflesh", ":player"),
            (val_sub, ":damage", ":player_ski"),
            (val_mul, ":player_ski", -10),
            (val_add, ":player_ski", 100),
            (val_mul, ":damage", ":player_ski"),
            (val_div, ":damage", 100),
        (try_begin),
        (neq|agent_is_human, ":agent"),
        (agent_get_horse,":horse",":player"),
        (gt,":horse",0),
        (eq, ":agent", ":horse"),
        (set_trigger_result, ":damage"),
        (else_try),
        (eq, ":agent", ":player"),
        (set_trigger_result, ":damage"),

        (try_end),
        ])

包括玩家减伤和坐骑减伤


中文注释
(ti_on_agent_hit, 0, 0, [],#人物被击打
        [
        (store_trigger_param_1, ":agent"),#获取被攻击者存为agent
        (store_trigger_param_3, ":damage"),#获取伤害存为damage
       (get_player_agent_no, ":player"),#获取玩家战场编号存为player
        (store_skill_level, ":player_ski","skl_ironflesh", ":player"),#获取玩家铁骨值,变量直接写兵种名就行
            (val_sub, ":damage", ":player_ski"),
            (val_mul, ":player_ski", -10),
            (val_add, ":player_ski", 100),
            (val_mul, ":damage", ":player_ski"),
            (val_div, ":damage", 100),#提前计算返回值
        (try_begin),
        (neq|agent_is_human, ":agent"),#被攻击者不是人类
        (agent_get_horse,":horse",":player"),#获取玩家坐骑
        (gt,":horse",0),                         #玩家有坐骑(编号大于0)
        (eq, ":agent", ":horse"),                   #如果被攻击者为玩家坐骑(编号一样)
        (set_trigger_result, ":damage"),#设置返回值
        (else_try),
        (eq, ":agent", ":player"),#如果被攻击者为玩家(编号一样)
        (set_trigger_result, ":damage"),#设置返回值
        (try_end),
        ])


鲜花鸡蛋

红刀  在2023-8-1 20:48  送朵鲜花  并说:

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-1 20:57:05 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-1 20:58 编辑
红刀 发表于 2023-8-1 20:48
那么大佬,这个(gt,":horse",0)是判断吗?就是类似于eq那样有坐骑下面代码生效没有下面就不生效的意思吗, ...

是的,你好像不太懂代码结构。。。只有玩家骑的会减伤

鲜花鸡蛋

红刀  在2023-8-1 21:21  送朵鲜花  并说:

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-1 21:05:04 | 显示全部楼层
红刀 发表于 2023-8-1 21:02
因为在昨天下午看教程之前是没有一点代码基础的

看多了就好了,我也是刚入坑一年最好是有点代码基础,容易些

鲜花鸡蛋

红刀  在2023-8-1 21:20  送朵鲜花  并说:

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-1 21:28:18 | 显示全部楼层
红刀 发表于 2023-8-1 21:20
我刚才进游戏测试了一下啊,又变成我之前编的那种对所有人,所有人马,不论敌我都用着玩家的铁骨等级减免 ...

让我测试下

鲜花鸡蛋

红刀  在2023-8-1 21:38  送朵鲜花  并说:

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-1 22:28:47 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-2 10:41 编辑
红刀 发表于 2023-8-1 21:20
我刚才进游戏测试了一下啊,又变成我之前编的那种对所有人,所有人马,不论敌我都用着玩家的铁骨等级减免 ...

还在吗,你是怎么测试的,奇怪,我这没问题啊。我的测试代码看16楼
######testing
cut_body = (ti_on_agent_hit, 0, 0, [],
        [
        (store_trigger_param_1, ":agent"),
        (store_trigger_param_3, ":damage"),
        (get_player_agent_no, ":player"),
            (assign, ":damage", 999),
        (try_begin),
        (neq|agent_is_human, ":agent"),
        (agent_get_horse,":horse",":player"),
        (gt,":horse",0),
        (eq, ":agent", ":horse"),
                (set_trigger_result, ":damage"),
        (else_try),
        (eq, ":agent", ":player"),
        (set_trigger_result, ":damage"),

        (try_end),
        ])
######testing

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-2 10:00:58 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-2 10:41 编辑
红刀 发表于 2023-8-2 07:50
抱歉,昨天晚上睡得比较早,我是直接改了计算公式,比如一级减少百分之十伤害,然后玩家铁骨等级为十时直 ...

触发器拆成两个是会有一个不生效的,不过不会爆红字,试试这样写呢
还有种可能,你的modulesystem中有伤害加成代码,干扰了,你的modulesystem是什么版本的看16楼
######testing
cut_body = (ti_on_agent_hit, 0, 0, [],
        [
        (store_trigger_param_1, ":agent"),
        (store_trigger_param_3, ":damage"),
        (get_player_agent_no, ":player"),
                (agent_get_horse,":horse",":player"),
        (try_begin),
                        (eq, ":agent", ":player"),
                        (store_skill_level, ":player_ski","skl_ironflesh", ":player"),
                        (val_sub, ":damage", ":player_ski"),
                        (val_mul, ":player_ski", -10),
                        (val_add, ":player_ski", 100),
                        (val_mul, ":damage", ":player_ski"),
                        (val_div, ":damage", 100),
                        (set_trigger_result, ":damage"),
        (try_end),
                (try_begin),
                        (gt,":horse",0),
                        (eq, ":agent", ":horse"),
                        (store_skill_level, ":player_ski","skl_ironflesh", ":player"),
                        (val_sub, ":damage", ":player_ski"),
                        (val_mul, ":player_ski", -10),
                        (val_add, ":player_ski", 100),
                        (val_mul, ":damage", ":player_ski"),
                        (val_div, ":damage", 100),
                        (set_trigger_result, ":damage"),
        (try_end),
        ])
######testing

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-2 10:40:51 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-2 11:01 编辑
红刀 发表于 2023-8-2 10:16
不行,试过了还是人马都不生效,我用的这个版本的源码https://bbs.mountblade.com.cn/forum.php?mod=view ...

解决了,抱歉啊,我之前没遇到这种情况,献丑了,原因set_trigger_result只能有一个,会在其位置终止代码,触发器后面的就不执行了,有点类似c语言的return,但是c语言只是单个判断内终止,骑砍这就坑爹了我的代码环境[战团][整合]native拓展https://bbs.mountblade.com.cn/thread-2096039-1-1.html
源码 Fixed Native MS 1.2.zip (2.3 MB, 下载次数: 442)
加了个变量run判断是否减伤
(ti_on_agent_hit, 0, 0, [],
        [
        (store_trigger_param_1, ":agent"),
        (store_trigger_param_3, ":damage"),
        (get_player_agent_no, ":player"),
                (agent_get_horse,":horse",":player"),
                (assign,":run",0),
        (try_begin),
                        (eq, ":agent", ":player"),
                        
                        (assign,":run",1),
        (try_end),
                (try_begin),
                        (gt,":horse",0),
                        (eq, ":agent", ":horse"),
                        (assign,":run",1),
        (try_end),
                (try_begin),
                (eq,":run",1),
                        (store_skill_level, ":player_ski","skl_ironflesh", ":player"),
                        (val_sub, ":damage", ":player_ski"),
                        (val_mul, ":player_ski", -10),
                        (val_add, ":player_ski", 100),
                        (val_mul, ":damage", ":player_ski"),
                        (val_div, ":damage", 100),
                        (set_trigger_result, ":damage"),
                (try_end),
        ])

评分

参与人数 1第纳尔 +10 互助 +3 收起 理由
agjib + 10 + 3 乐于助人!

查看全部评分

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 11:33:00 | 显示全部楼层
红刀 发表于 2023-8-4 11:26
大佬我能再问你个问题吗

什么问题,              

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 11:42:17 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-4 11:47 编辑
红刀 发表于 2023-8-4 11:38
我想写个让玩家队伍的士兵只能被击昏代码,于是我根据您上面给出的i_on_agent_killed_or_wounded=在人物 ...

这么写不会生效我不清楚为什么,你这人都被打死了,再设置不会死就晚了。不过有更好的方法,而且你这只有一个判断,不需要RUN变量,而且你最后多了个括号,我给你改下

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 11:50:21 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-4 11:56 编辑
红刀 发表于 2023-8-4 11:38
我想写个让玩家队伍的士兵只能被击昏代码,于是我根据您上面给出的i_on_agent_killed_or_wounded=在人物 ...

(ti_once, 0, 0, [],
        [
        (try_for_agents, ":agent"),
        (agent_is_ally,":agent")
        (agent_set_no_death_knock_down_only, ":agent",1),
        (try_end),
        ])

注释
(ti_once, 0, 0, [],#ti_once只执行一次
        [
        (try_for_agents, ":agent"),#遍历所有战场者
        (agent_is_ally,":agent")#如果是友军
        (agent_set_no_death_knock_down_only, ":agent",1),#设置不会死
        (try_end),
        ])

只需4行。。。


48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 11:54:45 | 显示全部楼层
红刀 发表于 2023-8-4 11:53
agent_is_ally不会作用于与玩家一同参加战斗的队伍吗?就比如玩家和另外一个领主一起参战然后代码对他的 ...

你的意思是友方领主的兵可以死吧,好奇怪的功能,不过可以实现,我这个只要是友军就会,

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 12:00:05 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-4 12:29 编辑
红刀 发表于 2023-8-4 11:53
agent_is_ally不会作用于与玩家一同参加战斗的队伍吗?就比如玩家和另外一个领主一起参战然后代码对他的 ...

(ti_once, 0, 0, [],
        [

        (get_player_agent_no, ":player"),
        (agent_get_party_id, ":playerparty", ":player"),
        (try_for_agents, ":agent"),
        (agent_is_ally,":agent"),
        (agent_get_party_id, ":party", ":agent"),
        (eq, ":party", ":playerparty"),
        (agent_set_no_death_knock_down_only, ":agent",1),
        (try_end),
        ])

注释



(ti_once, 0, 0, [],
        [


        (get_player_agent_no, ":player"),#获取玩家编号
        (agent_get_party_id, ":playerparty", ":player"),#获取玩家部队
        (try_for_agents, ":agent"),#遍历战场者
        (agent_is_ally,":agent"),#是友军

        (agent_get_party_id, ":party", ":agent"),#获取友军部队
        (eq, ":party", ":playerparty"),#友军部队是玩家部队
        (agent_set_no_death_knock_down_only, ":agent",1),#设置不死
        (try_end),
        ])





48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 12:28:36 | 显示全部楼层
红刀 发表于 2023-8-4 12:17
我测试了一下并没有生效,会不会是没有确定是哪个士兵受伤或者只生效一次的原因?

我去我若至了,(agent_is_ally,":agent")没加逗号,网页写起来真没notepad++方便,好SB哈哈

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 12:37:04 | 显示全部楼层
红刀 发表于 2023-8-4 12:00
是的,想让只能昏倒的功能只作用于玩家的兵,最近在玩潘德死一个高级兵都心疼,所以去搜了怎么改手术然后 ...

这个有点复杂,我没研究过,让我捣鼓下,我给你说下我的思路,ti_on_agent_killed_or_wounded,设置返回值
set_trigger_result,不知道能用不

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 12:42:02 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-4 13:12 编辑
红刀 发表于 2023-8-4 12:28
好像我理解错了agent_set_no_death_knock_down_only, ":agent",1这一句的意思了,我把触发条件改为了ti_o ...

你测试下,这个能用不
(ti_on_agent_killed_or_wounded, 0, 0, [],
        [
        (store_trigger_param_1, ":agent"),
        (get_player_agent_no, ":player"),
        (agent_get_party_id, ":playerparty", ":player"),
        (try_begin),
        (agent_is_ally,":agent"),
        (agent_get_party_id, ":party", ":agent"),
        (eq, ":party", ":playerparty"),
                (set_trigger_result, 2),
        (try_end),
        ])

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 13:05:00 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-4 13:09 编辑
红刀 发表于 2023-8-4 12:51
没有生效,我尝试改了一下返回值的1改成0然后发现好像1是固定击杀0是可能击杀可能击昏,我去改成2试一试

刚才去吃饭了,,可能我代码有问题,你看看这个(ti_on_agent_killed_or_wounded, 0, 0, [],  的问题!
https://bbs.mountblade.com.cn/thread-1558976-1-1.html
(出处: 骑马与砍杀中文站论坛)
还有就是自定义战场partyid是没有意义的,不要直接测试
(ti_on_agent_killed_or_wounded, 0, 0, [],
        [
        (store_trigger_param_1, ":agent"),
                (set_trigger_result, 2),
        ])


48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 13:10:30 | 显示全部楼层
本帖最后由 ggfgfgf 于 2023-8-4 13:14 编辑
红刀 发表于 2023-8-4 13:08
那么大概就是,返回的参数设置为2是把死亡的agent强制昏迷?

应该是,但是和获取参数3,不一样啊,那个是0死1昏迷,为什么到这就是1死2昏迷呢?
我明白了,受教了

48

主题

716

回帖

519

积分

骑士

Rank: 4Rank: 4

UID
3398051
第纳尔
2052
精华
0
互助
48
荣誉
5
贡献
10
魅力
347
注册时间
2022-8-13
鲜花(60) 鸡蛋(0)
发表于 2023-8-4 13:19:33 | 显示全部楼层
红刀 发表于 2023-8-4 13:14
大概是因为潘德mod的原因呢?我刚才又测试了一下尝试和一个领主一起参加战斗,然后用导入导出把自己的手 ...

和mod没关系,这些都是引擎调用的,就是那个mb_*.exe
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2025-9-24 08:26 , Processed in 0.126803 second(s), 27 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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