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

Project1

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

[已经解决] 有什么办法可以限制主角等级上限,之后能提高等级上限

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7436
在线时间
1098 小时
注册时间
2006-7-18
帖子
569
跳转到指定楼层
1
发表于 2015-2-7 15:27:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
就是设定人物初期等级上限只有10级,10级后等级封顶!之后必须转职,转职以后等级上限+10达到20。

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2015-2-7 15:28:39 | 只看该作者

点评

给的例子有点没看懂!他似乎是把当前角色情报用变量储存起来了???  发表于 2015-2-7 17:56
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2015-2-7 16:16:41 | 只看该作者
重定义 Game_Actor#max_level 方法,别超过 99 就行
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7436
在线时间
1098 小时
注册时间
2006-7-18
帖子
569
4
 楼主| 发表于 2015-2-7 16:24:06 | 只看该作者
taroxd 发表于 2015-2-7 16:16
重定义 Game_Actor#max_level 方法,别超过 99 就行

要怎么定义??

点评

和你刚刚另一个问题的重定义方式一样  发表于 2015-2-7 16:27
回复 支持 反对

使用道具 举报

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
5
发表于 2015-2-7 18:15:32 | 只看该作者
和那个帖子几乎完全一样的。

你把def end的部分换成
  1.   def max_level
  2.     return 5 if actor.id == 1
  3.     actor.max_level
  4.   end
复制代码
就是艾里克的等级上限是5。

点评

我想先自己试着写一下!有不懂的再问!  发表于 2015-2-7 19:41
actor.class应该就是职业的。  发表于 2015-2-7 19:28
似乎有点想法了!判断角色当前职业改变等级上限!和以前提的几个问题(不同人物装备武器获得能力不同)和(人物说明随故事进度改变)方式类似..  发表于 2015-2-7 19:09

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22948
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
6
发表于 2015-2-7 19:08:20 | 只看该作者
本帖最后由 tseyik 于 2015-2-7 19:12 编辑

