骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买霸主CDKEY 购买战帆CDKEY
查看: 4718|回复: 10

[求助] 怎么控制变量在整数时触发

[复制链接]

2

主题

5

回帖

17

积分

随仆

Rank: 1

UID
3632209
第纳尔
20
精华
0
互助
3
荣誉
0
贡献
0
魅力
20
注册时间
2024-3-10
鲜花(4) 鸡蛋(0)
发表于 2024-5-5 16:52:51 | 显示全部楼层
本帖最后由 ChrisRitter 于 2024-5-8 20:22 编辑

没写过战场相关的代码,但单看楼主发的部分,计算结果是:var_0=0,var_2=(击杀数+伤亡数)/(玩家等级*20)(这里之前手残写成*4了...),这样只要击杀击伤第一个人之后 (eq, ":var_0", 0), (ge, ":var_2", 0)两个条件就都是恒成立的。
不知道楼主这段代码的触发条件是什么,杀一个人触发一次吗?如果是这样的话玩家每打死打晕一个人就会加var_2点力敏,理论上1级玩家在同一战场杀6个人就有累积0.05+0.1+0.15+0.2+0.25+0.3=1.05>1的力敏积累,就会触发力敏增加的提示,并且假设不升级,再杀3个人就会有0.35+0.4+0.45=1.2>1,再触发一次提示,再杀两个人0.5+0.55>1就有下一次增加,这样会滚雪球越来越快...

如果楼主的目的是在单个战场上每累积杀满(玩家等级*4)个敌人之后加一力敏,而不是滚雪球,那troop_raise_attribute的第二个参数设成1/(玩家等级*4)好像更合适?

评分

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

查看全部评分

鲜花鸡蛋

唐骑  在2024-5-6 23:59  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
唐骑  在2024-5-6 23:58  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

2

主题

5

回帖

17

积分

随仆

Rank: 1

UID
3632209
第纳尔
20
精华
0
互助
3
荣誉
0
贡献
0
魅力
20
注册时间
2024-3-10
鲜花(4) 鸡蛋(0)
发表于 2024-5-8 20:19:21 | 显示全部楼层
测试了一下,楼上两位是对的。troop_raise_attribute会对第二个参数直接向下取整,并且小数部分不会累积,比如(troop_raise_attribute, "trp_player", ca_agility, 0.9),重复执行多少次都不会加敏捷;(troop_raise_attribute, "trp_player", ca_agility, 1.9),重复n次只会加n点敏捷。

维京征服的module.ini里有一行attribute_points_per_level = 0.195,游戏内也确实是每五级左右获得一个属性点。所以我之前猜测属性加点系统是支持浮点数的,但现在看来这个猜测有问题,应该只有供玩家自由分配的那种属性点是浮点数类型,具体的力敏智魅都只能是整数。(在header_troops里也有直接证据,里面为了方便modder给自己的troop写属性,写了很多诸如str_29 = bignum | 0x0000001d这样的简化记法,看等号右边可以知道属性值在系统里面确实是整数)

这么看的话击倒一个人加m/n属性的思路是行不通的, 因为m/n会被取整。不过从回复看楼主写代码的时候本来也不是这个意思......

2

主题

5

回帖

17

积分

随仆

Rank: 1

UID
3632209
第纳尔
20
精华
0
互助
3
荣誉
0
贡献
0
魅力
20
注册时间
2024-3-10
鲜花(4) 鸡蛋(0)
发表于 2024-5-8 21:18:35 | 显示全部楼层
重新看了下上面几条回复,楼主的想法是不是这样的:
假如我始终1级,那我击倒第20个人时加1点力敏,击倒第40个人时加2点力敏(总计比初始状态多了3点),以此类推。其他数字下对属性值没有任何操作。

如果想法就是这样,那就按楼上两位说的,主要是判定条件的问题:
首先我也怀疑你把ge和gt搞混了,(ge, ":var_2", 0),意思是var_2≥0触发,gt才是>0(ge: greater than or equal to, gt: greater than);
其次是在troop_raise_attribute自动取整的情况下,这个判定条件放在这里没有意义,因为var_2比1小的时候,后面几行执不执行都不会加属性。

如果直接按楼上求余为0的思路来,这样改就可以:
(点击展开 / 收起)

另外我感觉还有一个问题:
agent_get_kill_count应该是只对单场战斗计数的,毕竟是agent。也就是说假设你1级,如果你在连续三场战斗中分别击倒了6、7、7个人,应该是不会触发属性提升的。这样的话即使是野战用ctrl+f4,一场也就最多杀个几百人,人物到十几级就几乎不可能再用这个方法获得属性了,不知道这是不是楼主本来想要的。
如果想要的其实是生涯击倒数的话,可以用get_player_agent_kill_count代替agent_get_kill_count(记得把trp_player这个参数删掉),不过我自己没测试过这个击杀数量是实时更新的还是战场结算时固定更新的。
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2025-12-26 04:55 , Processed in 0.084581 second(s), 20 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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