Project1

标题: 关于携带负重脚本 [打印本页]

作者: 莫浪语    时间: 2007-4-13 23:06
标题: 关于携带负重脚本
有人有角色随带物品限制数量的脚本么,如果能随着升级携带数量就增加的就更好了{/gg}

以前66帮我写了一个,但有bug,就是如果卸载武器时会自动增加携带的点数,如果反复的卸下装上或吃药水的话,就会加很多携带量

  1. #==============================================================================
  2. # ■ Window_Gold
  3. #------------------------------------------------------------------------------
  4. #  显示金钱的窗口。
  5. #==============================================================================

  6. class Window_Gold < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化窗口
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 160, 96)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     self.z = 0
  14.     refresh
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 刷新
  18.   #--------------------------------------------------------------------------
  19.   def refresh
  20.     self.contents.clear
  21.    
  22.     self.contents.font.size = 18
  23.    
  24.     cx = contents.text_size("金钱").width
  25.    
  26.     self.contents.font.color = normal_color
  27.     self.contents.draw_text(4+cx, 0, 124-cx, 24, $game_party.gold.to_s, 2)
  28.     self.contents.font.color = system_color
  29.     self.contents.draw_text(4, 0, cx, 24, "金钱", 2)
  30.    
  31.     cx = contents.text_size("货物余量").width
  32.    
  33.     self.contents.font.color = system_color
  34.     self.contents.draw_text(4, 24,cx, 24, "货物余量", 2)
  35.     self.contents.font.color = normal_color
  36.     self.contents.draw_text(4+cx, 24, 124-cx, 24, $game_variables[2].to_s, 2)
  37.   end
  38. end
