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

Project1

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

[RMVX发布] 【VX】全新滑动式动态幻想菜单~~~v1.0

[复制链接]

Lv1.梦旅人

梦石
0
星屑
191
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
跳转到指定楼层
1
发表于 2013-12-19 18:45:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x

简介
呃,这才算我第一个有用的菜单脚本了,话说花了两天晚上的功夫=-=于是还是先说说参考吧:
1、叶子的任务系统(里面一个文字显示是参考了←_←这个脚本的)
2、新·简易菜单(好像是冰舞恋蝶的,只是让我知道如何让选项变横排= =)
3、某个VA的脚本教程(无意间翻到的,关于改菜单的,里面有一段是让菜单滑动,但那个作者只给了一句if..的判定句,却瞬间让我明白了,于是看了下F1用VX的RGSS2的写法写在update里了)


截图&脚本&工程范例

截图在此:

↑↓看出来动态效果了么?然后就是我改了好多地方的说= =


= =脚本发出来吧:
  1. <STRONG>=begin

  2. ┌─────────────────────────┐
  3. │ 此脚本来自小y游戏制作室,使用和转载请保留此信息。│
  4. └─────────────────────────┘
  5. ┌─────────────────────┐
  6. │ 此脚本来自66RPG,使用和转载请保留此信息。│
  7. └─────────────────────┘
  8. 小y脚本站:http://www.ygameSprite.com/(已失效)

  9. -----------------------------------------------------------------------------
  10. *滑动幻想菜单*
  11. by.小y
  12. -----------------------------------------------------------------------------
  13. ■ 说明
  14. 小y写出的目前最好的菜单了,文字显示部分参考叶子的任务系统。
  15. ■ 功能
  16. ☞轻巧不同透明度的窗口
  17. ☞小型的加强型队伍人员显示(目前最多三人)
  18. ☞显示时间、地图名与金钱
  19. ☞菜单进入完全以滑动模式!!
  20. ☞菜单上方显示文字(可以作为即时查看的任务)
  21. ☞选项横向,大幅度更改坐标
  22. ■ 使用
  23. 插入脚本至Main前,在游戏Graphics\System文件夹中插入一张菜单背景
  24. 的图片(可在设置部分设定)。
  25. ■ 注意
  26. 脚本作者已将部分内容加入设置部分,使用者可以直接在37行设置,如果
  27. 不是懂脚本的高手,请勿修改脚本部分,否则可能会造成脚本错误。
  28. -----------------------------------------------------------------------------

  29. =end
  30. </STRONG>
复制代码

