Project1

标题: 如何设置部分人物不可升级 [打印本页]

作者: rpg549007821    时间: 2010-11-8 05:56
标题: 如何设置部分人物不可升级
本帖最后由 rpg549007821 于 2010-11-12 22:37 编辑

剧情需要
作者: Enfa    时间: 2010-11-8 07:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 夕阳武士    时间: 2010-11-8 13:08
所有怪物0经验。
作者: 企鹅达达    时间: 2010-11-8 13:54
本帖最后由 企鹅达达 于 2010-11-8 13:56 编辑

设置角色最大等级的脚本。没用过,你先试一下 =.= 出错了就找高手解决哈
  1. #===============================================================================
  2. # Set Actor's Max Level Snippet
  3. # By Jet10985 (Jet)
  4. #===============================================================================
  5. # This snippet will allow you to set each actor to have an individual maximum
  6. # level that they can reach in-game.
  7. # This script has: 1 customization options.
  8. #===============================================================================
  9. # Overwritten Methods:
  10. # None
  11. #-------------------------------------------------------------------------------
  12. # Aliased methods:
  13. # Game_Actor: make_exp_list
  14. #===============================================================================
  15. =begin
  16. How to Use:

  17. Below these instructions is the area to choose actor maximum levels. The format
  18. is stated next to the example. If you want more actors on these, add a comma
  19. then follow the format of

  20. actor id => max level
  21. =end

  22. module ActorMaxLevel

  23.   MAX_LEVELS = {
  24.   
  25.   1 => 99, # actor id => max level
  26.   2 => 20, # actor id => max level
  27.   3 => 30,
  28.   4 => 2# actor id => max level
  29.   
  30.   }
  31.   
  32.   MAX_LEVELS.default = 99 # The max level for any undefined actor.
  33.   
  34. end

  35. #===============================================================================
  36. # DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
  37. #===============================================================================
  38. class Game_Actor
  39.   
  40.   include ActorMaxLevel
  41.   
  42.   alias jet8888_make_exp_list make_exp_list
  43.   def make_exp_list
  44.     jet8888_make_exp_list
  45.     if @exp_list[MAX_LEVELS[@actor_id] + 1] != 0
  46.       @exp_list[MAX_LEVELS[@actor_id] + 1] = 0 if MAX_LEVELS[@actor_id] != nil
  47.     end
  48.   end
  49. end

  50. unless $engine_scripts.nil?
  51.   JetEngine.active("Set Actor Max Level", 1.1)
  52. end
复制代码

作者: 无心孤云    时间: 2010-11-8 17:43
用的着那么麻烦么?
在数据库设置人物最大等级为X
然后该人物的出场等级也是X。。。
如此。OK
你想要谁不能升级就谁不能升级了
作者: cnchen0708    时间: 2010-11-8 18:37
我只知道怎么限制全队最高等级...
脚本Game_Actor,把第520行的
  1. def change_exp(exp, show)
  2.     last_level = @level
  3.     last_skills = skills
  4.     @exp = [[exp, 9999999].min, 0].max
  5.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  6.       level_up
  7.     end
  8.     while @exp < @exp_list[@level]
  9.       level_down
  10.     end
  11.     @hp = [@hp, maxhp].min
  12.     @mp = [@mp, maxmp].min
  13.     if show and @level > last_level
  14.       display_level_up(skills - last_skills)
  15.     end
  16.   end
复制代码
改成
  1. def change_exp(exp, show)
  2.     last_level = @level
  3.     last_skills = skills
  4.     @exp = [[exp, 9999999].min, 0].max
  5.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  6.       if @level < 50

  7.   level_up

  8. else

  9.   break

  10. end

  11.     end
  12.     while @exp < @exp_list[@level]
  13.       level_down
  14.     end
  15.     @hp = [@hp, maxhp].min
  16.     @mp = [@mp, maxmp].min
  17.     if show and @level > last_level
  18.       display_level_up(skills - last_skills)
  19.     end
  20.   end
复制代码
if @level < 50就是最高50级,其他自己改就可以了
作者: 冰舞蝶恋    时间: 2010-11-8 18:53
不可升级的话,直接并行公用事件,XXX角色等级减99,就好了,(并行的事件是会自动循环的)
作者: 笨鸟の先飞    时间: 2010-11-8 20:56
把他的升级EXP调成N多~~N多----
作者: 38571240    时间: 2010-11-8 21:00
本帖最后由 38571240 于 2010-11-8 21:02 编辑

LZ可以用6楼的做法,稍作修改,将
  1. if @level < 50
  2.     level_up
  3. else
  4.     break
  5. end
复制代码
这个地方改为:
  1. if @level >= 50&&@class_id == 10#10号职业的等级上限为50
  2.          break
  3.       else
  4.          level_up
  5.       end
复制代码
如此,为某角色设置10号职业时,此角色的最高等级为50,依次类推
如果还想设置[有最高等级上限的多个其他职业],就改为
[if (@level >= 等级上限A&&@class_id == 等级限制A的职业ID)||(@level >= 等级上限B&&@class_id == 等级上限B的职业ID)....]
只要在判断条件后不断加上||(@level >= 等级上限N&&@class_id == 等级上限N的职业ID)即可
作者: 夕阳武士    时间: 2010-11-8 22:14
我觉得还是我的方法最好~都没有怪物可以加你的经验上哪里升级呢?
作者: phunmung5173    时间: 2010-11-8 23:05
把你不让他升级的任务放初始等级99,他怎么升?
作者: thomaskkkk    时间: 2010-11-8 23:25
lz想要的效果,應該是從lv1到某個lv因劇情需要停下來,

