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

Project1

 找回密码
 注册会员
搜索

商店选项比物品图标小,3个光标才一个物品,怎么改

查看数: 5524 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-3-9 00:12

正文摘要:

本帖最后由 hcm 于 2013-3-25 13:13 编辑 上一个问题,改了32变80是能显示大图标了,但选项还是32的规格,以致于一个3个选项都在一个物品图标区域,愁死了,不知道改哪里 # 价格在所持金以下、并且所持数不是 9 ...

回复

zergash 发表于 2013-3-10 20:56:19
本帖最后由 hcm 于 2013-3-25 13:15 编辑
q86332682 发表于 2013-3-9 01:37
def update_cursor_rect
    # 光标位置不满 0 的情况下
    if @index < 0


首先感谢你帮我这个帮,其次,用了这个脚本后的第15行出错了
  1. #==============================================================================
  2. # ■ Window_ShopBuy
  3. #------------------------------------------------------------------------------
  4. #  商店画面、浏览显示可以购买的商品的窗口。
  5. #==============================================================================

  6. class Window_ShopBuy < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     shop_goods : 商品
  10.   #--------------------------------------------------------------------------
  11.   def initialize(shop_goods)
  12.     super(0, 128, 749, 600)
  13.     @shop_goods = shop_goods
  14.     refresh
  15.     self.index = 0

  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 获取物品
  19.   #--------------------------------------------------------------------------
  20.   def item
  21.     return @data[self.index]
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 刷新
  25.   #--------------------------------------------------------------------------
  26.   
  27. def update_cursor_rect
  28.     # 光标位置不满 0 的情况下
  29.     if @index < 0
  30.       self.cursor_rect.empty
  31.       return
  32.     end
  33.     # 获取当前的行
  34.     row = @index / @column_max
  35.     # 当前行被显示开头行前面的情况下
  36.     if row < self.top_row
  37.       # 从当前行向开头行滚动
  38.       self.top_row = row
  39.     end
  40.     # 当前行被显示末尾行之后的情况下
  41.     if row > self.top_row + (self.page_row_max - 1)
  42.       # 从当前行向末尾滚动
  43.       self.top_row = row - (self.page_row_max - 1)
  44.     end  
  45.     x=4
  46.     y=@index/@column_max*80+4-self.oy
  47.     width=600
  48.     height=80
  49.     self.cursor_rect.set(x,y,width,height)
  50.   end


  51.   #--------------------------------------------------------------------------
  52.   # ● 描绘羡慕
  53.   #     index : 项目编号
  54.   #--------------------------------------------------------------------------
  55.   def draw_item(index)
  56.     item = @data[index]
  57.     # 获取物品所持数
  58.     case item
  59.     when RPG::Item
  60.       number = $game_party.item_number(item.id)
  61.     when RPG::Weapon
  62.       number = $game_party.weapon_number(item.id)
  63.     when RPG::Armor
  64.       number = $game_party.armor_number(item.id)
  65.     end
  66.     # 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
  67.     # 除此之外的情况设置为无效文字色
  68.     if item.price <= $game_party.gold and number < 99
  69.       self.contents.font.color = normal_color
  70.     else
  71.       self.contents.font.color = disabled_color
  72.     end
  73.     x = 4
  74.     y = index * 80
  75.     rect = Rect.new(0, 0, self.width - 32, 0)
  76.    


  77.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  78.     bitmap = RPG::Cache.icon(item.icon_name)
  79.     opacity = self.contents.font.color == normal_color ? 255 : 128
  80.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 80, 80), opacity)
  81.     self.contents.draw_text(x + 100, y, 212, 32, item.name, 0)
  82.     self.contents.draw_text(x + 500, y, 88, 32, item.price.to_s, 2)
  83.   end
  84.   


  85.   #--------------------------------------------------------------------------
  86.   # ● 刷新帮助文本
  87.   #--------------------------------------------------------------------------
  88.   def update_help
  89.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  90.   end
  91. end

复制代码

点评

