设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1648|回复: 0
打印 上一主题 下一主题

[已经解决] 突破上限脚本 实现敌人能力随机变化的问题请教

[复制链接]

Lv2.观梦者

梦石
0
星屑
596
在线时间
797 小时
注册时间
2014-7-1
帖子
578

开拓者

跳转到指定楼层
1
发表于 2015-9-7 23:07:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 jiushiainilip19 于 2015-9-7 23:12 编辑
  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 = 99999
  42. $actover = ACTOR_LV_LIMIT_DEFAULT + 1
  43. # ◆アクターの経験値上限
  44. ACTOR_EXP_LIMIT = 99999999999
  45. # ◆アクターのHP上限
  46. ACTOR_HP_LIMIT = 100000
  47. # ◆アクターのSP上限
  48. ACTOR_SP_LIMIT = 50000
  49. # ◆アクターの「腕力, 器用さ, 素早さ, 魔力」上限
  50. ACTOR_ETC_LIMIT = 10000

  51. # ◆敵のHP上限
  52. ENEMY_HP_LIMIT = 99999999
  53. # ◆敵のSP上限
  54. ENEMY_SP_LIMIT = 69999
  55. # ◆敵の「腕力, 器用さ, 素早さ, 魔力」上限
  56. ENEMY_ETC_LIMIT = 15000





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

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

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

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

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

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

  95. module_function
  96. #--------------------------------------------------------------------------
  97. # ○ 敵能力値直接指定
  98. # ここで、敵の最大HPなどを直接指定することができます。
  99. # データベースに入りきらない数値を指定する場合に使用してください。
  100. #--------------------------------------------------------------------------
  101. def set_enemy_status#$game_variables[52]
  102. #==难一状态下=====指定敌人1-200的敌人ID 全属性+随机100-130的能力变化值

  103. for i in 1..200
  104. if $game_switches[300] == true
  105. $data_enemies[i].maxsp+=$data_enemies[i].maxsp*(100+rand(30))/100
  106. $data_enemies[i].maxhp+=$data_enemies[i].maxhp*(100+rand(30))/100
  107. $data_enemies[i].str+=$data_enemies[i].str*(100+rand(30))/100
  108. $data_enemies[i].dex+=$data_enemies[i].dex*(100+rand(30))/100
  109. $data_enemies[i].agi+=$data_enemies[i].agi*(100+rand(30))/100
  110. $data_enemies[i].int+=$data_enemies[i].int*(100+rand(30))/100
  111. $data_enemies[i].pdef+=$data_enemies[i].pdef*(100+rand(30))/100
  112. $data_enemies[i].mdef+=$data_enemies[i].mdef*(100+rand(30))/100
  113. end
  114. end



  115. end
  116. end
  117. end

  118. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  119. $imported = {} if $imported == nil
  120. $imported["LimitBreak"] = true

  121. if $game_special_elements == nil
  122. $game_special_elements = {}
  123. $data_system = load_data("Data/System.rxdata")
  124. end

  125. module KGC::LimitBreak
  126. module_function
  127. #--------------------------------------------------------------------------
  128. # ● 敵の能力補正を適用 *$game_variables[52]/100
  129. #--------------------------------------------------------------------------
  130. def revise_enemy_parameters

  131. (1...$data_enemies.size).each { |i|
  132. enemy = $data_enemies[i]
  133. enemy.maxhp = enemy.maxhp * ENEMY_MAXHP_REVISE / 100
  134. enemy.maxsp = enemy.maxsp * ENEMY_MAXSP_REVISE / 100
  135. enemy.str = enemy.str * ENEMY_STR_REVISE / 100
  136. enemy.dex = enemy.dex * ENEMY_DEX_REVISE / 100
  137. enemy.agi = enemy.agi * ENEMY_AGI_REVISE / 100
  138. enemy.int = enemy.int * ENEMY_INT_REVISE / 100
  139. enemy.atk = enemy.atk * ENEMY_ATK_REVISE / 100
  140. enemy.pdef = enemy.pdef * ENEMY_PDEF_REVISE / 100
  141. enemy.mdef = enemy.mdef * ENEMY_MDEF_REVISE / 100
  142. }
  143. end
  144. end
  145. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  146. #==============================================================================
  147. # ■ RPG::Item
  148. #==============================================================================

  149. class RPG::Item
  150. #--------------------------------------------------------------------------
  151. # ● 所持数上限
  152. #--------------------------------------------------------------------------
  153. def number_limit
  154. if KGC::LimitBreak::ITEM_LIMIT[self.id] != nil
  155. return KGC::LimitBreak::ITEM_LIMIT[self.id]
  156. else
  157. return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  158. end
  159. end
  160. end

  161. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  162. #==============================================================================
  163. # ■ RPG::Weapon
  164. #==============================================================================

  165. class RPG::Weapon
  166. #--------------------------------------------------------------------------
  167. # ● 所持数上限
  168. #--------------------------------------------------------------------------
  169. def number_limit
  170. if KGC::LimitBreak::WEAPON_LIMIT[self.id] != nil
  171. return KGC::LimitBreak::WEAPON_LIMIT[self.id]
  172. else
  173. return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  174. end
  175. end
  176. end

  177. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  178. #==============================================================================
  179. # ■ RPG::Armor
  180. #==============================================================================

  181. class RPG::Armor
  182. #--------------------------------------------------------------------------
  183. # ● 所持数上限
  184. #--------------------------------------------------------------------------
  185. def number_limit
  186. if KGC::LimitBreak::ARMOR_LIMIT[self.id] != nil
  187. return KGC::LimitBreak::ARMOR_LIMIT[self.id]
  188. else
  189. return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  190. end
  191. end
  192. end

  193. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  194. #==============================================================================
  195. # ■ Game_Battler (分割定義 1)
  196. #==============================================================================

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

  303. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  304. #==============================================================================
  305. # ■ Game_Actor
  306. #==============================================================================

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

  521. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  522. #==============================================================================
  523. # ■ Game_Enemy
  524. #==============================================================================

  525. class Game_Enemy < Game_Battler
  526. #--------------------------------------------------------------------------
  527. # ○ MaxHP 限界値の取得
  528. #--------------------------------------------------------------------------
  529. def maxhp_limit
  530. return KGC::LimitBreak::ENEMY_HP_LIMIT
  531. end
  532. #--------------------------------------------------------------------------
  533. # ○ MaxSP 限界値の取得
  534. #--------------------------------------------------------------------------
  535. def maxsp_limit
  536. return KGC::LimitBreak::ENEMY_SP_LIMIT
  537. end
  538. #--------------------------------------------------------------------------
  539. # ○ パラメータ限界値の取得
  540. #--------------------------------------------------------------------------
  541. def parameter_limit
  542. return KGC::LimitBreak::ENEMY_ETC_LIMIT

  543. end
  544. end

  545. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  546. #==============================================================================
  547. # ■ Game_Party
  548. #==============================================================================

  549. class Game_Party
  550. #--------------------------------------------------------------------------
  551. # ● ゴールドの増加 (減少)
  552. # n : 金額
  553. #--------------------------------------------------------------------------
  554. def gain_gold(n)
  555. # 所持金の限界値変更
  556. @gold = [[@gold + n, 0].max, KGC::LimitBreak::GOLD_LIMIT].min
  557. end
  558. #--------------------------------------------------------------------------
  559. # ● アイテムの増加 (減少)
  560. # item_id : アイテム ID
  561. # n : 個数
  562. #--------------------------------------------------------------------------
  563. def gain_item(item_id, n)
  564. # ハッシュの個数データを更新
  565. if item_id > 0
  566. limit = $data_items[item_id].number_limit
  567. @items[item_id] = [[item_number(item_id) + n, 0].max, limit].min
  568. end
  569. end
  570. #--------------------------------------------------------------------------
  571. # ● 武器の増加 (減少)
  572. # weapon_id : 武器 ID
  573. # n : 個数
  574. #--------------------------------------------------------------------------
  575. def gain_weapon(weapon_id, n)
  576. # ハッシュの個数データを更新
  577. if weapon_id > 0
  578. limit = $data_weapons[weapon_id].number_limit
  579. @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, limit].min
  580. end
  581. end
  582. #--------------------------------------------------------------------------
  583. # ● 防具の増加 (減少)
  584. # armor_id : 防具 ID
  585. # n : 個数
  586. #--------------------------------------------------------------------------
  587. def gain_armor(armor_id, n)
  588. # ハッシュの個数データを更新
  589. if armor_id > 0
  590. limit = $data_armors[armor_id].number_limit
  591. @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, limit].min
  592. end
  593. end
  594. end

  595. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  596. #==============================================================================
  597. # ■ Window_ShopBuy
  598. #==============================================================================

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

  633. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  634. #==============================================================================
  635. # ■ Scene_Title
  636. #==============================================================================

  637. class Scene_Title
  638. #--------------------------------------------------------------------------
  639. # ● コマンド : ニューゲーム
  640. #--------------------------------------------------------------------------
  641. alias command_new_game_KGC_LimitBreak command_new_game
  642. def command_new_game
  643. command_new_game_KGC_LimitBreak

  644. KGC::LimitBreak.revise_enemy_parameters
  645. KGC::LimitBreak.set_enemy_status
  646. end
  647. #--------------------------------------------------------------------------
  648. # ● コマンド : コンティニュー
  649. #--------------------------------------------------------------------------
  650. alias command_continue_KGC_LimitBreak command_continue
  651. def command_continue
  652. command_continue_KGC_LimitBreak

  653. KGC::LimitBreak.revise_enemy_parameters
  654. KGC::LimitBreak.set_enemy_status
  655. end
  656. #--------------------------------------------------------------------------
  657. # ● 戦闘テスト
  658. #--------------------------------------------------------------------------
  659. alias battle_test_KGC_LimitBreak battle_test
  660. def battle_test
  661. battle_test_KGC_LimitBreak

  662. KGC::LimitBreak.revise_enemy_parameters
  663. KGC::LimitBreak.set_enemy_status
  664. end
  665. end

  666. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  667. #==============================================================================
  668. # ■ Scene_Shop
  669. #==============================================================================

  670. class Scene_Shop
  671. #--------------------------------------------------------------------------
  672. # ● フレーム更新 (購入ウィンドウがアクティブの場合)
  673. #--------------------------------------------------------------------------
  674. def update_buy
  675. # ステータスウィンドウのアイテムを設定
  676. @status_window.item = @buy_window.item
  677. # B ボタンが押された場合
  678. if Input.trigger?(Input::B)
  679. # キャンセル SE を演奏
  680. $game_system.se_play($data_system.cancel_se)
  681. # ウィンドウの状態を初期モードへ
  682. @command_window.active = true
  683. @dummy_window.visible = true
  684. @buy_window.active = false
  685. @buy_window.visible = false
  686. @status_window.visible = false
  687. @status_window.item = nil
  688. # ヘルプテキストを消去
  689. @help_window.set_text("")
  690. return
  691. end
  692. # C ボタンが押された場合
  693. if Input.trigger?(Input::C)
  694. # アイテムを取得
  695. @item = @buy_window.item
  696. # アイテムが無効の場合、または価格が所持金より上の場合
  697. if @item == nil or @item.price > $game_party.gold
  698. # ブザー SE を演奏
  699. $game_system.se_play($data_system.buzzer_se)
  700. return
  701. end
  702. # アイテムの所持数を取得
  703. case @item
  704. when RPG::Item
  705. number = $game_party.item_number(@item.id)
  706. when RPG::Weapon
  707. number = $game_party.weapon_number(@item.id)
  708. when RPG::Armor
  709. number = $game_party.armor_number(@item.id)
  710. end
  711. # すでに上限まで個所持している場合
  712. limit = @item.number_limit
  713. if number >= limit
  714. # ブザー SE を演奏
  715. $game_system.se_play($data_system.buzzer_se)
  716. return
  717. end
  718. # 決定 SE を演奏
  719. $game_system.se_play($data_system.decision_se)
  720. # 最大購入可能個数を計算
  721. max = (@item.price == 0 ? limit : $game_party.gold / @item.price)
  722. max = [max, limit - number].min
  723. # ウィンドウの状態を個数入力モードへ
  724. @buy_window.active = false
  725. @buy_window.visible = false
  726. @number_window.set(@item, max, @item.price)
  727. @number_window.active = true
  728. @number_window.visible = true
  729. end
  730. end
  731. end
复制代码
问题描述:
1:120行开始 我定义敌人ID1到200 的全部属性随机变化  但是问题是无法用开关来打开和关闭
2:取消开关设定就可以做到随机化  
  开关无法在这里进行控制是那里出了问题呢?
  
学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 12:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表