Project1

标题: 谁能完善下这个脚本~ 关于技能商店金钱换算问题 [打印本页]

作者: qq1014850720    时间: 2011-7-18 10:50
标题: 谁能完善下这个脚本~ 关于技能商店金钱换算问题
本帖最后由 qq1014850720 于 2011-7-19 14:35 编辑

RPG xp 技能商店脚本   http://www.66rpg.com/htm/news670.htm     出现没钱可买技能和负钱的情况 dsu_plus_rewardpost_czw
作者: wudilyj    时间: 2011-7-18 13:44
少年 还不如直接事件商店呢 不要神马都依靠脚本
作者: piaoy    时间: 2011-7-18 16:17
本帖最后由 piaoy 于 2011-7-18 16:17 编辑
  1. #==============================================================================
  2. # ■ 本脚本源自www.66rpg.com,转载与使用请保留此信息
  3. #==============================================================================

  4. #——以下是一些自定义的内容

  5. $mShop_use_1 = "灵魄"    #——这项是购买魔法特技的货币的名称,如“灵魄”、“金钱”

  6. $mShop_use_2 = "特斯拉"  #——这项是购买魔法特技的货币单位,如“点”、“¥”

  7. $mShop_use_variable = 1  #——这项是购买魔法特技时消耗的变量编号,如果=0 则是消耗金钱

  8. $mShop_Window_Opacity = 200  #——这项是窗口透明度

  9. #==============================================================================
  10. # ■ Window_MGold
  11. #------------------------------------------------------------------------------
  12. #  显示金钱的窗口。
  13. #==============================================================================
  14. class Window_MGold < Window_Base
  15. #--------------------------------------------------------------------------
  16. # ● 初始化窗口
  17. #--------------------------------------------------------------------------
  18. def initialize
  19.    super(0, 0, 272, 64)
  20.    self.contents = Bitmap.new(width - 32, height - 32)
  21.    refresh
  22. end
  23. #--------------------------------------------------------------------------
  24. # ● 刷新
  25. #--------------------------------------------------------------------------
  26. def refresh
  27.    self.contents.clear
  28.    self.contents.font.color = system_color
  29.    self.contents.draw_text(0, 0 , 240,32 ,$mShop_use_1)
  30.    self.contents.font.color = normal_color
  31.    self.contents.draw_text(0, 0, 240-contents.text_size($mShop_use_2).width-6, 32, $mShop_gold.to_s, 2)
  32.    self.contents.font.color = system_color
  33.    self.contents.draw_text(0, 0, 240, 32, $mShop_use_2, 2)
  34. end
  35. end
  36. #==============================================================================
  37. # ■ Scene_MShop
  38. #------------------------------------------------------------------------------
  39. #  处理特技商店画面的类。
  40. #==============================================================================
  41. class Scene_MShop
  42. #--------------------------------------------------------------------------
  43. # ● 初始化
  44. #--------------------------------------------------------------------------
  45. def initialize(id)
  46.    @id = id
  47. end  
  48. #--------------------------------------------------------------------------
  49. # ● 主处理
  50. #--------------------------------------------------------------------------
  51. def main
  52.    screen = Spriteset_Map.new
  53.    if $mShop_use_variable == 0
  54.      $mShop_gold = $game_party.gold
  55.    else
  56.      $mShop_gold = $game_variables[$mShop_use_variable]
  57.    end
  58.    # 生成帮助窗口
  59.    @help_window = Window_Help.new
  60.    @help_window.opacity = $mShop_Window_Opacity

  61.    # 生成金钱窗口
  62.    @gold_window = Window_MGold.new
  63.    @gold_window.x = 368
  64.    @gold_window.y = 416
  65.    @gold_window.opacity = $mShop_Window_Opacity
  66.    # 生成购买窗口
  67.    @buy_window = Window_MShopBuy.new(@id)
  68.    @buy_window.active = true
  69.    @buy_window.visible = true
  70.    @buy_window.help_window = @help_window
  71.    @buy_window.opacity = $mShop_Window_Opacity
  72.    # 生成状态窗口
  73.    @status_window = Window_MShopStatus.new
  74.    @status_window.visible = true
  75.    @status_window.active = false
  76.    @status_window.opacity = $mShop_Window_Opacity
  77.       
  78.    #生成指令窗口
  79.    @command_window = Window_Command.new(160,["学会","遗忘"])
  80.    @command_window.x = 320
  81.    @command_window.y = 240
  82.    @command_window.z = 500
  83.    @command_window.visible = false
  84.    @command_window.active = false
  85.    @command_window.opacity = $mShop_Window_Opacity
  86.    
  87.    # 执行过渡
  88.    Graphics.transition
  89.    # 主循环
  90.    loop do
  91.      # 刷新游戏画面
  92.      Graphics.update
  93.      # 刷新输入信息
  94.      Input.update
  95.      # 刷新画面
  96.      update
  97.      # 如果画面切换的话就中断循环
  98.      if $scene != self
  99.        break
  100.      end
  101.    end
  102.    # 准备过渡
  103.    Graphics.freeze
  104.    # 释放窗口
  105.    @help_window.dispose
  106.    #@mhelp_window.dispose
  107.    @gold_window.dispose
  108.    @buy_window.dispose
  109.    @status_window.dispose
  110.    @command_window.dispose
  111.    screen.dispose
  112. end
  113. #--------------------------------------------------------------------------
  114. # ● 刷新画面
  115. #--------------------------------------------------------------------------
  116. def update
  117.    # 刷新窗口
  118.    @help_window.update
  119.    #@mhelp_window.update
  120.    @gold_window.update
  121.    @buy_window.update
  122.    @status_window.update
  123.    @command_window.update
  124.    # 购买窗口激活的情况下: 调用 update_buy
  125.    if @buy_window.active
  126.      update_buy
  127.      return
  128.    end
  129.    if @status_window.active
  130.      update_status
  131.      return
  132.    end
  133.    if @command_window.active
  134.      update_command
  135.      return
  136.    end
  137.    
  138. end

  139. #--------------------------------------------------------------------------
  140. # ● 刷新画面 (指令窗口激活的情况下)
  141. #--------------------------------------------------------------------------
  142. def update_command
  143.    if Input.trigger?(Input::B)
  144.      $game_system.se_play($data_system.cancel_se)
  145.      @status_window.index = -1
  146.      @command_window.active = false
  147.      @command_window.visible = false
  148.      @buy_window.active = true
  149.      return
  150.    end
  151.    if Input.trigger?(Input::C)
  152.      if @command_window.index == 0      
  153.        if $game_party.actors[@status_window.index].skill_learn?(@skill.id)
  154.          $game_system.se_play($data_system.cancel_se)
  155.          return
  156.        else
  157.          
  158.          if $mShop_gold > @skill.price
  159.            $game_system.se_play($data_system.decision_se)
  160.            if $mShop_use_variable == 0
  161.             $game_party.gain_gold([email protected])
  162.             $mShop_gold -= @skill.price
  163.            else
  164.             $game_variables[$mShop_use_variable] -= @skill.price
  165.             $mShop_gold -= @skill.price
  166.            end
  167.          else
  168.            $game_system.se_play($data_system.cancel_se)
  169.          end
  170.          $game_party.actors[@status_window.index].learn_skill(@skill.id)
  171.          @gold_window.refresh
  172.          @buy_window.refresh
  173.          @status_window.refresh
  174.          @status_window.index = -1
  175.          @buy_window.active = true
  176.          @command_window.active = false
  177.          @command_window.visible = false   
  178.        end
  179.      elsif  @command_window.index == 1
  180.        if $game_party.actors[@status_window.index].skill_learn?(@skill.id) == false
  181.          $game_system.se_play($data_system.cancel_se)
  182.          return
  183.        else
  184.          $game_system.se_play($data_system.decision_se)
  185.          if $mShop_use_variable == 0
  186.            $game_party.gain_gold(@skill.price/2)  #<-遗忘价格为学习的一半,/2的地方相同
  187.            $mShop_gold += @skill.price/2
  188.          else
  189.            $game_variables[$mShop_use_variable] += @skill.price/2
  190.            $mShop_gold += @skill.price/2
  191.          end
  192.          $game_party.actors[@status_window.index].forget_skill(@skill.id)
  193.          @gold_window.refresh
  194.          @buy_window.refresh
  195.          @status_window.refresh
  196.          @status_window.index = -1
  197.          @buy_window.active = true
  198.          @command_window.active = false
  199.          @command_window.visible = false
  200.        end
  201.      end
  202.      return
  203.    end
  204. end

  205. #--------------------------------------------------------------------------
  206. # ● 刷新画面 (购买窗口激活的情况下)
  207. #--------------------------------------------------------------------------
  208. def update_buy
  209.    @status_window.skill = @buy_window.skill
  210.    if Input.trigger?(Input::B)
  211.      $game_system.se_play($data_system.cancel_se)
  212.      $scene = Scene_Map.new
  213.      return
  214.    end
  215.    if Input.trigger?(Input::C)
  216.      @skill = @buy_window.skill
  217.      if @skill == nil #or @skill.price > $mShop_gold  
  218.        $game_system.se_play($data_system.buzzer_se)
  219.        return
  220.      end
  221.      $game_system.se_play($data_system.decision_se)
  222.      @buy_window.active = false
  223.      @status_window.index = 0
  224.      @status_window.active = true
  225.    end
  226. end
  227. #--------------------------------------------------------------------------
  228. # ● 刷新画面 (状态窗口激活的情况下)
  229. #--------------------------------------------------------------------------
  230. def update_status
  231.    if Input.trigger?(Input::B)
  232.      $game_system.se_play($data_system.cancel_se)
  233.      @status_window.active = false
  234.      @status_window.index = -1
  235.      @buy_window.active = true
  236.    end
  237.    if Input.trigger?(Input::C)
  238.       @status_window.active = false
  239.       @command_window.visible = true
  240.       @command_window.active = true
  241.    end   
  242. end
  243. end
  244. #==============================================================================
  245. # ■ Window_MShopStatus
  246. #------------------------------------------------------------------------------
  247. #  特技商店画面、显示物品所持数与角色装备的窗口。
  248. #==============================================================================
  249. class Window_MShopStatus < Window_Selectable
  250. #--------------------------------------------------------------------------
  251. # ● 初始化对像
  252. #--------------------------------------------------------------------------
  253. def initialize
  254.    super(368, 64, 272, 352)
  255.    self.contents = Bitmap.new(width - 32, height - 32)
  256.    self.contents.font.size = 18
  257.    @skill = nil
  258.    refresh
  259. end
  260. #--------------------------------------------------------------------------
  261. # ● 刷新
  262. #--------------------------------------------------------------------------
  263. def refresh
  264.    self.contents.clear
  265.    for i in 0...$game_party.actors.size
  266.      actor = $game_party.actors[i]
  267.      draw_actor_graphic(actor,12,80*i+64)
  268.      self.contents.font.color = system_color
  269.      self.contents.draw_text(44, 80*i, 240, 32, actor.name)
  270.      self.contents.draw_text(0, 80*i , 240-20,32,"等级",2)
  271.      self.contents.font.color = normal_color
  272.      self.contents.draw_text(0, 80*i, 240, 32, actor.level.to_s , 2)
  273.      self.contents.font.color = system_color
  274.      self.contents.draw_text(44, 80*i+22, 45, 32, $data_system.words.hp)
  275.      self.contents.font.color = normal_color
  276.      self.contents.draw_text(44, 80*i+22, 90, 32, actor.maxhp.to_s,2)
  277.      self.contents.font.color = system_color
  278.      self.contents.draw_text(150, 80*i+22, 45, 32, $data_system.words.sp)
  279.      self.contents.font.color = normal_color
  280.      self.contents.draw_text(150, 80*i+22, 90, 32, actor.maxsp.to_s,2)      
  281.      if actor.skill_learn?(@skill.id)
  282.        self.contents.font.color = Color.new(255,255,255,128)
  283.        self.contents.draw_text(44, 80*i+44, 196, 32, "⊙此项特技已经学习⊙",2)        
  284.      else
  285.        self.contents.font.color = Color.new(255,255,0,255)
  286.        self.contents.draw_text(44, 80*i+44, 240, 32, "★此项特技尚未学习★")
  287.      end
  288.    end
  289.    @item_max = $game_party.actors.size
  290. end
  291. #--------------------------------------------------------------------------
  292. # ● 设置物品
  293. #     item : 新的物品
  294. #--------------------------------------------------------------------------
  295. def skill=(skill)
  296.    if @skill != skill
  297.      @skill = skill
  298.      refresh
  299.    end
  300. end
  301. #--------------------------------------------------------------------------
  302. # ● 刷新光标矩形
  303. #--------------------------------------------------------------------------
  304. def update_cursor_rect
  305.    if @index < 0
  306.      self.cursor_rect.empty
  307.    else
  308.      self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  309.    end
  310. end
  311. end
  312. #==============================================================================
  313. # ■ Window_MShopBuy
  314. #------------------------------------------------------------------------------
  315. #  特技商店画面、浏览显示可以购买的商品的窗口。
  316. #==============================================================================
  317. class Window_MShopBuy < Window_Selectable
  318. #--------------------------------------------------------------------------
  319. # ● 初始化对像
  320. #     shop_goods : 商品
  321. #--------------------------------------------------------------------------
  322. def initialize(id)
  323.    super(0, 64, 368, 416)
  324.    @id = id
  325.    refresh
  326.    self.index = 0
  327. end
  328. #--------------------------------------------------------------------------
  329. # ● 获取物品
  330. #--------------------------------------------------------------------------
  331. def skill
  332.    return @data[self.index]
  333. end
  334. #--------------------------------------------------------------------------
  335. # ● 刷新
  336. #--------------------------------------------------------------------------
  337. def refresh
  338.    if self.contents != nil
  339.      self.contents.dispose
  340.      self.contents = nil
  341.    end
  342.    @data = []
  343.    for skill_id in @id
  344.      skill = $data_skills[skill_id]
  345.      if skill != nil
  346.        @data.push(skill)
  347.      end
  348.    end
  349.    @item_max = @data.size
  350.    if @item_max > 0
  351.      self.contents = Bitmap.new(width - 32, row_max * 32)
  352.      for i in 0...@item_max
  353.        draw_item(i)
  354.      end
  355.    end
  356. end
  357. #--------------------------------------------------------------------------
  358. # ● 描绘羡慕
  359. #     index : 项目编号
  360. #--------------------------------------------------------------------------
  361. def draw_item(index)
  362.    skill = @data[index]
  363.    # 除此之外的情况设置为无效文字色
  364.    if skill.price <= $mShop_gold
  365.      self.contents.font.color = normal_color
  366.    else
  367.      self.contents.font.color = disabled_color
  368.    end
  369.    x = 4
  370.    y = index * 32
  371.    rect = Rect.new(x, y, self.width - 32, 32)
  372.    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  373.    bitmap = RPG::Cache.icon(skill.icon_name)
  374.    opacity = self.contents.font.color == normal_color ? 255 : 128
  375.    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  376.    self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0)
  377.    self.contents.draw_text(x + 240, y, 88, 32, skill.price.to_s, 2)
  378. end
  379. #--------------------------------------------------------------------------
  380. # ● 刷新帮助文本
  381. #--------------------------------------------------------------------------
  382. def update_help
  383.    @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  384. end
  385. end
  386. #==============================================================================
  387. # ■ RPG原装定义
  388. #==============================================================================
  389. module RPG
  390. class Skill
  391.    def description
  392.      description = @description.split(/@/)[0]
  393.      return description != nil ? description : ''
  394.    end
  395.    def price
  396.      price = @description.split(/@/)[1]
  397.      return price != nil ? price.to_i : 0
  398.    end
  399. end
  400. end
