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

Project1

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

[已经解决] 如何將商店選單中的購買分為物品與裝備兩類?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
448 小时
注册时间
2011-10-9
帖子
184
跳转到指定楼层
1
发表于 2015-11-17 14:12:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
因為不想讓購買清單太長,所以想把原本的商店選單
【購買  賣出  取消】
改成
【物品  裝備  賣出】

有無方法讓商店選單中的購買項目
自動分類為物品與裝備兩種呢?

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
2
发表于 2015-11-17 16:52:03 | 只看该作者
这很简单啦,叔叔教你一个简单的办法。
首先在Window_ShopBuy这个脚本里
找到这几行:
  1. if item != nil
  2.   @data.push(item)
  3. end
复制代码
改为:
  1. if item != nil
  2.   if $game_switches[1] == true        #这是一个判定开关,你可以改为其它闲置的。
  3.     @data.push(item) if item.is_a?(RPG::Item)
  4.   else
  5.     @data.push(item) unless item.is_a?(RPG::Item)
  6.   end
  7. end
复制代码
然后在Scene_Shop这个脚本里
找到
  1. def create_command_window
  2. end
复制代码
将其中的内容替换为:
  1.     s1 = "物品"
  2.     s2 = "装备"
  3.     s3 = "卖出"
  4.     @command_window = Window_Command.new(384, [s1, s2, s3], 3)
  5.     @command_window.y = 56
  6.     if $game_temp.shop_purchase_only
  7.       @command_window.draw_item(1, false)
  8.     end
复制代码
接着找到
  1. def update_command_selection
  2. end
复制代码
将其中的内容替换为:
  1.     if Input.trigger?(Input::B)
  2.       Sound.play_cancel
  3.       $scene = Scene_Map.new
  4.     elsif Input.trigger?(Input::C)
  5.       case @command_window.index
  6.       when 0  # 物品
  7.         $game_switches[1] = true    #这里的这个开关还有下面的那一个与之前的开关是一致的。
  8.         Sound.play_decision
  9.         @command_window.active = false
  10.         @dummy_window.visible = false
  11.         @buy_window.active = true
  12.         @buy_window.visible = true
  13.         @buy_window.refresh
  14.         @status_window.visible = true
  15.       when 1  # 装备
  16.         $game_switches[1] = false
  17.         Sound.play_decision
  18.         @command_window.active = false
  19.         @dummy_window.visible = false
  20.         @buy_window.active = true
  21.         @buy_window.visible = true
  22.         @buy_window.refresh
  23.         @status_window.visible = true
  24.        when 2  # 卖出
  25.         if $game_temp.shop_purchase_only
  26.           Sound.play_buzzer
  27.         else
  28.           Sound.play_decision
  29.           @command_window.active = false
  30.           @dummy_window.visible = false
  31.           @sell_window.active = true
  32.           @sell_window.visible = true
  33.           @sell_window.refresh
  34.         end
  35.       end
  36.     end
复制代码
这样就可以了。

点评

另外,要如何讓物品和裝備的游標不自動記憶呢,會出現定位錯誤  发表于 2015-11-17 19:54
因為選項欄位有限的因素呢,不過有問題,賣出商品時會卡死?  发表于 2015-11-17 19:25
不过话说回来,我不知道你为何不在购买前开个选项来选择购买物品或装备。  发表于 2015-11-17 17:05

评分

参与人数 1星屑 +20 收起 理由
冷徹心扉 + 20 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
3
发表于 2015-11-18 15:55:22 | 只看该作者
本帖最后由 梦无笙 于 2015-11-18 15:56 编辑

卖出卡死的问题是我疏忽了。
这样来解决:
在Scene_Shop脚本中找到
  1. def cancel_number_input
  2. end
复制代码
其中的内容,把
when 0
when 1
改为
when 0,1
when 2

找到
  1. def decide_number_input
  2. end
复制代码
其中的内容,把
when 0
when 1
改为
when 0,1
when 2
这样就可以了。

另外提供一个切换窗口时把光标自动切回第一个物品的方法
在我2L提供的代码的最后一段,在
when 0
when 1
下各加一句:
@buy_window.index = 0

点评

嗯,就是不用點選進去交易列表 (購買、賣出、離開那一排) 就能顯示出底下的商品清單  发表于 2015-11-20 00:41
我不理解你说的是什么意思  发表于 2015-11-19 17:41
非常感謝,那麼有無方法在選取物品、裝備等欄位時,下方欄位即同步顯示呢?  发表于 2015-11-19 13:13

评分

参与人数 2星屑 +20 梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答案
冷徹心扉 + 20 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
4
发表于 2015-11-20 04:21:03 | 只看该作者
有几个地方需要改动以达到“嗯,就是不用點選進去交易列表 (購買、賣出、離開那一排) 就能顯示出底下的商品清單 ”这样的效果
改动全在“Scene_Shop”脚本里。
1:在脚本最开始,def start-super下添加一句:$game_switches[1] = true
2:找到:if @command_window.active - update_command_selection,在其下添加以下代码:
  1.       case @command_window.index
  2.         when 0
  3.           $game_switches[1] = true
  4.           @sell_window.visible = false
  5.           @buy_window.refresh
  6.           @buy_window.visible = true
  7.         when 1
  8.           $game_switches[1] = false
  9.           @sell_window.visible = false
  10.           @buy_window.refresh
  11.           @buy_window.visible = true
  12.         when 2
  13.           @sell_window.refresh
  14.           @sell_window.visible = true
  15.           @buy_window.visible = false
  16.       end
复制代码
3:为了避免在窗口切换时有闪烁,找到 def update_buy_selection,其下有一句 if Input.trigger?(Input::B) - end
     将其中的@buy_window.visible = false 注释掉;
     找到 def update_sell_selection - elsif , 将其中的@buy_window.visible = false 注释掉;
4:为了避免窗口重叠,将该脚本中所有包含 @dummy_window 的语句注释掉。

如有问题,即使反馈。

评分

参与人数 1星屑 +60 收起 理由
冷徹心扉 + 60 選擇交易欄位時,會特別LAG

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-3 18:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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