设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5977|回复: 9
打印 上一主题 下一主题

[RMVX发布] 【强势更新】按键跳跃( JumpSkill )

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

跳转到指定楼层
1
发表于 2010-6-24 22:23:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 DeathKing 于 2011-1-8 16:53 编辑


查看协议全文:猛击我
新起草的版本


通用FSL信息
 
 
脚本说明
  让角色拥有跳跃的能力,这个功能类似于《暗黑破坏神II》中野蛮人的技能。 这个脚本是友好的,在作者公开的白皮书下,你可以实现很多效果!
  同时,作者也为我们预留了许多配置,完全可以做出类似“生活技能”或是天赋的效果。


脚本截图
 
 
更新历史
- 1.1.0107 By DeathKing
      * 整理配置模块;
      * 优化算法,使他运行更为流畅;

    - 1.0.0613 By DeathKing
      * 初始版本完成;


项目附件及开发者白皮书


    • 项目工程: [1.1.0107]JumpSkill.rar (235.31 KB, 下载次数: 1086)
 
 
脚本源码
  1. #==============================================================================
  2. # ■ [VX] 按键跳跃
  3. #    [VX] Jump Skill
  4. #------------------------------------------------------------------------------
  5. #   让角色拥有跳跃的能力,这个功能类似于《暗黑破坏神II》中野蛮人的技能。
  6. #    这个脚本是友好的,在作者公开的白皮书下,你可以实现很多效果!
  7. #
  8. #    当玩家按下键时,主角就会执行跳跃,根据配置的不同,可以做出“跳跃技能”
  9. #    为生活技能的效果。
  10. #
  11. #------------------------------------------------------------------------------
  12. #    更新作者: DeathKing
  13. #    许可协议: FSL
  14. #    项目版本: 1.1.0107
  15. #    最后更新: 2011-01-07
  16. #    引用网址:
  17. #------------------------------------------------------------------------------
  18. #    - 1.1.0107 By DeathKing
  19. #      * 整理配置模块;
  20. #      * 优化算法,使他运行更为流畅;
  21. #
  22. #    - 1.0.0613 By DeathKing
  23. #      * 初始版本完成;
  24. #
  25. #==============================================================================

  26. #------------------------------------------------------------------------------
  27. # ▼ 登记FSL
  28. #------------------------------------------------------------------------------
  29. $fscript = {} if $fscript == nil
  30. $fscript["JumpSkill"] = "1.1.0107"

  31. #------------------------------------------------------------------------------
  32. # ▼ 通用配置模块
  33. #------------------------------------------------------------------------------
  34. #  在游戏中你可以修改这些常量!
  35. #  记得使用::解析域!
  36. #  FSL::JumpSkill::常量 = ***
  37. #------------------------------------------------------------------------------
  38. module FSL
  39.   module JumpSkill
  40.      
  41.     # 允许跳跃,当这个为false时则不允许跳跃
  42.     JUMP_ALLOWED = true
  43.     # 每次跳跃的距离
  44.     JUMP_LENGTH = 2
  45.     # 跳跃对应按键,可以配合全键盘脚本使用
  46.     JUMP_BUTTON = Input::L
  47.       
  48.     # 如果这个id不为0的话,只有在制定id的角色在
  49.     # 队伍中且MP足够、会跳跃技能才可施放。
  50.     # 如果JUMP_SKILL_ID为0,则指需要满足指定角色
  51.     # 在队伍中
  52.       
  53.     # 跳跃技能对应主角编号
  54.     JUMP_ACTOR_ID = 0
  55.     # 跳跃技能对应编号,一个开关属性,
  56.     # 要求跳跃技能对应主角习得此技能才可跳跃
  57.     JUMP_SKILL_ID = 0
  58.     # 每次跳跃消耗的MP
  59.     JUMP_COST_MP  = 1
  60.       
  61.     # 如果不想听见烦人的音乐,请让他等于一个空字符串
  62.     # 一个SE文件示范:"Audio/SE/Jump1"
  63.       
  64.     # 跳跃技能SE音效文件名(可跳跃的场合)
  65.     JUMP_ABLE_SE       = ""  #"Audio/SE/Jump1"
  66.     # 跳跃技能SE音效文件名(不可跳跃的场合)
  67.     JUMP_DISABLE_SE    = ""  #"Audio/SE/Buzzer1"
  68.       
  69.   end # JumpSkill
  70. end # FSL

  71. #==============================================================================
  72. # ■ Game_Player
  73. #------------------------------------------------------------------------------
  74. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  75. # 本类的实例请参考 $game_player。
  76. #==============================================================================

  77. class Game_Player < Game_Character
  78.    
  79.   include FSL::JumpSkill
  80.    
  81.   alias jump_skill_update update
  82.    
  83.   #---------------------------------------------------------------------------
  84.   # ● 刷新画面
  85.   #---------------------------------------------------------------------------
  86.   def update
  87.     jump_by_input
  88.     jump_skill_update
  89.   end
  90.   #---------------------------------------------------------------------------
  91.   # ● 是否按下跳跃键
  92.   #---------------------------------------------------------------------------
  93.   def jump_by_input
  94.     # 判断是否按下了跳跃键
  95.     return false unless Input.trigger?( JUMP_BUTTON )
  96.     # 判断是否可跳跃
  97.     if jumpable?
  98.       # 是的话就执行跳跃
  99.       # 播放跳跃SE
  100.       Audio.se_play( JUMP_ABLE_SE ) if JUMP_ABLE_SE != ""
  101.       # 扣除MP
  102.       unless JUMP_ACTOR_ID == 0
  103.         $game_actors[JUMP_ACTOR_ID].mp -= JUMP_COST_MP
  104.       end
  105.       # 执行跳跃
  106.       sjump
  107.       return true
  108.     else
  109.       # 否的话就播放无法跳跃的音效
  110.       Audio.se_play( JUMP_DISABLE_SE ) if JUMP_DISABLE_SE != ""
  111.       return false
  112.     end
  113.   end
  114.   #---------------------------------------------------------------------------
  115.   # ● 是否可跳跃
  116.   #---------------------------------------------------------------------------
  117.   #     此方法不会检查跳跃目的地是否可以通行,关于跳跃目的地是否可以通行,
  118.   #     是由sjump方法完成的。
  119.   #---------------------------------------------------------------------------
  120.   def jumpable?
  121.     # 不允许跳跃就返回false
  122.     return false unless JUMP_ALLOWED
  123.     jump_skill_actor = $game_actors[JUMP_ACTOR_ID]
  124.     jump_skill = $data_skills[JUMP_SKILL_ID]
  125.     # 获得主角是否有跳跃技能
  126.     unless JUMP_ACTOR_ID == 0
  127.       unless JUMP_SKILL_ID == 0
  128.         # 如果角色不在队伍中就无法使用
  129.         unless $game_party.members.include?( jump_skill_actor )
  130.           return false
  131.         else
  132.           # 如果指定角色不会改技能就无法使用
  133.           return false unless jump_skill_actor.skill_learn?( jump_skill )
  134.           # 如果角色的MP不够就无法使用
  135.           return false unless jump_skill_actor.mp >= JUMP_COST_MP
  136.           return true
  137.         end
  138.       else
  139.         return true
  140.       end
  141.     else
  142.       return true
  143.     end
  144.   end
  145.   #---------------------------------------------------------------------------
  146.   # ● 超级跳跃
  147.   #     x_plus : X 座标增值
  148.   #     y_plus : Y 座标增值
  149.   #---------------------------------------------------------------------------
  150.   #     此跳跃可以搜寻跳跃能力内的最大跳跃限度,遗憾的是,这个只能搜寻一条
  151.   #     直线。
  152.   #---------------------------------------------------------------------------
  153.   def sjump
  154.     # 数据初始化
  155.     x_plus = y_plus = 0
  156.     # 获得主角朝向,使用逆推搜寻
  157.     case @direction
  158.     when 2
  159.       JUMP_LENGTH.downto(1) do |i|
  160.         if passable?( x , y + i )
  161.           x_plus, y_plus = 0, i
  162.           break
  163.         end
  164.       end
  165.     when 4
  166.       JUMP_LENGTH.downto(1) do |i|
  167.         if passable?( x - i , y )
  168.           x_plus, y_plus = -i, 0
  169.           break
  170.         end
  171.       end
  172.     when 6
  173.       JUMP_LENGTH.downto(1) do |i|
  174.         if passable?( x + i , y )
  175.           x_plus, y_plus = i, 0
  176.           break
  177.         end
  178.       end
  179.     when 8
  180.       JUMP_LENGTH.downto(1) do |i|
  181.         if passable?( x , y - i )
  182.           x_plus, y_plus = 0, -i
  183.           break
  184.         end
  185.       end
  186.     end # case @direction
  187.     if x_plus.abs > y_plus.abs            # 横向距离较大
  188.       x_plus < 0 ? turn_left : turn_right
  189.     elsif x_plus.abs > y_plus.abs         # 纵向距离较大
  190.       y_plus < 0 ? turn_up : turn_down
  191.     end
  192.     @x += x_plus
  193.     @y += y_plus
  194.     distance = Math.sqrt(x_plus * x_plus + y_plus * y_plus).round
  195.     @jump_peak = 10 - @move_speed + distance
  196.     @jump_count = @jump_peak * 2
  197.     @stop_count = 0
  198.     straighten
  199.   end
  200. end
