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

Project1

 找回密码
 注册会员
搜索
楼主: zxc3824
打印 上一主题 下一主题

[已经解决] 请问如何制作图标选项菜单

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
11
 楼主| 发表于 2011-2-6 11:12:31 | 只看该作者
回复 1136823987 的帖子

有错啊,请修改一下吧

点评

[有表情。]  发表于 2011-2-6 12:18
回复 支持 反对

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
12
发表于 2011-2-6 12:34:31 | 只看该作者
图片选项的话...这个试试
  1. #==============================================================================
  2. # ■ Window_Picture_Command
  3. #------------------------------------------------------------------------------
  4. =begin
  5. 注意,如果支持鼠标请配上鼠标脚本。
  6. 该脚本是用图片做命令按钮,使用起来比较简单,脚本会自动判断位置。
  7. 使用方法:
  8. 与调用一般命令窗口一样!
  9. type描绘类型
  10. type = 1 只支持键盘
  11. type = 2 支持键盘+鼠标
  12. 如:先设定一个命令按钮图片以及坐标
  13. p1 = ["图片名",图片X坐标,图片Y坐标]
  14. 范例游戏里为
  15.     #################################################
  16.     s1 = ["新游戏",100,0]
  17.     s2 = ["继续游戏",200,150]
  18.     s3 = ["离开游戏",300,200]
  19.     @command_window = Window_Picture_Command.new([s1,s2,s3],type)
  20.     #################################################
  21.     这里的type的值就是刚才所支持的
  22.     type = 1 只支持键盘
  23.     type = 2 支持键盘+鼠标   
  24.     #################################################
  25.     s1 = ["新游戏",100,0]
  26.     s2 = ["继续游戏",200,150]
  27.     s3 = ["离开游戏",300,200]
  28.     @command_window = Window_Picture_Command.new([s1,s2,s3],2)
  29.     #################################################
  30.   大概就这样了,不明白看范例游戏吧。
  31. 注意,如果支持鼠标请配上鼠标脚本。
  32. =end
  33. #==============================================================================
  34. class Window_Picture_Command < Window_Selectable
  35.   attr_accessor :active
  36.   #--------------------------------------------------------------------------
  37.   # ● 初始化对像
  38.   #     width    : 窗口的宽
  39.   #     commands : 命令字符串序列
  40.   #--------------------------------------------------------------------------
  41.   def initialize(commands,type=1)
  42.     # 由命令的个数计算出窗口的高
  43.     super(0, 0, 640, 480)
  44.     @item_max = commands.size
  45.     @commands = commands
  46.     @dash = []
  47.     @sprite = []
  48.     @active = true
  49.     @type = type
  50.     @move_index = self.index
  51.     self.opacity = 0
  52.     self.contents = Bitmap.new(width - 32, @item_max * 32)
  53.     refresh
  54.     self.index = 0
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 刷新
  58.   #--------------------------------------------------------------------------
  59.   def refresh
  60.     self.contents.clear
  61.     for i in 0...@item_max
  62.       draw_picture_item(i, @type)
  63.     end
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 释放
  67.   #--------------------------------------------------------------------------
  68.   def dispose
  69.     super
  70.     for index in @dash
  71.      if @sprite[index] != nil
  72.        @sprite[index].dispose
  73.        @sprite[index].bitmap.dispose
  74.      end
  75.     end
  76.   end  
  77.   #--------------------------------------------------------------------------
  78.   # ● 描绘图片项目
  79.   #     index : 项目编号
  80.   #     type  : 描绘类型
  81.   #     type = 1 只支持键盘
  82.   #     type = 2 双面支持
  83.   #--------------------------------------------------------------------------
  84.   def draw_picture_item(index, type)
  85.     @sprite[index] = Sprite.new
  86.     if @commands[index][0] == nil
  87.       p "图片名设置有误"
  88.     end
  89.     if @commands[index][1] == nil
  90.       p "图片X坐标设置有误"
  91.     end
  92.     if @commands[index][2] == nil
  93.       p "图片Y坐标设置有误"
  94.     end
  95.     bitmap = RPG::Cache.picture(@commands[index][0])
  96.     @sprite[index].bitmap = bitmap
  97.     @sprite[index].x = @commands[index][1]
  98.     @sprite[index].y = @commands[index][2]
  99.     @sprite[index].index = index
  100.     if @sprite[index].index != self.index
  101.       @sprite[index].color = Color.new(0,0,0,100)
  102.     else
  103.       @sprite[index].color = Color.new(0,0,0,0)
  104.     end
  105.     @dash.push(index)
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 刷新图片项目
  109.   #--------------------------------------------------------------------------
  110.   def update_item
  111.     if @type == 2
  112.     for index in @dash
  113.      if @sprite[index] != nil
  114.       top_x = @sprite[index].x
  115.       top_y = @sprite[index].y
  116.       mouse_x, mouse_y = Mouse.get_mouse_pos
  117.       bottom_x = top_x + @sprite[index].bitmap.width
  118.       bottom_y = top_y + @sprite[index].bitmap.height
  119.       if (mouse_x > top_x) and (mouse_y > top_y) and
  120.            (mouse_x < bottom_x) and (mouse_y < bottom_y)
  121.            self.index = @sprite[index].index
  122.            if @move_index != self.index
  123.            Se.ok
  124.            @move_index = self.index
  125.          end
  126.       end
  127.       if @sprite[index].index != self.index
  128.         @sprite[index].color = Color.new(0,0,0,100)
  129.       else
  130.         @sprite[index].color = Color.new(0,0,0,0)
  131.       end
  132.     end
  133.     end
  134.     elsif @type == 1
  135.      for index in @dash
  136.         if @sprite[index].index != self.index
  137.          @sprite[index].color = Color.new(0,0,0,100)
  138.        else
  139.         @sprite[index].color = Color.new(0,0,0,0)
  140.        end
  141.      end  
  142.    end
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 图片项目无效化
  146.   #     index : 项目编号
  147.   #--------------------------------------------------------------------------
  148.   def disable_item(index)
  149.     @sprite[index].color = Color.new(0,0,0,100)
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 图片的显示读取
  153.   #--------------------------------------------------------------------------
  154.   def visible
  155.     for i in 0...@item_max
  156.       p @sprite[i].visible = visible
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 图片的显示
  161.   #--------------------------------------------------------------------------
  162.   def visible=(visible)
  163.     for i in 0...@item_max
  164.       @sprite[i].visible = visible
  165.     end
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 刷新
  169.   #--------------------------------------------------------------------------
  170.   def update
  171.     if @active == true
  172.     super
  173.     if self.active and @item_max > 0 and @index >= 0
  174.       if Input.repeat?(Input::DOWN)
  175.         if (@column_max == 1 and Input.trigger?(Input::DOWN)) or @index < @item_max - @column_max
  176.           $game_system.se_play($data_system.cursor_se)
  177.           @index = @index % @item_max
  178.         end
  179.       end
  180.       if Input.repeat?(Input::UP)
  181.         if (@column_max == 1 and Input.trigger?(Input::UP)) or @index >= @column_max
  182.           $game_system.se_play($data_system.cursor_se)
  183.           @index = @index % @item_max
  184.         end
  185.       end
  186.       if Input.repeat?(Input::RIGHT)
  187.         if @column_max >= 2 and @index < @item_max - 1
  188.           $game_system.se_play($data_system.cursor_se)
  189.           @index += 1
  190.         end
  191.       end
  192.       if Input.repeat?(Input::LEFT)
  193.         if @column_max >= 2 and @index > 0
  194.           $game_system.se_play($data_system.cursor_se)
  195.           @index -= 1
  196.         end
  197.       end
  198.       if Input.repeat?(Input::R)
  199.         if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
  200.           $game_system.se_play($data_system.cursor_se)
  201.           @index = [@index + self.page_item_max, @item_max - 1].min
  202.           self.top_row += self.page_row_max
  203.         end
  204.       end
  205.       if Input.repeat?(Input::L)
  206.         if self.top_row > 0
  207.           $game_system.se_play($data_system.cursor_se)
  208.           @index = [@index - self.page_item_max, 0].max
  209.           self.top_row -= self.page_row_max
  210.         end
  211.       end
  212.     end
  213.     if self.active and @help_window != nil
  214.       update_help
  215.     end
  216.      update_cursor_rect
  217.       update_item
  218.     end
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● 更新光标举行
  222.   #--------------------------------------------------------------------------
  223.   def update_cursor_rect
  224.     if @index < 0
  225.       self.cursor_rect.empty
  226.       return
  227.     end
  228.     row = @index / @column_max
  229.     if row < self.top_row
  230.       self.top_row = row
  231.     end
  232.     if row > self.top_row + (self.page_row_max - 1)
  233.       self.top_row = row - (self.page_row_max - 1)
  234.     end
  235.     cursor_width = self.width / @column_max - 32
  236.     x = @index % @column_max * (cursor_width + 32)
  237.     y = @index / @column_max * 32 - self.oy
  238.     self.cursor_rect.set(x+5000, y, cursor_width, 32)
  239.   end
  240. end
  241. #==============================================================================
  242. # ■ Se
  243. #------------------------------------------------------------------------------
  244. # ■ 音效模块
  245. #==============================================================================
  246. module Se
  247.   def self.ok
  248.     $game_system.se_play($data_system.cursor_se)
  249.   end
  250.   def self.no
  251.     $game_system.se_play($data_system.cancel_se)
  252.   end
  253. end
  254. #==============================================================================
  255. # ■ Sprite
  256. #------------------------------------------------------------------------------
  257. # ■ index 选择光标
  258. #==============================================================================
  259. class Sprite
  260.   attr_accessor :index
  261. end