レベル一時制限
  1. #==============================================================================
  2. # □ レベル一時制限 (for VX Ace)
  3. #------------------------------------------------------------------------------
  4. # Version : 2_20120701
  5. # by サリサ・タイクーン
  6. # http://www.tycoon812.com/rgss/
  7. #==============================================================================

  8. #==============================================================================
  9. # □ 素材スイッチ
  10. #==============================================================================
  11. $rgsslab = {} if $rgsslab == nil
  12. $rgsslab["レベル一時制限"] = true

  13. if $rgsslab["レベル一時制限"]

  14. #==============================================================================
  15. # □ カスタマイズポイント
  16. #==============================================================================
  17. module RGSSLAB end
  18. module RGSSLAB::Level_Temporary_Limit
  19.   #--------------------------------------------------------------------------
  20.   # ○ レベル一時制限時のレベルの値の色の設定
  21.   #    一時制限されている間、レベルの色を変更します。
  22.   #
  23.   #    色を変更する色番号(ウィンドウスキンに依存)を記述して下さい。
  24.   #--------------------------------------------------------------------------
  25.   COLOR = 10
  26.   #--------------------------------------------------------------------------
  27.   # ○ レベル一時制限時のレベルの描画の反映
  28.   #    trueにすると、一時制限時でもそのレベルとして描画されます。
  29.   #--------------------------------------------------------------------------
  30.   DRAW = true
  31. end

  32. # カスタマイズポイントは、ここまで

  33. #==============================================================================
  34. # □ RGSSLAB::Level_Temporary_Limit [module]
  35. #==============================================================================
  36. module RGSSLAB::Level_Temporary_Limit
  37.   #--------------------------------------------------------------------------
  38.   # ○ 素材設定用の定数定義
  39.   #--------------------------------------------------------------------------
  40.   MATERIAL_NAME = "レベル一時制限"
  41.   VERSION       = 2
  42.   RELEASE       = 20120701
  43.   #--------------------------------------------------------------------------
  44.   # ○ 操作エラー
  45.   #     error_number : エラー番号
  46.   #--------------------------------------------------------------------------
  47.   def self.operate_error(error_number)
  48.     text = "【RGSS研究所:#{MATERIAL_NAME}】"
  49.     case error_number
  50.     when 1
  51.       msgbox_p text,
  52.       "この操作を行うには、パーティ編成システム(RGSS研究所)が必要です。"
  53.     end
  54.   end
  55. end

  56. #==============================================================================
  57. # ■ Game_Actor [class]
  58. #==============================================================================
  59. class Game_Actor < Game_Battler
  60.   #--------------------------------------------------------------------------
  61.   # ● 公開インスタンス変数
  62.   #--------------------------------------------------------------------------
  63.   attr_reader   :temp_level
  64.   #--------------------------------------------------------------------------
  65.   # ● セットアップ [エイリアス]
  66.   #     actor_id : アクター ID
  67.   #--------------------------------------------------------------------------
  68.   alias level_temporary_limit_setup setup
  69.   def setup(actor_id)
  70.     @temp_level = 0
  71.     level_temporary_limit_setup(actor_id)
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 通常能力値の基本値取得 [再構築]
  75.   #     param_id : パラメータID
  76.   #--------------------------------------------------------------------------
  77.   def param_base(param_id)
  78.     n = 0
  79.     if $rgsslab["パラメータの追加"] && param_id > 7
  80.       n = param_base_parameter_append(param_id)
  81.     else
  82.       n = $rgsslab["レベル拡張"] ? gpb_rgsslab_level_extension(param_id) : self.class.params[param_id, get_use_level]
  83.     end
  84.     if $rgsslab["パラメータ構築設定"]
  85.       array = []
  86.       for t in RGSSLAB_145::ARRAY do array.push(t) if !array.include?(t) && check_array(t) end
  87.       for t in array
  88.         case t
  89.         when "陣形ボーナス"     ; n =  get_battle_lines_bonus(param_id, n) if $rgsslab["陣形ボーナス"]
  90.         when "性格補正"         ; n += party_bonus(param_id)               if $rgsslab["パーティボーナス"]
  91.         when "パーティボーナス" ; n += character_compensation(param_id)    if $rgsslab["パラメータ性格補正"]
  92.         end
  93.       end
  94.     else
  95.       n =  get_battle_lines_bonus(param_id, n) if $rgsslab["陣形ボーナス"]
  96.       n += party_bonus(param_id)               if $rgsslab["パーティボーナス"]
  97.       n += character_compensation(param_id)    if $rgsslab["パラメータ性格補正"]
  98.     end
  99.     return n
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ○ 使用レベルの取得
  103.   #--------------------------------------------------------------------------
  104.   def get_use_level
  105.     return level_temporary_limit if $rgsslab["レベル一時制限"]
  106.     return @level
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ○ レベル一時制限判定
  110.   #--------------------------------------------------------------------------
  111.   def level_temporary_limit
  112.     return @level      if @temp_level <= 0
  113.     return @temp_level if @level > @temp_level
  114.     return @level
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ○ レベル一時制限の設定
  118.   #     temp_level_value : 一時制限を行うレベルの値
  119.   #--------------------------------------------------------------------------
  120.   def temp_level=(temp_level_value)
  121.     final = get_final_level
  122.     @temp_level = [temp_level_value, final].min
  123.     refresh
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ○ 最終レベルの取得
  127.   #--------------------------------------------------------------------------
  128.   def get_final_level
  129.     return @now_maxlevel     if $rgsslab["最終レベル設定"]
  130.     return $data_actors[@actor_id].max_level
  131.   end
  132. end

  133. #==============================================================================
  134. # ■ Game_Actors [class]
  135. #==============================================================================
  136. class Game_Actors
  137.   #--------------------------------------------------------------------------
  138.   # ○ アクター全員のレベル一時制限リスト表示
  139.   #--------------------------------------------------------------------------
  140.   def temp_level
  141.     actors_temp_level = []
  142.     for i in 1...$data_actors.size
  143.       if self[i].temp_level != 0
  144.         actors_temp_level.push(self[i].temp_level)
  145.       else
  146.         actors_temp_level.push("false")
  147.       end
  148.     end
  149.     actors_name = {}
  150.     for i in 0...actors_temp_level.size
  151.       actors_name[$data_actors[i + 1].name] = actors_temp_level[i]
  152.     end
  153.     return actors_name
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ○ アクター全員のレベル一時制限
  157.   #     temp_level : レベル一時制限を行う値
  158.   #--------------------------------------------------------------------------
  159.   def temp_level=(temp_level)
  160.     for i in 1...$data_actors.size
  161.       $game_actors[i].temp_level = temp_level
  162.     end
  163.   end
  164. end

  165. #==============================================================================
  166. # ■ Game_Party [class]
  167. #==============================================================================
  168. class Game_Party < Game_Unit
  169.   #--------------------------------------------------------------------------
  170.   # ○ モジュールの設定
  171.   #--------------------------------------------------------------------------
  172.   RGSSLAB_032 = RGSSLAB::Level_Temporary_Limit
  173.   #--------------------------------------------------------------------------
  174.   # ○ パーティ全員のレベル一時制限リスト表示
  175.   #--------------------------------------------------------------------------
  176.   def temp_level
  177.     party_temp_level = []
  178.     for i in 0...self.members.size
  179.       if self.members[i].temp_level != 0
  180.         party_temp_level.push(self.members[i].temp_level)
  181.       else
  182.         party_temp_level.push("false")
  183.       end
  184.     end
  185.     party_name = {}
  186.     for i in 0...party_temp_level.size
  187.       party_name[self.members[i].name] = party_temp_level[i]
  188.     end
  189.     return party_name
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ○ パーティ全員のレベル一時制限
  193.   #     temp_level : レベル一時制限を行う値
  194.   #--------------------------------------------------------------------------
  195.   def temp_level=(temp_level)
  196.     for i in 0...self.members.size
  197.       self.members[i].temp_level = temp_level
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ○ 待機メンバー全員のレベル一時制限リスト表示
  202.   #--------------------------------------------------------------------------
  203.   def standby_temp_level
  204.     unless $rgsslab["パーティ編成システム"]
  205.       RGSSLAB_032.operate_error(1)
  206.       return
  207.     end
  208.     standby_temp_level = []
  209.     for i in 0...self.standby.size
  210.       if self.standby[i].temp_level != 0
  211.         standby_temp_level.push(self.standby[i].temp_level)
  212.       else
  213.         standby_temp_level.push("false")
  214.       end
  215.     end
  216.     standby_name = {}
  217.     for i in 0...standby_temp_level.size do standby_name[self.standby[i].name] = standby_temp_level[i] end
  218.     return standby_name
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ○ 待機メンバー全員のレベル一時制限
  222.   #     temp_level : レベル一時制限を行う値
  223.   #--------------------------------------------------------------------------
  224.   def standby_temp_level=(temp_level)
  225.     unless $rgsslab["パーティ編成システム"]
  226.       RGSSLAB_032.operate_error(1)
  227.       return
  228.     end
  229.     for i in 0...self.standby.size do self.standby[i].temp_level = temp_level end
  230.   end
  231. end

  232. #==============================================================================
  233. # ■ Window_Base [class]
  234. #==============================================================================
  235. class Window_Base < Window
  236.   #--------------------------------------------------------------------------
  237.   # ○ モジュールの設定
  238.   #--------------------------------------------------------------------------
  239.   RGSSLAB_032 = RGSSLAB::Level_Temporary_Limit
  240.   #--------------------------------------------------------------------------
  241.   # ● レベルの描画 [再構築]
  242.   #     actor : アクター
  243.   #     x     : 描画先 X 座標
  244.   #     y     : 描画先 Y 座標
  245.   #--------------------------------------------------------------------------
  246.   def draw_actor_level(actor, x, y)
  247.     change_color(system_color)
  248.     draw_text(x, y, 32, line_height, Vocab::level_a)
  249.     if actor.temp_level != 0
  250.       change_color(text_color(RGSSLAB_032::COLOR))
  251.     else
  252.       change_color(normal_color)
  253.     end
  254.     if RGSSLAB_032::DRAW and actor.temp_level != 0
  255.       if actor.level > actor.temp_level
  256.         draw_text(x + 32, y, 24, line_height, actor.temp_level, 2)
  257.       else
  258.         draw_text(x + 32, y, 24, line_height, actor.level, 2)
  259.       end
  260.     else
  261.       draw_text(x + 32, y, 24, line_height, actor.level, 2)
  262.     end
  263.   end
  264. end

  265. end
