Project1

标题: 如何在特定商定卖东西时不折价?附data [打印本页]

作者: 菜鸟1111    时间: 2013-6-28 22:03
标题: 如何在特定商定卖东西时不折价?附data
本帖最后由 菜鸟1111 于 2013-6-28 22:29 编辑

游戏默认卖物品时卖价为买价的一半
如果有rpgxp 设置在特定商店 卖东西不折价?
求助各位大大

data文件网盘地址 网盘地址.rar (155 Bytes, 下载次数: 44)
作者: 美丽晨露    时间: 2013-6-28 23:21
搜索修改可以查找修改的内容。
范例内打开一号开关时,卖出的价格即是原物品的价格。
即为楼主说的特殊商店
Project48.zip (201 KB, 下载次数: 46)
作者: 菜鸟1111    时间: 2013-6-28 23:38
美丽晨露 发表于 2013-6-28 23:21
搜索修改可以查找修改的内容。
范例内打开一号开关时,卖出的价格即是原物品的价格。
即为楼主说的特殊商店 ...

新手求教
额 搜索修改 指的是在哪里搜索?
为什么加一个开关设为on  就可以卖原价 原理是?
作者: 美丽晨露    时间: 2013-6-28 23:43
脚本编辑器——右键——查找——修改
加个开关进行判定,开时为原价,关后为半价
作者: 菜鸟1111    时间: 2013-6-29 00:02
美丽晨露 发表于 2013-6-28 23:43
脚本编辑器——右键——查找——修改
加个开关进行判定,开时为原价,关后为半价 ...

额 如何使那个开关有保持原价的作用呢

作者: 美丽晨露    时间: 2013-6-29 00:09
菜鸟1111 发表于 2013-6-29 00:02
额 如何使那个开关有保持原价的作用呢

修改Scene_Shop脚本
范例内已经有具体的修改内容了
作者: 菜鸟1111    时间: 2013-6-29 00:52
美丽晨露 发表于 2013-6-29 00:09
修改Scene_Shop脚本
范例内已经有具体的修改内容了

我把开关设在2776键上

脚步为
  # 窗口状态转向个数输入模式
      @sell_window.active = false
      @sell_window.visible = false
      if $game_switches[2776] == true  #修改
      @number_window.set(@item, max, @item.price)
      else
      @number_window.set(@item, max, @item.price / 2)
      end
      @number_window.active = true
      @number_window.visible = true
      @status_window.visible = true
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (个数输入窗口激活的情况下)
  #--------------------------------------------------------------------------
  def update_number
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 设置个数输入窗口为不活动·非可视状态
      @number_window.active = false
      @number_window.visible = false
      # 命令窗口光标位置分支
      case @command_window.index
      when 0  # 购买
        # 窗口状态转向购买模式
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # 卖出
        # 窗口状态转向卖出模式
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 演奏商店 SE
      $game_system.se_play($data_system.shop_se)
      # 设置个数输入窗口为不活动·非可视状态
      @number_window.active = false
      @number_window.visible = false
      # 命令窗口光标位置分支
      case @command_window.index
      when 0  # 购买
        # 购买处理
        $game_party.lose_gold(@number_window.number * @item.price)
        case @item
        when RPG::Item
          $game_party.gain_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.gain_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.gain_armor(@item.id, @number_window.number)
        end
        # 刷新各窗口
        @gold_window.refresh
        @buy_window.refresh
        @status_window.refresh
        # 窗口状态转向购买模式
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # 卖出
        # 卖出处理
        if $game_switches[2776] == true  #修改
        $game_party.gain_gold(@number_window.number * (@item.price))
        else
        $game_party.gain_gold(@number_window.number * (@item.price / 2))
        end
        case @item
        when RPG::Item
          $game_party.lose_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.lose_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.lose_armor(@item.id, @number_window.number)
        end
        # 刷新各窗口
        @gold_window.refresh
        @sell_window.refresh
        @status_window.refresh
        # 窗口状态转向卖出模式
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
  end
end


测试为什么没效果?




作者: 美丽晨露    时间: 2013-6-29 00:54
菜鸟1111 发表于 2013-6-29 00:52
我把开关设在2776键上

脚步为

测试时的事件有无打开2776开关?
作者: 菜鸟1111    时间: 2013-6-29 01:13
美丽晨露 发表于 2013-6-29 00:54
测试时的事件有无打开2776开关?


作者: 美丽晨露    时间: 2013-6-29 01:36
菜鸟1111 发表于 2013-6-29 01:13

