幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1531|回复: 7

[RMVX] [求助] 2个问题~~

[复制链接]

9

主题

22

帖子

244

积分

③业余

积分
244
发表于 2006-8-24 14:06:55 | 显示全部楼层 |阅读模式
1。如何改变增减物品的上限
rmxp中预设的上限好像是99


2。例如我要得到一个随机数,类似D&D中的D12
     变量[0001]=(1..12)即可

   但是如果我需要的随机数是10次D12的总合
   不是简单的10倍
   变量[0001]=(1..12)
   变量[0001]*=10


    小弟想到的方法只有
   变量[0001]=(1..12)
    变量[0001]+=(1..12)
     .
     .
     .
    变量[0001]+=(1..12)
    (9次)

想问下有没有简单点的表达方法?(非脚本)谢谢解答~~~ [s:2]
回复

使用道具 举报

218

主题

1万

帖子

10万

积分

⑧专业

赋予你第五自由

积分
108021
发表于 2006-8-24 14:09:59 | 显示全部楼层
要突破上限的画,只能用脚本了

第二个问题用循环.

◆循环
◇变量[0001]+随机数(1..12)

◇条件判断:变量[0002]=10
    ◇中断循环
◇判断结束

◇变量[0002]+1
◇注释:↑给循环一个递增的值

◆循环结束

第 五 自 由 -   5th  Freedom   -

回复 支持 反对

使用道具 举报

9

主题

22

帖子

244

积分

③业余

积分
244
 楼主| 发表于 2006-8-24 14:13:14 | 显示全部楼层
我指的不用脚本是第二个问题,活活
第一个问题的话是在脚本哪一行里改阿?
回复 支持 反对

使用道具 举报

218

主题

1万

帖子

10万

积分

⑧专业

赋予你第五自由

积分
108021
发表于 2006-8-24 14:16:19 | 显示全部楼层
第一个貌似不是简单修改那么简单,手头上有一个完整的脚本:
在线查看:http://tian.icworx.org/union/rgss/rgss3.txt
下载示范:http://tian.icworx.org/union/rgss/sample03.rar

第二个问题见上

第 五 自 由 -   5th  Freedom   -

回复 支持 反对

使用道具 举报

9

主题

22

帖子

244

积分

③业余

积分
244
 楼主| 发表于 2006-8-24 14:19:24 | 显示全部楼层
第二个问题明白了,去研究第一个去,谢谢总舵主~~~ [s:1]
回复 支持 反对

使用道具 举报

9

主题

22

帖子

244

积分

③业余

积分
244
 楼主| 发表于 2006-8-24 14:31:24 | 显示全部楼层
貌似下载连接无效。。。在线的那个也看不了 [s:8]
回复 支持 反对

使用道具 举报

19

主题

271

帖子

3837

积分

⑥精研

爱的橙子雪糕

积分
3837
发表于 2006-8-24 14:58:59 | 显示全部楼层
10次 的最终效果就是 [12..144] ~~没必要循环~~结果都是一样的~~
回复 支持 反对

使用道具 举报

218

主题

1万

帖子

10万

积分

⑧专业

赋予你第五自由