完成劇情後,那角色還是會升等的那種

可以設定多個一樣的角色之後用變數…當a的level是n時,b的level也是n

代入之後,那個b是固定等級,劇情完成再回到a…是這樣嗎
作者: 38571240    时间: 2010-11-9 13:00
本帖最后由 38571240 于 2010-11-9 13:09 编辑

如果LZ定义部分人物从加入队伍或开始游戏起就不可升级,请结合6L+9L的做法,将等级上限的部分判断去掉,如:
  1. if class_id == 10
  2.          break
  3. else
  4.          level_up
  5. end
复制代码
这样无论人物设置多少初始等级,只要是给他10号职业(可以自行设定if class_id == 职业ID)都不会升级了,当然,你可以复制职业,这样想解除升级限制时,就悄悄地转成复制的职业,这样显示出的职业属性技能都不会变,而可以继续升级。
确切地说10号职业只是得不到经验了,如果有此人出入队伍的情况,直接用事件分配和主角对应的等级就可以了。

本来不用加以说明,不过如果LZ用到这种情况,还是说明一下的好,问题解决的话请给6L的同学分确认。
作者: 烁灵    时间: 2010-11-9 13:16
本帖最后由 烁灵 于 2010-11-9 13:16 编辑

可不可以在def change_exp(exp, show)里直接if name =="拉尔夫"就return?
作者: 反斗奇彬    时间: 2010-11-10 11:07
回复 rpg549007821 的帖子

貌似楼主早上6点发帖,真是厉害啊,言归正传,楼主想要的是让部分人物能力升级不涨是吧,这样的话只要把那部分人物的能力在数据库里面调整一下了。
作者: 企鹅达达    时间: 2010-11-12 09:36
又找到一个脚本,让附加某状态的主角得不到经验值
  1. #===============================================================================
  2. # No Actor EXP Snippet
  3. # By Jet10985 (Jet)
  4. # Help by: OriginalWij
  5. #===============================================================================
  6. # This snippet allows you to define actors throughout the game that will not
  7. # gain exp AT ALL. Note: They can still level up trough the event command.
  8. # This script has: 1 customization option.
  9. #===============================================================================
  10. # Overwritten Methods:
  11. # None
  12. #-------------------------------------------------------------------------------
  13. # Aliased methods:
  14. # Game_Actor: change_exp
  15. # Game_System: initialize
  16. #===============================================================================
  17. =begin

  18. Adding Actors:
  19. To add Actors to the list of actors that don't gain exp use:

  20. no_exp_gain(actor)

  21. where actor is the id of the actor you don't want gaining exp.

  22. Removing Actors:
  23. To allow an actor to gain exp again, use:

  24. yes_exp_gain(actor)

  25. where actor is the id of the actor you want to gain exp again.
  26. =end

  27. module NoActorEXP
  28.   
  29.   # These are actors that will not gain exp by default. They
  30.   # can be removed from here by using the yes_exp_gain(actor)
  31.   NO_ACTOR_EXP = [6, 7, 8]
  32.   
  33.   NO_EXP_STATE = 17 # A state that will prevent exp gain until cured.
  34.                      
  35. end

  36. #===============================================================================
  37. # DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
  38. #===============================================================================
  39. class Game_Actor
  40.   
  41.   include NoActorEXP
  42.   
  43.   alias jet1999_change_exp change_exp unless $@
  44.   def change_exp(exp, show)
  45.     if NO_ACTOR_EXP != nil
  46.       jet1999_change_exp(exp, show) unless $game_system.no_exp_actors.include?(@actor_id) || @states.include?(NO_EXP_STATE)
  47.     end
  48.   end
  49. end

  50. class Game_System
  51.   
  52.   include NoActorEXP
  53.   
  54.   attr_accessor :no_exp_actors
  55.   
  56.   alias jet1092_initialize initialize unless $@
  57.   def initialize
  58.     jet1092_initialize
  59.     @no_exp_actors = NO_ACTOR_EXP.clone
  60.   end
  61. end

  62. class Game_Interpreter
  63.   
  64.   include NoActorEXP
  65.   
  66.   def no_exp_gain(actor)
  67.     $game_system.no_exp_actors.push(actor) unless $game_system.no_exp_actors.include?(actor)
  68.   end
  69.   
  70.   def yes_exp_gain(actor)
  71.     $game_system.no_exp_actors.delete(actor) if $game_system.no_exp_actors.include?(actor)
  72.   end
  73. end

  74. unless $engine_scripts.nil?
  75.   JetEngine.active("No Actor EXP", 1.1)
  76. end
复制代码

作者: dukesward    时间: 2010-11-12 10:31
lz你还是把情况说清楚一点吧,你看大家都靠猜测在找解决的办法,到底是起始就不能升级还是到某个特定等级后无法继续升级,差别可是很大的
作者: 椎名真冬    时间: 2010-11-12 11:31
夕阳武士 发表于 2010-11-8 22:14
我觉得还是我的方法最好~都没有怪物可以加你的经验上哪里升级呢?

- -人家只要部分人物不升级- -你这样不是全队伍都不能升级了么- -
作者: rpg549007821    时间: 2010-11-12 22:11
16楼的方法好,我立刻结贴。
作者: rpg549007821    时间: 2010-11-12 22:11
16楼的方法好,我立刻结贴。
作者: asdjkl0    时间: 2010-11-14 13:55
调最高等级




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