复制代码
注:脚本太长我没有通读,你可以试试行不行。(SP不够时会播放se,若不想要请把176行去掉)
再注:我表示和楼上相反的看法
作者: qq1014850720    时间: 2011-7-19 13:57
piaoy 发表于 2011-7-18 16:17
注:脚本太长我没有通读,你可以试试行不行。(SP不够时会播放se,若不想要请把176行去掉)
再注:我表示和 ...

谢谢您花时间来修改脚本  负钱的问题虽然解决了 但是还是存在钱为0就可买技能的情况  而且遗忘的话会得到一半的钱·   哎~  话说这是柳大的脚本~~~   怎么也没完善一下~~  


qq1014850720于2011-7-19 13:59补充以下内容:
[attachimg]65298[/attachimg][attachimg]65297[/attachimg]


qq1014850720于2011-7-19 14:09补充以下内容:
补充一下  刚才又用了下  发现改变后的脚本不会扣去金钱了  但是选择遗忘技能却会得到学习该技能所需一半的金钱
作者: piaoy    时间: 2011-7-19 19:16
qq1014850720 发表于 2011-7-19 13:57
谢谢您花时间来修改脚本  负钱的问题虽然解决了 但是还是存在钱为0就可买技能的情况  而且遗忘的话会得到 ...