积分
108021
发表于 2006-8-24 15:06:28 | 显示全部楼层
  1. #物品持有数突破
  2. #收集,修改 BY 玄天
  3. #原作者:日站(MOMOMOMO)。其版权由其原作者拥有,任何人不得非法使用。
  4. #最大物品持有数
  5. ITEM_MAXIMUM = 9999
  6. #所持数の桁
  7. ITEM_MAXIMUM_PLACE= 4
  8. #========================下面基本不用修改==============================
  9. #==============================================================================
  10. # ■ Game_Party
  11. #------------------------------------------------------------------------------
  12. #  パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク
  13. # ラスのインスタンスは $game_party で参照されます。
  14. #==============================================================================
  15. class Game_Party
  16.   #--------------------------------------------------------------------------
  17.   # ● アイテムの増加 (減少)
  18.   #     item_id : アイテム ID
  19.   #     n       : 個数
  20.   #--------------------------------------------------------------------------
  21.   def gain_item(item_id, n)
  22.     # ハッシュの個数データを更新
  23.     if item_id > 0
  24.       @items[item_id] = [[item_number(item_id) + n, 0].max, ITEM_MAXIMUM].min
  25.     end
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 武器の増加 (減少)
  29.   #     weapon_id : 武器 ID
  30.   #     n         : 個数
  31.   #--------------------------------------------------------------------------
  32.   def gain_weapon(weapon_id, n)
  33.     # ハッシュの個数データを更新
  34.     if weapon_id > 0
  35.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, ITEM_MAXIMUM].min
  36.     end
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 防具の増加 (減少)
  40.   #     armor_id : 防具 ID
  41.   #     n        : 個数
  42.   #--------------------------------------------------------------------------
  43.   def gain_armor(armor_id, n)
  44.     # ハッシュの個数データを更新
  45.     if armor_id > 0
  46.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, ITEM_MAXIMUM].min
  47.     end
  48.   end  
  49. end
  50. #-------------------------------------------------------------------------------
  51. #==============================================================================
  52. # ■ Window_Item
  53. #------------------------------------------------------------------------------
  54. #  アイテム画面、バトル画面で、所持アイテムの一覧を表示するウィンドウです。
  55. #==============================================================================
  56. class Window_Item < Window_Selectable
  57.   #--------------------------------------------------------------------------
  58.   # ● 項目の描画
  59.   #     index : 項目番号
  60.   #--------------------------------------------------------------------------
  61.   def draw_item(index)
  62.     item = @data[index]
  63.     case item
  64.     when RPG::Item
  65.       number = $game_party.item_number(item.id)
  66.     when RPG::Weapon
  67.       number = $game_party.weapon_number(item.id)
  68.     when RPG::Armor
  69.       number = $game_party.armor_number(item.id)
  70.     end
  71.     if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id)
  72.       self.contents.font.color = normal_color
  73.     else
  74.       self.contents.font.color = disabled_color
  75.     end
  76.     x = 4 + index % 2 * (288 + 32)
  77.     y = index / 2 * 32
  78.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  79.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  80.     bitmap = RPG::Cache.icon(item.icon_name)
  81.     opacity = self.contents.font.color == normal_color ? 255 : 128
  82.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  83.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  84.     width = 24 + (ITEM_MAXIMUM_PLACE - 2) * 12
  85.     x_i = x - width + 24
  86.     self.contents.draw_text(x_i + 240, y, 16, 32, ":", 1)
  87.     self.contents.draw_text(x_i + 256, y, width, 32, number.to_s, 2)
  88.   end
  89. end
  90. #-------------------------------------------------------------------------------
  91. #==============================================================================
  92. # ■ Window_ShopNumber
  93. #------------------------------------------------------------------------------
  94. #  ショップ画面で、購入または売却するアイテムの個数を入力するウィンドウです。
  95. #==============================================================================
  96. class Window_ShopNumber < Window_Base
  97.   #--------------------------------------------------------------------------
  98.   # ● リフレッシュ
  99.   #--------------------------------------------------------------------------
  100.   def refresh
  101.     self.contents.clear
  102.     draw_item_name(@item, 4, 96)
  103.     self.contents.font.color = normal_color
  104.     width = 24 + (ITEM_MAXIMUM_PLACE - 2) * 12
  105.     widths = 32 + (ITEM_MAXIMUM_PLACE - 2) * 12
  106.     self.contents.draw_text(272 - width + 24, 96, 32, 32, "×")
  107.     self.contents.draw_text(308 - width + 24, 96, width, 32, @number.to_s, 2)
  108.     self.cursor_rect.set(304 - width + 24, 96, widths, 32)
  109. #    self.cursor_rect.set(304, 96, 32, 32)
  110.     # 合計価格と通貨単位を描画
  111.     domination = $data_system.words.gold
  112.     cx = contents.text_size(domination).width
  113.     total_price = @price * @number
  114.     self.contents.font.color = normal_color
  115.     self.contents.draw_text(4, 160, 328-cx-2, 32, total_price.to_s, 2)
  116.     self.contents.font.color = system_color
  117.     self.contents.draw_text(332-cx, 160, cx, 32, domination, 2)
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● フレーム更新
  121.   #--------------------------------------------------------------------------
  122.   def update
  123.     super
  124.     if self.active
  125.       # カーソル右 (+1)
  126.       if Input.repeat?(Input::RIGHT) and @number < @max
  127.         $game_system.se_play($data_system.cursor_se)
  128.         @number += 1
  129.         refresh
  130.       end
  131.       # カーソル左 (-1)
  132.       if Input.repeat?(Input::LEFT) and @number > 1
  133.         $game_system.se_play($data_system.cursor_se)
  134.         @number -= 1
  135.         refresh
  136.       end
  137.       # カーソル上 (+10)
  138.       if Input.repeat?(Input::UP) and @number < @max
  139.         $game_system.se_play($data_system.cursor_se)
  140.         @number = [@number + 10, @max].min
  141.         refresh
  142.       end
  143.       # カーソル下 (-10)
  144.       if Input.repeat?(Input::DOWN) and @number > 1
  145.         $game_system.se_play($data_system.cursor_se)
  146.         @number = [@number - 10, 1].max
  147.         refresh
  148.       end
  149.       # R(最大数)
  150.       if Input.repeat?(Input::R) and @number < @max
  151.         $game_system.se_play($data_system.cursor_se)
  152.         @number = @max
  153.         refresh
  154.       end
  155.       # L(1)
  156.       if Input.repeat?(Input::L) and @number > 1
  157.         $game_system.se_play($data_system.cursor_se)
  158.         @number = 1
  159.         refresh
  160.       end
  161.     end
  162.   end
  163. end
  164.   
  165. #-------------------------------------------------------------------------------
  166. #==============================================================================
  167. # ■ Window_ShopStatus
  168. #------------------------------------------------------------------------------
  169. #  ショップ画面で、アイテムの所持数やアクターの装備を表示するウィンドウです。
  170. #==============================================================================
  171. class Window_ShopStatus < Window_Base
  172.   #--------------------------------------------------------------------------
  173.   # ● リフレッシュ
  174.   #--------------------------------------------------------------------------
  175.   def refresh
  176.     self.contents.clear
  177.     if @item == nil
  178.       return
  179.     end
  180.     case @item
  181.     when RPG::Item
  182.       number = $game_party.item_number(@item.id)
  183.     when RPG::Weapon
  184.       number = $game_party.weapon_number(@item.id)
  185.     when RPG::Armor
  186.       number = $game_party.armor_number(@item.id)
  187.     end
  188.     self.contents.font.color = system_color
  189.     self.contents.draw_text(4, 0, 200, 32, "持っている数")
  190.     self.contents.font.color = normal_color
  191.     width = 36 + (ITEM_MAXIMUM_PLACE - 2) * 16
  192.     self.contents.draw_text(204 - width + 36, 0, width, 32, number.to_s, 2)
  193.     if @item.is_a?(RPG::Item)
  194.       return
  195.     end
  196.     # 装備品追加情報
  197.     for i in 0...$game_party.actors.size
  198.       # アクターを取得
  199.       actor = $game_party.actors[i]
  200.       # 装備可能なら通常文字色に、不可能なら無効文字色に設定
  201.       if actor.equippable?(@item)
  202.         self.contents.font.color = normal_color
  203.       else
  204.         self.contents.font.color = disabled_color
  205.       end
  206.       # アクターの名前を描画
  207.       self.contents.draw_text(4, 64 + 64 * i, 120, 32, actor.name)
  208.       # 現在の装備品を取得
  209.       if @item.is_a?(RPG::Weapon)
  210.         item1 = $data_weapons[actor.weapon_id]
  211.       elsif @item.kind == 0
  212.         item1 = $data_armors[actor.armor1_id]
  213.       elsif @item.kind == 1
  214.         item1 = $data_armors[actor.armor2_id]
  215.       elsif @item.kind == 2
  216.         item1 = $data_armors[actor.armor3_id]
  217.       else
  218.         item1 = $data_armors[actor.armor4_id]
  219.       end
  220.       # 装備可能な場合
  221.       if actor.equippable?(@item)
  222.         # 武器の場合
  223.         if @item.is_a?(RPG::Weapon)
  224.           atk1 = item1 != nil ? item1.atk : 0
  225.           atk2 = @item != nil ? @item.atk : 0
  226.           change = atk2 - atk1
  227.         end
  228.         # 防具の場合
  229.         if @item.is_a?(RPG::Armor)
  230.           pdef1 = item1 != nil ? item1.pdef : 0
  231.           mdef1 = item1 != nil ? item1.mdef : 0
  232.           pdef2 = @item != nil ? @item.pdef : 0
  233.           mdef2 = @item != nil ? @item.mdef : 0
  234.           change = pdef2 - pdef1 + mdef2 - mdef1
  235.         end
  236.         # パラメータの変化値を描画
  237.         self.contents.draw_text(124, 64 + 64 * i, 112, 32,
  238.           sprintf("%+d", change), 2)
  239.       end
  240.       # アイテムを描画
  241.       if item1 != nil
  242.         x = 4
  243.         y = 64 + 64 * i + 32
  244.         bitmap = RPG::Cache.icon(item1.icon_name)
  245.         opacity = self.contents.font.color == normal_color ? 255 : 128
  246.         self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  247.         self.contents.draw_text(x + 28, y, 212, 32, item1.name)
  248.       end
  249.     end
  250.   end
  251. end
  252. #-------------------------------------------------------------------------------
  253. #==============================================================================
  254. # ■ Window_ShopSell
  255. #------------------------------------------------------------------------------
  256. #  ショップ画面で、売却のために所持アイテムの一覧を表示するウィンドウです。
  257. #==============================================================================
  258. class Window_ShopSell < Window_Selectable
  259.   #--------------------------------------------------------------------------
  260.   # ● 項目の描画
  261.   #     index : 項目番号
  262.   #--------------------------------------------------------------------------
  263.   def draw_item(index)
  264.     item = @data[index]
  265.     case item
  266.     when RPG::Item
  267.       number = $game_party.item_number(item.id)
  268.     when RPG::Weapon
  269.       number = $game_party.weapon_number(item.id)
  270.     when RPG::Armor
  271.       number = $game_party.armor_number(item.id)
  272.     end
  273.     # 売却可能なら通常文字色に、そうでないなら無効文字色に設定
  274.     if item.price > 0
  275.       self.contents.font.color = normal_color
  276.     else
  277.       self.contents.font.color = disabled_color
  278.     end
  279.     x = 4 + index % 2 * (288 + 32)
  280.     y = index / 2 * 32
  281.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  282.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  283.     bitmap = RPG::Cache.icon(item.icon_name)
  284.     opacity = self.contents.font.color == normal_color ? 255 : 128
  285.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  286.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  287.     width = 24 + (ITEM_MAXIMUM_PLACE - 2) * 12
  288.     x_i = x - width + 24
  289.     self.contents.draw_text(x_i + 240, y, 16, 32, ":", 1)
  290.     self.contents.draw_text(x_i + 256, y, width, 32, number.to_s, 2)
  291.   end
  292. end
  293. #-------------------------------------------------------------------------------
  294. #==============================================================================
  295. # ■ Scene_Shop
  296. #------------------------------------------------------------------------------
  297. #  ショップ画面の処理を行うクラスです。
  298. #==============================================================================
  299. class Scene_Shop
  300.   #--------------------------------------------------------------------------
  301.   # ● フレーム更新 (購入ウィンドウがアクティブの場合)
  302.   #--------------------------------------------------------------------------
  303.   def update_buy
  304.     # ステータスウィンドウのアイテムを設定
  305.     @status_window.item = @buy_window.item
  306.     # B ボタンが押された場合
  307.     if Input.trigger?(Input::B)
  308.       # キャンセル SE を演奏
  309.       $game_system.se_play($data_system.cancel_se)
  310.       # ウィンドウの状態を初期モードへ
  311.       @command_window.active = true
  312.       @dummy_window.visible = true
  313.       @buy_window.active = false
  314.       @buy_window.visible = false
  315.       @status_window.visible = false
  316.       @status_window.item = nil
  317.       # ヘルプテキストを消去
  318.       @help_window.set_text("")
  319.       return
  320.     end
  321.     # C ボタンが押された場合
  322.     if Input.trigger?(Input::C)
  323.       # アイテムを取得
  324.       @item = @buy_window.item
  325.       # アイテムが無効の場合、または価格が所持金より上の場合
  326.       if @item == nil or @item.price > $game_party.gold
  327.         # ブザー SE を演奏
  328.         $game_system.se_play($data_system.buzzer_se)
  329.         return
  330.       end
  331.       # アイテムの所持数を取得
  332.       case @item
  333.       when RPG::Item
  334.         number = $game_party.item_number(@item.id)
  335.       when RPG::Weapon
  336.         number = $game_party.weapon_number(@item.id)
  337.       when RPG::Armor
  338.         number = $game_party.armor_number(@item.id)
  339.       end
  340.       # すでに 99 個所持している場合
  341.       if number == ITEM_MAXIMUM
  342.         # ブザー SE を演奏
  343.         $game_system.se_play($data_system.buzzer_se)
  344.         return
  345.       end
  346.       # 決定 SE を演奏
  347.       $game_system.se_play($data_system.decision_se)
  348.       # 最大購入可能個数を計算
  349.       max = @item.price == 0 ? ITEM_MAXIMUM : $game_party.gold / @item.price
  350.       max = [max, ITEM_MAXIMUM - number].min
  351.       # ウィンドウの状態を個数入力モードへ
  352.       @buy_window.active = false
  353.       @buy_window.visible = false
  354.       @number_window.set(@item, max, @item.price)
  355.       @number_window.active = true
  356.       @number_window.visible = true
  357.     end
  358.   end
  359. end
复制代码

楼上万年潜水出现了..

第 五 自 由 -   5th  Freedom   -

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-29 19:39 , Processed in 0.012652 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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