Project1

标题: 主角(血量*等級)等於攻擊力的設置方式 [打印本页]

作者: a1231171    时间: 2014-11-29 16:31
标题: 主角(血量*等級)等於攻擊力的設置方式
本帖最后由 a1231171 于 2014-11-29 16:34 编辑

想請教:


1.

如何使用腳本的方式敘述下列事件:

對主角編號5之後的所有角色,進行以下事件:

變數009代入主角i的HP
變數010代入主角i的等級
變數009*變數010
主角i的攻擊力設定為變數009


完成   '主角i(血量*等級)等於攻擊力'  的效果

我想用來安插在計算傷害之類的地方,每次受到攻擊降低HP都會重新計算攻擊力


2.

n = $game_variables[13]
if $game_actors[n].state?(19)
變數009代入角色n的hp
end

這句直接用$game_actors[n].hp好像不能
請問應該怎麼寫?



--
超嫩小新手,如果爬不夠詳細請多包涵,btw有腳本相關教學可以推薦的會粉感動
作者: taroxd    时间: 2014-11-29 17:30
楼主需要注意,角色的属性是不能设置的。因为所有角色的属性都要通过各种因素计算得出(比如装备、状态等等)。

因此,我们可以直接修改计算过程。

因为我不用VX,以下所有代码都仅仅是思路,或者伪代码。

1. 执行一次,永久有效。
RUBY 代码复制
  1. 5.upto(最大的角色ID) do |i|
  2.   actor = $game_actors[i]
  3.   next unless actor
  4.   def actor.atk
  5.     hp * level
  6.   end
  7. end


2.
RUBY 代码复制
  1. actor = $game_actors[n]
  2. def actor.hp
  3.   $game_variables[9]
  4. end if actor

作者: taroxd    时间: 2014-12-2 17:29
@正太君 就是这个意思喽~

RUBY 代码复制
  1. class Game_Actor
  2.  
  3.   attr_accessor :atk_is_hp_times_level
  4.  
  5.   alias atk_23333333 atk
  6.  
  7.   def atk
  8.     atk_is_hp_times_level ? hp * level : atk_23333333
  9.   end
  10.  
  11. end

作者: 正太君    时间: 2014-12-2 19:31
taroxd 发表于 2014-12-2 17:29
@正太君 就是这个意思喽~


感谢版主大人,这样写是会的呢...
我想知道的是如果按报错那样写,存档应该怎么处理...咦咦...
  1. 1.upto(4) do |i|
  2.   actor = $game_actors[i]
  3.   next unless actor
  4.   def actor.atk
  5.     hp * level
  6.   end
  7. end
复制代码

作者: taroxd    时间: 2014-12-3 12:29
正太君 发表于 2014-12-2 19:31
感谢版主大人,这样写是会的呢...
我想知道的是如果按报错那样写,存档应该怎么处理...咦咦...  ...

重定义 marshal_dump 和 marshal_load

参考 VA 中对事件解释器中 fiber 的处理方式




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