其实,我会告诉你这只是我的脚本的注释么= =然后其实发到这脚本可能会被论坛给那个了:
  1. =begin

  2. ┌─────────────────────────┐
  3. │ 此脚本来自小y游戏制作室,使用和转载请保留此信息。│
  4. └─────────────────────────┘
  5. ┌─────────────────────┐
  6. │ 此脚本来自66RPG,使用和转载请保留此信息。│
  7. └─────────────────────┘
  8. 小y脚本站:http://www.ygameSprite.com/(已失效)

  9. -----------------------------------------------------------------------------
  10. *滑动幻想菜单*
  11. by.小y
  12. -----------------------------------------------------------------------------
  13. ■ 说明
  14. 小y写出的目前最好的菜单了,文字显示部分参考叶子的任务系统。
  15. ■ 功能
  16. ☞轻巧不同透明度的窗口
  17. ☞小型的加强型队伍人员显示(目前最多三人)
  18. ☞显示时间、地图名与金钱
  19. ☞菜单进入完全以滑动模式!!
  20. ☞菜单上方显示文字(可以作为即时查看的任务)
  21. ☞选项横向,大幅度更改坐标
  22. ■ 使用
  23. 插入脚本至Main前,在游戏Graphics\System文件夹中插入一张菜单背景
  24. 的图片(可在设置部分设定)。
  25. ■ 注意
  26. 脚本作者已将部分内容加入设置部分,使用者可以直接在37行设置,如果
  27. 不是懂脚本的高手,请勿修改脚本部分,否则可能会造成脚本错误。
  28. -----------------------------------------------------------------------------

  29. =end

  30. #-------------------
  31. # ■ 简易设置部分
  32. #-------------------
  33. GOLD_OPACITY = 100 # 金钱显示窗口的透明度
  34. MAPNAME_OPACITY = 100 # 地图名显示窗的透明度
  35. TIME_OPACITY = 100 # 时间显示窗口的透明度
  36. STATUS_OPACITY = 100 # 角色状态窗口的透明度
  37. BOOK_OPACITY = 100 # 介绍文字窗口的透明度

  38. MENUBACK = "菜单背景" # 菜单背景图片的图片名
  39. MENUNAME_OPACITY = 225 # 菜单背景图片的透明度


  40. #-------------------
  41. # ■ 信息设置部分
  42. #-------------------
  43. class Game_Party
  44. def get_books_info
  45. @books_info = []
  46. #----------------------------------------------------------------------
  47. #
  48. #
  49. # ↓这里设置介绍窗口中的文字
  50. 记录 = "欢迎使用这个脚本~~~←呵呵呵呵呵,其实我也不知道该说什么好了~?!"
  51. #
  52. #
  53. #
  54. @books_info[1] = Game_Book.new(记录)
  55. #----------------------------------------------------------------------
  56. end
  57. end



  58. #-----------------------------↓以下是脚本部分↓-----------------------------#
  59. #-----------------------------↓以下是脚本部分↓-----------------------------#
  60. #-----------------------------↓请非懂脚本的人↓-----------------------------#
  61. #-----------------------------↓不要擅自去修改↓-----------------------------#
  62. #-----------------------------↓否则后果请自负↓-----------------------------#
  63. class Game_Map
  64. attr_reader :map_id
  65. def mapname
  66. $mapname = load_data("Data/MapInfos.rvdata")
  67. $mapname[@map_id].name
  68. end
  69. end
  70. class Window_Mapname < Window_Base
  71. def initialize
  72. super(170, 420, 200, WLH + 32)
  73. refresh
  74. end
  75. def refresh
  76. self.contents.clear
  77. self.contents.font.color = normal_color
  78. self.contents.draw_text(55, 1, 160, WLH, $game_map.mapname.to_s)
  79. self.contents.font.color = system_color
  80. self.contents.draw_text(0, 0, 160, WLH, "地图:")
  81. end
  82. end
  83. class Window_Gold < Window_Base
  84. def initialize(x, y)
  85. super(x, y, 160, WLH + 32)
  86. refresh
  87. end
  88. def refresh
  89. self.contents.clear
  90. self.contents.font.color = system_color
  91. self.contents.draw_text(0, 0, 160, WLH, "金钱:")
  92. draw_currency_value($game_party.gold, 4, 0, 120)
  93. end
  94. end
  95. class Window_PlayTime < Window_Base
  96. def initialize(x, y)
  97. super(x, y, 161 , WLH + 32)
  98. refresh
  99. end
  100. def refresh
  101. self.contents.clear
  102. self.contents.font.color = system_color
  103. self.contents.draw_text(0, 0, 120, WLH, "时间:")
  104. @total_sec = Graphics.frame_count / Graphics.frame_rate
  105. hour = @total_sec / 60 / 60
  106. min = @total_sec / 60 % 60
  107. sec = @total_sec % 60
  108. text = sprintf("%02d:%02d:%02d", hour, min, sec)
  109. self.contents.font.color = normal_color
  110. self.contents.draw_text(0+10, 1, 120, WLH, text, 2)
  111. end
  112. def update
  113. super
  114. if Graphics.frame_count / Graphics.frame_rate != @total_sec
  115. refresh
  116. end
  117. end
  118. end
  119. class Window_MenuStatus < Window_Selectable
  120. def initialize(x, y)
  121. super(x, y, 272, 318)
  122. refresh
  123. self.active = false
  124. self.index = -1
  125. end
  126. def refresh
  127. self.contents.clear
  128. @item_max = 3
  129. for actor in $game_party.members
  130. draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
  131. x = 74
  132. y = actor.index * 96 + WLH / 2
  133. draw_actor_name(actor, x+40, y)
  134. draw_actor_class(actor, x + 110, y)
  135. draw_actor_level(actor, x-30, y + WLH * 2+10)
  136. draw_actor_state(actor, x-74, y + WLH * 2+10)
  137. draw_actor_hp(actor, x + 30, y + WLH * 1)
  138. draw_actor_mp(actor, x + 30, y + WLH * 2)
  139. end
  140. end
  141. end
  142. class Game_Book
  143. attr_accessor :briefing # 简介
  144. def initialize(briefing)
  145. @briefing = briefing
  146. end
  147. def height
  148. text = @briefing.clone
  149. x = 0
  150. y = 64
  151. min_y = 0
  152. # 限制文字处理
  153. begin
  154. last_text = text.clone
  155. text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  156. end until text == last_text
  157. text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  158. $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  159. end
  160. # c 获取 1 个字 (如果不能取得文字就循环)
  161. while ((c = text.slice!(/./m)) != nil)
  162. # 自动换行处理
  163. if x + 21 > 368
  164. y += [24, min_y].max
  165. min_y = 0
  166. x = 0
  167. end
  168. # x 为要描绘文字的加法运算
  169. x += 22
  170. end
  171. return (y + [24, min_y].max)
  172. end
  173. def id
  174. return $game_party.books_info.index(self)
  175. end
  176. end
  177. class Window_Book < Window_Base
  178. def initialize(book_id)
  179. super(372, 0, 272, 181)
  180. refresh(book_id)
  181. self.opacity = BOOK_OPACITY
  182. end
  183. def refresh(book_id)
  184. self.oy = 0
  185. self.visible = true
  186. return if book_id.nil?
  187. book = $game_party.books_info[book_id]
  188. if !book.nil?
  189. self.contents = Bitmap.new(self.width - 32, book.height)
  190. else
  191. self.contents = Bitmap.new(self.width - 32, self.height - 32)
  192. return
  193. end
  194. self.contents.font.color = normal_color
  195. draw_book_info(book)
  196. end
  197. def draw_book_info(book)
  198. self.contents.font.color = normal_color
  199. chenge_special_character(book.briefing.clone)
  200. end
  201. end
  202. class Game_Party
  203. attr_writer :latest_book
  204. def books_info
  205. if @books_info.nil?
  206. get_books_info
  207. end
  208. return @books_info
  209. end
  210. def current_books
  211. if @current_books.nil?
  212. @current_books = []
  213. end
  214. return @current_books
  215. end
  216. def latest_task
  217. if !current_books.include?(@latest_book)
  218. @latest_book = current_books[0]
  219. end
  220. return @latest_book
  221. end
  222. end
  223. class Window_Base < Window
  224. def chenge_special_character(text, x=0, y=0)
  225. # 记录换行时y坐标最小加值
  226. min_y = 0
  227. # 限制文字处理
  228. begin
  229. last_text = text.clone
  230. text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  231. end until text == last_text
  232. text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  233. $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  234. end
  235. # c 获取 1 个字 (如果不能取得文字就循环)
  236. while ((c = text.slice!(/./m)) != nil)
  237. # 自动换行处理
  238. if x + self.contents.text_size(c).width > self.contents.width
  239. y += [WLH, min_y].max
  240. min_y = 0
  241. x = 0
  242. end
  243. # 描绘文字
  244. self.contents.draw_text(4 + x, y, 40, WLH, c)
  245. # x 为要描绘文字的加法运算
  246. x += self.contents.text_size(c).width
  247. end
  248. end
  249. end
  250. class Scene_Menu < Scene_Base
  251. def start
  252. super
  253. create_menu_background
  254. create_command_window
  255. @gold_window = Window_Gold.new(10, 420)
  256. @mapname_window = Window_Mapname.new
  257. @status_window = Window_MenuStatus.new(-100, 0)
  258. @book_window = Window_Book.new(1)
  259. @time_window = Window_PlayTime.new(370, 420)
  260. @gold_window.opacity = GOLD_OPACITY
  261. @mapname_window.opacity = MAPNAME_OPACITY
  262. @time_window.opacity = TIME_OPACITY
  263. @status_window.opacity = STATUS_OPACITY
  264. @menu_name = Sprite.new
  265. @menu_name.bitmap = Cache.system(MENUBACK)
  266. @menu_name.opacity = MENUNAME_OPACITY
  267. end
  268. def terminate
  269. super
  270. dispose_menu_background
  271. @command_window.dispose
  272. @gold_window.dispose
  273. @status_window.dispose
  274. @mapname_window.dispose
  275. @menu_name.dispose
  276. @time_window.dispose
  277. @book_window.dispose
  278. end
  279. def update
  280. super
  281. update_menu_background
  282. @command_window.update
  283. @gold_window.update
  284. @menu_name.update
  285. @time_window.update
  286. @status_window.update
  287. @mapname_window.update
  288. @book_window.update
  289. if @command_window.active
  290. update_command_selection
  291. elsif @status_window.active
  292. update_actor_selection
  293. end
  294. if @command_window.x >= 0

  295. else
  296. @command_window.x += 2
  297. end
  298. if @gold_window.y <= 368

  299. else
  300. @gold_window.y -= 2
  301. end
  302. if @mapname_window.y <= 368

  303. else
  304. @mapname_window.y -= 2
  305. end
  306. if @time_window.y <= 368

  307. else
  308. @time_window.y -= 2
  309. end
  310. if @status_window.x >= 0

  311. else
  312. @status_window.x += 2
  313. end
  314. if @book_window.x <= 272

  315. else
  316. @book_window.x -= 2
  317. end
  318. end
  319. def create_command_window
  320. s1 = Vocab::item
  321. s2 = Vocab::skill
  322. s3 = Vocab::equip
  323. s4 = Vocab::status
  324. s5 = Vocab::save
  325. s6 = "结束"
  326. @command_window = Window_Command.new(544, [s1, s2, s3, s4, s5, s6], 6)
  327. @command_window.index = @menu_index
  328. @command_window.x = -30
  329. @command_window.y = 320
  330. @command_window.opacity = 0
  331. if $game_party.members.size == 0 # 同伴人数为 0 的情况下
  332. @command_window.draw_item(0, false) # 物品无效化
  333. @command_window.draw_item(1, false) # 特技无效化
  334. @command_window.draw_item(2, false) # 装备无效化
  335. @command_window.draw_item(3, false) # 状态无效化
  336. end
  337. if $game_system.save_disabled # 禁止存档的情况下
  338. @command_window.draw_item(4, false) # 存档无效化
  339. end
  340. end
  341. end
