Project1

标题: 问两个小问题 [打印本页]

作者: kvkv97    时间: 2014-12-23 20:52
标题: 问两个小问题
1,在数据库,角色 的经验的增加度 是什么意思?
2,immortal  和  current_action 在游戏里的游戏意思?
作者: guoxiaomi    时间: 2014-12-24 14:17
本帖最后由 guoxiaomi 于 2014-12-25 20:18 编辑

第二个问题我可以回答,最近正好在研究这个。
immortal出现在这里:
  1.   #--------------------------------------------------------------------------
  2.   # ● 战斗不能判定
  3.   #--------------------------------------------------------------------------
  4.   def dead?
  5.     return (@hp == 0 and not @immortal)
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 存在判定
  9.   #--------------------------------------------------------------------------
  10.   def exist?
  11.     return (not [url=home.php?mod=space&uid=292300]@Hidden[/url] and (@hp > 0 or @immortal))
  12.   end
复制代码
所以如果设置角色或敌人的immortal为true的话,生命值为0的时候是不会附加上“战斗不能”状态的。并且以HP0目标为对象的及技能和物品不能对immortal的角色或敌人使用,相反,正常的技能、物品可以对immortal的角色或敌人使用。

current_action是class Game_BattleAction下的对象,用来记录每回合各角色的行动。下面有7个实例变量:
  1.   #--------------------------------------------------------------------------
  2.   # ● 定义实例变量
  3.   #--------------------------------------------------------------------------
  4.   attr_accessor :speed                    # 速度
  5.   attr_accessor :kind                     # 种类 (基本 / 特技 / 物品)
  6.   attr_accessor :basic                    # 基本 (攻击 / 防御 / 逃跑)
  7.   attr_accessor :skill_id                 # 特技 ID
  8.   attr_accessor :item_id                  # 物品 ID
  9.   attr_accessor :target_index             # 对像索引
  10.   attr_accessor :forcing                  # 强制标志
复制代码
speed是用来决定动作的先后;
kind(0,1,2)是决定动作类型,kind=0要设置basic的值,=1要设置skill_id的值,=2要设置item_id的值。
target_index是一个数,决定了技能或物品的目标对象。要是对象是“全体XX”或使用者就不需要设置。
forcing是强制标志,forcing为false的时候,如果技能没学习或者物品不存在,这个action是不会生效的。

至少有一个作用是在物品/技能的公共事件里加上如下代码:
  1. if rand(100) < 25
  2. @a = $scene.active_battler
  3. @action = @a.current_action
  4. @action.kind = 2
  5. @action.item_id = 34
  6. $game_temp.forcing_battler = @a
  7. end
复制代码
那么在技能/物品释放完毕后,有25%的概率立即使用34号物品,我的工程里34号物品对象是“使用者”,所以没有设置target_index
请在战斗中测试,并自行设置
RUBY 代码复制
  1. class Scene_Battle
  2.   attr_reader :active_battler
  3. end


作者: guoxiaomi    时间: 2014-12-24 14:27
顺便解答一下第一个问题好了:
代码在class Game_Actor的91~106行:
  1.   #--------------------------------------------------------------------------
  2.   # ● 计算 EXP
  3.   #--------------------------------------------------------------------------
  4.   def make_exp_list
  5.     actor = $data_actors[@actor_id]
  6.     @exp_list[1] = 0
  7.     pow_i = 2.4 + actor.exp_inflation / 100.0
  8.     for i in 2..100
  9.       if i > actor.final_level
  10.         @exp_list[i] = 0
  11.       else
  12.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  13.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  14.       end
  15.     end
  16.   end
复制代码
所以每级需要的经验是
Lv.1 = 0
Lv.n = 基本值 * [(n+3)/ 5 ]^( 2.4 + 增加值 / 100 ) 取整
可以自己算一下

作者: 573932914    时间: 2014-12-24 19:13
1.升级快慢
2.= =




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