Project1

标题: 怎么在商店里制作只能购买一次的物品 [打印本页]

作者: pan2003abc    时间: 2008-5-23 22:53
标题: 怎么在商店里制作只能购买一次的物品
如题,请问各位高手能否在商店里制作出只能购买一次的商品?需要什么样的脚本啊?
我记得以前好想在哪里看到过,但是现在找不到了,希望各位前辈指教以下!我会及时认可答案的!谢谢!! [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: pan2003abc    时间: 2008-5-23 23:04
各位大哥!能不能抽空看一下?不然一会帖子就沉下去了,不好意思,2hit一下不犯法吧?{/tp}
作者: cmbljsw    时间: 2008-5-23 23:32
这个貌似没有人做过吧……
你试试这个吧……http://rpg.blue/web/htm/news922.htm
作者: 飞各大大    时间: 2008-5-24 00:08
真实商店
http://rpg.blue/web/htm/news269.htm
作者: Calathus    时间: 2008-5-24 00:19
本帖最后由 Calathus 于 2011-4-15 20:12 编辑

楼主是说 购买物品时那里的数值输入只能购买一个吗?
要时这样你试试这样修改一下吧.
在处理商店画面的类(Scene_Shop)里面找到(默认):"购买窗口激活的情况下 获取物品所持数"这里分别对物品所持数修改.

      # 获取物品所持数
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
        # 如果下面物品ID号已经拥有了 1 个以上的情况下
        if number >= 1 and @item.id == 1
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 计算可以最多购买的数量
        if @item.id == 1 # ID为1号的物品
          #最大数量是1个
          max = 1
        #elsif @item.id == n 道具编号
          #max = n 最多购买数
        else
        # 如果已经拥有了 99 个情况下
        if number == 99
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 计算可以最多购买的数量
        max = @item.price == 0 ? 99 : $game_party.gold / @item.price
        max = [max, 99 - number].min
      end
      # 武器
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
        # 如果已经拥有了 99 个情况下
        if number == 99
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 计算可以最多购买的数量
        max = @item.price == 0 ? 99 : $game_party.gold / @item.price
        max = [max, 99 - number].min
      # 防具
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
        # 如果已经拥有了 99 个情况下
        if number == 99
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 计算可以最多购买的数量
        max = @item.price == 0 ? 99 : $game_party.gold / @item.price
        max = [max, 99 - number].min
      end

大概就是这样,还有记得把这个分歧下面的(如果已经拥有了 99 个情况下..计算可以最多购买的数量)部分给注释掉,不然冲突来了.

还有要是想购买一个后不能再购买的物品颜色无效化到(Window_ShopBuy)的描绘项目里面

    # 获取物品所持数
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
      # 如果玩家金钱数比物品价格上多的情况下,而且ID为n号的物品它的数量小于n的话
      if (item.price <= $game_party.gold) and (item.id == 1 and number < 1)
        self.contents.font.color = normal_color
      # 不包括道具ID 1 号
      elsif item.price <= $game_party.gold and (item.id != 1 and number < 99)
        self.contents.font.color = normal_color
      #elsif (item.price <= $game_party.gold) and (number < 最大数量 and item.id != 道具ID)
      #  self.contents.font.color = normal_color
      #除此之外的情况设置为无效文字色
      else
        self.contents.font.color = disabled_color
      end
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
      # 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
      # 除此之外的情况设置为无效文字色
      if item.price <= $game_party.gold and number < 99# and (item.id == n and number < n)
        self.contents.font.color = normal_color
      else
        self.contents.font.color = disabled_color
      end
    when RPG::Armor
      number = $game_party.armor_number(item.id)
      # 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
      # 除此之外的情况设置为无效文字色
      if item.price <= $game_party.gold and number < 99# and (item.id == n and number < n)
        self.contents.font.color = normal_color
      else
        self.contents.font.color = disabled_color
      end
    end


最后这里下面的无效文字色分歧也要给注释掉.
大概就是这么多了呵呵..
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: pan2003abc    时间: 2008-5-25 03:58
用楼上的办法似乎最好,我先用用看看




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1