复制代码
一部分功能要以下脚本
パーティ編成システム

RUBY 代码复制
  1. #==============================================================================
  2. # □ パーティ編成システム (for VX Ace)
  3. #------------------------------------------------------------------------------
  4. # Version : 1_20120731
  5. # by サリサ・タイクーン
  6. # [url]http://www.tycoon812.com/rgss/[/url]
  7. #==============================================================================
  8.  
  9. #==============================================================================
  10. # □ 素材スイッチ
  11. #==============================================================================
  12. $rgsslab = {} if $rgsslab == nil
  13. $rgsslab["パーティ編成システム"] = true
  14.  
  15. if $rgsslab["パーティ編成システム"]
  16.  
  17. #==============================================================================
  18. # □ カスタマイズポイント
  19. #==============================================================================
  20. module RGSSLAB end
  21. module RGSSLAB::Party_Organization_System
  22.   #--------------------------------------------------------------------------
  23.   # ○ 待機メンバーのソート機能
  24.   #    trueにすると、待機メンバーの加入・離脱・パーティ編成システム画面において
  25.   #    常にID順にソートされるようになります。
  26.   #--------------------------------------------------------------------------
  27.   SORT = true
  28.   #--------------------------------------------------------------------------
  29.   # ○ 強制フラグ
  30.   #    trueにすると、待機メンバーに加える際に、パーティメンバーにいる場合は
  31.   #    強制的に待機メンバーへ移動させます。
  32.   #    (falseにすると、移動しない代わりに待機メンバーに加える事ができません)
  33.   #--------------------------------------------------------------------------
  34.   FORCE = true
  35.   #--------------------------------------------------------------------------
  36.   # ○ パーティ編成画面の一行辺りの待機メンバーの人数
  37.   #    横に並べる際に、何人目で改行するのかを設定します。
  38.   #
  39.   #    空欄(それを選ぶと外れると言う意味)の分も含まれる為
  40.   #    正確には、現在の待機メンバー+1の数で割り当てられる事に
  41.   #    ご注意下さい。
  42.   #--------------------------------------------------------------------------
  43.   COLUMN_MAX = 9
  44.   #--------------------------------------------------------------------------
  45.   # ○ 外す事のできないアクターの設定
  46.   #    IMPOSSIBLLITYに外す事のできないアクターIDを記述します。
  47.   #
  48.   #    ここに記述されたアクターIDは、編成画面において
  49.   #    選択する事ができなくなります。
  50.   #
  51.   #    ・イベントコマンドのスクリプトでの変更方法
  52.   #     $game_system.rgsslab028.impossibillity = [アクターID, …]
  53.   #--------------------------------------------------------------------------
  54.   IMPOSSIBILLITY = []
  55. end
  56.  
  57. # カスタマイズポイントは、ここまで
  58.  
  59. #==============================================================================
  60. # □ RGSSLAB::Party_Organization_System [module]
  61. #==============================================================================
  62. module RGSSLAB::Party_Organization_System
  63.   #--------------------------------------------------------------------------
  64.   # ○ 素材設定用の定数定義
  65.   #--------------------------------------------------------------------------
  66.   MATERIAL_NAME = "パーティ編成システム"
  67.   VERSION       = 1
  68.   RELEASE       = 20120731
  69. end
  70.  
  71. #==============================================================================
  72. # ■ Game_System [class]
  73. #==============================================================================
  74. class Game_System
  75.   #--------------------------------------------------------------------------
  76.   # ● 公開インスタンス変数
  77.   #--------------------------------------------------------------------------
  78.   attr_accessor :rgsslab028
  79.   #--------------------------------------------------------------------------
  80.   # ● オブジェクト初期化 [エイリアス]
  81.   #--------------------------------------------------------------------------
  82.   alias party_organization_initialize initialize
  83.   def initialize
  84.     party_organization_initialize
  85.     @rgsslab028 = RgssLab_028.new
  86.   end
  87. end
  88.  
  89. #==============================================================================
  90. # □ RgssLab_028 [class]
  91. #==============================================================================
  92. class RgssLab_028
  93.   #--------------------------------------------------------------------------
  94.   # ○ モジュールの設定
  95.   #--------------------------------------------------------------------------
  96.   RGSSLAB_028 = RGSSLAB::Party_Organization_System
  97.   #--------------------------------------------------------------------------
  98.   # ○ 公開インスタンス変数
  99.   #--------------------------------------------------------------------------
  100.   attr_accessor :impossibillity
  101.   #--------------------------------------------------------------------------
  102.   # ○ オブジェクト初期化
  103.   #--------------------------------------------------------------------------
  104.   def initialize
  105.     @impossibillity = RGSSLAB_028::IMPOSSIBILLITY
  106.   end
  107. end
  108.  
  109. #==============================================================================
  110. # ■ Game_Party [class]
  111. #==============================================================================
  112. class Game_Party < Game_Unit
  113.   #--------------------------------------------------------------------------
  114.   # ○ モジュールの設定
  115.   #--------------------------------------------------------------------------
  116.   RGSSLAB_028 = RGSSLAB::Party_Organization_System
  117.   #--------------------------------------------------------------------------
  118.   # ● 公開インスタンス変数
  119.   #--------------------------------------------------------------------------
  120.   attr_reader :standby
  121.   attr_reader :actors
  122.   #--------------------------------------------------------------------------
  123.   # ● オブジェクト初期化 [エイリアス]
  124.   #--------------------------------------------------------------------------
  125.   alias party_organization_initialize initialize
  126.   def initialize
  127.     party_organization_initialize
  128.     @standby = []
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ○ メンバーの入れ替え
  132.   #     new_members : 新しいパーティメンバーの配列
  133.   #--------------------------------------------------------------------------
  134.   def all_members=(new_members)
  135.     @actors.clear
  136.     count = 0
  137.     for i in new_members
  138.       @actors[count] = i
  139.       count += 1
  140.     end
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ○ 待機メンバーを加える
  144.   #     actor_id : アクター ID
  145.   #--------------------------------------------------------------------------
  146.   def add_actor_organization_system(actor_id)
  147.     @standby.push(actor_id) unless @standby.include?(actor_id) && @actors.include?(actor_id)
  148.     @standby.uniq!
  149.     standby_sort
  150.     $game_player.refresh
  151.     setup_pos if $rgsslab["陣形導入"] && $rgsslab["アクターバトラー実装"]
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ○ 待機メンバーを外す
  155.   #     actor_id : アクター ID
  156.   #--------------------------------------------------------------------------
  157.   def remove_actor_organization_system(actor_id)
  158.     @standby.delete(actor_id)
  159.     standby_sort
  160.     $game_player.refresh
  161.     setup_pos if $rgsslab["陣形導入"] && $rgsslab["アクターバトラー実装"]
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ○ 待機メンバーのソート
  165.   #--------------------------------------------------------------------------
  166.   def standby_sort
  167.     return unless RGSSLAB_028::SORT
  168.     @standby.sort!{|a, b|
  169.       a <=> b
  170.     }
  171.   end
  172. end
  173.  
  174. #==============================================================================
  175. # ■ Game_Interpreter [class]
  176. #==============================================================================
  177. class Game_Interpreter
  178.   #--------------------------------------------------------------------------
  179.   # ○ モジュールの設定
  180.   #--------------------------------------------------------------------------
  181.   RGSSLAB_028 = RGSSLAB::Party_Organization_System
  182.   #--------------------------------------------------------------------------
  183.   # ○ 待機メンバーを加える
  184.   #     actor_id : アクターID
  185.   #--------------------------------------------------------------------------
  186.   def add_standby(actor_id)
  187.     return if actor_id < 1
  188.     $game_party.remove_actor(actor_id) if $game_party.actors.include?(actor_id) && RGSSLAB_028::FORCE && $game_party.actors.size > 1
  189.     $game_party.add_actor_organization_system(actor_id)
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ○ 待機メンバーを外す
  193.   #     actor_id : アクターID
  194.   #     back     : パーティ加入フラグ
  195.   #--------------------------------------------------------------------------
  196.   def remove_standby(actor_id, back = true)
  197.     return if actor_id < 1
  198.     $game_party.add_actor(actor_id) if back && $game_party.standby.include?(actor_id)
  199.     $game_party.remove_actor_organization_system(actor_id)
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ○ パーティ編成システムの呼び出し
  203.   #--------------------------------------------------------------------------
  204.   def call_standby
  205.     SceneManager.call(Scene_Party_Organization_System)
  206.     Fiber.yield
  207.   end
  208. end
  209.  
  210. #==============================================================================
  211. # □ Window_Party_Organization_Help [class]
  212. #==============================================================================
  213. class Window_Party_Organization_Help < Window_Base
  214.   #--------------------------------------------------------------------------
  215.   # ● 公開インスタンス変数
  216.   #--------------------------------------------------------------------------
  217.   attr_accessor :text_index
  218.   #--------------------------------------------------------------------------
  219.   # ○ オブジェクト初期化 [オーバーライド]
  220.   #--------------------------------------------------------------------------
  221.   def initialize
  222.     super(0, 0, Graphics.width, fitting_height(1))
  223.     @text_index = 0
  224.     refresh
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ○ リフレッシュ
  228.   #--------------------------------------------------------------------------
  229.   def refresh
  230.     contents.clear
  231.     case @text_index
  232.     when 0
  233.       str  = "Cボタン:決定 Bボタン:編成終了"
  234.       rect = contents.text_size(str)
  235.     when 1
  236.       str  = "Cボタン:決定 Bボタン:キャンセル"
  237.       rect = contents.text_size(str)
  238.     end
  239.     contents.draw_text(4, 0, rect.width, line_height, str)
  240.   end
  241. end
  242.  
  243. #==============================================================================
  244. # □ Window_Party_Member
  245. #==============================================================================
  246. class Window_Party_Member < Window_Selectable
  247.   #--------------------------------------------------------------------------
  248.   # ○ オブジェクト初期化
  249.   #--------------------------------------------------------------------------
  250.   def initialize
  251.     max = $game_party.all_members.size + 1
  252.     @column_max   = max
  253.     @item_max     = max
  254.     super(0, 96, Graphics.width, 80)
  255.     self.opacity  = 0
  256.     self.index    = 0
  257.     self.z        = 101
  258.     refresh
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ○ 桁数の取得 [オーバーライド]
  262.   #--------------------------------------------------------------------------
  263.   def col_max
  264.     return @column_max
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ○ 項目数の取得 [オーバーライド]
  268.   #--------------------------------------------------------------------------
  269.   def item_max
  270.     return @item_max
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ○ リフレッシュ [オーバーライド]
  274.   #--------------------------------------------------------------------------
  275.   def refresh
  276.     contents.clear
  277.     for actor in $game_party.all_members do draw_actor(actor, actor.index) end
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ○ アクターグラフィックの描画
  281.   #     actor : アクター
  282.   #     index : 項目番号
  283.   #--------------------------------------------------------------------------
  284.   def draw_actor(actor, index)
  285.     if $game_system.rgsslab028.impossibillity.include?(actor.id)
  286.       draw_actor_graphic_impossibillity(actor, 24 + 48 * index, 40)
  287.     else
  288.       draw_actor_graphic(actor, 24 + 48 * index, 40)
  289.     end
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ○ 入れ替えのできないアクターの歩行グラフィック描画
  293.   #     actor : アクター
  294.   #     x     : 描画先 X 座標
  295.   #     y     : 描画先 Y 座標
  296.   #--------------------------------------------------------------------------
  297.   def draw_actor_graphic_impossibillity(actor, x, y)
  298.     return if actor.name == nil
  299.     bitmap = Cache.character(actor.character_name)
  300.     sign = actor.name[/^[\!\$]./]
  301.     if sign != nil and sign.include?('$')
  302.       cw = bitmap.width / 3
  303.       ch = bitmap.height / 4
  304.     else
  305.       cw = bitmap.width / 12
  306.       ch = bitmap.height / 8
  307.     end
  308.     n = actor.character_index
  309.     src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
  310.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, 64)
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ○ カーソルの更新 [オーバーライド]
  314.   #--------------------------------------------------------------------------
  315.   def update_cursor
  316.     if @index < 0
  317.       self.cursor_rect.empty
  318.     else
  319.       self.cursor_rect.set(@index * 48, 0, 48, 48)
  320.     end
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ○ 最大値の再設定
  324.   #--------------------------------------------------------------------------
  325.   def max_reset
  326.     @item_max = $game_party.members.size + 1
  327.   end
  328. end
  329.  
  330. #==============================================================================
  331. # □ Window_Standby_Member [class]
  332. #==============================================================================
  333. class Window_Standby_Member < Window_Selectable
  334.   #--------------------------------------------------------------------------
  335.   # ○ モジュールの設定
  336.   #--------------------------------------------------------------------------
  337.   RGSSLAB_028 = RGSSLAB::Party_Organization_System
  338.   #--------------------------------------------------------------------------
  339.   # ○ オブジェクト初期化 [オーバーライド]
  340.   #--------------------------------------------------------------------------
  341.   def initialize
  342.     max = $game_party.standby.size
  343.     if max == 0
  344.       max = 1
  345.     else
  346.       max += 1
  347.     end
  348.     @column_max   = RGSSLAB_028::COLUMN_MAX
  349.     @item_max     = max
  350.     super(0, 208, Graphics.width, 128)
  351.     self.opacity  = 0
  352.     self.index    = -1
  353.     self.active   = false
  354.     self.z        = 101
  355.     refresh
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ○ 桁数の取得 [オーバーライド]
  359.   #--------------------------------------------------------------------------
  360.   def col_max
  361.     return @column_max
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ○ 項目数の取得 [オーバーライド]
  365.   #--------------------------------------------------------------------------
  366.   def item_max
  367.     return @item_max
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ○ リフレッシュ [オーバーライド]
  371.   #--------------------------------------------------------------------------
  372.   def refresh
  373.     contents.clear
  374.     if @item_max > 0
  375.       self.contents = Bitmap.new(width - 32, row_max * 48)
  376.     end
  377.     count = 0
  378.     for actor in $game_party.standby
  379.       draw_actor($game_actors[actor], count)
  380.       count += 1
  381.     end
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ○ アクターグラフィックの描画
  385.   #     actor : アクター
  386.   #     index : 項目番号
  387.   #--------------------------------------------------------------------------
  388.   def draw_actor(actor, index)
  389.     draw_actor_graphic(actor, 24 + 48 * (index % @column_max), 40 + (index / @column_max * 48))
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ○ 先頭の行の取得 [オーバーライド]
  393.   #--------------------------------------------------------------------------
  394.   def top_row
  395.     return self.oy / line_height
  396.   end
  397.   #--------------------------------------------------------------------------
  398.   # ○ 先頭の行の設定 [オーバーライド]
  399.   #     row : 先頭に表示する行
  400.   #--------------------------------------------------------------------------
  401.   def top_row=(row)
  402.     row = 0 if row < 0
  403.     row = row_max - 1 if row > row_max - 1
  404.     self.oy = row * line_height
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # ○ 1 ページに表示できる行数の取得 [オーバーライド]
  408.   #--------------------------------------------------------------------------
  409.   def page_row_max
  410.     return height / line_height
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ○ カーソルの更新 [オーバーライド]
  414.   #--------------------------------------------------------------------------
  415.   def update_cursor
  416.     if @index < 0
  417.       self.cursor_rect.empty
  418.       return
  419.     end
  420.     row = @index / @column_max
  421.     if row < self.top_row
  422.       self.top_row = row
  423.     end
  424.     if row > self.top_row + (self.page_row_max - 1)
  425.       self.top_row = row - (self.page_row_max - 1)
  426.     end
  427.     x = @index % @column_max * 48
  428.     y = @index / @column_max * 48 - self.oy
  429.     self.cursor_rect.set(x, y, 48, 48)
  430.   end
  431.   #--------------------------------------------------------------------------
  432.   # ○ 最大値の再設定
  433.   #--------------------------------------------------------------------------
  434.   def max_reset
  435.     max = $game_party.standby.size
  436.     if max == 0
  437.       max = 1
  438.     else
  439.       max += 1
  440.     end
  441.     @item_max     = max
  442.   end
  443. end
  444.  
  445. #==============================================================================
  446. # □ Window_Actor_Information [class]
  447. #==============================================================================
  448. class Window_Actor_Information < Window_Base
  449.   #--------------------------------------------------------------------------
  450.   # ○ オブジェクト初期化 [オーバーライド]
  451.   #     actor : 一番最初のアクター情報
  452.   #--------------------------------------------------------------------------
  453.   def initialize(actor)
  454.     super(0, 322, Graphics.width, 78)
  455.     refresh(actor)
  456.   end
  457.   #--------------------------------------------------------------------------
  458.   # ○ リフレッシュ
  459.   #     actor : アクター情報
  460.   #--------------------------------------------------------------------------
  461.   def refresh(actor)
  462.     contents.clear
  463.     if actor != nil
  464.       actor = $game_actors[actor] if actor.is_a?(Numeric)
  465.       draw_actor_graphic(actor, 22, 48)
  466.       draw_actor_name(actor, 64, 0)
  467.       draw_actor_class(actor, 208, 0)
  468.       draw_actor_level(actor, 64, 24)
  469.       draw_actor_hp(actor, 208, 24)
  470.       draw_actor_mp(actor, 336, 24)
  471.     end
  472.   end
  473. end
  474.  
  475. #==============================================================================
  476. # □ Window_Party_Organization [class]
  477. #==============================================================================
  478. class Window_Party_Organization < Window_Base
  479.   #--------------------------------------------------------------------------
  480.   # ○ オブジェクト初期化 [オーバーライド]
  481.   #--------------------------------------------------------------------------
  482.   def initialize
  483.     super(0, 48, Graphics.width, 274)
  484.     self.opacity = 255
  485.     refresh
  486.   end
  487.   #--------------------------------------------------------------------------
  488.   # ○ リフレッシュ
  489.   #--------------------------------------------------------------------------
  490.   def refresh
  491.     contents.clear
  492.     contents.draw_text(4,   0, 155, line_height, "パーティメンバー")
  493.     contents.draw_text(4, 112, 155, line_height, "待機メンバー" )
  494.   end
  495. end
  496.  
  497. #==============================================================================
  498. # □ Scene_Party_Organization_System [class]
  499. #==============================================================================
  500. class Scene_Party_Organization_System < Scene_Base
  501.   #--------------------------------------------------------------------------
  502.   # ○ モジュールの設定
  503.   #--------------------------------------------------------------------------
  504.   RGSSLAB_028 = RGSSLAB::Party_Organization_System
  505.   #--------------------------------------------------------------------------
  506.   # ○ 開始処理
  507.   #--------------------------------------------------------------------------
  508.   def start
  509.     super
  510.     create_windows
  511.     @temporary_actor = nil
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # ○ ウィンドウの作成
  515.   #--------------------------------------------------------------------------
  516.   def create_windows
  517.     @help_window                = Window_Party_Organization_Help.new
  518.     @party_member_window        = Window_Party_Member.new
  519.     @standby_member_window      = Window_Standby_Member.new
  520.     @information_window         = Window_Actor_Information.new($game_party.all_members[0])
  521.     @organization_window        = Window_Party_Organization.new
  522.     @party_member_window.active = true
  523.   end
  524.   #--------------------------------------------------------------------------
  525.   # ○ フレーム更新
  526.   #--------------------------------------------------------------------------
  527.   def update
  528.     super
  529.     if @party_member_window.active
  530.       update_party_member_window
  531.       return
  532.     end
  533.     if @standby_member_window.active
  534.       update_standby_member_window
  535.       return
  536.     end
  537.   end
  538.   #--------------------------------------------------------------------------
  539.   # ○ フレーム更新:パーティメンバーウィンドウ
  540.   #--------------------------------------------------------------------------
  541.   def update_party_member_window
  542.     @information_window.refresh($game_party.members[@party_member_window.index])
  543.     if Input.trigger?(Input::B)
  544.       Sound.play_cancel
  545.       SceneManager.return
  546.       return
  547.     end
  548.     if Input.trigger?(Input::C)
  549.       if $game_party.members[@party_member_window.index]
  550.         if $game_system.rgsslab028.impossibillity.include?($game_party.members[@party_member_window.index].id)
  551.           Sound.play_buzzer
  552.           return
  553.         end
  554.       end
  555.       Sound.play_ok
  556.       @temporary_actor = $game_party.members[@party_member_window.index]
  557.       @party_member_window.active = false
  558.       @standby_member_window.active = true
  559.       @standby_member_window.index = 0
  560.       @help_window.text_index = 1
  561.       @help_window.refresh
  562.       return
  563.     end
  564.   end
  565.   #--------------------------------------------------------------------------
  566.   # ○ フレーム更新:待機メンバーウィンドウ
  567.   #--------------------------------------------------------------------------
  568.   def update_standby_member_window
  569.     @information_window.refresh($game_party.standby[@standby_member_window.index])
  570.     if Input.trigger?(Input::B)
  571.       Sound.play_cancel
  572.       return_party_member_process
  573.       return
  574.     end
  575.     if Input.trigger?(Input::C)
  576.       temp = $game_party.standby[@standby_member_window.index]
  577.       if @temporary_actor != nil
  578.         if $game_party.standby[@standby_member_window.index] != nil
  579.           $game_party.standby[@standby_member_window.index] = @temporary_actor.id
  580.           temp_members = []
  581.           for i in $game_party.all_members
  582.             temp_members.push(i.id)
  583.           end
  584.           temp_members[@party_member_window.index] = temp
  585.           $game_party.all_members = temp_members
  586.         else         
  587.           if $game_party.members.size == 1
  588.             Sound.play_buzzer
  589.             return
  590.           end
  591.           temp = $game_party.members[@party_member_window.index]
  592.           $game_party.remove_actor($game_party.members[@party_member_window.index].id)
  593.           $game_party.add_actor_organization_system(temp.id)
  594.         end
  595.       else
  596.         if $game_party.standby[@standby_member_window.index] == nil
  597.           Sound.play_buzzer
  598.           return
  599.         end
  600.         $game_party.add_actor($game_party.standby[@standby_member_window.index])
  601.         $game_party.remove_actor_organization_system($game_party.standby[@standby_member_window.index])
  602.       end
  603.       Sound.play_ok
  604.       $game_party.standby_sort
  605.       $game_player.refresh
  606.       @party_member_window.refresh
  607.       @standby_member_window.refresh
  608.       return_party_member_process
  609.       return
  610.     end
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ○ パーティメンバーウィンドウ復帰処理
  614.   #--------------------------------------------------------------------------
  615.   def return_party_member_process
  616.     @temporary_actor = nil
  617.     @party_member_window.active = true
  618.     @standby_member_window.active = false
  619.     @standby_member_window.index = -1
  620.     @party_member_window.max_reset
  621.     @standby_member_window.max_reset
  622.     @help_window.text_index = 0
  623.     @help_window.refresh
  624.   end
  625. end
  626.  
  627. end
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7436
在线时间
1098 小时
注册时间
2006-7-18
帖子
569
7
 楼主| 发表于 2015-2-8 15:12:08 | 只看该作者