复制代码

点评

好像改成2也不支持鼠标系统啊,只见光标出现,却不能执行命令,进入物品等界面  发表于 2011-2-10 17:12

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
13
 楼主| 发表于 2011-2-6 12:39:32 | 只看该作者
本帖最后由 zxc3824 于 2011-2-6 12:39 编辑

回复 Wind2010 的帖子

我想请问一下,哪一行是插入图片的脚本


zxc3824于2011-2-6 12:59补充以下内容:
看注释?注释看完都没看见啊。是不是读取那里啊?

点评

15-29行...  发表于 2011-2-7 15:31
看注释...  发表于 2011-2-6 12:55
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3862
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
14
发表于 2011-2-6 16:37:53 | 只看该作者
这些站上有的。
除了搜索 “闪电的完整菜单”外还有 最终幻想12的菜单
步兵中尉
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
15
 楼主| 发表于 2011-2-6 17:27:41 | 只看该作者
回复 步兵中尉 的帖子

我知道,但是那些受到素材的影响,我只想问下上面的脚本中,哪里是插入图片,哪里是显示的?

点评

看看范例吧……不管第二句话。  发表于 2011-2-7 21:05
回复 支持 反对

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

16
发表于 2011-2-7 13:53:26 | 只看该作者
范例
@临时范例@.rar (253.33 KB, 下载次数: 28)



