Project1

标题: 在装备栏中如何添加一条新的属性? [打印本页]

作者: s736434287    时间: 2015-2-28 11:08
标题: 在装备栏中如何添加一条新的属性?
如何在装备栏中添加一条新的属性?如  可以加血HP 或SP的

QQ截图20150228103813.png (38.05 KB, 下载次数: 10)

QQ截图20150228103813.png

作者: s736434287    时间: 2015-2-28 11:08
{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}{:4_113:}
作者: 邪月长啸    时间: 2015-2-28 11:43
本帖最后由 邪月长啸 于 2015-2-28 13:27 编辑

可以用+状态的办法实现
新建一个HaxHP+120%,定量为0的状态
然后让该防具的自动状态为该状态即可

=======================================
脚本范例

绿色套装系统.rar (182.44 KB, 下载次数: 59)

===============第三次补充===================
要把脚本对照格式写好,至于需要神马属性可以看说明改动
module K_EQUIP
      #17是 装备属性  
      # [0,0,0,0,1]是套装位置 有的为 0 没有的为1 顺序依次是 武器 盾 盔 甲 饰品   
      # 后面的 [0,500],[1,500] 0和1为附加属性   
      # 0-最大生命 1-最大魔法值 2-力量 3- 灵巧 4-速度 5-魔力
      # 500 是增加量
KE  = {17  => [[0,0,0,0,1] , [0,500],[1,500]] , 18  => [[0,1,1,1,0], [2,100],[3,100],[5,100]],
19  => [[0,1,1,1,0], [2,100],[3,100],[5,100]],20  => [[0,0,0,0,0],[0,100],[1,200], [2,50],[3,20],[4,40],[5,30]]}
#装备套装提示音效
ON  = "Audio/Se/055-Right01"
#卸下套装提示音效
OFF = "Audio/Se/058-Wrong02"
  
  #UP =
  end


然后要在数据库新建对应的套装属性


建立新的套装防具和武器



剩下的就是穿上就可以了
没穿套装前


装备套装后的属性


其实这个脚本还是很容易设置的
作者: s736434287    时间: 2015-2-28 11:55
邪月长啸 发表于 2015-2-28 11:43
可以用+状态的办法实现
新建一个HaxHP+120%,定量为0的状态
然后让该防具的自动状态为该状态即可 ...

这个我知道,但是我想添加的是固定量。  顺便问下,定量有什么作用吗?  是用于优先显示的吗?
作者: s736434287    时间: 2015-2-28 11:56
大神 快来             是要修改脚本吗
作者: s736434287    时间: 2015-2-28 12:47
邪月长啸 发表于 2015-2-28 11:43
可以用+状态的办法实现
新建一个HaxHP+120%,定量为0的状态
然后让该防具的自动状态为该状态即可

非常感谢
作者: RyanBern    时间: 2015-2-28 13:35
本帖最后由 RyanBern 于 2015-2-28 13:44 编辑

需要脚本实现此功能。此脚本已测试,可能会造成脚本冲突。
为防具增添【MAXHP+】这一属性,用法为在防具的说明处添加%hp[100],位置随便,这样防具就会增加MAXHP100,可以设置为负数。
RUBY 代码复制
  1. module RPG
  2.   class Armor
  3.     Regex_Hp = /%hp\[(\d+)\]/
  4.     unless method_defined? :rb_description_20150228
  5.       alias rb_description_20150228 description
  6.       def description
  7.         return rb_description_20150228.gsub(Regex_Hp, "")
  8.       end
  9.     end
  10.     def hp_plus
  11.       Regex_Hp =~ @description
  12.       return $1.to_i
  13.     end
  14.   end
  15. end
  16. class Game_Actor
  17.   def base_maxhp
  18.     n = $data_actors[@actor_id].parameters[0, @level]
  19.     armor1 = $data_armors[@armor1_id]
  20.     armor2 = $data_armors[@armor2_id]
  21.     armor3 = $data_armors[@armor3_id]
  22.     armor4 = $data_armors[@armor4_id]
  23.     n += armor1 != nil ? armor1.hp_plus : 0
  24.     n += armor2 != nil ? armor2.hp_plus : 0
  25.     n += armor3 != nil ? armor3.hp_plus : 0
  26.     n += armor4 != nil ? armor4.hp_plus : 0
  27.     return [[n, 1].max, 999999].min
  28.   end
  29.   def hp
  30.     @hp = [@hp, maxhp].min
  31.     @hp
  32.   end
  33. end