复制代码
  1. #==============================================================================
  2. # ■ Scene_Shop249 309
  3. #------------------------------------------------------------------------------
  4. #  处理商店画面的类。
  5. #==============================================================================

  6. class Scene_Shop

  7.   #--------------------------------------------------------------------------
  8.   # ● 刷新画面 (指令窗口激活的情况下下面修改)
  9.   #--------------------------------------------------------------------------
  10.         
  11. ######################################################################
  12. #下一行修改过
  13. ######################################################################
  14.       if @item == nil or @item.price > $game_party.gold or $game_variables[2]==0
  15.         # 演奏冻结 SE
  16.         $game_system.se_play($data_system.buzzer_se)
  17.         return
  18.       end
  19.       
  20.       # 获取物品所持数
  21.       case @item
  22.       when RPG::Item
  23.         number = $game_party.item_number(@item.id)
  24.       when RPG::Weapon
  25.         number = $game_party.weapon_number(@item.id)
  26.       when RPG::Armor
  27.         number = $game_party.armor_number(@item.id)
  28.       end
  29.       
  30.       
  31.       # 如果已经拥有了 99 个情况下
  32.       if number == 99
  33.         # 演奏冻结 SE
  34.         $game_system.se_play($data_system.buzzer_se)
  35.         return
  36.       end
  37.       # 演奏确定 SE
  38.       $game_system.se_play($data_system.decision_se)
  39.       # 计算可以最多购买的数量
  40.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  41.       
  42. ######################################################################
  43. #下一行修改过
  44. ######################################################################
  45.       max = [[max, 99 - number].min, $game_variables[2]].min
  46.       
  47.       
  48.       # 窗口状态转向数值输入模式
  49.       @buy_window.active = false
  50.       @buy_window.visible = false
  51.       @number_window.set(@item, max, @item.price)
  52.       @number_window.active = true
  53.       @number_window.visible = true
  54.     end
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 画面更新 (卖出窗口激活的情况下)
  58.   #--------------------------------------------------------------------------
  59.   def update_sell
  60.     # 按下 B 键的情况下
  61.     if Input.trigger?(Input::B)
  62.       # 演奏取消 SE
  63.       $game_system.se_play($data_system.cancel_se)
  64.       # 窗口状态转向初期模式
  65.       @command_window.active = true
  66.       @dummy_window.visible = true
  67.       @sell_window.active = false
  68.       @sell_window.visible = false
  69.       @status_window.item = nil
  70.       # 删除帮助文本
  71.       @help_window.set_text("")
  72.       return
  73.     end
  74.     # 按下 C 键的情况下
  75.     if Input.trigger?(Input::C)
  76.       # 获取物品
  77.       @item = @sell_window.item
  78.       # 设置状态窗口的物品
  79.       @status_window.item = @item
  80.       # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  81.       if @item == nil or @item.price == 0
  82.         # 演奏冻结 SE
  83.         $game_system.se_play($data_system.buzzer_se)
  84.         return
  85.       end
  86.       # 演奏确定 SE
  87.       $game_system.se_play($data_system.decision_se)
  88.       # 获取物品的所持数
  89.       case @item
  90.       when RPG::Item
  91.         number = $game_party.item_number(@item.id)
  92.       when RPG::Weapon
  93.         number = $game_party.weapon_number(@item.id)
  94.       when RPG::Armor
  95.         number = $game_party.armor_number(@item.id)
  96.       end
  97.       # 最大卖出个数 = 物品的所持数
  98.       max = number
  99.       # 窗口状态转向个数输入模式
  100.       @sell_window.active = false
  101.       @sell_window.visible = false
  102.       @number_window.set(@item, max, @item.price)
  103.       @number_window.active = true
  104.       @number_window.visible = true
  105.       @status_window.visible = true
  106.     end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 刷新画面 (个数输入窗口激活的情况下)
  110.   #--------------------------------------------------------------------------
  111.   def update_number
  112.     # 按下 B 键的情况下
  113.     if Input.trigger?(Input::B)
  114.       # 演奏取消 SE
  115.       $game_system.se_play($data_system.cancel_se)
  116.       # 设置个数输入窗口为不活动·非可视状态
  117.       @number_window.active = false
  118.       @number_window.visible = false
  119.       # 命令窗口光标位置分支
  120.       case @command_window.index
  121.       when 0  # 购买
  122.         # 窗口状态转向购买模式
  123.         @buy_window.active = true
  124.         @buy_window.visible = true
  125.       when 1  # 卖出
  126.         # 窗口状态转向卖出模式
  127.         @sell_window.active = true
  128.         @sell_window.visible = true
  129.         @status_window.visible = false
  130.       end
  131.       return
  132.     end
  133.     # 按下 C 键的情况下
  134.     if Input.trigger?(Input::C)
  135.       # 演奏商店 SE
  136.       $game_system.se_play($data_system.shop_se)
  137.       # 设置个数输入窗口为不活动·非可视状态
  138.       @number_window.active = false
  139.       @number_window.visible = false
  140.       # 命令窗口光标位置分支
  141.       case @command_window.index
  142.       when 0  # 购买
  143.         # 购买处理
  144.         $game_party.lose_gold(@number_window.number * @item.price)
  145. ######################################################################
  146. #下一行新添加
  147. ######################################################################
  148.         $game_variables[2] -= @number_window.number
  149.         case @item
  150.         when RPG::Item
  151.           $game_party.gain_item(@item.id, @number_window.number)
  152.         when RPG::Weapon
  153.           $game_party.gain_weapon(@item.id, @number_window.number)
  154.         when RPG::Armor
  155.           $game_party.gain_armor(@item.id, @number_window.number)
  156.         end
  157.         # 刷新各窗口
  158.         @gold_window.refresh
  159.         @buy_window.refresh
  160.         @status_window.refresh
  161.         # 窗口状态转向购买模式
  162.         @buy_window.active = true
  163.         @buy_window.visible = true
  164.       when 1  # 卖出
  165.         # 卖出处理
  166.         $game_party.gain_gold(@number_window.number * (@item.price))
  167. ######################################################################
  168. #下一行新添加
  169. ######################################################################
  170.         $game_variables[2] += @number_window.number
  171.         case @item
  172.         when RPG::Item
  173.           $game_party.lose_item(@item.id, @number_window.number)
  174.         when RPG::Weapon
  175.           $game_party.lose_weapon(@item.id, @number_window.number)
  176.         when RPG::Armor
  177.           $game_party.lose_armor(@item.id, @number_window.number)
  178.         end
  179.         # 刷新各窗口
  180.         @gold_window.refresh
  181.         @sell_window.refresh
  182.         @status_window.refresh
  183.         # 窗口状态转向卖出模式
  184.         @sell_window.active = true
  185.         @sell_window.visible = true
  186.         @status_window.visible = false
  187.       end
  188.       return
  189.     end
  190.   end
  191. end
复制代码


然后是升级,但脚本弄丢了汗,只知道是根据一个战斗升级提示脚本改的,好象是日本的范例里的升级提示上改的,但是有上面我说的bug,大家看有什么好完善的,帮忙
作者: 莫浪语    时间: 2007-4-13 23:06
标题: 关于携带负重脚本
有人有角色随带物品限制数量的脚本么,如果能随着升级携带数量就增加的就更好了{/gg}