魔法商店范例.zip (206.13 KB, 下载次数: 41)

奇怪。。。我也测试了一下,可是没有发现你说的问题啊?
附件在上面
要不脚本再发一遍,我测试时可以减SP的。
  1. #==============================================================================
  2. # ■ 本脚本源自www.66rpg.com,转载与使用请保留此信息
  3. #==============================================================================

  4. #——以下是一些自定义的内容

  5. $mShop_use_1 = "灵魄"    #——这项是购买魔法特技的货币的名称,如“灵魄”、“金钱”

  6. $mShop_use_2 = "特斯拉"  #——这项是购买魔法特技的货币单位,如“点”、“¥”

  7. $mShop_use_variable = 1  #——这项是购买魔法特技时消耗的变量编号,如果=0 则是消耗金钱

  8. $mShop_Window_Opacity = 200  #——这项是窗口透明度

  9. #==============================================================================
  10. # ■ Window_MGold
  11. #------------------------------------------------------------------------------
  12. #  显示金钱的窗口。
  13. #==============================================================================
  14. class Window_MGold < Window_Base
  15. #--------------------------------------------------------------------------
  16. # ● 初始化窗口
  17. #--------------------------------------------------------------------------
  18. def initialize
  19.    super(0, 0, 272, 64)
  20.    self.contents = Bitmap.new(width - 32, height - 32)
  21.    refresh
  22. end
  23. #--------------------------------------------------------------------------
  24. # ● 刷新
  25. #--------------------------------------------------------------------------
  26. def refresh
  27.    self.contents.clear
  28.    self.contents.font.color = system_color
  29.    self.contents.draw_text(0, 0 , 240,32 ,$mShop_use_1)
  30.    self.contents.font.color = normal_color
  31.    self.contents.draw_text(0, 0, 240-contents.text_size($mShop_use_2).width-6, 32, $mShop_gold.to_s, 2)
  32.    self.contents.font.color = system_color
  33.    self.contents.draw_text(0, 0, 240, 32, $mShop_use_2, 2)
  34. end
  35. end
  36. #==============================================================================
  37. # ■ Scene_MShop
  38. #------------------------------------------------------------------------------
  39. #  处理特技商店画面的类。
  40. #==============================================================================
  41. class Scene_MShop
  42. #--------------------------------------------------------------------------
  43. # ● 初始化
  44. #--------------------------------------------------------------------------
  45. def initialize(id)
  46.    @id = id
  47. end  
  48. #--------------------------------------------------------------------------
  49. # ● 主处理
  50. #--------------------------------------------------------------------------
  51. def main
  52.    screen = Spriteset_Map.new
  53.    if $mShop_use_variable == 0
  54.      $mShop_gold = $game_party.gold
  55.    else
  56.      $mShop_gold = $game_variables[$mShop_use_variable]
  57.    end
  58.    # 生成帮助窗口
  59.    @help_window = Window_Help.new
  60.    @help_window.opacity = $mShop_Window_Opacity

  61.    # 生成金钱窗口
  62.    @gold_window = Window_MGold.new
  63.    @gold_window.x = 368
  64.    @gold_window.y = 416
  65.    @gold_window.opacity = $mShop_Window_Opacity
  66.    # 生成购买窗口
  67.    @buy_window = Window_MShopBuy.new(@id)
  68.    @buy_window.active = true
  69.    @buy_window.visible = true
  70.    @buy_window.help_window = @help_window
  71.    @buy_window.opacity = $mShop_Window_Opacity
  72.    # 生成状态窗口
  73.    @status_window = Window_MShopStatus.new
  74.    @status_window.visible = true
  75.    @status_window.active = false
  76.    @status_window.opacity = $mShop_Window_Opacity
  77.       
  78.    #生成指令窗口
  79.    @command_window = Window_Command.new(160,["学会","遗忘"])
  80.    @command_window.x = 320
  81.    @command_window.y = 240
  82.    @command_window.z = 500
  83.    @command_window.visible = false
  84.    @command_window.active = false
  85.    @command_window.opacity = $mShop_Window_Opacity
  86.    
  87.    # 执行过渡
  88.    Graphics.transition
  89.    # 主循环
  90.    loop do
  91.      # 刷新游戏画面
  92.      Graphics.update
  93.      # 刷新输入信息
  94.      Input.update
  95.      # 刷新画面
  96.      update
  97.      # 如果画面切换的话就中断循环
  98.      if $scene != self
  99.        break
  100.      end
  101.    end
  102.    # 准备过渡
  103.    Graphics.freeze
  104.    # 释放窗口
  105.    @help_window.dispose
  106.    #@mhelp_window.dispose
  107.    @gold_window.dispose
  108.    @buy_window.dispose
  109.    @status_window.dispose
  110.    @command_window.dispose
  111.    screen.dispose
  112. end
  113. #--------------------------------------------------------------------------
  114. # ● 刷新画面
  115. #--------------------------------------------------------------------------
  116. def update
  117.    # 刷新窗口
  118.    @help_window.update
  119.    #@mhelp_window.update
  120.    @gold_window.update
  121.    @buy_window.update
  122.    @status_window.update
  123.    @command_window.update
  124.    # 购买窗口激活的情况下: 调用 update_buy
  125.    if @buy_window.active
  126.      update_buy
  127.      return
  128.    end
  129.    if @status_window.active
  130.      update_status
  131.      return
  132.    end
  133.    if @command_window.active
  134.      update_command
  135.      return
  136.    end
  137.    
  138. end

  139. #--------------------------------------------------------------------------
  140. # ● 刷新画面 (指令窗口激活的情况下)
  141. #--------------------------------------------------------------------------
  142. def update_command
  143.    if Input.trigger?(Input::B)
  144.      $game_system.se_play($data_system.cancel_se)
  145.      @status_window.index = -1
  146.      @command_window.active = false
  147.      @command_window.visible = false
  148.      @buy_window.active = true
  149.      return
  150.    end
  151.    if Input.trigger?(Input::C)
  152.      if @command_window.index == 0      
  153.        if $game_party.actors[@status_window.index].skill_learn?(@skill.id)
  154.          $game_system.se_play($data_system.cancel_se)
  155.          return
  156.        else
  157.          if $mShop_gold > @skill.price
  158.            $game_system.se_play($data_system.decision_se)
  159.            if $mShop_use_variable == 0
  160.             $game_party.gain_gold([email protected])
  161.             $mShop_gold -= @skill.price
  162.            else
  163.             $game_variables[$mShop_use_variable] -= @skill.price
  164.             $mShop_gold -= @skill.price
  165.            end
  166.          else
  167.            $game_system.se_play($data_system.cancel_se)
  168.          end
  169.          $game_party.actors[@status_window.index].learn_skill(@skill.id)
  170.          @gold_window.refresh
  171.          @buy_window.refresh
  172.          @status_window.refresh
  173.          @status_window.index = -1
  174.          @buy_window.active = true
  175.          @command_window.active = false
  176.          @command_window.visible = false   
  177.        end
  178.      elsif  @command_window.index == 1
  179.        if $game_party.actors[@status_window.index].skill_learn?(@skill.id) == false
  180.          $game_system.se_play($data_system.cancel_se)
  181.          return
  182.        else
  183.          $game_system.se_play($data_system.decision_se)
  184.          if $mShop_use_variable == 0
  185.            $game_party.gain_gold(@skill.price/2)  #<-遗忘价格为学习的一半,/2的地方相同
  186.            $mShop_gold += @skill.price/2
  187.          else
  188.            $game_variables[$mShop_use_variable] += @skill.price/2
  189.            $mShop_gold += @skill.price/2
  190.          end
  191.          $game_party.actors[@status_window.index].forget_skill(@skill.id)
  192.          @gold_window.refresh
  193.          @buy_window.refresh
  194.          @status_window.refresh
  195.          @status_window.index = -1
  196.          @buy_window.active = true
  197.          @command_window.active = false
  198.          @command_window.visible = false
  199.        end
  200.      end
  201.      return
  202.    end
  203. end

  204. #--------------------------------------------------------------------------
  205. # ● 刷新画面 (购买窗口激活的情况下)
  206. #--------------------------------------------------------------------------
  207. def update_buy
  208.    @status_window.skill = @buy_window.skill
  209.    if Input.trigger?(Input::B)
  210.      $game_system.se_play($data_system.cancel_se)
  211.      $scene = Scene_Map.new
  212.      return
  213.    end
  214.    if Input.trigger?(Input::C)
  215.      @skill = @buy_window.skill
  216.      if @skill == nil #or @skill.price > $mShop_gold  
  217.        $game_system.se_play($data_system.buzzer_se)
  218.        return
  219.      end
  220.      $game_system.se_play($data_system.decision_se)
  221.      @buy_window.active = false
  222.      @status_window.index = 0
  223.      @status_window.active = true
  224.    end
  225. end
  226. #--------------------------------------------------------------------------
  227. # ● 刷新画面 (状态窗口激活的情况下)
  228. #--------------------------------------------------------------------------
  229. def update_status
  230.    if Input.trigger?(Input::B)
  231.      $game_system.se_play($data_system.cancel_se)
  232.      @status_window.active = false
  233.      @status_window.index = -1
  234.      @buy_window.active = true
  235.    end
  236.    if Input.trigger?(Input::C)
  237.       @status_window.active = false
  238.       @command_window.visible = true
  239.       @command_window.active = true
  240.    end   
  241. end
  242. end
  243. #==============================================================================
  244. # ■ Window_MShopStatus
  245. #------------------------------------------------------------------------------
  246. #  特技商店画面、显示物品所持数与角色装备的窗口。
  247. #==============================================================================
  248. class Window_MShopStatus < Window_Selectable
  249. #--------------------------------------------------------------------------
  250. # ● 初始化对像
  251. #--------------------------------------------------------------------------
  252. def initialize
  253.    super(368, 64, 272, 352)
  254.    self.contents = Bitmap.new(width - 32, height - 32)
  255.    self.contents.font.size = 18
  256.    @skill = nil
  257.    refresh
  258. end
  259. #--------------------------------------------------------------------------
  260. # ● 刷新
  261. #--------------------------------------------------------------------------
  262. def refresh
  263.    self.contents.clear
  264.    for i in 0...$game_party.actors.size
  265.      actor = $game_party.actors[i]
  266.      draw_actor_graphic(actor,12,80*i+64)
  267.      self.contents.font.color = system_color
  268.      self.contents.draw_text(44, 80*i, 240, 32, actor.name)
  269.      self.contents.draw_text(0, 80*i , 240-20,32,"等级",2)
  270.      self.contents.font.color = normal_color
  271.      self.contents.draw_text(0, 80*i, 240, 32, actor.level.to_s , 2)
  272.      self.contents.font.color = system_color
  273.      self.contents.draw_text(44, 80*i+22, 45, 32, $data_system.words.hp)
  274.      self.contents.font.color = normal_color
  275.      self.contents.draw_text(44, 80*i+22, 90, 32, actor.maxhp.to_s,2)
  276.      self.contents.font.color = system_color
  277.      self.contents.draw_text(150, 80*i+22, 45, 32, $data_system.words.sp)
  278.      self.contents.font.color = normal_color
  279.      self.contents.draw_text(150, 80*i+22, 90, 32, actor.maxsp.to_s,2)      
  280.      if actor.skill_learn?(@skill.id)
  281.        self.contents.font.color = Color.new(255,255,255,128)
  282.        self.contents.draw_text(44, 80*i+44, 196, 32, "⊙此项特技已经学习⊙",2)        
  283.      else
  284.        self.contents.font.color = Color.new(255,255,0,255)
  285.        self.contents.draw_text(44, 80*i+44, 240, 32, "★此项特技尚未学习★")
  286.      end
  287.    end
  288.    @item_max = $game_party.actors.size
  289. end
  290. #--------------------------------------------------------------------------
  291. # ● 设置物品
  292. #     item : 新的物品
  293. #--------------------------------------------------------------------------
  294. def skill=(skill)
  295.    if @skill != skill
  296.      @skill = skill
  297.      refresh
  298.    end
  299. end
  300. #--------------------------------------------------------------------------
  301. # ● 刷新光标矩形
  302. #--------------------------------------------------------------------------
  303. def update_cursor_rect
  304.    if @index < 0
  305.      self.cursor_rect.empty
  306.    else
  307.      self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  308.    end
  309. end
  310. end
  311. #==============================================================================
  312. # ■ Window_MShopBuy
  313. #------------------------------------------------------------------------------
  314. #  特技商店画面、浏览显示可以购买的商品的窗口。
  315. #==============================================================================
  316. class Window_MShopBuy < Window_Selectable
  317. #--------------------------------------------------------------------------
  318. # ● 初始化对像
  319. #     shop_goods : 商品
  320. #--------------------------------------------------------------------------
  321. def initialize(id)
  322.    super(0, 64, 368, 416)
  323.    @id = id
  324.    refresh
  325.    self.index = 0
  326. end
  327. #--------------------------------------------------------------------------
  328. # ● 获取物品
  329. #--------------------------------------------------------------------------
  330. def skill
  331.    return @data[self.index]
  332. end
  333. #--------------------------------------------------------------------------
  334. # ● 刷新
  335. #--------------------------------------------------------------------------
  336. def refresh
  337.    if self.contents != nil
  338.      self.contents.dispose
  339.      self.contents = nil
  340.    end
  341.    @data = []
  342.    for skill_id in @id
  343.      skill = $data_skills[skill_id]
  344.      if skill != nil
  345.        @data.push(skill)
  346.      end
  347.    end
  348.    @item_max = @data.size
  349.    if @item_max > 0
  350.      self.contents = Bitmap.new(width - 32, row_max * 32)
  351.      for i in 0...@item_max
  352.        draw_item(i)
  353.      end
  354.    end
  355. end
  356. #--------------------------------------------------------------------------
  357. # ● 描绘羡慕
  358. #     index : 项目编号
  359. #--------------------------------------------------------------------------
  360. def draw_item(index)
  361.    skill = @data[index]
  362.    # 除此之外的情况设置为无效文字色
  363.    if skill.price <= $mShop_gold
  364.      self.contents.font.color = normal_color
  365.    else
  366.      self.contents.font.color = disabled_color
  367.    end
  368.    x = 4
  369.    y = index * 32
  370.    rect = Rect.new(x, y, self.width - 32, 32)
  371.    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  372.    bitmap = RPG::Cache.icon(skill.icon_name)
  373.    opacity = self.contents.font.color == normal_color ? 255 : 128
  374.    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  375.    self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0)
  376.    self.contents.draw_text(x + 240, y, 88, 32, skill.price.to_s, 2)
  377. end
  378. #--------------------------------------------------------------------------
  379. # ● 刷新帮助文本
  380. #--------------------------------------------------------------------------
  381. def update_help
  382.    @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  383. end
  384. end
  385. #==============================================================================
  386. # ■ RPG原装定义
  387. #==============================================================================
  388. module RPG
  389. class Skill
  390.    def description
  391.      description = @description.split(/@/)[0]
  392.      return description != nil ? description : ''
  393.    end
  394.    def price
  395.      price = @description.split(/@/)[1]
  396.      return price != nil ? price.to_i : 0
  397.    end
  398. end
  399. end
