赞 | 13 |
VIP | 118 |
好人卡 | 28 |
积分 | 12 |
经验 | 35779 |
最后登录 | 2017-7-6 |
在线时间 | 1564 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1195
- 在线时间
- 1564 小时
- 注册时间
- 2008-7-30
- 帖子
- 4418
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 DeathKing 于 2011-1-8 16:53 编辑
查看协议全文:猛击我
新起草的版本
通用FSL信息
脚本说明
让角色拥有跳跃的能力,这个功能类似于《暗黑破坏神II》中野蛮人的技能。 这个脚本是友好的,在作者公开的白皮书下,你可以实现很多效果!
同时,作者也为我们预留了许多配置,完全可以做出类似“生活技能”或是天赋的效果。
脚本截图
更新历史
- 1.1.0107 By DeathKing
* 整理配置模块;
* 优化算法,使他运行更为流畅;
- 1.0.0613 By DeathKing
* 初始版本完成;
项目附件及开发者白皮书
脚本源码- #==============================================================================
- # ■ [VX] 按键跳跃
- # [VX] Jump Skill
- #------------------------------------------------------------------------------
- # 让角色拥有跳跃的能力,这个功能类似于《暗黑破坏神II》中野蛮人的技能。
- # 这个脚本是友好的,在作者公开的白皮书下,你可以实现很多效果!
- #
- # 当玩家按下键时,主角就会执行跳跃,根据配置的不同,可以做出“跳跃技能”
- # 为生活技能的效果。
- #
- #------------------------------------------------------------------------------
- # 更新作者: DeathKing
- # 许可协议: FSL
- # 项目版本: 1.1.0107
- # 最后更新: 2011-01-07
- # 引用网址:
- #------------------------------------------------------------------------------
- # - 1.1.0107 By DeathKing
- # * 整理配置模块;
- # * 优化算法,使他运行更为流畅;
- #
- # - 1.0.0613 By DeathKing
- # * 初始版本完成;
- #
- #==============================================================================
-
- #------------------------------------------------------------------------------
- # ▼ 登记FSL
- #------------------------------------------------------------------------------
- $fscript = {} if $fscript == nil
- $fscript["JumpSkill"] = "1.1.0107"
-
- #------------------------------------------------------------------------------
- # ▼ 通用配置模块
- #------------------------------------------------------------------------------
- # 在游戏中你可以修改这些常量!
- # 记得使用::解析域!
- # FSL::JumpSkill::常量 = ***
- #------------------------------------------------------------------------------
- module FSL
- module JumpSkill
-
- # 允许跳跃,当这个为false时则不允许跳跃
- JUMP_ALLOWED = true
- # 每次跳跃的距离
- JUMP_LENGTH = 2
- # 跳跃对应按键,可以配合全键盘脚本使用
- JUMP_BUTTON = Input::L
-
- # 如果这个id不为0的话,只有在制定id的角色在
- # 队伍中且MP足够、会跳跃技能才可施放。
- # 如果JUMP_SKILL_ID为0,则指需要满足指定角色
- # 在队伍中
-
- # 跳跃技能对应主角编号
- JUMP_ACTOR_ID = 0
- # 跳跃技能对应编号,一个开关属性,
- # 要求跳跃技能对应主角习得此技能才可跳跃
- JUMP_SKILL_ID = 0
- # 每次跳跃消耗的MP
- JUMP_COST_MP = 1
-
- # 如果不想听见烦人的音乐,请让他等于一个空字符串
- # 一个SE文件示范:"Audio/SE/Jump1"
-
- # 跳跃技能SE音效文件名(可跳跃的场合)
- JUMP_ABLE_SE = "" #"Audio/SE/Jump1"
- # 跳跃技能SE音效文件名(不可跳跃的场合)
- JUMP_DISABLE_SE = "" #"Audio/SE/Buzzer1"
-
- end # JumpSkill
- end # FSL
-
- #==============================================================================
- # ■ Game_Player
- #------------------------------------------------------------------------------
- # 处理主角的类。事件启动的判定、以及地图的滚动等功能。
- # 本类的实例请参考 $game_player。
- #==============================================================================
-
- class Game_Player < Game_Character
-
- include FSL::JumpSkill
-
- alias jump_skill_update update
-
- #---------------------------------------------------------------------------
- # ● 刷新画面
- #---------------------------------------------------------------------------
- def update
- jump_by_input
- jump_skill_update
- end
- #---------------------------------------------------------------------------
- # ● 是否按下跳跃键
- #---------------------------------------------------------------------------
- def jump_by_input
- # 判断是否按下了跳跃键
- return false unless Input.trigger?( JUMP_BUTTON )
- # 判断是否可跳跃
- if jumpable?
- # 是的话就执行跳跃
- # 播放跳跃SE
- Audio.se_play( JUMP_ABLE_SE ) if JUMP_ABLE_SE != ""
- # 扣除MP
- unless JUMP_ACTOR_ID == 0
- $game_actors[JUMP_ACTOR_ID].mp -= JUMP_COST_MP
- end
- # 执行跳跃
- sjump
- return true
- else
- # 否的话就播放无法跳跃的音效
- Audio.se_play( JUMP_DISABLE_SE ) if JUMP_DISABLE_SE != ""
- return false
- end
- end
- #---------------------------------------------------------------------------
- # ● 是否可跳跃
- #---------------------------------------------------------------------------
- # 此方法不会检查跳跃目的地是否可以通行,关于跳跃目的地是否可以通行,
- # 是由sjump方法完成的。
- #---------------------------------------------------------------------------
- def jumpable?
- # 不允许跳跃就返回false
- return false unless JUMP_ALLOWED
- jump_skill_actor = $game_actors[JUMP_ACTOR_ID]
- jump_skill = $data_skills[JUMP_SKILL_ID]
- # 获得主角是否有跳跃技能
- unless JUMP_ACTOR_ID == 0
- unless JUMP_SKILL_ID == 0
- # 如果角色不在队伍中就无法使用
- unless $game_party.members.include?( jump_skill_actor )
- return false
- else
- # 如果指定角色不会改技能就无法使用
- return false unless jump_skill_actor.skill_learn?( jump_skill )
- # 如果角色的MP不够就无法使用
- return false unless jump_skill_actor.mp >= JUMP_COST_MP
- return true
- end
- else
- return true
- end
- else
- return true
- end
- end
- #---------------------------------------------------------------------------
- # ● 超级跳跃
- # x_plus : X 座标增值
- # y_plus : Y 座标增值
- #---------------------------------------------------------------------------
- # 此跳跃可以搜寻跳跃能力内的最大跳跃限度,遗憾的是,这个只能搜寻一条
- # 直线。
- #---------------------------------------------------------------------------
- def sjump
- # 数据初始化
- x_plus = y_plus = 0
- # 获得主角朝向,使用逆推搜寻
- case @direction
- when 2
- JUMP_LENGTH.downto(1) do |i|
- if passable?( x , y + i )
- x_plus, y_plus = 0, i
- break
- end
- end
- when 4
- JUMP_LENGTH.downto(1) do |i|
- if passable?( x - i , y )
- x_plus, y_plus = -i, 0
- break
- end
- end
- when 6
- JUMP_LENGTH.downto(1) do |i|
- if passable?( x + i , y )
- x_plus, y_plus = i, 0
- break
- end
- end
- when 8
- JUMP_LENGTH.downto(1) do |i|
- if passable?( x , y - i )
- x_plus, y_plus = 0, -i
- break
- end
- end
- end # case @direction
- if x_plus.abs > y_plus.abs # 横向距离较大
- x_plus < 0 ? turn_left : turn_right
- elsif x_plus.abs > y_plus.abs # 纵向距离较大
- y_plus < 0 ? turn_up : turn_down
- end
- @x += x_plus
- @y += y_plus
- distance = Math.sqrt(x_plus * x_plus + y_plus * y_plus).round
- @jump_peak = 10 - @move_speed + distance
- @jump_count = @jump_peak * 2
- @stop_count = 0
- straighten
- end
- end
复制代码 已知BUG与冲突
* 暂无BUG报告
* 暂无冲突报告
|
|