以前66帮我写了一个,但有bug,就是如果卸载武器时会自动增加携带的点数,如果反复的卸下装上或吃药水的话,就会加很多携带量

  1. #==============================================================================
  2. # ■ Window_Gold
  3. #------------------------------------------------------------------------------
  4. #  显示金钱的窗口。
  5. #==============================================================================

  6. class Window_Gold < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化窗口
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 160, 96)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     self.z = 0
  14.     refresh
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 刷新
  18.   #--------------------------------------------------------------------------
  19.   def refresh
  20.     self.contents.clear
  21.    
  22.     self.contents.font.size = 18
  23.    
  24.     cx = contents.text_size("金钱").width
  25.    
  26.     self.contents.font.color = normal_color
  27.     self.contents.draw_text(4+cx, 0, 124-cx, 24, $game_party.gold.to_s, 2)
  28.     self.contents.font.color = system_color
  29.     self.contents.draw_text(4, 0, cx, 24, "金钱", 2)
  30.    
  31.     cx = contents.text_size("货物余量").width
  32.    
  33.     self.contents.font.color = system_color
  34.     self.contents.draw_text(4, 24,cx, 24, "货物余量", 2)
  35.     self.contents.font.color = normal_color
  36.     self.contents.draw_text(4+cx, 24, 124-cx, 24, $game_variables[2].to_s, 2)
  37.   end
  38. end