复制代码

作者: qq1014850720    时间: 2011-7-19 23:42
piaoy 发表于 2011-7-19 19:16
奇怪。。。我也测试了一下,可是没有发现你说的问题啊?
附件在上面
要不脚本再发一遍,我测试时可以减 ...

我用脚本代入到附件里还是会出现不扣钱的情况,不管是使用原附件货币还是金钱都是完全不扣的,而且在金钱为0的情况下一样可以买特技  而遗忘特技的话会得到原特技价格一半的金钱·   您可以再用金钱测试一下或者是金钱为0的情况测试一下看看·   要不把您修改后没有出问题的附件发来我参考一下·   另外~   修改的脚本除了原脚本使用方法外还有什么特别的设置吗?
作者: piaoy    时间: 2011-7-20 10:25
本帖最后由 piaoy 于 2011-7-20 14:18 编辑

深刻反省懒得读脚本的坏习惯。。。
其实很简单,这次不用脚本了,请你直接把你上面给出的网页中的脚本复制进去,把我改的那个破烂覆盖掉,
然后找到第221行,找到
  1. if @skill == nil #or @skill.price > $mShop_gold  
复制代码
这句脚本,这句里面有一个#,把#删掉就行了
也就是这样
  1. if @skill == nil or @skill.price > $mShop_gold  
复制代码
可是这样还有一个BUG,如果钱不够就无法遗忘,解决方法:
把上述的那行脚本改成
  1.      if @skill == nil or @skill.price > $mShop_gold and $game_party.actors[@status_window.index].skill_learn?(@skill.id)
复制代码

作者: qq1014850720    时间: 2011-7-20 18:10
piaoy 发表于 2011-7-20 10:25
深刻反省懒得读脚本的坏习惯。。。
其实很简单,这次不用脚本了,请你直接把你上面给出的网页中的脚本复制 ...

修改后的脚本又回到负钱的问题了·   哎·  您的把您测试没问题的范例发来看看么 我怕是我哪一步搞错了也说不定  真是给您添麻烦了·
作者: piaoy    时间: 2011-7-20 20:28
qq1014850720 发表于 2011-7-20 18:10
修改后的脚本又回到负钱的问题了·   哎·  您的把您测试没问题的范例发来看看么 我怕是我哪一 ...

我实在是没那脑细胞想了- -|||抱歉。
你可以把原脚本放进去,把221行的#删掉。
虽然这样会导致一个BUG:如果身上带的钱小于想要遗忘的技能的价格就无法遗忘(好似黑店不让退货)
坐等好心的斑竹路过解决吧。。




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