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出现在这里:
#--------------------------------------------------------------------------
# ● 战斗不能判定
#--------------------------------------------------------------------------
def dead?
return (@hp == 0 and not @immortal)
end
#--------------------------------------------------------------------------
# ● 存在判定
#--------------------------------------------------------------------------
def exist?
return (not [url=home.php?mod=space&uid=292300]@Hidden[/url] and (@hp > 0 or @immortal))
end
复制代码
所以如果设置角色或敌人的immortal为true的话,生命值为0的时候是不会附加上“战斗不能”状态的。并且以HP0目标为对象的及技能和物品不能对immortal的角色或敌人使用,相反,正常的技能、物品可以对immortal的角色或敌人使用。
current_action是class Game_BattleAction下的对象,用来记录每回合各角色的行动。下面有7个实例变量:
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_accessor :speed # 速度
attr_accessor :kind # 种类 (基本 / 特技 / 物品)
attr_accessor :basic # 基本 (攻击 / 防御 / 逃跑)
attr_accessor :skill_id # 特技 ID
attr_accessor :item_id # 物品 ID
attr_accessor :target_index # 对像索引
attr_accessor :forcing # 强制标志
复制代码
speed是用来决定动作的先后;
kind(0,1,2)是决定动作类型,kind=0要设置basic的值,=1要设置skill_id的值,=2要设置item_id的值。
target_index是一个数,决定了技能或物品的目标对象。要是对象是“全体XX”或使用者就不需要设置。
forcing是强制标志,forcing为false的时候,如果技能没学习或者物品不存在,这个action是不会生效的。
至少有一个作用是在物品/技能的公共事件里加上如下代码:
if rand(100) < 25
@a = $scene.active_battler
@action = @a.current_action
@action.kind = 2
@action.item_id = 34
$game_temp.forcing_battler = @a
end
复制代码
那么在技能/物品释放完毕后,有25%的概率立即使用34号物品,我的工程里34号物品对象是“使用者”,所以没有设置target_index
请在战斗中测试,并自行设置
RUBY 代码
复制
class
Scene_Battle
attr_reader
:active_battler
end
class
Scene_Battle
attr_reader
:active_battler
end
作者:
guoxiaomi
时间:
2014-12-24 14:27
顺便解答一下第一个问题好了:
代码在class Game_Actor的91~106行:
#--------------------------------------------------------------------------
# ● 计算 EXP
#--------------------------------------------------------------------------
def make_exp_list
actor = $data_actors[@actor_id]
@exp_list[1] = 0
pow_i = 2.4 + actor.exp_inflation / 100.0
for i in 2..100
if i > actor.final_level
@exp_list[i] = 0
else
n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
@exp_list[i] = @exp_list[i-1] + Integer(n)
end
end
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