复制代码
  1. #==============================================================================
  2. # ■ Scene_Shop249 309
  3. #------------------------------------------------------------------------------
  4. #  处理商店画面的类。
  5. #==============================================================================

  6. class Scene_Shop

  7.   #--------------------------------------------------------------------------
  8.   # ● 刷新画面 (指令窗口激活的情况下下面修改)
  9.   #--------------------------------------------------------------------------
  10.         
  11. ######################################################################
  12. #下一行修改过
  13. ######################################################################
  14.       if @item == nil or @item.price > $game_party.gold or $game_variables[2]==0
  15.         # 演奏冻结 SE
  16.         $game_system.se_play($data_system.buzzer_se)
  17.         return
  18.       end
  19.       
  20.       # 获取物品所持数
  21.       case @item
  22.       when RPG::Item
  23.         number = $game_party.item_number(@item.id)
  24.       when RPG::Weapon
  25.         number = $game_party.weapon_number(@item.id)
  26.       when RPG::Armor
  27.         number = $game_party.armor_number(@item.id)
  28.       end
  29.       
  30.       
  31.       # 如果已经拥有了 99 个情况下
  32.       if number == 99
  33.         # 演奏冻结 SE
  34.         $game_system.se_play($data_system.buzzer_se)
  35.         return
  36.       end
  37.       # 演奏确定 SE
  38.       $game_system.se_play($data_system.decision_se)
  39.       # 计算可以最多购买的数量
  40.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  41.       
  42. ######################################################################
  43. #下一行修改过
  44. ######################################################################
  45.       max = [[max, 99 - number].min, $game_variables[2]].min
  46.       
  47.       
  48.       # 窗口状态转向数值输入模式
  49.       @buy_window.active = false
  50.       @buy_window.visible = false
  51.       @number_window.set(@item, max, @item.price)
  52.       @number_window.active = true
  53.       @number_window.visible = true
  54.     end
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 画面更新 (卖出窗口激活的情况下)
  58.   #--------------------------------------------------------------------------
  59.   def update_sell
  60.     # 按下 B 键的情况下
  61.     if Input.trigger?(Input::B)
  62.       # 演奏取消 SE
  63.       $game_system.se_play($data_system.cancel_se)
  64.       # 窗口状态转向初期模式
  65.       @command_window.active = true
  66.       @dummy_window.visible = true
  67.       @sell_window.active = false
  68.       @sell_window.visible = false
  69.       @status_window.item = nil
  70.       # 删除帮助文本
  71.       @help_window.set_text("")
  72.       return
  73.     end
  74.     # 按下 C 键的情况下
  75.     if Input.trigger?(Input::C)
  76.       # 获取物品
  77.       @item = @sell_window.item
  78.       # 设置状态窗口的物品
  79.       @status_window.item = @item
  80.       # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  81.       if @item == nil or @item.price == 0
  82.         # 演奏冻结 SE
  83.         $game_system.se_play($data_system.buzzer_se)
  84.         return
  85.       end
  86.       # 演奏确定 SE
  87.       $game_system.se_play($data_system.decision_se)
  88.       # 获取物品的所持数
  89.       case @item
  90.       when RPG::Item
  91.         number = $game_party.item_number(@item.id)
  92.       when RPG::Weapon
  93.         number = $game_party.weapon_number(@item.id)
  94.       when RPG::Armor
  95.         number = $game_party.armor_number(@item.id)
  96.       end
  97.       # 最大卖出个数 = 物品的所持数
  98.       max = number
  99.       # 窗口状态转向个数输入模式
  100.       @sell_window.active = false
  101.       @sell_window.visible = false
  102.       @number_window.set(@item, max, @item.price)
  103.       @number_window.active = true
  104.       @number_window.visible = true
  105.       @status_window.visible = true
  106.     end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 刷新画面 (个数输入窗口激活的情况下)
  110.   #--------------------------------------------------------------------------
  111.   def update_number
  112.     # 按下 B 键的情况下
  113.     if Input.trigger?(Input::B)
  114.       # 演奏取消 SE
  115.       $game_system.se_play($data_system.cancel_se)
  116.       # 设置个数输入窗口为不活动·非可视状态
  117.       @number_window.active = false
  118.       @number_window.visible = false
  119.       # 命令窗口光标位置分支
  120.       case @command_window.index
  121.       when 0  # 购买
  122.         # 窗口状态转向购买模式
  123.         @buy_window.active = true
  124.         @buy_window.visible = true
  125.       when 1  # 卖出
  126.         # 窗口状态转向卖出模式
  127.         @sell_window.active = true
  128.         @sell_window.visible = true
  129.         @status_window.visible = false
  130.       end
  131.       return
  132.     end
  133.     # 按下 C 键的情况下
  134.     if Input.trigger?(Input::C)
  135.       # 演奏商店 SE
  136.       $game_system.se_play($data_system.shop_se)
  137.       # 设置个数输入窗口为不活动·非可视状态
  138.       @number_window.active = false
  139.       @number_window.visible = false
  140.       # 命令窗口光标位置分支
  141.       case @command_window.index
  142.       when 0  # 购买
  143.         # 购买处理
  144.         $game_party.lose_gold(@number_window.number * @item.price)
  145. ######################################################################
  146. #下一行新添加
  147. ######################################################################
  148.         $game_variables[2] -= @number_window.number
  149.         case @item
  150.         when RPG::Item
  151.           $game_party.gain_item(@item.id, @number_window.number)
  152.         when RPG::Weapon
  153.           $game_party.gain_weapon(@item.id, @number_window.number)
  154.         when RPG::Armor
  155.           $game_party.gain_armor(@item.id, @number_window.number)
  156.         end
  157.         # 刷新各窗口
  158.         @gold_window.refresh
  159.         @buy_window.refresh
  160.         @status_window.refresh
  161.         # 窗口状态转向购买模式
  162.         @buy_window.active = true
  163.         @buy_window.visible = true
  164.       when 1  # 卖出
  165.         # 卖出处理
  166.         $game_party.gain_gold(@number_window.number * (@item.price))
  167. ######################################################################
  168. #下一行新添加
  169. ######################################################################
  170.         $game_variables[2] += @number_window.number
  171.         case @item
  172.         when RPG::Item
  173.           $game_party.lose_item(@item.id, @number_window.number)
  174.         when RPG::Weapon
  175.           $game_party.lose_weapon(@item.id, @number_window.number)
  176.         when RPG::Armor
  177.           $game_party.lose_armor(@item.id, @number_window.number)
  178.         end
  179.         # 刷新各窗口
  180.         @gold_window.refresh
  181.         @sell_window.refresh
  182.         @status_window.refresh
  183.         # 窗口状态转向卖出模式
  184.         @sell_window.active = true
  185.         @sell_window.visible = true
  186.         @status_window.visible = false
  187.       end
  188.       return
  189.     end
  190.   end
  191. end
复制代码


然后是升级,但脚本弄丢了汗,只知道是根据一个战斗升级提示脚本改的,好象是日本的范例里的升级提示上改的,但是有上面我说的bug,大家看有什么好完善的,帮忙
作者: 美兽    时间: 2007-4-13 23:22
一:所说的携带数量是针对单独的角色,还是RM默认的角色整体?
不过,不管怎样都最好提供BUG脚本直接修改省事。

二:在说什么??
作者: 亿万星辰    时间: 2007-4-13 23:23
重新写一个不就行了.......{/pz}
作者: 莫浪语    时间: 2007-4-13 23:45
以下引用美兽于2007-4-13 15:22:08的发言:

一:所说的携带数量是针对单独的角色,还是RM默认的角色整体?
不过,不管怎样都最好提供BUG脚本直接修改省事。

二:在说什么??