自己写了一下意外的简单啊!
唯一的遗憾是转职后等级是1,却保留原职业等级
这部分要在转职的时候用变量来储存等级,然后赋给新职业的等级上面!
  1. class Game_Actor
  2.   #--------------------------------------------------------------
  3.   #人物等级上限受职业限制
  4.   #--------------------------------------------------------------
  5.   def max_level
  6.       return 10 if class_id==1#当角色为第1个职业时,角色等级上限为10级,以下类同
  7.       return 20 if class_id==2
  8.       return 30 if class_id==3
  9.       return 40 if class_id==4
  10.       return 50 if class_id==5
  11.       return 60 if class_id==6
  12.       actor.max_level
  13.     end
  14. end
复制代码

点评

加一行 recover_all  发表于 2015-2-9 19:21
原来如此!转职后人物血魔不满了,有什么办法转职同时补满血蓝么?虽然也可以在转职时用事件来做到  发表于 2015-2-9 18:41
把 def change_class(class_id, keep_exp = false) 中的 false 改成 true 就好了...  发表于 2015-2-9 11:54
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
发表于 2015-2-9 10:28:55 | 只看该作者
三途亚梦 发表于 2015-2-7 01:15
和那个帖子几乎完全一样的。

你把def end的部分换成就是艾里克的等级上限是5。 ...

楼主的等级上限只针对职业吧···
  1.   def max_level
  2.     return 5 if actor.class_id == 1
  3.     actor.max_level
  4.   end
复制代码
或者
  1.   def max_level
  2.     case actor.class_id
  3.    when 1,2; return 5#职业ID为1、2则最大等级为5
  4.    when 10; return 20#职业ID为10则最大等级为20
  5.   else
  6.     actor.max_level
  7.   end
复制代码
不就好了吗···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 15:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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