骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 3414|回复: 4

[讨论] 关于获取玩家某个物品的拥有数量

[复制链接]

22

主题

77

回帖

340

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
3154436
第纳尔
1428
精华
1
互助
14
荣誉
14
贡献
10
魅力
134
注册时间
2020-4-2

霸主正版勋章

鲜花(40) 鸡蛋(0)
发表于 2020-7-22 10:37:37 | 显示全部楼层 |阅读模式
我的思路是
假设需要获取的是战马
检测玩家是否拥有战马然后清除玩家背包的一个战马,然后局部变量加1继续检测然后玩家还是拥有战马继续清楚加一,直到玩家不在拥有战马,局部变量的数值就是玩家拥有的战马,然后再重新给玩家添加相同的战马。我觉得思路没问题,但每一次获取左下角都会弹出失去物品再获得物品,很不美观。有没有更好的思路或者有官方的获取方法

3

主题

62

回帖

25

积分

随仆

Rank: 1

UID
2768226
第纳尔
843
精华
0
互助
1
荣誉
0
贡献
0
魅力
1
注册时间
2016-9-6
鲜花(4) 鸡蛋(0)
发表于 2020-7-22 12:25:19 | 显示全部楼层
战团的话,参考工厂高级工人的相关代码。
由于战团背包是多个格子,所以是检测玩家所有背包格的物品是否等于战马。
循环96次,每次背包格id+1,最后得到战马数量。

72

主题

3123

回帖

1434

积分

骑士长

自由骑士
战团ID:SPH_sunshine

学院画匠

Rank: 5Rank: 5Rank: 5

UID
2530057
第纳尔
18040
精华
0
互助
45
荣誉
25
贡献
21
魅力
550
注册时间
2015-6-3

骑砍中文站APP会员勋章有生之年勋章霸主正版勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士精神之浪漫勋章骑士美德之慷慨勋章骑砍中文站微信会员勋章骑友真人秀Ⅳ勋章骑友真人秀Ⅵ勋章骑友真人秀终身成就勋章元老骑士勋章

QQ
鲜花(411) 鸡蛋(1)
发表于 2020-7-22 13:46:03 | 显示全部楼层
本帖最后由 阳光刺破心脏 于 2020-7-22 14:13 编辑

“获取物品栏中某物品的数量”思路就是:
① 定义一个物品局部变量,来记录该物品的数量,初始化为0;
② 用 troop_get_inventory_capacity 获取玩家的物品栏容量;
③ 用 try_for_range 遍历物品栏每一个格子;
④ 用 troop_get_inventory_slot 获取当前格子的物品id;
⑤ 物品id大于0时(格子里有物品),判断物品id是否等于你要的物品;
⑥ 如果是,物品局部变量 +1 ;
⑦ 直到 try_end 遍历结束;
⑧ 得到的局部变量数值就是你要的物品数量。

所以没必要移除物品再添加物品,你是怕有的物品被遍历多次,其实不然。
只要你得到物品栏的容量,从0开始遍历到最大容量值,就不会被多次遍历啦。
try_for_range 是有顺序地遍历,并不是类似抽签那样 检测到但不拿走 会干扰结果。
当然如果笼统地判断马,也可以用 item_get_type ,然后判断物品是否有 itp_type_horse 标签。

如果有什么误解的地方,望指正。

38

主题

1185

回帖

517

积分

骑士

Rank: 4Rank: 4

UID
2544612
第纳尔
4718
精华
0
互助
26
荣誉
2
贡献
0
魅力
28
注册时间
2015-6-23
鲜花(190) 鸡蛋(0)
发表于 2020-7-22 16:35:23 | 显示全部楼层
战团的话,如果是获取某一种物品的数量(比如小麦),哪里要那么麻烦?!
store_item_kind_count                    = 2165  # (store_item_kind_count, <destination>, <item_id>, [troop_id]),
                                                 # Calculates total number of items of specified type that the troop has. Default troop is player.

再或者直接用脚本get_troop_item_amount
内容如下:(反编译)
(store_script_param, ":var_0", 1),
(store_script_param, ":var_1", 2),
(troop_get_inventory_capacity, ":var_2", ":var_0"),
(assign, ":var_3", 0),
(try_for_range, ":var_4", 0, ":var_2"),
    (troop_get_inventory_slot, ":var_5", ":var_0", ":var_4"),
    (eq, ":var_5", ":var_1"),
    (val_add, ":var_3", 1),
(try_end),
(assign, reg0, ":var_3"),

只不过这俩都会算上装备栏里的。

想根据自己需要修改条件,就仿照这个脚本再写一个就是了。
小队ai思路http://bbs.mountblade.cn/thread-2027387-1-1.html

自定义进场基础http://bbs.mountblade.cn/forum.php?mod=viewthread&tid=2030991&page=1&extra=#pid8616532

58

主题

960

回帖

545

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
81513
第纳尔
5228
精华
1
互助
18
荣誉
5
贡献
100
魅力
125
注册时间
2008-6-26
QQ
鲜花(121) 鸡蛋(0)
发表于 2020-7-23 11:29:30 来自手机 | 显示全部楼层
赞同楼上 感觉不要盲目去写算法 很多操作在header_operation.py中就有 甚至有些大操作script有 先翻一翻文档吧
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-12-28 04:10 , Processed in 0.129052 second(s), 26 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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