如果能随着升级携带数量就增加的就更好了
作者: 美兽    时间: 2007-4-14 01:03
以下引用莫浪语于2007-4-13 15:45:26的发言:


以下引用美兽于2007-4-13 15:22:08的发言:

一:所说的携带数量是针对单独的角色,还是RM默认的角色整体?
不过,不管怎样都最好提供BUG脚本直接修改省事。

二:在说什么??


如果能随着升级携带数量就增加的就更好了


我的意思就你把提供存在BUG的那个脚本,我直接改多省事。
作者: 莫浪语    时间: 2007-4-14 01:14
.....
定义角色升级的在哪个脚本里?我找找
作者: 莫浪语    时间: 2007-4-14 01:24
晕死,因为有bug,我把他删掉了....现在有相同类型的脚本么?介绍一个{/wx}
作者: 美兽    时间: 2007-4-14 01:30
以下引用莫浪语于2007-4-13 17:24:14的发言:

晕死,因为有bug,我把他删掉了....现在有相同类型的脚本么?介绍一个


存在BUG者是这个吗?
http://rpg.blue/web/htm/news489.htm
作者: 莫浪语    时间: 2007-4-14 01:50
不是,是我楼上的那个脚本,其中的bug就是比如50的箱子,如果装了50的药就满了,但我吃掉10个药后还是满的,这样的话我就越装越少了,只要使用物品,但箱子数量空间还是0
作者: 美兽    时间: 2007-4-14 02:07
以下引用莫浪语于2007-4-13 17:50:40的发言:

不是,是我楼上的那个脚本,其中的bug就是比如50的箱子,如果装了50的药就满了,但我吃掉10个药后还是满的,这样的话我就越装越少了,只要使用物品,但箱子数量空间还是0


现在的箱子是所有角色公用的,
实现的方法不是很好,要不我重写个吧,你说具体的功能,尽量详细。

作者: 莫浪语    时间: 2007-4-14 02:18
太谢谢了,就是让主角一个人拥有1个箱子,当主角1级别的时候能装10个货物(其他数字也行)
但每升一级就可以加装几个货物,而且货物在被装备后或使用后,比如10个空间装十个货物,但被吃掉或装备掉1个的话,就会又多出1个空间来,但如果空间放满物品了主角再要换下装备的话,如果没有空间的话只是会换下而不是脱下,比如换铁剑为钢剑,但如果只是脱下铁剑而空间不够会提示没有地方放,买卖的时候买1个货物就少一个空间,十个物品买完后空间没有了,但升级后空间就增加,跟负重有点象,最好可以加个扔掉的选项,据说亿万有这个,不过他太小气...{/cy}
作者: 美兽    时间: 2007-4-14 02:24
以下引用莫浪语于2007-4-13 18:18:05的发言:

太谢谢了,就是让主角一个人拥有1个箱子,当主角1级别的时候能装10个货物(其他数字也行)
但每升一级就可以加装几个货物,而且货物在被装备后或使用后,比如10个空间装十个货物,但被吃掉或装备掉1个的话,就会又多出1个空间来,但如果空间放满物品了主角再要换下装备的话,如果没有空间的话只是会换下而不是脱下,比如换铁剑为钢剑,但如果只是脱下铁剑而空间不够会提示没有地方放,买卖的时候买1个货物就少一个空间,十个物品买完后空间没有了,但升级后空间就增加,跟负重有点象,最好可以加个扔掉的选项,据说亿万有这个,不过他太小气...


其她人也可以用这个箱子吗?
箱子升级与哪个角色相关,
例如队伍存在四人,升级时依据的是哪个人的级别,
假设是一号角色阿尔西斯,当阿尔西斯离队后,箱子是否不再升级???
如果阿尔西斯离队后,回来等级初始化后,箱子是否也恢复原本初始的大小呢?

作者: 小傻瓜    时间: 2007-4-14 02:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: 莫浪语    时间: 2007-4-14 02:40
我的游戏就主角一个人,但有时候可能更换角色,你就以主角的吧。最好这个箱子的数量可以在事件变量里调
作者: 莫浪语    时间: 2007-4-14 02:43
以下引用小傻瓜于2007-4-13 18:27:18的发言:

我有建议,每个物品设置一个重量单位,每人携带的重量单位不能太多。这样现实点把。

其实是我的主角有头驴子,然后可以根据主角打的经验,让他多驮物品,要是以重量的话要多写很多东西,因为要新搞个数据还不如用数量,这个驴子可以用其他队员的数据改成驴子{/cy}
作者: gpra8764    时间: 2007-4-15 05:02
提示: 作者被禁止或删除 内容自动屏蔽




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