有无添加其他的商店脚本?
作者: 菜鸟1111    时间: 2013-6-29 01:46
美丽晨露 发表于 2013-6-29 01:36
有无添加其他的商店脚本?

就是在原有商店基础上改的
作者: 菜鸟1111    时间: 2013-6-29 01:50
美丽晨露 发表于 2013-6-29 01:36
有无添加其他的商店脚本?

辛苦了 早睡 明天再看吧

附原游戏网盘地址 原游戏网盘地址.rar (520 Bytes, 下载次数: 51)
作者: 菜鸟1111    时间: 2013-6-29 15:06
美丽晨露 发表于 2013-6-29 01:36
有无添加其他的商店脚本?

继续求助  @美丽晨露
作者: 菜鸟1111    时间: 2013-6-29 15:08
本帖最后由 菜鸟1111 于 2013-6-29 15:09 编辑

求助@美丽晨露
@wwwcctvty   大大
作者: 菜鸟1111    时间: 2013-6-29 16:26
美丽晨露 发表于 2013-6-29 01:36
有无添加其他的商店脚本?



刚才按你说的新建了一个范例 结果可以达到脚本效果 为树木在金庸无双里就不行了?



作者: 芯☆淡茹水    时间: 2013-7-2 16:02
复制下面脚本,插入到 main 前, 开关 ID 可自己设置
  1. #全价卖出物品的开关 ID,开关打开为全价,关闭为半价。
  2. PRICE_SWITCH = 10
  3. #==============================================================================
  4. class Scene_Shop
  5.   #--------------------------------------------------------------------------
  6.   # ● 主处理
  7.   #--------------------------------------------------------------------------
  8.   def main
  9.     # 生成帮助窗口
  10.     @help_window = Window_Help.new
  11.     # 生成指令窗口
  12.     @command_window = Window_ShopCommand.new
  13.     # 生成金钱窗口
  14.     @gold_window = Window_Gold.new
  15.     @gold_window.x = 480
  16.     @gold_window.y = 64
  17.     # 生成时间窗口
  18.     @dummy_window = Window_Base.new(0, 128, 640, 352)
  19.     # 生成购买窗口
  20.     @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
  21.     @buy_window.active = false
  22.     @buy_window.visible = false
  23.     @buy_window.help_window = @help_window
  24.     # 生成卖出窗口
  25.     @sell_window = Window_ShopSell.new
  26.     @sell_window.active = false
  27.     @sell_window.visible = false
  28.     @sell_window.help_window = @help_window
  29.     # 生成数量输入窗口
  30.     @number_window = Window_ShopNumber.new
  31.     @number_window.active = false
  32.     @number_window.visible = false
  33.     # 生成状态窗口
  34.     @status_window = Window_ShopStatus.new
  35.     @status_window.visible = false
  36.     # 执行过渡
  37.     Graphics.transition
  38.     # 主循环
  39.     loop do
  40.       # 刷新游戏画面
  41.       Graphics.update
  42.       # 刷新输入信息
  43.       Input.update
  44.       # 刷新画面
  45.       update
  46.       # 如果画面切换的话就中断循环
  47.       if $scene != self
  48.         break
  49.       end
  50.     end
  51.     # 准备过渡
  52.     Graphics.freeze
  53.     # 释放窗口
  54.     @help_window.dispose
  55.     @command_window.dispose
  56.     @gold_window.dispose
  57.     @dummy_window.dispose
  58.     @buy_window.dispose
  59.     @sell_window.dispose
  60.     @number_window.dispose
  61.     @status_window.dispose
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 刷新画面
  65.   #--------------------------------------------------------------------------
  66.   def update
  67.     # 刷新窗口
  68.     @help_window.update
  69.     @command_window.update
  70.     @gold_window.update
  71.     @dummy_window.update
  72.     @buy_window.update
  73.     @sell_window.update
  74.     @number_window.update
  75.     @status_window.update
  76.     # 指令窗口激活的情况下: 调用 update_command
  77.     if @command_window.active
  78.       update_command
  79.       return
  80.     end
  81.     # 购买窗口激活的情况下: 调用 update_buy
  82.     if @buy_window.active
  83.       update_buy
  84.       return
  85.     end
  86.     # 卖出窗口激活的情况下: 调用 update_sell
  87.     if @sell_window.active
  88.       update_sell
  89.       return
  90.     end
  91.     # 个数输入窗口激活的情况下: 调用 update_number
  92.     if @number_window.active
  93.       update_number
  94.       return
  95.     end
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 刷新画面 (指令窗口激活的情况下)
  99.   #--------------------------------------------------------------------------
  100.   def update_command
  101.     # 按下 B 键的情况下
  102.     if Input.trigger?(Input::B)
  103.       # 演奏取消 SE
  104.       $game_system.se_play($data_system.cancel_se)
  105.       # 切换到地图画面
  106.       $scene = Scene_Map.new
  107.       return
  108.     end
  109.     # 按下 C 键的情况下
  110.     if Input.trigger?(Input::C)
  111.       # 命令窗口光标位置分支
  112.       case @command_window.index
  113.       when 0  # 购买
  114.         # 演奏确定 SE
  115.         $game_system.se_play($data_system.decision_se)
  116.         # 窗口状态转向购买模式
  117.         @command_window.active = false
  118.         @dummy_window.visible = false
  119.         @buy_window.active = true
  120.         @buy_window.visible = true
  121.         @buy_window.refresh
  122.         @status_window.visible = true
  123.       when 1  # 卖出
  124.         # 演奏确定 SE
  125.         $game_system.se_play($data_system.decision_se)
  126.         # 窗口状态转向卖出模式
  127.         @command_window.active = false
  128.         @dummy_window.visible = false
  129.         @sell_window.active = true
  130.         @sell_window.visible = true
  131.         @sell_window.refresh
  132.       when 2  # 取消
  133.         # 演奏确定 SE
  134.         $game_system.se_play($data_system.decision_se)
  135.         # 切换到地图画面
  136.         $scene = Scene_Map.new
  137.       end
  138.       return
  139.     end
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 刷新画面 (购买窗口激活的情况下)
  143.   #--------------------------------------------------------------------------
  144.   def update_buy
  145.     # 设置状态窗口的物品
  146.     @status_window.item = @buy_window.item
  147.     # 按下 B 键的情况下
  148.     if Input.trigger?(Input::B)
  149.       # 演奏取消 SE
  150.       $game_system.se_play($data_system.cancel_se)
  151.       # 窗口状态转向初期模式
  152.       @command_window.active = true
  153.       @dummy_window.visible = true
  154.       @buy_window.active = false
  155.       @buy_window.visible = false
  156.       @status_window.visible = false
  157.       @status_window.item = nil
  158.       # 删除帮助文本
  159.       @help_window.set_text("")
  160.       return
  161.     end
  162.     # 按下 C 键的情况下
  163.     if Input.trigger?(Input::C)
  164.       # 获取物品
  165.       @item = @buy_window.item
  166.       # 物品无效的情况下、或者价格在所持金以上的情况下
  167.       if @item == nil or @item.price > $game_party.gold
  168.         # 演奏冻结 SE
  169.         $game_system.se_play($data_system.buzzer_se)
  170.         return
  171.       end
  172.       # 获取物品所持数
  173.       case @item
  174.       when RPG::Item
  175.         number = $game_party.item_number(@item.id)
  176.       when RPG::Weapon
  177.         number = $game_party.weapon_number(@item.id)
  178.       when RPG::Armor
  179.         number = $game_party.armor_number(@item.id)
  180.       end
  181.       # 如果已经拥有了 99 个情况下
  182.       if number == 99
  183.         # 演奏冻结 SE
  184.         $game_system.se_play($data_system.buzzer_se)
  185.         return
  186.       end
  187.       # 演奏确定 SE
  188.       $game_system.se_play($data_system.decision_se)
  189.       # 计算可以最多购买的数量
  190.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  191.       max = [max, 99 - number].min
  192.       # 窗口状态转向数值输入模式
  193.       @buy_window.active = false
  194.       @buy_window.visible = false
  195.       @number_window.set(@item, max, @item.price)
  196.       @number_window.active = true
  197.       @number_window.visible = true
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 画面更新 (卖出窗口激活的情况下)
  202.   #--------------------------------------------------------------------------
  203.   def update_sell
  204.     # 按下 B 键的情况下
  205.     if Input.trigger?(Input::B)
  206.       # 演奏取消 SE
  207.       $game_system.se_play($data_system.cancel_se)
  208.       # 窗口状态转向初期模式
  209.       @command_window.active = true
  210.       @dummy_window.visible = true
  211.       @sell_window.active = false
  212.       @sell_window.visible = false
  213.       @status_window.item = nil
  214.       # 删除帮助文本
  215.       @help_window.set_text("")
  216.       return
  217.     end
  218.     # 按下 C 键的情况下
  219.     if Input.trigger?(Input::C)
  220.       # 获取物品
  221.       @item = @sell_window.item
  222.       # 设置状态窗口的物品
  223.       @status_window.item = @item
  224.       # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  225.       if @item == nil or @item.price == 0
  226.         # 演奏冻结 SE
  227.         $game_system.se_play($data_system.buzzer_se)
  228.         return
  229.       end
  230.       # 演奏确定 SE
  231.       $game_system.se_play($data_system.decision_se)
  232.       # 获取物品的所持数
  233.       case @item
  234.       when RPG::Item
  235.         number = $game_party.item_number(@item.id)
  236.       when RPG::Weapon
  237.         number = $game_party.weapon_number(@item.id)
  238.       when RPG::Armor
  239.         number = $game_party.armor_number(@item.id)
  240.       end
  241.       # 最大卖出个数 = 物品的所持数
  242.       max = number
  243.       # 窗口状态转向个数输入模式
  244.       @sell_window.active = false
  245.       @sell_window.visible = false
  246.       if $game_switches[PRICE_SWITCH]
  247.         @number_window.set(@item, max, @item.price)
  248.       else
  249.         @number_window.set(@item, max, @item.price / 2)
  250.       end
  251.       @number_window.active = true
  252.       @number_window.visible = true
  253.       @status_window.visible = true
  254.     end
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ● 刷新画面 (个数输入窗口激活的情况下)
  258.   #--------------------------------------------------------------------------
  259.   def update_number
  260.     # 按下 B 键的情况下
  261.     if Input.trigger?(Input::B)
  262.       # 演奏取消 SE
  263.       $game_system.se_play($data_system.cancel_se)
  264.       # 设置个数输入窗口为不活动·非可视状态
  265.       @number_window.active = false
  266.       @number_window.visible = false
  267.       # 命令窗口光标位置分支
  268.       case @command_window.index
  269.       when 0  # 购买
  270.         # 窗口状态转向购买模式
  271.         @buy_window.active = true
  272.         @buy_window.visible = true
  273.       when 1  # 卖出
  274.         # 窗口状态转向卖出模式
  275.         @sell_window.active = true
  276.         @sell_window.visible = true
  277.         @status_window.visible = false
  278.       end
  279.       return
  280.     end
  281.     # 按下 C 键的情况下
  282.     if Input.trigger?(Input::C)
  283.       # 演奏商店 SE
  284.       $game_system.se_play($data_system.shop_se)
  285.       # 设置个数输入窗口为不活动·非可视状态
  286.       @number_window.active = false
  287.       @number_window.visible = false
  288.       # 命令窗口光标位置分支
  289.       case @command_window.index
  290.       when 0  # 购买
  291.         # 购买处理
  292.         $game_party.lose_gold(@number_window.number * @item.price)
  293.         case @item
  294.         when RPG::Item
  295.           $game_party.gain_item(@item.id, @number_window.number)
  296.         when RPG::Weapon
  297.           $game_party.gain_weapon(@item.id, @number_window.number)
  298.         when RPG::Armor
  299.           $game_party.gain_armor(@item.id, @number_window.number)
  300.         end
  301.         # 刷新各窗口
  302.         @gold_window.refresh
  303.         @buy_window.refresh
  304.         @status_window.refresh
  305.         # 窗口状态转向购买模式
  306.         @buy_window.active = true
  307.         @buy_window.visible = true
  308.       when 1  # 卖出
  309.         # 卖出处理
  310.         if $game_switches[PRICE_SWITCH]
  311.           $game_party.gain_gold(@number_window.number * (@item.price))
  312.         else
  313.           $game_party.gain_gold(@number_window.number * (@item.price / 2))
  314.         end
  315.         case @item
  316.         when RPG::Item
  317.           $game_party.lose_item(@item.id, @number_window.number)
  318.         when RPG::Weapon
  319.           $game_party.lose_weapon(@item.id, @number_window.number)
  320.         when RPG::Armor
  321.           $game_party.lose_armor(@item.id, @number_window.number)
  322.         end
  323.         # 刷新各窗口
  324.         @gold_window.refresh
  325.         @sell_window.refresh
  326.         @status_window.refresh
  327.         # 窗口状态转向卖出模式
  328.         @sell_window.active = true
  329.         @sell_window.visible = true
  330.         @status_window.visible = false
  331.       end
  332.       return
  333.     end
  334.   end
  335. end
复制代码

作者: 菜鸟1111    时间: 2013-7-2 20:54
芯☆淡茹水 发表于 2013-7-2 16:02
复制下面脚本,插入到 main 前, 开关 ID 可自己设置

和晨露大大提供的脚本差不多
在新建工程中试了可以 在金庸无双一个商店里试了就不行啊




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