复制代码

以上请无视,因为工程在下面:
Project3.zip (306.6 KB, 下载次数: 140)

点评

快快修正,以便P蜀黍名正言顺地表彰你。  发表于 2013-12-23 16:53

评分

参与人数 1星屑 +275 收起 理由
怪蜀黍 + 275 发布奖

查看全部评分


——旧坑欢迎戳

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39850
在线时间
7493 小时
注册时间
2009-7-6
帖子
13485

开拓者贵宾

2
发表于 2013-12-19 23:15:58 | 只看该作者
我能吐槽这代码排版吗?

点评

+1  发表于 2013-12-20 21:35
呃,不知道怎么了,代码全部没了签名的空格...  发表于 2013-12-20 12:25
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4509
在线时间
5228 小时
注册时间
2009-4-29
帖子
14318

贵宾

3
发表于 2013-12-23 12:59:57 | 只看该作者
按B键无法退出菜单,请修正。

点评

不是啊,这是因为工程里我用自动执行事件打开菜单没用独立开关或暂时消除事件= =  发表于 2013-12-23 16:52
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
381
在线时间
238 小时
注册时间
2013-8-20
帖子
496
4
发表于 2013-12-23 13:18:55 | 只看该作者
本帖最后由 白魔导师宝儿 于 2013-12-23 13:20 编辑

感觉还是挺不错的
拿去用可以吧

@protosssonny

不能退出是因为用事件的自动执行打开菜单而已

点评

只要注明脚本来源就行  发表于 2014-1-6 12:34
欢迎使用哦,如果要改改的话,我有个设定的地方,你也可以改窗口什么的  发表于 2013-12-23 16:53
不定期回来6R玩。
下方广告帖,欢迎点击
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-10 17:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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