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

Project1

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

[RMVX发布] 商店物品只得购买一次(2010-11-10更新,求纠错)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
73
在线时间
122 小时
注册时间
2009-2-7
帖子
55
跳转到指定楼层
1
发表于 2010-11-10 15:29:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 discain 于 2010-11-10 22:40 编辑

某些特殊物品,只能在商店购买获得,且只能买到一次,不采用事件,能不能用脚本解决。
感谢大家灵感找到了,最后还是用了备注,现在与大家分享一下
首先是在物品的备注里写上“唯一”两个字,然后插入以下脚本。
另外,此贴原本是求助贴,现在改成分享,不知道是不是要移版???

  1. $Nor = []
  2. #==============================================================================
  3. # ■ Scene_Shop
  4. #------------------------------------------------------------------------------
  5. #  处理商店画面的类。
  6. #==============================================================================
  7. class Scene_Shop < Scene_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 更新买入选择
  10.   #--------------------------------------------------------------------------
  11.   def update_buy_selection
  12.     @status_window.item = @buy_window.item
  13.     if Input.trigger?(Input::B)
  14.       Sound.play_cancel
  15.       @command_window.active = true
  16.       @dummy_window.visible = true
  17.       @buy_window.active = false
  18.       @buy_window.visible = false
  19.       @status_window.visible = false
  20.       @status_window.item = nil
  21.       @help_window.set_text("")
  22.       return
  23.     end
  24.     if Input.trigger?(Input::C)
  25.       @item = @buy_window.item
  26.       number = $game_party.item_number(@item)
  27.       if @item.note.include?("唯一")
  28.         if @item == nil or @item.price > $game_party.gold or number == 1
  29.           Sound.play_buzzer
  30.         else
  31.           if $Nor[@item.id] == true
  32.             Sound.play_buzzer
  33.           else
  34.             Sound.play_decision
  35.             max = @item.price == 0 ? 1 : $game_party.gold / @item.price
  36.             max = [max, 1 - number].min
  37.             @buy_window.active = false
  38.             @buy_window.visible = false
  39.             @number_window.set(@item, max, @item.price)
  40.             @number_window.active = true
  41.             @number_window.visible = true
  42.             $Nor[@item.id] = true
  43.           end
  44.         end
  45.       else
  46.         if @item == nil or @item.price > $game_party.gold or number == 99
  47.           Sound.play_buzzer
  48.         else
  49.           Sound.play_decision
  50.           max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  51.           max = [max, 99 - number].min
  52.           @buy_window.active = false
  53.           @buy_window.visible = false
  54.           @number_window.set(@item, max, @item.price)
  55.           @number_window.active = true
  56.           @number_window.visible = true
  57.         end
  58.       end
  59.     end
  60.   end
  61. end

  62. #==============================================================================
  63. # ■ Window_ShopBuy
  64. #------------------------------------------------------------------------------
  65. #  商店画面、浏览显示可以购买的商品的窗口。
  66. #==============================================================================
  67. class Window_ShopBuy < Window_Selectable
  68.   #--------------------------------------------------------------------------
  69.   # ● 绘制商品
  70.   #     index : 商品索引
  71.   #--------------------------------------------------------------------------
  72.   def draw_item(index)
  73.     item = @data[index]
  74.     number = $game_party.item_number(item)
  75.     if item.note.include?("唯一")
  76.       if $Nor[item.id] == true
  77.         enabled = false
  78.       else
  79.         enabled = (item.price <= $game_party.gold and number < 1)
  80.       end
  81.     else
  82.       enabled = (item.price <= $game_party.gold and number < 99)
  83.     end
  84.     rect = item_rect(index)
  85.     self.contents.clear_rect(rect)
  86.     draw_item_name(item, rect.x, rect.y, enabled)
  87.     rect.width -= 4
  88.     self.contents.draw_text(rect, item.price, 2)
  89.   end
  90. end
复制代码

评分

参与人数 1星屑 +120 收起 理由
king + 120 精品文章~及时雨

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

2
发表于 2010-11-10 16:06:20 | 只看该作者
使用开关或者直接建立一个配列
假设100到120是特殊物品段,购买后在配列记录id。
如果买的时候有此id,则拒绝购买,没有id买后push id到配列
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
336 小时
注册时间
2010-8-26
帖子
428
3
发表于 2010-11-10 18:07:15 | 只看该作者
像这样的小问题还是事件方便,因为脚本越多就表示会出现BUG的几率越大
[
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
244 小时
注册时间
2010-10-18
帖子
445
4
发表于 2010-11-10 18:19:21 | 只看该作者
用事件的话怎么做呢?
比如说商店的A商品只能买1个.
我不再捣蛋了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
73
在线时间
122 小时
注册时间
2009-2-7
帖子
55
5
 楼主| 发表于 2010-11-10 20:11:33 | 只看该作者
本帖最后由 discain 于 2010-11-10 20:28 编辑

谢谢大家,开关很麻烦,除非特殊物品不多,想想要是给每个物品设个独立开关会怎么样?其实用事件的方法也没想出来,不过只要控制拥有的数量就可以,比如如果已拥有一个该物品且该物品曾拥有过,则该物品不出现在商店里。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
73 小时
注册时间
2010-10-4
帖子
144
6
发表于 2010-11-10 20:21:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
73
在线时间
122 小时
注册时间
2009-2-7
帖子
55
7
 楼主| 发表于 2010-11-10 20:34:57 | 只看该作者
如果在物品的备注里标注,然后读取备注修改Scene_Shop等脚本,做一个条件分支是不是可以?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
73
在线时间
122 小时
注册时间
2009-2-7
帖子
55
8
 楼主| 发表于 2010-11-10 20:47:51 | 只看该作者
本帖最后由 discain 于 2010-11-11 06:18 编辑

已经试验成功,谢谢大家。
呃一高兴连贴了,那啥,请大家无视一下。

点评

虽然我不是有意的,因为不习惯老修改贴子,不过扣分也是应该的。  发表于 2010-11-11 13:03

评分

参与人数 1星屑 -20 收起 理由
夕阳武士 -20 无视不能

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 00:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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