骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

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

[功能与代码] 【战团】简化的触发陷阱

[复制链接]

26

主题

804

回帖

399

积分

骑士

民间工匠

Rank: 4Rank: 4

UID
1115705
第纳尔
4062
精华
0
互助
26
荣誉
2
贡献
0
魅力
30
注册时间
2012-12-13
鲜花(235) 鸡蛋(10)
发表于 2024-8-31 16:26:27 | 显示全部楼层 |阅读模式
本帖最后由 a1550887802 于 2024-8-31 19:07 编辑



##################################################
("zz_zz_z_mine_code_only",sokf_moveable,"box_a",0,
[
(ti_on_scene_prop_init,
    [
      (store_trigger_param_1, ":sprop_instance"),

      (prop_instance_get_position, pos45, ":sprop_instance"),
      (prop_instance_animate_to_position,":sprop_instance",pos45,500),
      
    ]),
   (ti_on_scene_prop_animation_finished,
    [
      (store_trigger_param_1, ":sprop_instance"),
      
      
      
       (prop_instance_get_position,pos30,":sprop_instance"),
       (copy_position,pos45,pos30),
       (prop_instance_animate_to_position,":sprop_instance",pos45,100),

        
     (try_begin),
        
        
        (assign, ":close", 0),
        
       (try_for_agents,":cur_agent"),
            (agent_is_alive, ":cur_agent"),
            (agent_get_position,pos52,":cur_agent"),
            (prop_instance_get_position, pos45, ":sprop_instance"),
            (get_distance_between_positions,":distance",pos52,pos45),
            (le,":distance", 150),
            (assign, ":close", 1),
                (try_begin),
                    (eq, ":close", 1),
                    (agent_get_position,pos52,":cur_agent"),
                    (prop_instance_get_position, pos45, ":sprop_instance"),
                    (get_distance_between_positions,":distance",pos52,pos45),
                    (le,":distance", 350),
                    (agent_deliver_damage_to_agent, ":cur_agent", ":cur_agent", 500),
                (try_end),
        (try_end),
   
        (try_begin),
            (eq, ":close", 1),
            (play_sound_at_position, "snd_pistol_shot", pos45, 0),
            (init_position,pos50),
            (position_copy_origin,pos50,pos45),
            (particle_system_burst, "psys_village_fire_big", pos50, 20),
            (particle_system_burst, "psys_village_fire_smoke_big", pos50, 10),
            (particle_system_burst_no_sync, "psys_village_fire_smoke_big", pos50, 20),
            (position_move_z, pos50, -68000),
            (prop_instance_animate_to_position,":sprop_instance",pos50,10000),
        (try_end),
      
      
    (try_end),
   
    ]),

]),   
###############################################

评分

参与人数 1第纳尔 +20 互助 +1 收起 理由
vegetto + 20 + 1 鼓励

查看全部评分

26

主题

804

回帖

399

积分

骑士

民间工匠

Rank: 4Rank: 4

UID
1115705
第纳尔
4062
精华
0
互助
26
荣誉
2
贡献
0
魅力
30
注册时间
2012-12-13
鲜花(235) 鸡蛋(10)
 楼主| 发表于 2024-8-31 16:29:27 | 显示全部楼层
本帖最后由 a1550887802 于 2024-8-31 22:06 编辑


首先,这个示例是为了避开场景触发器的不方便和不可避免的双重嵌套循环而编写的。

所以利用的场景物品触发器自己的的循环结构完成了需求,当然,这种结构不仅仅是这样,它还可以利用与更多不需要场景触发器或者难以利用场景触发器的情况
还有一个优点就是可以利用场景道具触发器就在scene_props中,这样非常方便管理和移植,甚至可以在txt文件中移植,因为只需要复制或者改动一个scene_props项就可以了

但这种模式也有一些缺点:
1.虽然不会影响游戏的运行效率,但仍然会增加运行时的内存占用,这是不可避免的,所以不要过度使用
2.在这个示例中使用了用于全局的pos寄存器(位置寄存器,这是全局的寄存器),但因为场景道具触发器的独立性,它会因为场景触发器或者其他代码(比如脚本-scripts)的运行而影响位置寄存器的内容,所以在同时使用场景触发器和场景道具触发器时,要避免双方同时使用了一个位置寄存器,否则就会发生各种错误(甚至不会报红字)
3.同上一条的理由,在没必要的情况下,也不要同时再用场景触发器去控制或者影响场景道具触发器,补充说明一点,除非是为了控制一些场景内的全局条件变化,否则就别互相去控制对方
4.场景道具触发器是运行顺序是按照场景中的场景物品列表来进行的,具体顺序暂时不明确,但可以肯定的是如果在场景物品触发器运行时扰乱场景物品列表时会造成各种问题,因此解决方案要视代码的具体内容进行,这里就不展开了

29

主题

738

回帖

565

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1748
精华
0
互助
67
荣誉
0
贡献
0
魅力
6
注册时间
2022-2-3
鲜花(57) 鸡蛋(0)
发表于 2024-8-31 19:58:49 来自手机 | 显示全部楼层
用小幅移动配合ti on scene prop移动结束来规避try for scene prop,居然还有这种方法。姜还是老的辣啊。来自: Android客户端
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

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

GMT+8, 2024-11-19 08:23 , Processed in 0.113388 second(s), 26 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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