表示干吗不参考轩辕剑菜单。那个多好。

点评

你以为我不知吗?表示下过了,但是我下的却找不到那个GAME的工程,只有游戏,我看不到脚本  发表于 2011-2-7 21:03
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
17
 楼主| 发表于 2011-2-7 21:19:40 | 只看该作者
本帖最后由 zxc3824 于 2011-2-7 21:20 编辑

回复 忧雪の伤 的帖子

不能用!只能用在标题,不能用在菜单

点评

默认的脚本都不行  发表于 2011-2-7 21:27
我不知道你怎么写的……  发表于 2011-2-7 21:21
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
104
在线时间
93 小时
注册时间
2008-8-11
帖子
209
18
发表于 2011-2-7 21:35:45 | 只看该作者
自己写最方便
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
558
在线时间
256 小时
注册时间
2010-8-25
帖子
371
19
 楼主| 发表于 2011-2-7 21:57:34 | 只看该作者
本帖最后由 zxc3824 于 2011-2-7 22:02 编辑

回复 忧雪の伤 的帖子

是我写错了脚本,但是我用了鼠标系统,只见它响应,但却不能执行命令



点鼠标不能进入,要键盘
回复 支持 反对

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
20
发表于 2011-2-7 23:24:02 | 只看该作者
本帖最后由 Wind2010 于 2011-2-7 23:24 编辑

回复 zxc3824 的帖子


Scene_Menu(如果没改名字的话)

update_command
中找到
if Input.trigger?(Input::C)
改成
  1. if Input.trigger?(Input::C) and Mouse.trigger?(Mouse::LEFT)
复制代码

点评

不好意思,还是不可以  发表于 2011-2-8 11:33
把and换成or...  发表于 2011-2-7 23:53

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 23:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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