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

Project1

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

[已经解决] 商店问题!!!!!

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1 小时
注册时间
2008-9-19
帖子
59
跳转到指定楼层
1
发表于 2009-9-15 15:05:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. class Scene_Shop
  2.   # --------------------------
  3.   def main
  4.     @help_window = Window_Help.new
  5.     @command_window = Window_ShopCommand.new
  6.     @gold_window = Window_Gold.new
  7.     @gold_window.x = 480
  8.     @gold_window.y = 64
  9.     @dummy_window = Window_Base.new(0, 128, 640, 352)
  10.     @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
  11.     @buy_window.active = false
  12.     @buy_window.visible = false
  13.     @buy_window.help_window = @help_window
  14.     @sell_window = Window_ShopSell.new
  15.     @sell_window.active = false
  16.     @sell_window.visible = false
  17.     @sell_window.help_window = @help_window
  18.     @number_window = Window_ShopNumber.new
  19.     @number_window.active = false
  20.     @number_window.visible = false
  21.     @status_window = Window_ShopStatus.new
  22.     @status_window.visible = false
  23.     if $game_temp.shop_type == 1
  24.       @command_window.index = 0
  25.       @command_window.active = false
  26.       @dummy_window.visible = false
  27.       @buy_window.active = true
  28.       @buy_window.visible = true
  29.       @buy_window.refresh
  30.       @status_window.visible = true
  31.     end
  32.     if $game_temp.shop_type == 2
  33.       @command_window.index = 1
  34.       @command_window.active = false
  35.       @dummy_window.visible = false
  36.       @sell_window.active = true
  37.       @sell_window.visible = true
  38.       @sell_window.refresh
  39.     end
  40.     Graphics.transition
  41.     loop do
  42.       Graphics.update
  43.       Input.update
  44.       update
  45.       if $scene != self
  46.         break
  47.       end
  48.     end
  49.     Graphics.freeze
  50.     @status_window.item = nil
  51.     @status_window.refresh
  52.     @help_window.dispose
  53.     @command_window.dispose
  54.     @gold_window.dispose
  55.     @dummy_window.dispose
  56.     @buy_window.dispose
  57.     @sell_window.dispose
  58.     @number_window.dispose
  59.     @status_window.dispose
  60.     $game_temp.shop_type = 0
  61.   end
  62.   # --------------------------
  63.   def update
  64.     @help_window.update
  65.     @command_window.update
  66.     @gold_window.update
  67.     @dummy_window.update
  68.     @buy_window.update
  69.     @sell_window.update
  70.     @number_window.update
  71.     @status_window.update
  72.     if @command_window.active
  73.       update_command
  74.       return
  75.     end
  76.     if @buy_window.active
  77.       update_buy
  78.       return
  79.     end
  80.     if @sell_window.active
  81.       update_sell
  82.       return
  83.     end
  84.     if @number_window.active
  85.       update_number
  86.       return
  87.     end
  88.   end
  89.   # --------------------------
  90.   def update_command
  91.     if Input.trigger?(Input::B)
  92.       $game_system.se_play($data_system.cancel_se)
  93.       $scene = Scene_Map.new
  94.       return
  95.     end
  96.     if Input.trigger?(Input::C)
  97.       case @command_window.index
  98.       when 0
  99.         $game_system.se_play($data_system.decision_se)
  100.         @command_window.active = false
  101.         @dummy_window.visible = false
  102.         @buy_window.active = true
  103.         @buy_window.visible = true
  104.         @buy_window.refresh
  105.         @status_window.visible = true
  106.       when 1
  107.         $game_system.se_play($data_system.decision_se)
  108.         @command_window.active = false
  109.         @dummy_window.visible = false
  110.         @sell_window.active = true
  111.         @sell_window.visible = true
  112.         @sell_window.refresh
  113.       when 2
  114.         $game_system.se_play($data_system.decision_se)
  115.         $scene = Scene_Map.new
  116.       end
  117.       return
  118.     end
  119.   end
  120.   # --------------------------
  121.   def update_buy
  122.     @status_window.item = @buy_window.item
  123.     if Input.trigger?(Input::B)
  124.       if $game_temp.shop_type == 1
  125.          $game_system.se_play($data_system.cancel_se)
  126.          $scene = Scene_Map.new
  127.       else
  128.       $game_system.se_play($data_system.cancel_se)
  129.       @command_window.active = true
  130.       @dummy_window.visible = true
  131.       @buy_window.active = false
  132.       @buy_window.visible = false
  133.       @status_window.visible = false
  134.       @status_window.item = nil
  135.       @help_window.set_text("")
  136.       end
  137.       return
  138.     end
  139.     if Input.trigger?(Input::C)
  140.       @item = @buy_window.item
  141.       if @item == nil or @item.price > $game_party.gold
  142.         $game_system.se_play($data_system.buzzer_se)
  143.         return
  144.       end
  145.       case @item
  146.       when RPG::Item
  147.         number = $game_party.item_number(@item.id)
  148.       when RPG::Weapon
  149.         number = $game_party.weapon_number(@item.id)
  150.       when RPG::Armor
  151.         number = $game_party.armor_number(@item.id)
  152.       end
  153.       if number == 99
  154.         $game_system.se_play($data_system.buzzer_se)
  155.         return
  156.       end
  157.       $game_system.se_play($data_system.decision_se)
  158.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  159.       max = [max, 99 - number].min
  160.       @buy_window.active = false
  161.       @buy_window.visible = false
  162.       @number_window.set(@item, max, @item.price)
  163.       @number_window.active = true
  164.       @number_window.visible = true
  165.     end
  166.   end
  167.   # --------------------------
  168.   def update_sell
  169.     if Input.trigger?(Input::B)
  170.       if $game_temp.shop_type == 2
  171.          $game_system.se_play($data_system.cancel_se)
  172.          $scene = Scene_Map.new
  173.       else
  174.       $game_system.se_play($data_system.cancel_se)
  175.       @command_window.active = true
  176.       @dummy_window.visible = true
  177.       @sell_window.active = false
  178.       @sell_window.visible = false
  179.       @status_window.item = nil
  180.       @help_window.set_text("")
  181.       return
  182.       end
  183.     end
  184.     if Input.trigger?(Input::C)
  185.       @item = @sell_window.item
  186.       @status_window.item = @item
  187.       if @item == nil or @item.price == 0
  188.         $game_system.se_play($data_system.buzzer_se)
  189.         return
  190.       end
  191.       $game_system.se_play($data_system.decision_se)
  192.       case @item
  193.       when RPG::Item
  194.         number = $game_party.item_number(@item.id)
  195.       when RPG::Weapon
  196.         number = $game_party.weapon_number(@item.id)
  197.       when RPG::Armor
  198.         number = $game_party.armor_number(@item.id)
  199.       end
  200.       max = number
  201.       @sell_window.active = false
  202.       @sell_window.visible = false
  203.       @number_window.set(@item, max, @item.price / 2)
  204.       @number_window.active = true
  205.       @number_window.visible = true
  206.       @status_window.visible = true
  207.     end
  208.   end
  209.   # --------------------------
  210.   def update_number
  211.     if Input.trigger?(Input::B)
  212.       $game_system.se_play($data_system.cancel_se)
  213.       @number_window.active = false
  214.       @number_window.visible = false
  215.       case @command_window.index
  216.       when 0
  217.         @buy_window.active = true
  218.         @buy_window.visible = true
  219.       when 1
  220.         @sell_window.active = true
  221.         @sell_window.visible = true
  222.         @status_window.visible = false
  223.       end
  224.       return
  225.     end
  226.     if Input.trigger?(Input::C)
  227.       $game_system.se_play($data_system.shop_se)
  228.       @number_window.active = false
  229.       @number_window.visible = false
  230.       case @command_window.index
  231.       when 0
  232.         $game_party.lose_gold(@number_window.number * @item.price)
  233.         case @item
  234.         when RPG::Item
  235.           $game_party.gain_item(@item.id, @number_window.number)
  236.         when RPG::Weapon
  237.           $game_party.gain_weapon(@item.id, @number_window.number)
  238.         when RPG::Armor
  239.           $game_party.gain_armor(@item.id, @number_window.number)
  240.         end
  241.         @gold_window.refresh
  242.         @buy_window.refresh
  243.         @status_window.refresh
  244.         @buy_window.active = true
  245.         @buy_window.visible = true
  246.       when 1
  247.         $game_party.gain_gold(@number_window.number * (@item.price / 2))
  248.         case @item
  249.         when RPG::Item
  250.           $game_party.lose_item(@item.id, @number_window.number)
  251.         when RPG::Weapon
  252.           $game_party.lose_weapon(@item.id, @number_window.number)
  253.         when RPG::Armor
  254.           $game_party.lose_armor(@item.id, @number_window.number)
  255.         end
  256.         @gold_window.refresh
  257.         @sell_window.refresh
  258.         @status_window.refresh
  259.         @sell_window.active = true
  260.         @sell_window.visible = true
  261.         @status_window.visible = false
  262.       end
  263.       return
  264.     end
  265.   end
  266. end




  267. class Window_ShopCommand < Window_Selectable
  268.   # ----------------------------------------
  269.   def initialize
  270.     super(0, 64, 480, 64)
  271.     self.contents = Bitmap.new(width - 32, height - 32)
  272.     @item_max = 3
  273.     @column_max = 3
  274.     @commands = ["购买", "卖出", "离开"]
  275.     self.contents.font.name = "隶书"
  276.     self.contents.font.size = 24
  277.     refresh
  278.     self.index = 0
  279.   end
  280.   # ----------------------------------------
  281.   def refresh
  282.     self.contents.clear
  283.     if $game_temp.shop_type == 0
  284.       for i in 0...@item_max
  285.       draw_item(i)
  286.       end
  287.     end
  288.     if $game_temp.shop_type == 1
  289.       self.contents.draw_text(4, 0, 324, 32, "欢迎惠顾,客官随意挑选")
  290.       self.index = -1
  291.       update_cursor_rect
  292.     end
  293.     if $game_temp.shop_type == 2
  294.       self.contents.draw_text(4, 0, 324, 32, "欢迎惠顾,客官需要当些什么")
  295.       self.index = -1
  296.       update_cursor_rect
  297.     end
  298.   end
  299.   # ----------------------------------------
  300.   def draw_item(index)
  301.     x = 4 + index * 160
  302.     self.contents.draw_text(x, 0, 128, 32, @commands[index])
  303.   end
  304.   # ----------------------------------------
  305.   def update_cursor_rect
  306.     if $game_temp.shop_type == 0
  307.       super
  308.     end
  309.     if $game_temp.shop_type == 1 || $game_temp.shop_type == 2
  310.       self.cursor_rect.empty
  311.     end
  312.   end
  313. end
  314. class Game_Temp
  315.   # ----------------------------------------
  316.   attr_accessor :shop_type
  317.   alias ini initialize
  318.   def initialize
  319.     ini
  320.     @shop_type = 0
  321.   end
  322. end


复制代码
这个脚本怎么应用到事件中?
这个是一个只能买或者只能卖的脚本!

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

2
发表于 2009-9-15 16:09:05 | 只看该作者
原帖地址是什么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
84
在线时间
156 小时
注册时间
2009-8-5
帖子
533
3
发表于 2009-9-15 18:10:06 | 只看该作者
#只能购买的商店:
#在商店前面一行事件添加脚本:$game_temp.shop_type = 1

#只能卖出的商店:
#在商店前面一行事件添加脚本:$game_temp.shop_type = 2

#普通商店:不用改动
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-9 01:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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