复制代码
已知BUG与冲突
* 暂无BUG报告
* 暂无冲突报告

点评

可以去掉脚本开头的项目主管项了  发表于 2010-8-5 13:59

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

2
 楼主| 发表于 2010-6-24 22:25:29 | 只看该作者
本帖最后由 DeathKing 于 2010-6-24 22:29 编辑

这里有一份由zhang更新的1.1.2的脚本,我没有采用它,因为我们没有必要去为RGSS/RGSS2兼容,这将带来麻烦。
(再次说明……论坛附件有问题,咱连TXT都无法传 {:nm_3:} )
关于这个脚本和FSL协议,希望大家能提出关于自己的意见。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-6-5
帖子
312
3
发表于 2010-6-25 08:57:15 | 只看该作者
顶一顶,生活更健康...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
135
在线时间
47 小时
注册时间
2010-6-24
帖子
10
4
发表于 2010-6-25 16:04:12 | 只看该作者
如果用了多人隊伍系統
就是4人同時行走
應該就不能用這個了吧:(
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
5
发表于 2010-6-26 20:03:53 | 只看该作者
回复 kouryu 的帖子
- -b貌似可以...


   
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3263
在线时间
3616 小时
注册时间
2006-9-6
帖子
37399

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

6
发表于 2010-6-26 20:40:09 | 只看该作者
FSL……这个发布格式很专业……
话说系统很简单,不知道效果怎么样。(以前都是用事件做)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
7
发表于 2010-6-26 20:46:36 | 只看该作者
制作很多冒险游戏会很有用
真的很棒
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
254 小时
注册时间
2010-3-21
帖子
334
8
发表于 2010-7-4 09:10:09 | 只看该作者
做的真专业啊
自由,是火一般的梦想。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-3-29
帖子
470
9
发表于 2010-7-11 20:21:53 | 只看该作者
厉害呀!楼主谢谢,脚本抱走了,我觉得用事件做的不这么好。。
黑之结界勇士
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

10
 楼主| 发表于 2010-7-16 17:01:53 | 只看该作者
如果用了多人隊伍系統
就是4人同時行走
應該就不能用這個了吧
kouryu 发表于 2010-6-25 16:04


完全可以,只是跳跃的只有主角一人。



DeathKing于2011-1-8 16:54补充以下内容:
更新,更新,强势更新。
下面这个是另一个链接:http://deathking.is-programmer.com/posts/23683.html
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-30 12:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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