那个“refresh ”这里  发表于 2013-3-10 20:57
q86332682 发表于 2013-3-9 01:37:32
本帖最后由 hcm 于 2013-3-25 13:14 编辑
  1. def update_cursor_rect
  2.     # 光标位置不满 0 的情况下
  3.     if @index < 0
  4.       self.cursor_rect.empty
  5.       return
  6.     end
  7.     # 获取当前的行
  8.     row = @index / @column_max
  9.     # 当前行被显示开头行前面的情况下
  10.     if row < self.top_row
  11.       # 从当前行向开头行滚动
  12.       self.top_row = row
  13.     end
  14.     # 当前行被显示末尾行之后的情况下
  15.     if row > self.top_row + (self.page_row_max - 1)
  16.       # 从当前行向末尾滚动
  17.       self.top_row = row - (self.page_row_max - 1)
  18.     end  
  19.     x=4
  20.     y=@index/@column_max*80+4-self.oy
  21.     width=600
  22.     height=80
  23.     self.cursor_rect.set(x,y,width,height)
  24.   end
复制代码
这样应该没问题了!
zergash 发表于 2013-3-9 01:06:59
q86332682 发表于 2013-3-9 00:54
def update_cursor_rect
  x=4
  y=self.index/@column_max*80+4

好神奇,竟然可以了,你是我的偶像,谢谢大神。。。
q86332682 发表于 2013-3-9 00:54:38
本帖最后由 hcm 于 2013-3-25 13:14 编辑
  1. def update_cursor_rect
  2.   x=4
  3.   y=self.index/@column_max*80+4
  4.   width=600
  5.   height=80
  6.   self.cursor_rect.set(x,y,width,height)
  7. end
复制代码
加进去试试看。

点评

这样是可以了,但是商店不能下拉了,我一共有9样东西,到了第7个图标,往下走,物品介绍在变,但物品图标更新不了  发表于 2013-3-9 01:20

评分

参与人数 1梦石 +1 收起 理由
hcm + 1 认可答案

查看全部评分

zergash 发表于 2013-3-9 00:41:49
q86332682 发表于 2013-3-9 00:38
需要多大宽度,高度的光标?

和物品图标一样,高80,选项也是高80,这样选项物品的时候就保持一致了啊
q86332682 发表于 2013-3-9 00:38:36
需要多大宽度,高度的光标?
zergash 发表于 2013-3-9 00:37:07
q86332682 发表于 2013-3-9 00:34
这个是Widnow_Selectable类的刷新光标的方法吧,这个方法默认在你修改的那个类里调用的,这个刷新光标的方 ...

就是不会改。。。才复制这个的,改了32变80后,还是不能用,所以求帮忙
q86332682 发表于 2013-3-9 00:34:40
这个是Widnow_Selectable类的刷新光标的方法吧,这个方法默认在你修改的那个类里调用的,这个刷新光标的方法设置的光标高度只能是32,你要是修改它继承他的类的窗口光标都被修改了。要在你修改的那个类里按照需要来编写刷新光标的方法。
zergash 发表于 2013-3-9 00:30:48
而且光标变大了,选项还是32*32的,也没用啊,选项的距离也要变大
zergash 发表于 2013-3-9 00:29:49
本帖最后由 hcm 于 2013-3-25 13:13 编辑
q86332682 发表于 2013-3-9 00:25
在当前类写一个刷新光标的方法。


加了这个,无用
  1. #--------------------------------------------------------------------------
  2.   # ● 更新光标举行
  3.   #--------------------------------------------------------------------------
  4.   def update_cursor_rect
  5.     # 光标位置不满 0 的情况下
  6.     if @index < 0
  7.       self.cursor_rect.empty
  8.       return
  9.     end
  10.     # 获取当前的行
  11.     row = @index / @column_max
  12.     # 当前行被显示开头行前面的情况下
  13.     if row < self.top_row
  14.       # 从当前行向开头行滚动
  15.       self.top_row = row
  16.     end
  17.     # 当前行被显示末尾行之后的情况下
  18.     if row > self.top_row + (self.page_row_max - 1)
  19.       # 从当前行向末尾滚动
  20.       self.top_row = row - (self.page_row_max - 1)
  21.     end
  22.     # 计算光标的宽
  23.     cursor_width = self.width / @column_max - 32
  24.     # 计算光标坐标
  25.     x = @index % @column_max * (cursor_width + 32)
  26.     y = @index / @column_max * 32 - self.oy
  27.     # 更新国标矩形
  28.     self.cursor_rect.set(x, y, cursor_width, 32)
  29.   end
复制代码
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-16 11:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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