骑马与砍杀中文站论坛

标题: 【战团】自定义战利品 [打印本页]

作者: b1ink    时间: 2024-4-16 22:25
标题: 【战团】自定义战利品
本帖最后由 b1ink 于 2024-4-16 22:30 编辑



## 自定义战利品

简单的描述就是,击败某支部队模板之后,有一定概率掉落某样东西.

由于每次我们击败一支部队,都会获取战利品,所以我们在战利品计算函数```party_calculate_loot```里去添加代码就可以了.

思路就是这样,这次我们将自定义战利品封装成一个函数,以便我们随时调用.

**函数的封装调用**,请看这个帖子(若没有基础请务必先看此贴):
https://bbs.mountblade.com.cn/thread-2104999-1-1.html


那么我们先写自定义战利品的部分,加个函数```b1_chanceloot_pt_singleitem```吧:

```python
(store_script_param, ":custom_enemy_party_template_id", 1), #自定义敌方部队模板 pt_ 开头的
(store_script_param, ":loot_item_id", 2), #自定义战利品物品 itm_ 开头的
(store_script_param, ":loot_chance", 3), #自定义战利品掉落几率 0-100 之间的整数

(try_begin),
    (party_get_template_id, ":enemy_party_template_id", "$g_enemy_party"), #g_enemy_party这个全局变量,在party_calculate_loot里面有定义,是当前敌人部队的指针,我们用party_get_template_id获取它的模板id,也就是pt_开头的id.
    (eq, ":enemy_party_template_id", ":custom_enemy_party_template_id"),
    (store_random_in_range,":roll", 0, 100),
    (lt, ":roll", ":loot_chance"),
    (troop_ensure_inventory_space, "trp_temp_troop", 1),
    (troop_add_item, "trp_temp_troop", ":loot_item_id"),
    (troop_sort_inventory, "trp_temp_troop"),
(try_end),
```

用MBCodeEditor编译成txt,并放入```scripts```中,注意总函数数量 **+1**:

```python
b1_chanceloot_pt_singleitem -1
12 23 2 1224979098644774912 1 23 2 1224979098644774913 2 23 2 1224979098644774914 3 4 0 1609 2 1224979098644774915 144115188075856187 31 2 1224979098644774915 1224979098644774912 2136 3 1224979098644774916 0 100 2147483678 2 1224979098644774916 1224979098644774914 1510 2 360287970189639683 1 1530 3 360287970189639683 1224979098644774913 0 1511 1 360287970189639683 3 0
```

最后我们在```scripts```,找到战利品计算函数```party_calculate_loot```,添加一行调用即可.

例如我想让`绿林强盗`pt_forest_bandits这个部队模板有`95%`的几率掉落`龙泪`itm_qualis,可以这样写:

```python
(call_script,"script_b1_chanceloot_pt_singleitem", "pt_forest_bandits", "itm_qualis", 95),
```

再举个例子,让`赏金猎人`pt_manhunters这个部队模板有`50%`的几率掉落`天鹅绒`itm_velvet,可以这样写:

```python
(call_script,"script_b1_chanceloot_pt_singleitem", "pt_manhunters", "itm_velvet", 50),
```

把这一句编译好添加到```party_calculate_loot```最后一行,注意总行数变化;或者将```party_calculate_loot```里的代码全部拉出来转成py,最下面一行加上这一句,编译成txt,再覆盖回去,注意总行数变化(这是很基础的东西,以后不会再提)


***

附一个网址(若打不开请用chrome或用steam++等加速github):

https://b1inkie.github.io/b1note.github.io/

装备某件物品时增加属性点;添加书籍;全自动武器;自爆步兵;光环:移速BUFF(光写了 没测);散弹 但是每一个弹头都是自瞄;自定义战利品等等功能都可以在这里找到.

若依旧有疑问或需要视频讲解,可以加下面群:
附加半个交流群: 855512521





作者: 恶猪    时间: 2024-4-21 15:52
看得人眼瞎,麻烦改一下编辑代码啊
作者: b1ink    时间: 2024-4-22 18:29
恶猪 发表于 2024-4-21 15:52
看得人眼瞎,麻烦改一下编辑代码啊

markdown编写的,```python开头 ```结尾,拉到你自己的编辑器里去看
作者: b1ink    时间: 2024-4-22 18:46
本帖最后由 b1ink 于 2024-4-22 18:47 编辑

remove()                           
作者: b1ink    时间: 2024-4-22 18:47
恶猪 发表于 2024-4-21 15:52
看得人眼瞎,麻烦改一下编辑代码啊

提一嘴 兄弟 你别在我贴子下挨个留言了 我厌蠢症都要犯了
1. 全文使用markdown撰写 ```python 中间是代码``` ,阅读请拉到自己编辑器里去看
2. [功能与代码]是我的分享贴,给只想ctrlc ctrlv的朋友用的, 你要教学我有发到[经验与教程]里面
3. 出处就是我的主页,标注在每篇帖子最下面
4. 配置部分我都做了注释. 就这么点东西,还能怎么注释,真要手把手教啊
作者: 恶猪    时间: 2024-4-23 12:32
b1ink 发表于 2024-4-22 18:47
提一嘴 兄弟 你别在我贴子下挨个留言了 我厌蠢症都要犯了
1. 全文使用markdown撰写 ```python 中间是代码 ...

我挨个评论只是为了让某些真正乐于分享的汽油不要贴下空无一人回复罢了,你还摆弄起来了?你天资过人?

论坛是给各种汽油在手机或者电脑看,其中包括初学MB,熟练或者只是想探讨学习的,你发布的东西只能在编辑软件上看,你直接复制黏贴改都不想改,那你发布在论坛干嘛?发到论坛上好几位汽油包括我看的不舒服,我批评你有错?

而且如果一个写代码的人连变量命名都可以省略的,那我觉得这个人的逻辑思维以及记忆能力已经超越百分之八九十的人,可是我看你的发的代码也没强到这种地步,你“写”的几篇代码里面,编排格式风格两异,如果都是出自你自己手怎么会有这种情况?

反编译分享是可耻的,我让你做出注释是让大家知道不管是不是你写的,都证明你已经理解透彻,把理解思路注释出来方便小白学习也是一种分享,还这么点怎么注释?注释很写很多东西,但是没有经过自己思考自然写不出来




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