- 好友
- 1
- 在线时间
- 0 小时
- 最后登录
- 2026-2-21
平民

- UID
- 3683912
- 第纳尔
- 14
- 精华
- 0
- 互助
- 0
- 荣誉
- 0
- 贡献
- 0
- 魅力
- 0
- 注册时间
- 2024-8-2
 鲜花( 2)  鸡蛋( 0)
|
|
使用要求:看得懂ms代码 使用要求:必须对于作者也就是我,致谢,贡献者,Credit等署名 署名为:夜幕 以下为MT模块: - left_hand_burst_activate = ( # 技能触发器:按键触发后生成spr
- 0, 0, 0, # 无循环间隔,仅在满足条件的触发时执行
- [(key_clicked, key_z), (neg|main_hero_fallen)], # 按下Z键且主角未倒地时可触发
- [
- #夜幕
- (get_player_agent_no, ":player_agent"), # 获取玩家agent编号
- (agent_is_active, ":player_agent"), # 确保玩家agent有效
- (agent_get_wielded_item, ":weapon", ":player_agent", 0), # 获取玩家主手武器
- (ge, ":weapon", 0), # 确保武器有效才能读取slot参数
- (item_get_slot, ":cooldown_msec", ":weapon", slot_item_left_hand_skill_cooldown_msec), # 读取武器绑定的冷却时间(以0.1秒为单位)
- (item_get_slot, ":anim", ":weapon", slot_item_anim), # 读取武器绑定的冷却时间(以0.1秒为单位)
- (item_get_slot, ":duration_msec", ":weapon", slot_item_left_hand_skill_duration_msec), # 读取武器绑定的持续时间(以0.1秒为单位)
- (item_get_slot, ":base_radius", ":weapon", slot_item_left_hand_skill_base_radius), # 读取武器绑定的基础半径(厘米)
- (item_get_slot, ":damage_delay_msec", ":weapon", slot_item_left_hand_skill_damage_delay_msec), # 读取武器绑定的伤害生效延迟(以0.1秒为单位)
- (item_get_slot, ":skill_type", ":weapon", slot_item_skill_type), # 读取武器绑定的伤害生效延迟(以0.1秒为单位)
- (gt, ":duration_msec", 0), # 必须配置持续时间
- (gt, ":base_radius", 0), # 必须配置基础半径
- (ge, ":damage_delay_msec", 0), # 伤害延迟可为0,不能为负数
- (val_mul, ":cooldown_msec", 100), # 将冷却时间从0.1秒单位转换为毫秒(×100)
- (val_mul, ":duration_msec", 100), # 将持续时间从0.1秒单位转换为毫秒(×100)
- (val_mul, ":damage_delay_msec", 100), # 将伤害延迟从0.1秒单位转换为毫秒(×100)
- (gt, ":cooldown_msec", 0), # 转换后冷却必须有效
- (gt, ":duration_msec", 0), # 转换后持续必须有效
- (ge, ":damage_delay_msec", 0), # 转换后伤害延迟可为0,不能为负数
- (store_mission_timer_a_msec, ":cur_time"), # 记录当前时间(毫秒)
- (agent_get_slot, ":next_time", ":player_agent", slot_agent_left_hand_skill_cooldown_time), # 读取冷却结束时间
- (ge, ":cur_time", ":next_time"), # 当前时间必须达到冷却结束时间
- (try_begin), # 如果已有旧的spr则隐藏,避免残留
- (agent_get_slot, ":old_prop", ":player_agent", slot_agent_left_hand_skill_prop), # 取出旧prop实例
- (prop_instance_is_valid, ":old_prop"), # 确保旧prop实例有效
- (scene_prop_set_visibility, ":old_prop", 0), # 隐藏旧prop,避免重复显示
- (try_end), # 旧prop处理结束
- (spawn_scene_prop, ":skill_type"), # 生成新的左手爆发spr实例
- (assign, ":prop_instance", reg0), # 获取新生成的prop实例id
- (scene_prop_set_visibility, ":prop_instance", 1), # 显示新生成的prop
- (agent_set_attached_scene_prop, ":player_agent", ":prop_instance", 0, 19, 1), # 附着prop到左手骨骼(bone 19)
- (agent_set_attached_scene_prop_x, ":player_agent", 8, 0), # 设置prop相对左手的X偏移(厘米)
- (agent_set_attached_scene_prop_y, ":player_agent", 6, 0), # 设置prop相对左手的Y偏移(厘米)
- (agent_set_attached_scene_prop_z, ":player_agent", -4, 0), # 设置prop相对左手的Z偏移(厘米)
- (agent_set_slot, ":player_agent", slot_agent_left_hand_skill_prop, ":prop_instance"), # 记录当前prop实例到玩家槽位
- (agent_set_slot, ":player_agent", slot_agent_left_hand_skill_start_time, ":cur_time"), # 记录技能开始时间
- (store_add, ":damage_time", ":cur_time", ":damage_delay_msec"), # 计算本次技能可开始伤害的时间点
- (agent_set_slot, ":player_agent", slot_agent_left_hand_skill_damage_time, ":damage_time"), # 写入本次技能可开始伤害时间
- (store_add, ":end_time", ":cur_time", ":duration_msec"), # 计算技能结束时间
- (agent_set_slot, ":player_agent", slot_agent_left_hand_skill_end_time, ":end_time"), # 写入技能结束时间
- (store_add, ":cooldown_time", ":cur_time", ":cooldown_msec"), # 计算技能冷却结束时间
- (agent_set_slot, ":player_agent", slot_agent_left_hand_skill_cooldown_time, ":cooldown_time"), # 写入冷却结束时间
- (agent_set_animation, ":player_agent", ":anim", 1), # 播放释放动作动画
- (try_begin),
- (eq,":anim","anim_jianwu"),
- (display_message, "@正 在 使 用 技 能 : 提 利 卡 斯 之 剑^技 能 类 型 : 提 利 卡 斯 系 魔 法", 0xADD8E6),
- (try_end),
- ])#夜幕
- left_hand_burst_update = ( # 技能更新器:进行骨骼级碰撞判定并造成伤害
- 0.1, 0, 0, # 每0.1秒执行一次,控制判定频率
- [],
- [
- #夜幕
- (get_player_agent_no, ":player_agent"), # 获取玩家agent编号
- (agent_is_active, ":player_agent"), # 确保玩家agent有效
- (agent_get_slot, ":prop_instance", ":player_agent", slot_agent_left_hand_skill_prop), # 获取当前prop实例
- (prop_instance_is_valid, ":prop_instance"), # 确保prop实例仍有效
- (agent_get_slot, ":end_time", ":player_agent", slot_agent_left_hand_skill_end_time), # 读取技能结束时间
- (store_mission_timer_a_msec, ":cur_time"), # 获取当前时间(毫秒)
- (try_begin), # 若已到结束时间则清理prop
- (ge, ":cur_time", ":end_time"), # 当前时间超过结束时间
- (scene_prop_set_visibility, ":prop_instance", 0), # 隐藏prop
- (assign, ":invalid", -1), # 用-1表示无效prop
- (agent_set_slot, ":player_agent", slot_agent_left_hand_skill_prop, ":invalid"), # 重置prop槽位
- (else_try), # 未结束则继续进行骨骼级碰撞判定
- (agent_get_wielded_item, ":weapon", ":player_agent", 0), # 获取玩家主手武器
- (ge, ":weapon", 0), # 确保武器有效才能读取slot参数
- (item_get_slot, ":base_radius", ":weapon", slot_item_left_hand_skill_base_radius), # 读取武器绑定的骨骼碰撞半径(厘米)
- (item_get_slot, ":damage_multiplier", ":weapon", slot_item_left_hand_skill_damage_multiplier), # 读取武器绑定的伤害倍率(百分比)
- (gt, ":base_radius", 0), # 基础半径必须有效
- (gt, ":damage_multiplier", 0), # 伤害倍率必须有效
- (agent_get_slot, ":damage_time", ":player_agent", slot_agent_left_hand_skill_damage_time), # 读取本次技能可开始伤害时间
- (ge, ":cur_time", ":damage_time"), # 动作执行达到延迟时间后才允许造成伤害
- (prop_instance_get_position, pos3, ":prop_instance"), # 获取技能spr当前位置,避免使用玩家中心点导致误伤
- (agent_get_team, ":player_team", ":player_agent"), # 获取玩家队伍
- (assign, ":damage", 0), # 初始化伤害值
- (item_get_swing_damage, ":swing", ":weapon"), # 读取挥砍伤害
- (item_get_thrust_damage, ":thrust", ":weapon"), # 读取刺击伤害
- (assign, ":damage", ":swing"), # 默认使用挥砍伤害
- (val_max, ":damage", ":thrust"), # 取挥砍与刺击中较大的作为基础伤害
- (val_mul, ":damage", ":damage_multiplier"), # 基础伤害乘武器绑定倍率(百分比)
- (val_div, ":damage", 100), # 百分比还原,得到最终伤害
- (gt, ":damage", 0), # 最终伤害必须大于0
- (try_for_agents, ":enemy_agent"), # 遍历所有agent寻找敌人
- (agent_is_alive, ":enemy_agent"), # 目标必须存活
- (agent_is_human, ":enemy_agent"), # 目标必须为人形
- (agent_get_team, ":enemy_team", ":enemy_agent"), # 获取目标队伍
- (teams_are_enemies, ":player_team", ":enemy_team"), # 必须是敌对关系
- (agent_get_slot, ":last_hit_time", ":enemy_agent", slot_agent_left_hand_skill_last_hit_time), # 读取目标上次被命中的时间
- (ge, ":cur_time", ":last_hit_time"), # 当前时间必须超过记录时间,避免重复命中
- (assign, ":hit_bone", 0), # 初始化是否命中骨骼标记
- (agent_get_bone_position, pos4, ":enemy_agent", 6, 1), # 读取敌人躯干骨骼位置(全局)
- (get_distance_between_positions, ":d0", pos3, pos4), # 计算技能spr与躯干骨骼距离
- (try_begin), # 先检测躯干骨骼命中
- (le, ":d0", ":base_radius"), # 半径内则判定命中
- (assign, ":hit_bone", 1), # 记录已命中
- (else_try), # 躯干未命中则继续检测头部
- (agent_get_bone_position, pos4, ":enemy_agent", 7, 1), # 读取敌人头部骨骼位置(全局)
- (get_distance_between_positions, ":d1", pos3, pos4), # 计算技能spr与头部骨骼距离
- (le, ":d1", ":base_radius"), # 半径内则判定命中
- (assign, ":hit_bone", 1), # 记录已命中
- (else_try), # 头部未命中则继续检测骨盆
- (agent_get_bone_position, pos4, ":enemy_agent", 0, 1), # 读取敌人骨盆骨骼位置(全局)
- (get_distance_between_positions, ":d2", pos3, pos4), # 计算技能spr与骨盆骨骼距离
- (le, ":d2", ":base_radius"), # 半径内则判定命中
- (assign, ":hit_bone", 1), # 记录已命中
- (try_end),
- (eq, ":hit_bone", 1), # 仅骨骼检测命中时才真正造成伤害
- (agent_deliver_damage_to_agent, ":player_agent", ":enemy_agent", ":damage", ":weapon"), # 依据武器伤害倍率对敌人造成伤害
- (agent_play_sound, ":enemy_agent", "snd_metal_hit_high_armor_high_damage"), # 播放音效
- (agent_set_slot, ":enemy_agent", slot_agent_left_hand_skill_last_hit_time, ":end_time"), # 记录命中时间为本次技能结束时间,避免多段伤害
- (try_end), # 遍历敌人结束
- (try_end), # 技能结束检查结束
- ])#夜幕
复制代码 以下为一些武器参数- slot_item_left_hand_skill_cooldown_msec = 209 # 技能:绑定到武器上的冷却时间(毫秒)
- slot_item_left_hand_skill_duration_msec = 210 # 技能:绑定到武器上的持续时间(毫秒)
- slot_item_left_hand_skill_base_radius = 211 # 技能:绑定到武器上的基础半径(厘米)
- slot_item_left_hand_skill_damage_delay_msec = 212 # 技能:绑定到武器上的伤害生效延迟(以0.1秒为单位)
- slot_item_left_hand_skill_damage_multiplier = 213 #伤害倍率百分比
- slot_item_anim = 214 #动作
- slot_item_skill_type = 215 #技能模型
复制代码
|
|