作者: s736434287    时间: 2015-2-28 13:45
RyanBern 发表于 2015-2-28 13:35
需要脚本实现此功能。此脚本已测试,可能会造成脚本冲突。
为防具增添【MAXHP+】这一属性,用法为在防具的 ...

谢谢哦,能继续请教下吗?  如何修改最大的属性上限。    如 HP 99999    力量555555这些
作者: s736434287    时间: 2015-2-28 13:51
RyanBern 发表于 2015-2-28 13:35
需要脚本实现此功能。此脚本已测试,可能会造成脚本冲突。
为防具增添【MAXHP+】这一属性,用法为在防具的 ...

谢谢哦!!!!!!!!!!!!!!!!!
作者: s736434287    时间: 2015-2-28 13:53
@myownroc  决解了,   
作者: 邪月长啸    时间: 2015-2-28 17:57
s736434287 发表于 2015-2-28 13:53
@myownroc  决解了,
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/ ◆ 限界突破 - KGC_LimitBreak ◆
  3. #_/ ◇ Last update : 2008/01/10 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/ 各種設定値の上限を変更します。
  6. #_/============================================================================
  7. #_/ なるべく [Scene_Debug] のすぐ下に導入してください。
  8. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  9. #==============================================================================
  10. # ★ カスタマイズ項目 ★
  11. #==============================================================================

  12. module KGC
  13. module LimitBreak
  14. # ◆能力値算出方式
  15. # 0..データベース通り。
  16. # (100以降は計算式として ACTOR_LV100_CALC を使用)
  17. #
  18. # 1..データベースを用いた2次関数。
  19. # a:レベル1の値 b:レベル2の値 c:レベル3の値 x:現レベル
  20. # として、
  21. # ax^2 + bx + c
  22. # を用いて能力値を算出。
  23. #
  24. # 2..データベースを用いた1次関数。
  25. # b:レベル2の値 c:レベル3の値 x:現レベル
  26. # として、
  27. # bx + c
  28. # を用いて能力値を算出。
  29. # (レベル2,3の値を使うのは、2次関数方式との使い分けを楽にするため)
  30. CALC_PARAMETER_METHOD = 0

  31. # ◆レベル 100 以降の能力値計算式
  32. # (CALC_PARAMETER_METHOD が 0 のときに使用)
  33. # 【lv..現レベル p[x]..レベル x の能力値】
  34. # この計算結果をレベル 99 の能力値に加算。
  35. ACTOR_LV100_CALC = "(p[99] - p[98]) * (lv - 99)"

  36. # ◆アクターのレベル上限
  37. # アクターID順に配列に格納(最初は nil)
  38. ACTOR_LV_LIMIT = [nil]
  39. # ◆上限未指定アクターのレベル上限
  40. # 上限未指定(nil)のアクターはこの値を使用。
  41. ACTOR_LV_LIMIT_DEFAULT = 999
  42. # ◆アクターの経験値上限
  43. ACTOR_EXP_LIMIT = 99999999999
  44. # ◆アクターのHP上限
  45. ACTOR_HP_LIMIT = 999999
  46. # ◆アクターのSP上限
  47. ACTOR_SP_LIMIT = 999999
  48. # ◆アクターの「腕力, 器用さ, 素早さ, 魔力」上限
  49. ACTOR_ETC_LIMIT = 9999

  50. # ◆敵のHP上限
  51. ENEMY_HP_LIMIT = 9999999
  52. # ◆敵のSP上限
  53. ENEMY_SP_LIMIT = 99999
  54. # ◆敵の「腕力, 器用さ, 素早さ, 魔力」上限
  55. ENEMY_ETC_LIMIT = 9999

  56. # ◆アクター能力値修正値(百分率)
  57. # アクターの能力値がデータベースの設定値の○%になる。
  58. # (上限値が高い場合に使用。データベースの値を使う場合は 100)
  59. ACTOR_MAXHP_REVISE = 100 # MAXHP
  60. ACTOR_MAXSP_REVISE = 100 # MAXSP
  61. ACTOR_STR_REVISE = 100 # 腕力
  62. ACTOR_DEX_REVISE = 100 # 器用さ
  63. ACTOR_AGI_REVISE = 100 # 素早さ
  64. ACTOR_INT_REVISE = 100 # 魔力

  65. # ◆敵能力値修正値(百分率)
  66. # 敵の能力値がデータベースの設定値の○%になる。
  67. ENEMY_MAXHP_REVISE = 100 # MAXHP
  68. ENEMY_MAXSP_REVISE = 100 # MAXSP
  69. ENEMY_STR_REVISE = 100 # 腕力
  70. ENEMY_DEX_REVISE = 100 # 器用さ
  71. ENEMY_AGI_REVISE = 100 # 素早さ
  72. ENEMY_INT_REVISE = 100 # 魔力
  73. ENEMY_ATK_REVISE = 100 # 攻撃力
  74. ENEMY_PDEF_REVISE = 100 # 物理防御
  75. ENEMY_MDEF_REVISE = 100 # 魔法防御

  76. # ◆所持金上限
  77. GOLD_LIMIT = 99999999

  78. # ◆アイテム所持数上限
  79. ITEM_LIMIT = [] # ← これは消さないこと!
  80. # この下に、アイテム所持数の上限を
  81. # ITEM_LIMIT[アイテムID] = 所持数上限
  82. # という書式で設定。
  83. # <例> アイテム 1 は 99 個所持可能
  84. ITEM_LIMIT[1] = 99

  85. # ◆武器所持数上限
  86. # 指定方法はアイテムと同じ。
  87. WEAPON_LIMIT = [] # ← これは消さないこと!
  88. # ◆防具所持数上限
  89. # 指定方法はアイテムと同じ。
  90. ARMOR_LIMIT = [] # ← これは消さないこと!

  91. # ◆アイテム所持数上限 (デフォルト)
  92. # 上限を指定しなかったアイテム、武器、防具はこの値を上限として使用。
  93. ITEM_LIMIT_DEFAULT = 99

  94. module_function
  95. #--------------------------------------------------------------------------
  96. # ○ 敵能力値直接指定
  97. # ここで、敵の最大HPなどを直接指定することができます。
  98. # データベースに入りきらない数値を指定する場合に使用してください。
  99. #--------------------------------------------------------------------------
  100. def set_enemy_status
  101. # <例> ID:10 の敵のHPを 2000000 にする場合
  102. # $data_enemies[10].maxhp = 2000000
  103. # <例> ID:16 の敵の攻撃力を 5000 にする場合
  104. # $data_enemies[16].atk = 5000
  105. end
  106. end
  107. end

  108. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  109. $imported = {} if $imported == nil
  110. $imported["LimitBreak"] = true

  111. if $game_special_elements == nil
  112. $game_special_elements = {}
  113. $data_system = load_data("Data/System.rxdata")
  114. end

  115. module KGC::LimitBreak
  116. module_function
  117. #--------------------------------------------------------------------------
  118. # ● 敵の能力補正を適用
  119. #--------------------------------------------------------------------------
  120. def revise_enemy_parameters
  121. (1...$data_enemies.size).each { |i|
  122. enemy = $data_enemies[i]
  123. enemy.maxhp = enemy.maxhp * ENEMY_MAXHP_REVISE / 100
  124. enemy.maxsp = enemy.maxsp * ENEMY_MAXSP_REVISE / 100
  125. enemy.str = enemy.str * ENEMY_STR_REVISE / 100
  126. enemy.dex = enemy.dex * ENEMY_DEX_REVISE / 100
  127. enemy.agi = enemy.agi * ENEMY_AGI_REVISE / 100
  128. enemy.int = enemy.int * ENEMY_INT_REVISE / 100
  129. enemy.atk = enemy.atk * ENEMY_ATK_REVISE / 100
  130. enemy.pdef = enemy.pdef * ENEMY_PDEF_REVISE / 100
  131. enemy.mdef = enemy.mdef * ENEMY_MDEF_REVISE / 100
  132. }
  133. end
  134. end

  135. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  136. #==============================================================================
  137. # ■ RPG::Item
  138. #==============================================================================

  139. class RPG::Item
  140. #--------------------------------------------------------------------------
  141. # ● 所持数上限
  142. #--------------------------------------------------------------------------
  143. def number_limit
  144. if KGC::LimitBreak::ITEM_LIMIT[self.id] != nil
  145. return KGC::LimitBreak::ITEM_LIMIT[self.id]
  146. else
  147. return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  148. end
  149. end
  150. end

  151. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  152. #==============================================================================
  153. # ■ RPG::Weapon
  154. #==============================================================================

  155. class RPG::Weapon
  156. #--------------------------------------------------------------------------
  157. # ● 所持数上限
  158. #--------------------------------------------------------------------------
  159. def number_limit
  160. if KGC::LimitBreak::WEAPON_LIMIT[self.id] != nil
  161. return KGC::LimitBreak::WEAPON_LIMIT[self.id]
  162. else
  163. return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  164. end
  165. end
  166. end

  167. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  168. #==============================================================================
  169. # ■ RPG::Armor
  170. #==============================================================================

  171. class RPG::Armor
  172. #--------------------------------------------------------------------------
  173. # ● 所持数上限
  174. #--------------------------------------------------------------------------
  175. def number_limit
  176. if KGC::LimitBreak::ARMOR_LIMIT[self.id] != nil
  177. return KGC::LimitBreak::ARMOR_LIMIT[self.id]
  178. else
  179. return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  180. end
  181. end
  182. end

  183. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  184. #==============================================================================
  185. # ■ Game_Battler (分割定義 1)
  186. #==============================================================================

  187. class Game_Battler
  188. #--------------------------------------------------------------------------
  189. # ● MaxHP の取得
  190. #--------------------------------------------------------------------------
  191. def maxhp
  192. n = [base_maxhp + @maxhp_plus, 1].max
  193. @states.each { |i| n *= $data_states[i].maxhp_rate / 100.0 }
  194. n = [[Integer(n), 1].max, maxhp_limit].min
  195. return n
  196. end
  197. #--------------------------------------------------------------------------
  198. # ● MaxSP の取得
  199. #--------------------------------------------------------------------------
  200. def maxsp
  201. n = [base_maxsp + @maxsp_plus, 0].max
  202. @states.each { |i| n *= $data_states[i].maxsp_rate / 100.0 }
  203. n = [[Integer(n), 0].max, maxsp_limit].min
  204. return n
  205. end
  206. #--------------------------------------------------------------------------
  207. # ● 腕力の取得
  208. #--------------------------------------------------------------------------
  209. def str
  210. n = [base_str + @str_plus, 1].max
  211. @states.each { |i| n *= $data_states[i].str_rate / 100.0 }
  212. n = [[Integer(n), 1].max, parameter_limit].min
  213. return n
  214. end
  215. #--------------------------------------------------------------------------
  216. # ● 器用さの取得
  217. #--------------------------------------------------------------------------
  218. def dex
  219. n = [base_dex + @dex_plus, 1].max
  220. @states.each { |i| n *= $data_states[i].dex_rate / 100.0 }
  221. n = [[Integer(n), 1].max, parameter_limit].min
  222. return n
  223. end
  224. #--------------------------------------------------------------------------
  225. # ● 素早さの取得
  226. #--------------------------------------------------------------------------
  227. def agi
  228. n = [base_agi + @agi_plus, 1].max
  229. @states.each { |i| n *= $data_states[i].agi_rate / 100.0 }
  230. n = [[Integer(n), 1].max, parameter_limit].min
  231. return n
  232. end
  233. #--------------------------------------------------------------------------
  234. # ● 魔力の取得
  235. #--------------------------------------------------------------------------
  236. def int
  237. n = [base_int + @int_plus, 1].max
  238. @states.each { |i| n *= $data_states[i].int_rate / 100.0 }
  239. n = [[Integer(n), 1].max, parameter_limit].min
  240. return n
  241. end
  242. #--------------------------------------------------------------------------
  243. # ● MaxHP の設定
  244. # maxhp : 新しい MaxHP
  245. #--------------------------------------------------------------------------
  246. def maxhp=(maxhp)
  247. @maxhp_plus += maxhp - self.maxhp
  248. @maxhp_plus = [[@maxhp_plus, -maxhp_limit].max, maxhp_limit].min
  249. @hp = [@hp, self.maxhp].min
  250. end
  251. #--------------------------------------------------------------------------
  252. # ● MaxSP の設定
  253. # maxsp : 新しい MaxSP
  254. #--------------------------------------------------------------------------
  255. def maxsp=(maxsp)
  256. @maxsp_plus += maxsp - self.maxsp
  257. @maxsp_plus = [[@maxsp_plus, -maxsp_limit].max, maxsp_limit].min
  258. @sp = [@sp, self.maxsp].min
  259. end
  260. #--------------------------------------------------------------------------
  261. # ● 腕力の設定
  262. # str : 新しい腕力
  263. #--------------------------------------------------------------------------
  264. def str=(str)
  265. @str_plus += str - self.str
  266. @str_plus = [[@str_plus, -parameter_limit].max, parameter_limit].min
  267. end
  268. #--------------------------------------------------------------------------
  269. # ● 器用さの設定
  270. # dex : 新しい器用さ
  271. #--------------------------------------------------------------------------
  272. def dex=(dex)
  273. @dex_plus += dex - self.dex
  274. @dex_plus = [[@dex_plus, -parameter_limit].max, parameter_limit].min
  275. end
  276. #--------------------------------------------------------------------------
  277. # ● 素早さの設定
  278. # agi : 新しい素早さ
  279. #--------------------------------------------------------------------------
  280. def agi=(agi)
  281. @agi_plus += agi - self.agi
  282. @agi_plus = [[@agi_plus, -parameter_limit].max, parameter_limit].min
  283. end
  284. #--------------------------------------------------------------------------
  285. # ● 魔力の設定
  286. # int : 新しい魔力
  287. #--------------------------------------------------------------------------
  288. def int=(int)
  289. @int_plus += int - self.int
  290. @int_plus = [[@int_plus, -parameter_limit].max, parameter_limit].min
  291. end
  292. end

  293. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  294. #==============================================================================
  295. # ■ Game_Actor
  296. #==============================================================================

  297. class Game_Actor < Game_Battler
  298. #--------------------------------------------------------------------------
  299. # ● EXP 計算
  300. #--------------------------------------------------------------------------
  301. def make_exp_list
  302. actor = $data_actors[@actor_id]
  303. @exp_list[1] = 0
  304. pow_i = 2.4 + actor.exp_inflation / 100.0
  305. (2..(self.final_level + 1)).each { |i|
  306. if i > self.final_level
  307. @exp_list[i] = 0
  308. else
  309. n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  310. @exp_list[i] = @exp_list[i-1] + Integer(n)
  311. end
  312. }
  313. end
  314. #--------------------------------------------------------------------------
  315. # ● EXP の変更
  316. # exp : 新しい EXP
  317. #--------------------------------------------------------------------------
  318. def exp=(exp)
  319. if $imported["ExpGoldIncrease"]
  320. rate = calc_exp_increase_rate(KGC::EXPGLD_INC_PERMIT_DOUBLE)
  321. exp = @exp + (exp - @exp) * rate / 100
  322. end
  323. @exp = [[exp, KGC::LimitBreak::ACTOR_EXP_LIMIT].min, 0].max
  324. # レベルアップ
  325. while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  326. @level += 1
  327. # スキル習得
  328. $data_classes[@class_id].learnings.each { |j|
  329. if j.level == @level
  330. learn_skill(j.skill_id)
  331. end
  332. }
  333. end
  334. # レベルダウン
  335. while @exp < @exp_list[@level]
  336. @level -= 1
  337. end
  338. # 現在の HP と SP が最大値を超えていたら修正
  339. @hp = [@hp, self.maxhp].min
  340. @sp = [@sp, self.maxsp].min
  341. end
  342. #--------------------------------------------------------------------------
  343. # ○ パラメータの取得
  344. #--------------------------------------------------------------------------
  345. if KGC::LimitBreak::CALC_PARAMETER_METHOD == 0
  346. def parameter(type)
  347. if @level >= 100
  348. calc_text = KGC::LimitBreak::ACTOR_LV100_CALC.dup
  349. calc_text.gsub!(/lv/i) { "@level" }
  350. calc_text.gsub!(/p\[(\d+)\]/i) {
  351. "$data_actors[@actor_id].parameters[type, #{$1.to_i}]"
  352. }
  353. return $data_actors[@actor_id].parameters[type, 99] + eval(calc_text)
  354. else
  355. return $data_actors[@actor_id].parameters[type, @level]
  356. end
  357. end
  358. elsif KGC::LimitBreak::CALC_PARAMETER_METHOD == 1
  359. def parameter(type)
  360. a = $data_actors[@actor_id].parameters[type, 1]
  361. b = $data_actors[@actor_id].parameters[type, 2]
  362. c = $data_actors[@actor_id].parameters[type, 3]
  363. return a * @level * @level + b * @level + c
  364. end
  365. elsif KGC::LimitBreak::CALC_PARAMETER_METHOD == 2
  366. def parameter(type)
  367. b = $data_actors[@actor_id].parameters[type, 2]
  368. c = $data_actors[@actor_id].parameters[type, 3]
  369. return b * @level + c
  370. end
  371. end
  372. #--------------------------------------------------------------------------
  373. # ● 基本 MaxHP の取得
  374. #--------------------------------------------------------------------------
  375. def base_maxhp
  376. n = self.parameter(0)
  377. return n * KGC::LimitBreak::ACTOR_MAXHP_REVISE / 100
  378. end
  379. #--------------------------------------------------------------------------
  380. # ● MaxHP の取得
  381. #--------------------------------------------------------------------------
  382. def maxhp
  383. n = [base_maxhp + @maxhp_plus, 1].max
  384. @states.each { |i| n *= $data_states[i].maxhp_rate / 100.0 }
  385. n = [[Integer(n), 1].max, maxhp_limit].min
  386. return n
  387. end
  388. #--------------------------------------------------------------------------
  389. # ● 基本 MaxSP の取得
  390. #--------------------------------------------------------------------------
  391. def base_maxsp
  392. n = self.parameter(1)
  393. return n * KGC::LimitBreak::ACTOR_MAXSP_REVISE / 100
  394. end
  395. #--------------------------------------------------------------------------
  396. # ● MaxSP の取得
  397. #--------------------------------------------------------------------------
  398. def maxsp
  399. n = [base_maxsp + @maxsp_plus, 0].max
  400. @states.each { |i| n *= $data_states[i].maxsp_rate / 100.0 }
  401. n = [[Integer(n), 0].max, maxsp_limit].min
  402. return n
  403. end
  404. #--------------------------------------------------------------------------
  405. # ● 基本腕力の取得
  406. #--------------------------------------------------------------------------
  407. def base_str
  408. n = self.parameter(2)
  409. if $imported["EquipExtension"]
  410. n += equipment_parameter(2)
  411. else
  412. equip_item_list.each { |item| n += (item != nil ? item.str_plus : 0) }
  413. end
  414. return [[n * KGC::LimitBreak::ACTOR_STR_REVISE / 100, 1].max, parameter_limit].min
  415. end
  416. #--------------------------------------------------------------------------
  417. # ● 基本器用さの取得
  418. #--------------------------------------------------------------------------
  419. def base_dex
  420. n = self.parameter(3)
  421. if $imported["EquipExtension"]
  422. n += equipment_parameter(3)
  423. else
  424. equip_item_list.each { |item| n += (item != nil ? item.dex_plus : 0) }
  425. end
  426. return [[n * KGC::LimitBreak::ACTOR_DEX_REVISE / 100, 1].max, parameter_limit].min
  427. end
  428. #--------------------------------------------------------------------------
  429. # ● 基本素早さの取得
  430. #--------------------------------------------------------------------------
  431. def base_agi
  432. n = self.parameter(4)
  433. if $imported["EquipExtension"]
  434. n += equipment_parameter(4)
  435. else
  436. equip_item_list.each { |item| n += (item != nil ? item.agi_plus : 0) }
  437. end
  438. return [[n * KGC::LimitBreak::ACTOR_AGI_REVISE / 100, 1].max, parameter_limit].min
  439. end
  440. #--------------------------------------------------------------------------
  441. # ● 基本魔力の取得
  442. #--------------------------------------------------------------------------
  443. def base_int
  444. n = self.parameter(5)
  445. if $imported["EquipExtension"]
  446. n += equipment_parameter(5)
  447. else
  448. equip_item_list.each { |item| n += (item != nil ? item.int_plus : 0) }
  449. end
  450. return [[n * KGC::LimitBreak::ACTOR_INT_REVISE / 100, 1].max, parameter_limit].min
  451. end
  452. #--------------------------------------------------------------------------
  453. # ● レベルの変更
  454. # level : 新しいレベル
  455. #--------------------------------------------------------------------------
  456. def level=(level)
  457. # 上下限チェック
  458. level = [[level, self.final_level].min, 1].max
  459. # EXP を変更
  460. self.exp = @exp_list[level]
  461. end
  462. #--------------------------------------------------------------------------
  463. # ● 最終レベルの取得
  464. #--------------------------------------------------------------------------
  465. def final_level
  466. return (KGC::LimitBreak::ACTOR_LV_LIMIT[@actor_id] != nil ?
  467. KGC::LimitBreak::ACTOR_LV_LIMIT[@actor_id] : KGC::LimitBreak::ACTOR_LV_LIMIT_DEFAULT)
  468. end
  469. #--------------------------------------------------------------------------
  470. # ○ MaxHP 限界値の取得
  471. #--------------------------------------------------------------------------
  472. def maxhp_limit
  473. return KGC::LimitBreak::ACTOR_HP_LIMIT
  474. end
  475. #--------------------------------------------------------------------------
  476. # ○ MaxSP 限界値の取得
  477. #--------------------------------------------------------------------------
  478. def maxsp_limit
  479. return KGC::LimitBreak::ACTOR_SP_LIMIT
  480. end
  481. #--------------------------------------------------------------------------
  482. # ○ パラメータ限界値の取得
  483. #--------------------------------------------------------------------------
  484. def parameter_limit
  485. return KGC::LimitBreak::ACTOR_ETC_LIMIT
  486. end
  487. #--------------------------------------------------------------------------
  488. # ○ 装備武器リストの取得
  489. #--------------------------------------------------------------------------
  490. def equip_weapon_list
  491. result = [$data_weapons[@weapon_id]]
  492. return result.compact
  493. end
  494. #--------------------------------------------------------------------------
  495. # ○ 装備防具リストの取得
  496. #--------------------------------------------------------------------------
  497. def equip_armor_list
  498. result = []
  499. (1..4).each { |i| result << $data_armors[eval("@armor#{i}_id")] }
  500. return result.compact
  501. end
  502. #--------------------------------------------------------------------------
  503. # ○ 装備品リストの取得
  504. #--------------------------------------------------------------------------
  505. def equip_item_list
  506. return equip_weapon_list + equip_armor_list
  507. end
  508. end

  509. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  510. #==============================================================================
  511. # ■ Game_Enemy
  512. #==============================================================================

  513. class Game_Enemy < Game_Battler
  514. #--------------------------------------------------------------------------
  515. # ○ MaxHP 限界値の取得
  516. #--------------------------------------------------------------------------
  517. def maxhp_limit
  518. return KGC::LimitBreak::ENEMY_HP_LIMIT
  519. end
  520. #--------------------------------------------------------------------------
  521. # ○ MaxSP 限界値の取得
  522. #--------------------------------------------------------------------------
  523. def maxsp_limit
  524. return KGC::LimitBreak::ENEMY_SP_LIMIT
  525. end
  526. #--------------------------------------------------------------------------
  527. # ○ パラメータ限界値の取得
  528. #--------------------------------------------------------------------------
  529. def parameter_limit
  530. return KGC::LimitBreak::ENEMY_ETC_LIMIT
  531. end
  532. end

  533. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  534. #==============================================================================
  535. # ■ Game_Party
  536. #==============================================================================

  537. class Game_Party
  538. #--------------------------------------------------------------------------
  539. # ● ゴールドの増加 (減少)
  540. # n : 金額
  541. #--------------------------------------------------------------------------
  542. def gain_gold(n)
  543. # 所持金の限界値変更
  544. @gold = [[@gold + n, 0].max, KGC::LimitBreak::GOLD_LIMIT].min
  545. end
  546. #--------------------------------------------------------------------------
  547. # ● アイテムの増加 (減少)
  548. # item_id : アイテム ID
  549. # n : 個数
  550. #--------------------------------------------------------------------------
  551. def gain_item(item_id, n)
  552. # ハッシュの個数データを更新

  553. if item_id > 0
  554. limit = $data_items[item_id].number_limit
  555. @items[item_id] = [[item_number(item_id) + n, 0].max, limit].min
  556. end
  557. end
  558. #--------------------------------------------------------------------------
  559. # ● 武器の増加 (減少)
  560. # weapon_id : 武器 ID
  561. # n : 個数
  562. #--------------------------------------------------------------------------
  563. def gain_weapon(weapon_id, n)
  564. # ハッシュの個数データを更新
  565. if weapon_id > 0
  566. limit = $data_weapons[weapon_id].number_limit
  567. @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, limit].min
  568. end
  569. end
  570. #--------------------------------------------------------------------------
  571. # ● 防具の増加 (減少)
  572. # armor_id : 防具 ID
  573. # n : 個数
  574. #--------------------------------------------------------------------------
  575. def gain_armor(armor_id, n)
  576. # ハッシュの個数データを更新
  577. if armor_id > 0
  578. limit = $data_armors[armor_id].number_limit
  579. @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, limit].min
  580. end
  581. end
  582. end

  583. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  584. #==============================================================================
  585. # ■ Window_ShopBuy
  586. #==============================================================================

  587. class Window_ShopBuy < Window_Selectable
  588. #--------------------------------------------------------------------------
  589. # ● 項目の描画
  590. # index : 項目番号
  591. #--------------------------------------------------------------------------
  592. def draw_item(index)
  593. item = @data[index]
  594. # アイテムの所持数を取得
  595. case item
  596. when RPG::Item
  597. number = $game_party.item_number(item.id)
  598. when RPG::Weapon
  599. number = $game_party.weapon_number(item.id)
  600. when RPG::Armor
  601. number = $game_party.armor_number(item.id)
  602. end
  603. # 価格が所持金以下、かつ所持数が上限でなければ通常文字色に、
  604. # そうでなければ無効文字色に設定
  605. if item.price <= $game_party.gold && number < item.number_limit
  606. self.contents.font.color = normal_color
  607. else
  608. self.contents.font.color = disabled_color
  609. end
  610. x = 4
  611. y = index * 32
  612. rect = Rect.new(x, y, self.width - 32, 32)
  613. self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  614. bitmap = RPG::Cache.icon(item.icon_name)
  615. opacity = self.contents.font.color == normal_color ? 255 : 128
  616. self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  617. self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  618. self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2)
  619. end
  620. end

  621. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  622. #==============================================================================
  623. # ■ Scene_Title
  624. #==============================================================================

  625. class Scene_Title
  626. #--------------------------------------------------------------------------
  627. # ● コマンド : ニューゲーム
  628. #--------------------------------------------------------------------------
  629. alias command_new_game_KGC_LimitBreak command_new_game
  630. def command_new_game
  631. command_new_game_KGC_LimitBreak

  632. KGC::LimitBreak.revise_enemy_parameters
  633. KGC::LimitBreak.set_enemy_status
  634. end
  635. #--------------------------------------------------------------------------
  636. # ● コマンド : コンティニュー
  637. #--------------------------------------------------------------------------
  638. alias command_continue_KGC_LimitBreak command_continue
  639. def command_continue
  640. command_continue_KGC_LimitBreak

  641. KGC::LimitBreak.revise_enemy_parameters
  642. KGC::LimitBreak.set_enemy_status
  643. end
  644. #--------------------------------------------------------------------------
  645. # ● 戦闘テスト
  646. #--------------------------------------------------------------------------
  647. alias battle_test_KGC_LimitBreak battle_test
  648. def battle_test
  649. battle_test_KGC_LimitBreak

  650. KGC::LimitBreak.revise_enemy_parameters
  651. KGC::LimitBreak.set_enemy_status
  652. end
  653. end

  654. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  655. #==============================================================================
  656. # ■ Scene_Shop
  657. #==============================================================================

  658. class Scene_Shop
  659. #--------------------------------------------------------------------------
  660. # ● フレーム更新 (購入ウィンドウがアクティブの場合)
  661. #--------------------------------------------------------------------------
  662. def update_buy
  663. # ステータスウィンドウのアイテムを設定
  664. @status_window.item = @buy_window.item
  665. # B ボタンが押された場合
  666. if Input.trigger?(Input::B)
  667. # キャンセル SE を演奏
  668. $game_system.se_play($data_system.cancel_se)
  669. # ウィンドウの状態を初期モードへ
  670. @command_window.active = true
  671. @dummy_window.visible = true
  672. @buy_window.active = false
  673. @buy_window.visible = false
  674. @status_window.visible = false
  675. @status_window.item = nil
  676. # ヘルプテキストを消去
  677. @help_window.set_text("")
  678. return
  679. end
  680. # C ボタンが押された場合
  681. if Input.trigger?(Input::C)
  682. # アイテムを取得
  683. @item = @buy_window.item
  684. # アイテムが無効の場合、または価格が所持金より上の場合
  685. if @item == nil or @item.price > $game_party.gold
  686. # ブザー SE を演奏
  687. $game_system.se_play($data_system.buzzer_se)
  688. return
  689. end
  690. # アイテムの所持数を取得
  691. case @item
  692. when RPG::Item
  693. number = $game_party.item_number(@item.id)
  694. when RPG::Weapon
  695. number = $game_party.weapon_number(@item.id)
  696. when RPG::Armor
  697. number = $game_party.armor_number(@item.id)
  698. end
  699. # すでに上限まで個所持している場合
  700. limit = @item.number_limit
  701. if number >= limit
  702. # ブザー SE を演奏
  703. $game_system.se_play($data_system.buzzer_se)
  704. return
  705. end
  706. # 決定 SE を演奏
  707. $game_system.se_play($data_system.decision_se)
  708. # 最大購入可能個数を計算
  709. max = (@item.price == 0 ? limit : $game_party.gold / @item.price)
  710. max = [max, limit - number].min
  711. # ウィンドウの状態を個数入力モードへ
  712. @buy_window.active = false
  713. @buy_window.visible = false
  714. @number_window.set(@item, max, @item.price)
  715. @number_window.active = true
  716. @number_window.visible = true
  717. end
  718. end
  719. end
复制代码





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