骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
查看: 272|回复: 2

[讨论] 关于把MT部分功能嫁接到ITEM系统,而后通过魔球改MT的设想

[复制链接]

202

主题

984

回帖

986

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
2893127
第纳尔
14521
精华
0
互助
90
荣誉
18
贡献
325
魅力
775
注册时间
2017-11-5
鲜花(428) 鸡蛋(0)
发表于 2024-3-10 17:57:28 | 显示全部楼层 |阅读模式
本帖最后由 vegetto 于 2024-3-10 18:05 编辑

核心原理:利用两个不死人A和B刷在并固定在别人找不到看不见的地方,且两人面对面,然后A不停的打B,B不还手,然后A使用特定武器,这时候只要在特定武器里用魔球添加武器攻击事件作为触发条件,就会根据攻击者A的攻击频率就相当于MT的(0.x,0,0这种触发条件,经过“通用所有mod的添加两个不死人面对面并仇视的代码”添加后,就可以只用魔球来做简单的MT功能。

首先要用txt加入前,先发下MS部分
module_mission_templates.py的lead_charge加入如下触发,目的是设定第多少号script进行000触发执行

   (0.000000, 0.000000, 0.000000,
    [
    ],
    [
        (assign, ":var_0", 612),             #script txt打开看一下目前是数字几,然后比如目前是612个,你加一个用于本功能的脚本script_itemmt就是第613个脚本,此时613-1即612写在这里,而在后面txt中,这个数我会替换成明显的数据给玩家方便一眼看到去改动,比如666001
        (assign, ":var_1", "script_game_start"),          #一般大部分mod没乱改script txt,第一个script就是game_start
        (store_add, ":var_2", ":var_0", ":var_1"),
        (call_script, ":var_2"),                   #用000触发启动script txt中排序为613号的脚本。
    ]),



在module_scripts.PY加入如下触发,目的是刷两个对场上中立但是一个对另外一个仇视的agent,在魔球中将仇视者的属性调高。


("itemmt",
[
    (set_fixed_point_multiplier, 1000),
    (get_player_agent_no, ":var_0"),
    (assign, ":var_1", "trp_player"),
    (assign, ":var_2", 22),                                     # 同理上面脚本指定的做法,即第一个兵种是trp_player,那在魔球中序号为22的兵种就是我下面计算后的":var_4",而在后面txt中,这个数我会替换成明显的数据给玩家方便一眼看到去改动,比如666002
    (assign, ":var_3", 23),                                    # 同理上面脚本指定的做法,即第一个兵种是trp_player,那在魔球中序号为23的兵种就是我下面计算后的":var_5",而在后面txt中,这个数我会替换成明显的数据给玩家方便一眼看到去改动,比如666003
    (store_add, ":var_4", ":var_1", ":var_2"),
    (store_add, ":var_5", ":var_1", ":var_3"),
    (assign, ":var_6", "itm_no_item"),
    (assign, ":var_7", 419),                     # 同理上面脚本指定的做法,即第一个武器是itm_no_item,那在魔球中序号为419的武器就是我下面计算后的":var_9",而在后面txt中,这个数我会替换成明显的数据给玩家方便一眼看到去改动,比如666004
    (assign, ":var_8", 420),                 # 同理上面脚本指定的做法,即第一个武器是itm_no_item,那在魔球中序号为420的武器就是我下面计算后的":var_10",而在后面txt中,这个数我会替换成明显的数据给玩家方便一眼看到去改动,比如666005
    (store_add, ":var_9", ":var_6", ":var_7"),     
    (store_add, ":var_10", ":var_6", ":var_8"),
    (try_begin),
        (agent_slot_eq, ":var_0", 800, 0),
        (position_set_x, pos1, -5000),
        (position_set_y, pos1, -5000),
        (position_set_z, pos1, -5000),
        (set_spawn_position, pos1),
        (spawn_agent, ":var_4"),
        (agent_set_team, reg0, 5),
        (agent_set_no_dynamics, reg0, 1),           # 刷出agent后立即初始化取消重力,可以让agent悬空遁地设置在空间任意3D位置,避免干扰战场,本pos设定即agent位置遁地了
        (agent_set_position, reg0, pos1),
        (agent_set_no_death_knock_down_only, reg0, 1),  #刷出agent后立即初始化取消死亡,即agent血条被打空倒地后会立即满血复活。
        (agent_set_max_hit_points, reg0, 10000, 1),         #其实有no_death_knock_down后加血量上限多此一举,主要是怕你们采用的这两个人物和武器在魔球里属性伤害设置不合理,血量太低直接反复被秒杀,影响下面攻击触发频率
        (agent_set_hit_points, reg0, 10000, 1),
        (agent_set_visibility, reg0, 0),                #双重保险,刷出agent后立即初始化隐身,避免有些飞天遁地功能时看到这两个莫名其妙的人互殴。
        (copy_position, pos2, pos1),                   #如下同理刷出另一个被打的人,也类似相关设置
        (position_rotate_z, pos2, 180),
        (position_move_y, pos2, -80),
        (set_spawn_position, pos2),
        (spawn_agent, ":var_5"),
        (agent_set_no_dynamics, reg0, 1),
        (agent_set_position, reg0, pos2),
        (agent_set_no_death_knock_down_only, reg0, 1),
        (agent_set_max_hit_points, reg0, 10000, 1),
        (agent_set_hit_points, reg0, 10000, 1),
        (agent_set_visibility, reg0, 0),
        (agent_set_slot, ":var_0", 800, 1),
    (try_end),
    (agent_slot_eq, ":var_0", 800, 1),              #slot800是0-1变化控制只刷两个agent执行一次触发
    (try_for_agents, ":var_11"),            
        (agent_is_alive, ":var_11"),
        (agent_is_human, ":var_11"),
        (agent_get_troop_id, ":var_12", ":var_11"),
        (this_or_next|eq, ":var_12", ":var_4"),
        (eq, ":var_12", ":var_5"),
        (agent_get_slot, ":var_13", ":var_11", 800),
        (try_begin),
            (eq, ":var_12", ":var_4"),
            (neg|agent_has_item_equipped, ":var_11", ":var_9"),
            (agent_equip_item, ":var_11", ":var_9"),
            (agent_set_wielded_item, ":var_11", ":var_9"),
        (else_try),
            (eq, ":var_12", ":var_5"),
            (neg|agent_has_item_equipped, ":var_11", ":var_10"),
            (agent_equip_item, ":var_11", ":var_10"),
            (agent_set_wielded_item, ":var_11", ":var_10"),
        (try_end),                                                                 #上面就是判断两个互殴的人如果没有装备我上面采用序号指定的武器,没有就强制使用这个武器,其实:var_5兵种不需要指定武器,先写了留着备用。也就是:var_9这个武器对应魔球编辑的使用武器攻击触发才是关键。
        (try_begin),
            (eq, ":var_12", ":var_4"),
            (try_for_agents, ":var_15"),
                (agent_is_alive, ":var_15"),
                (agent_is_human, ":var_15"),
                (agent_get_troop_id, ":var_16", ":var_15"),
                (eq, ":var_16", ":var_5"),
                (agent_add_relation_with_agent, ":var_11", ":var_15", -1),
                (agent_add_relation_with_agent, ":var_15", ":var_11", 0),          #上面就是判断":var_4"这个troop id的agent 对":var_5"这个troop id的agent 有仇恨,但是反过来没有仇恨,然后刷的时候利用agent_set_no_dynamics锁死两个人刷在面对面的位置,这样:var_4兵种就会去打:var_5兵种对应agent。
            (try_end),
        (try_end),
    (try_end),

]),


---------------------------------------------------------------------
然后转成txt,,

对于mission_templates这个txt来说,
比如加入野战中这个功能,找到下面这个

mst_lead_charge lead_charge 65538  8
You_lead_your_men_to_battle.

4 1 4160 0 16 12 0  
0 4160 0 16 0 0  
4 8320 0 16 12 0  
4 8320 0 16 0 0  
23

省略一堆触发
红色的23每个mod不一样,在自己的基础上数字加1,如23加这个触发变成24.
然后加如下txt触发  

0.000000 0.000000 0.000000  0  4 2133 2 1224979098644774912 666001 2133 2 1224979098644774913 936748722493063168 2120 3 1224979098644774914 1224979098644774912 1224979098644774913 1 1 1224979098644774914

其中666001就是我说的第几个脚本你加script itemmt,则就把脚本数字-1,一般你script加新功能就是从最后一个script开始往后续一下,所以script这个txt打开

scriptsfile version 1
613
game_start -1

开头这个比如是613那么总共有613个script,你加一个script itemmt,那么666001就改成613.
然后script这个txt打开在最后加一个script itemmt脚本,如下:

itemmt -1
(有一个空格,保存帖子总丢失)70 2124 1 1000 1700 1 1224979098644774912 2133 2 1224979098644774913 360287970189639680 2133 2 1224979098644774914 666002 2133 2 1224979098644774915 666003 2120 3 1224979098644774916 1224979098644774913 1224979098644774914 2120 3 1224979098644774917 1224979098644774913 1224979098644774915 2133 2 1224979098644774918 288230376151711744 2133 2 1224979098644774919 666004 2133 2 1224979098644774920 666005 2120 3 1224979098644774921 1224979098644774918 1224979098644774919 2120 3 1224979098644774922 1224979098644774918 1224979098644774920 4 0 545 3 1224979098644774912 800 0 729 2 1 -5000 730 2 1 -5000 731 2 1 -5000 1970 1 1 1972 1 1224979098644774916 1771 2 72057594037927936 5 1762 2 72057594037927936 1 1711 2 72057594037927936 1 1733 2 72057594037927936 1 2090 3 72057594037927936 10000 1 1721 3 72057594037927936 10000 1 2096 2 72057594037927936 0 700 2 2 1 725 2 2 180 721 2 2 -80 1970 1 2 1972 1 1224979098644774917 1762 2 72057594037927936 1 1711 2 72057594037927936 2 1733 2 72057594037927936 1 2090 3 72057594037927936 10000 1 1721 3 72057594037927936 10000 1 2096 2 72057594037927936 0 505 3 1224979098644774912 800 1 3 0 545 3 1224979098644774912 800 1 12 1 1224979098644774923 1702 1 1224979098644774923 1704 1 1224979098644774923 1718 2 1224979098644774924 1224979098644774923 1073741855 2 1224979098644774924 1224979098644774916 31 2 1224979098644774924 1224979098644774917 525 3 1224979098644774925 1224979098644774923 800 4 0 31 2 1224979098644774924 1224979098644774916 2147485377 2 1224979098644774923 1224979098644774921 1779 2 1224979098644774923 1224979098644774921 1747 2 1224979098644774923 1224979098644774921 5 0 31 2 1224979098644774924 1224979098644774917 2147485377 2 1224979098644774923 1224979098644774922 1779 2 1224979098644774923 1224979098644774922 1747 2 1224979098644774923 1224979098644774922 3 0 4 0 31 2 1224979098644774924 1224979098644774916 12 1 1224979098644774926 1702 1 1224979098644774926 1704 1 1224979098644774926 1718 2 1224979098644774927 1224979098644774926 31 2 1224979098644774927 1224979098644774917 1803 3 1224979098644774923 1224979098644774926 -1 1803 3 1224979098644774926 1224979098644774923 0 3 0 3 0 3 0


那么红色字体,666002改成就是你打开魔球看到你想刷出作为攻击者的troop序号,比如我上面py中这个数是22,即22号默认在战团就是troop id为精英斗士的兵种,同理666003处改成被打的人的兵种序号,666004就是攻击者指定使用的武器在魔球里的id序号,比如我py码中写的419对应魔球里战团默认419序号中的长斧武器,666005同理就是被打的人的指定的武器,这个没啥用,做个预留,主要是打人者的武器。


所以关键是把这两个触发的666001-666005这5个数据改成你用魔球和txt打开你mod,显示的脚本、兵种、武器在文件中排序的序号,而利用这个武器做简单MT的关键,就是666002位置的兵种id的agent指定使用的666004位置的武器。
利用两个不死人A和B刷在并固定在别人找不到看不见的地方,然后A不停的打B,B不还手,然后A使用特定武器,这时候只要在特定武器里用魔球添加武器攻击事件作为触发条件,就会根据攻击者A的攻击频率就相当于MT的(0.x,0,0这种触发条件,经过这两个触发器的添加后,就可以只用魔球来做简单的MT功能。
但是注意,两个兵种和特定武器的属性要设置合适,以攻速为前提,这样才能提供这种假MT的更短的触发频率,目前经过我的试验后,随意调整了人物和武器攻击速度,作用相当于一个(0.5,0,0),的MT触发器使用效果。

然后这个目前这种写法也只能把一个武器当一个MT来用,如果要多个,那就批量化这种工具人互殴,并且每组工具人采用不同特定武器。


360截图20240310180402630.jpg
360截图20240310180457390.jpg

评分

参与人数 1第纳尔 +20 互助 +1 魅力 +20 收起 理由
Aomine Daiki + 20 + 1 + 20 您的帖子很有价值!

查看全部评分

7

主题

183

回帖

67

积分

扈从

Rank: 2Rank: 2

UID
3426667
第纳尔
507
精华
0
互助
2
荣誉
0
贡献
0
魅力
0
注册时间
2022-10-10
鲜花(7) 鸡蛋(0)
发表于 2024-3-12 01:04:20 来自手机 | 显示全部楼层
我都会写脚本了为啥还要用魔球?来自: Android客户端

4

主题

16

回帖

6

积分

平民

Rank: 1

UID
3559852
第纳尔
10
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2023-9-9
鲜花(0) 鸡蛋(0)
发表于 2024-3-12 12:52:15 来自手机 | 显示全部楼层
对搞点那种不需要经过大脑的。比较适合我。来自: iPhone客户端
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-5-28 01:09 , Processed in 0.123309 second(s), 29 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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