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

Project1

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

[已经解决] 关于脚本变量enemy_id的一些问题。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
71 小时
注册时间
2010-9-20
帖子
104
跳转到指定楼层
1
发表于 2012-4-9 13:56:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在Game_Enemy中首次出现enemy_id,之后在使用的rtab战斗脚本中也有和Game_Enemy中相同的语句定义enemy_id。接着在最后的怪物图鉴中也多次更改enemy_id。如何避免连续冲突?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
2
发表于 2012-4-9 14:13:00 | 只看该作者
把两个修改的部分整合到一起,删掉一个,这个要具体情况具体分析...
好歹当年也当过大魔王过,orz
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
71 小时
注册时间
2010-9-20
帖子
104
3
 楼主| 发表于 2012-4-9 14:20:36 | 只看该作者
zhangbanxian 发表于 2012-4-9 14:13
把两个修改的部分整合到一起,删掉一个,这个要具体情况具体分析...

据说还和脚本位置有关。。这下彻底蛋疼了,每个有关这个变量的脚本中都有很多与其相关的子脚本,如果整合将影响子脚本的调用……基本上RTAB最容易出冲突,但我还真见过RTAB和怪物图鉴共存的工程,实在不明白是怎么弄的……


‘‘──Mr.Faint于2012-4-9 14:24补充以下内容

经过各种整合修改,现在战斗环节和图鉴呼出都没有问题。可是一旦进入图鉴选择怪物查看详细信息就会出现RTAB脚本的enemy_id notfindmothed 该行的相关语句是
@enemy_id = troop.members[@member_index].enemy_id
理论上troop_id跟怪物图鉴是半毛钱关系都没有的啊。。图鉴脚本里甚至都没有涉及队伍id的语句……
纠结一整天了……{:4_132:}
’’


‘‘──Mr.Faint于2012-4-9 14:33补充以下内容

这个是蓝本。。自己写的话处理不好附加信息和战斗图位置……技术上不过关啊QAQ
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. #——————————————————————————————————————
  5. #魔物图鉴+介绍
  6. #
  7. #战斗终了时自动添加敌人进入图鉴(class Scene_Battle start_phase5 追加。目前与各种战斗系统没有发现冲突)
  8. #不想加入图鉴的怪物设置其“不加入图鉴”属性有效度为A即可
  9. #图鉴完成度的表示功能追加
  10. #SHOW_COMPLETE_TYPE 的数值可以设定
  11. #当为1,显示现有个数/总数,当为2,显示完成百分比,当为3,全显示。
  12. #使用方法:$scene = Scene_MonsterBook.new
  13. #数据库中属性里面那些种族特效的位置,建议把默认的“对 不死”之类改成“不死”,不然显示会很奇怪
  14. #由于雷达图的设计问题,只支持8项属性
  15. #默认种族特效处理属性中编号9到编号16,如果你做了修改请自行改动380行左右的for i in 9..16这一句代码
  16. #显示各种信息位于630行左右,想不显示的话只要删除相应语句
  17. CHARA_INFO=[]#怪物的介绍,对应怪物id,空格为换行,同时也会自动换行,没有写介绍的怪物会自动显示“无详细信息”
  18. CHARA_INFO[1] = "怪物介绍1"
  19. CHARA_INFO[2] = "怪物介绍2"
  20. CHARA_INFO[3] = "生活在潮湿的沼泽地区的变异生物,性情凶暴,经常会袭击各种路过的生物"
  21. #没有信息测试,4号怪物
  22. #=============
  23. #雷达图相关处理部分
  24. #=============
  25. class Bitmap
  26. def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
  27. distance = (start_x - end_x).abs + (start_y - end_y).abs
  28. if end_color == start_color
  29. for i in 1..distance
  30. x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  31. y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  32. if width == 1
  33. self.set_pixel(x, y, start_color)
  34. else
  35. self.fill_rect(x, y, width, width, start_color)
  36. end
  37. end
  38. else
  39. for i in 1..distance
  40. x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  41. y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  42. r = start_color.red * (distance-i)/distance + end_color.red * i/distance
  43. g = start_color.green * (distance-i)/distance + end_color.green * i/distance
  44. b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
  45. a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
  46. if width == 1
  47. self.set_pixel(x, y, Color.new(r, g, b, a))
  48. else
  49. self.fill_rect(x, y, width, width, Color.new(r, g, b, a))
  50. end
  51. end
  52. end
  53. end
  54. end
  55. #=============
  56. # Graphic_Def_Elem
  57. #=============
  58. class Window_Base
  59. FONT_SIZE = 18
  60. WORD_ELEMENT_GUARD = "属性有效度"
  61. NUMBER_OF_ELEMENTS = 8
  62. ELEMENT_ORDER = [1,3,8,5,2,4,7,6]
  63. GRAPH_SCALINE_COLOR = Color.new(255, 255, 255, 128)
  64. GRAPH_SCALINE_COLOR_SHADOW = Color.new( 0, 0, 0, 192)
  65. GRAPH_LINE_COLOR = Color.new(255, 255, 64, 255)
  66. GRAPH_LINE_COLOR_MINUS = Color.new( 64, 255, 255, 255)
  67. GRAPH_LINE_COLOR_PLUS = Color.new(255, 64, 64, 255)
  68. end
  69. #——————————————————————————————————————
  70. module Enemy_Book_Config
  71. DROP_ITEM_NEED_ANALYZE = true #显示物品
  72. EVA_NAME = "回避修正" #回避修正的名称(因为数据库中没有定义)
  73. SHOW_COMPLETE_TYPE = 3 #图鉴完成率表示方法
  74. end
  75. class Data_MonsterBook
  76. #--------------------------------------------------------------------------
  77. # ● 图鉴用ID設定
  78. #--------------------------------------------------------------------------
  79. def enemy_book_id_set
  80. data = [0]
  81. data[1] = 2
  82. data[2] = 1
  83. data[3] = 15
  84. data[4] = 25
  85. data[5] = 18
  86. data[6] = 30
  87. return data
  88. end
  89. end
  90. class Game_Temp
  91. attr_accessor :enemy_book_data
  92. alias temp_enemy_book_data_initialize initialize
  93. def initialize
  94. temp_enemy_book_data_initialize
  95. @enemy_book_data = Data_MonsterBook.new
  96. end
  97. end
  98. class Game_Party
  99. #==============================================
  100. #--------------------------------------------------------------------------
  101. # ● 公開インスタンス変数
  102. #--------------------------------------------------------------------------
  103. attr_reader :actors # アクター
  104. attr_reader :gold # ゴールド
  105. attr_reader :steps # 歩数
  106. #--------------------------------------------------------------------------
  107. # ● オブジェクト初期化
  108. #--------------------------------------------------------------------------
  109. def initialize
  110. # アクターの配列を作成
  111. @actors = []
  112. # ゴールドと歩数を初期化
  113. @gold = 0
  114. @steps = 0
  115. # アイテム、武器、防具の所持数ハッシュを作成
  116. @items = {}
  117. @weapons = {}
  118. @armors = {}
  119. end
  120. #==============================================
  121. attr_accessor :enemy_info # 出会った敵情報(図鑑用)
  122. #--------------------------------------------------------------------------
  123. # ● オブジェクト初期化
  124. #--------------------------------------------------------------------------
  125. alias book_info_initialize initialize
  126. def initialize
  127. book_info_initialize
  128. @enemy_info = {}
  129. end
  130. #--------------------------------------------------------------------------
  131. # ● エネミー情報の追加(図鑑用)
  132. # type : 通常遭遇かアナライズか 0:通常 1:アナライズ -1:情報削除
  133. # 0:無遭遇 1:遭遇済 2:アナライズ済
  134. #--------------------------------------------------------------------------
  135. def add_enemy_info(enemy_id, type = 0)
  136. case type
  137. when 0
  138. if @enemy_info[enemy_id] == 2
  139. return false
  140. end
  141. @enemy_info[enemy_id] = 1
  142. when 1
  143. @enemy_info[enemy_id] = 2
  144. when -1
  145. @enemy_info[enemy_id] = 0
  146. end
  147. end
  148. #--------------------------------------------------------------------------
  149. # ● 魔物図鑑の最大登録数を取得
  150. #--------------------------------------------------------------------------
  151. def enemy_book_max
  152. return $game_temp.enemy_book_data.id_data.size - 1
  153. end
  154. #--------------------------------------------------------------------------
  155. # ● 魔物図鑑の現在登録数を取得
  156. #--------------------------------------------------------------------------
  157. def enemy_book_now
  158. now_enemy_info = @enemy_info.keys
  159. # 登録無視の属性IDを取得
  160. no_add = $game_temp.enemy_book_data.no_add_element
  161. new_enemy_info = []
  162. for i in now_enemy_info
  163. enemy = $data_enemies[i]
  164. next if enemy.name == ""
  165. if enemy.element_ranks[no_add] == 1
  166. next
  167. end
  168. new_enemy_info.push(enemy.id)
  169. end
  170. return new_enemy_info.size
  171. end
  172. #--------------------------------------------------------------------------
  173. # ● 魔物図鑑の完成率を取得
  174. #--------------------------------------------------------------------------
  175. def enemy_book_complete_percentage
  176. e_max = enemy_book_max.to_f
  177. e_now = enemy_book_now.to_f
  178. comp = e_now / e_max * 100
  179. return comp.truncate
  180. end
  181. end
  182. class Interpreter
  183. def enemy_book_max
  184. return $game_party.enemy_book_max
  185. end
  186. def enemy_book_now
  187. return $game_party.enemy_book_now
  188. end
  189. def enemy_book_comp
  190. return $game_party.enemy_book_complete_percentage
  191. end
  192. end
  193. class Scene_Battle
  194. alias add_enemy_info_start_phase5 start_phase5
  195. def start_phase5
  196. for enemy in $game_troop.enemies
  197. # エネミーが隠れ状態でない場合
  198. unless enemy.hidden
  199. # 敵遭遇情報追加
  200. $game_party.add_enemy_info(enemy.id, 0)
  201. end
  202. end
  203. add_enemy_info_start_phase5
  204. end
  205. end
  206. class Window_Base < Window
  207. #--------------------------------------------------------------------------
  208. # ● エネミーの戦闘後獲得アイテムの描画
  209. #--------------------------------------------------------------------------
  210. def draw_enemy_drop_item(enemy, x, y)
  211. self.contents.font.color = normal_color
  212. treasures = []
  213. if enemy.item_id > 0
  214. treasures.push($data_items[enemy.item_id])
  215. end
  216. if enemy.weapon_id > 0
  217. treasures.push($data_weapons[enemy.weapon_id])
  218. end
  219. if enemy.armor_id > 0
  220. treasures.push($data_armors[enemy.armor_id])
  221. end
  222. # 現状ではとりあえず1つのみ描画
  223. if treasures.size > 0
  224. item = treasures[0]
  225. bitmap = RPG::Cache.icon(item.icon_name)
  226. opacity = 255
  227. self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  228. name = treasures[0].name
  229. else
  230. self.contents.font.color = disabled_color
  231. name = "无"
  232. end
  233. self.contents.draw_text(x+28, y, 212, 32, name)
  234. end
  235. #--------------------------------------------------------------------------
  236. # ● エネミーの図鑑IDの描画
  237. #--------------------------------------------------------------------------
  238. def draw_enemy_book_id(enemy, x, y)
  239. self.contents.font.color = normal_color
  240. id = $game_temp.enemy_book_data.id_data.index(enemy.id)
  241. self.contents.draw_text(x, y, 32, 32, id.to_s)
  242. end
  243. #--------------------------------------------------------------------------
  244. # ● 敌人简介描绘
  245. #--------------------------------------------------------------------------
  246. def draw_enemy_other(enemy, x, y)
  247. if CHARA_INFO[enemy.id]==nil
  248. CHARA_INFO[enemy.id] = "没有相关资料"
  249. end
  250. self.contents.font.size=16
  251. x+=self.contents.text_size("").width
  252. info = CHARA_INFO[enemy.id]
  253. s=info.scan(/./)
  254. #一行显示21个字
  255. for i in s
  256. sss = self.contents.text_size(i)
  257. if i==" "
  258. y+=16
  259. x=0
  260. elsif (x+sss.width)>(width - 32-260)
  261. y+=16
  262. x=0
  263. self.contents.draw_text(x, y, sss.width, sss.height, i)
  264. x+=sss.width
  265. else
  266. self.contents.draw_text(x, y, sss.width, sss.height, i)
  267. x+=sss.width
  268. end
  269. end
  270. end
  271. #--------------------------------------------------------------------------
  272. # ● 敌人特技描绘
  273. #--------------------------------------------------------------------------
  274. def draw_enemy_action(enemy, x, y)
  275. self.contents.font.size=16
  276. yy=y
  277. self.contents.font.color = system_color
  278. self.contents.draw_text(x, yy, 80, 18,"行动列表")
  279. self.contents.font.color = normal_color
  280. for action in enemy.actions
  281. yy+=18
  282. if action.kind==0
  283. case action.basic
  284. when 0
  285. ac="普通攻击"
  286. when 1
  287. ac="防御"
  288. when 2
  289. ac="逃跑"
  290. when 3
  291. ac="无"
  292. end
  293. self.contents.draw_text(x, yy, 160, 18, ac )
  294. end
  295. if action.kind==1
  296. self.contents.draw_text(x, yy, 160, 18, $data_skills[action.skill_id].name )
  297. end
  298. end
  299. end
  300. #雷达图描绘
  301. #=======================================================================================
  302. def draw_actor_element_radar_graph(actor, x, y)
  303. radius = 56
  304. cx = x + radius + FONT_SIZE + 48
  305. cy = y + radius + FONT_SIZE + 32
  306. self.contents.font.color = system_color
  307. self.contents.draw_text(x, y, 104, 32, WORD_ELEMENT_GUARD)
  308. for loop_i in 0..NUMBER_OF_ELEMENTS
  309. if loop_i == 0
  310. else
  311. @pre_x = @now_x
  312. @pre_y = @now_y
  313. @pre_ex = @now_ex
  314. @pre_ey = @now_ey
  315. @color1 = @color2
  316. end
  317. if loop_i == NUMBER_OF_ELEMENTS
  318. eo = ELEMENT_ORDER[0]
  319. else
  320. eo = ELEMENT_ORDER[loop_i]
  321. end
  322. er = actor.element_rate(eo)
  323. estr = $data_system.elements[eo]
  324. @color2 = er < 0 ? GRAPH_LINE_COLOR_MINUS : er > 100 ? GRAPH_LINE_COLOR_PLUS : GRAPH_LINE_COLOR
  325. if er <0
  326. then xsh=true
  327. else xsh=false
  328. end
  329. er = er.abs
  330. th = Math::PI * (0.5 - 2.0 * loop_i / NUMBER_OF_ELEMENTS)
  331. @now_x = cx + (radius * Math.cos(th)).floor
  332. @now_y = cy - (radius * Math.sin(th)).floor
  333. @now_wx = cx + ((radius+FONT_SIZE*2/2) * Math.cos(th)).floor - FONT_SIZE
  334. @now_wy = cy - ((radius+FONT_SIZE*1/2) * Math.sin(th)).floor - FONT_SIZE/2
  335. @now_vx = cx + ((radius+FONT_SIZE*6/2) * Math.cos(th)).floor - FONT_SIZE
  336. @now_vy = cy - ((radius+FONT_SIZE*3/2) * Math.sin(th)).floor - FONT_SIZE/2
  337. @now_ex = cx + (er*radius/100 * Math.cos(th)).floor
  338. @now_ey = cy - (er*radius/100 * Math.sin(th)).floor
  339. if loop_i == 0
  340. @pre_x = @now_x
  341. @pre_y = @now_y
  342. @pre_ex = @now_ex
  343. @pre_ey = @now_ey
  344. @color1 = @color2
  345. else
  346. end
  347. next if loop_i == 0
  348. self.contents.draw_line(cx+1,cy+1, @now_x+1,@now_y+1, GRAPH_SCALINE_COLOR_SHADOW)
  349. self.contents.draw_line(@pre_x+1,@pre_y+1, @now_x+1,@now_y+1, GRAPH_SCALINE_COLOR_SHADOW)
  350. self.contents.draw_line(cx,cy, @now_x,@now_y, GRAPH_SCALINE_COLOR)
  351. self.contents.draw_line(@pre_x,@pre_y, @now_x,@now_y, GRAPH_SCALINE_COLOR)
  352. self.contents.draw_line(@pre_ex,@pre_ey, @now_ex,@now_ey, @color1, 2, @color2)
  353. self.contents.font.size = FONT_SIZE
  354. if xsh == true
  355. then self.contents.font.color = Color.new(100,255,128,128)
  356. sdd="-"
  357. else self.contents.font.color = system_color
  358. sdd=""
  359. end
  360. self.contents.draw_text(@now_wx,@now_wy, FONT_SIZE*2, FONT_SIZE, estr, 1)
  361. self.contents.font.color = Color.new(255,255,255,128)
  362. self.contents.draw_text(@now_vx,@now_vy, FONT_SIZE*2, FONT_SIZE, sdd+er.to_s + "%", 2)
  363. end
  364. end
  365. #_----------------------------------------------
  366. def draw_race(enemy,x,y)
  367. text="无"
  368. text2="无"
  369. for i in 9..16
  370. if enemy.element_rate(i) == 200
  371. text = $data_system.elements[i]
  372. end
  373. if enemy.element_rate(i) == 150
  374. text2 =$data_system.elements[i]
  375. end
  376. end
  377. self.contents.font.color = system_color
  378. self.contents.draw_text(x, y, 80, 32,"主要种族")
  379. self.contents.font.color = normal_color
  380. self.contents.draw_text(x+80, y, 76, 32,text,2)
  381. self.contents.font.color = system_color
  382. self.contents.draw_text(x+160, y, 80, 32,"次要种族")
  383. self.contents.font.color = normal_color
  384. self.contents.draw_text(x+80+160, y, 76, 32,text2,2)
  385. end
  386. #--------------------------------------------------------------------------
  387. # ● エネミーの名前の描画
  388. # enemy : エネミー
  389. # x : 描画先 X 座標
  390. # y : 描画先 Y 座標
  391. #--------------------------------------------------------------------------
  392. def draw_enemy_name(enemy, x, y)
  393. self.contents.font.color = normal_color
  394. self.contents.draw_text(x, y, 152, 32, enemy.name)
  395. end
  396. #--------------------------------------------------------------------------
  397. # ● エネミーグラフィックの描画(アナライズ)
  398. # enemy : エネミー
  399. # x : 描画先 X 座標
  400. # y : 描画先 Y 座標
  401. #--------------------------------------------------------------------------
  402. def draw_enemy_graphic(enemy, x, y, opacity = 255)
  403. end
  404. #--------------------------------------------------------------------------
  405. # ● エネミーの獲得EXPの描画
  406. # enemy : エネミー
  407. # x : 描画先 X 座標
  408. # y : 描画先 Y 座標
  409. #--------------------------------------------------------------------------
  410. def draw_enemy_exp(enemy, x, y)
  411. self.contents.font.color = system_color
  412. self.contents.draw_text(x, y, 120, 32, "EXP")
  413. self.contents.font.color = normal_color
  414. self.contents.draw_text(x + 120, y, 36, 32, enemy.exp.to_s, 2)
  415. end
  416. #--------------------------------------------------------------------------
  417. # ● エネミーの獲得GOLDの描画
  418. # enemy : エネミー
  419. # x : 描画先 X 座標
  420. # y : 描画先 Y 座標
  421. #--------------------------------------------------------------------------
  422. def draw_enemy_gold(enemy, x, y)
  423. self.contents.font.color = system_color
  424. self.contents.draw_text(x, y, 120, 32, "掉落金钱")
  425. self.contents.font.color = normal_color
  426. self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
  427. end
  428. end
  429. class Game_Enemy_Book < Game_Enemy
  430. #--------------------------------------------------------------------------
  431. # ● オブジェクト初期化
  432. #--------------------------------------------------------------------------
  433. def initialize(enemy_id)
  434. super(2, 1)#ダミー
  435. @enemy_id = enemy_id
  436. enemy = $data_enemies[@enemy_id]
  437. @battler_name = enemy.battler_name
  438. @battler_hue = enemy.battler_hue
  439. @hp = maxhp
  440. @sp = maxsp
  441. end
  442. end
  443. class Data_MonsterBook
  444. attr_reader :id_data
  445. #--------------------------------------------------------------------------
  446. # ● オブジェクト初期化
  447. #--------------------------------------------------------------------------
  448. def initialize
  449. @id_data = enemy_book_id_set
  450. end
  451. #--------------------------------------------------------------------------
  452. # ● 図鑑用登録無視属性取得
  453. #--------------------------------------------------------------------------
  454. def no_add_element
  455. no_add = 0
  456. # 登録無視の属性IDを取得
  457. for i in 1...$data_system.elements.size
  458. if $data_system.elements[i] =~ /不加入图鉴/
  459. no_add = i
  460. break
  461. end
  462. end
  463. return no_add
  464. end
  465. #--------------------------------------------------------------------------
  466. # ● 図鑑用敵ID設定
  467. #--------------------------------------------------------------------------
  468. def enemy_book_id_set
  469. data = [0]
  470. no_add = no_add_element
  471. # 登録無視の属性IDを取得
  472. for i in 1...$data_enemies.size
  473. enemy = $data_enemies[i]
  474. next if enemy.name == ""
  475. if enemy.element_ranks[no_add] == 1
  476. next
  477. end
  478. data.push(enemy.id)
  479. end
  480. return data
  481. end
  482. end

  483. class Window_MonsterBook < Window_Selectable
  484. attr_reader :data
  485. #--------------------------------------------------------------------------
  486. # ● オブジェクト初期化
  487. #--------------------------------------------------------------------------
  488. def initialize(index=0)
  489. super(0, 64, 640, 416)
  490. @column_max = 2
  491. @book_data = $game_temp.enemy_book_data
  492. @data = @book_data.id_data.dup
  493. @data.shift
  494. #@data.sort!
  495. @item_max = @data.size
  496. self.index = 0
  497. refresh if @item_max > 0
  498. end
  499. #--------------------------------------------------------------------------
  500. # ● 遭遇データを取得
  501. #--------------------------------------------------------------------------
  502. def data_set
  503. data = $game_party.enemy_info.keys
  504. data.sort!
  505. newdata = []
  506. for i in data
  507. next if $game_party.enemy_info[i] == 0
  508. # 図鑑登録無視を考慮
  509. if book_id(i) != nil
  510. newdata.push(i)
  511. end
  512. end
  513. return newdata
  514. end
  515. #--------------------------------------------------------------------------
  516. # ● 表示許可取得
  517. #--------------------------------------------------------------------------
  518. def show?(id)
  519. if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil
  520. return false
  521. else
  522. return true
  523. end
  524. end
  525. #--------------------------------------------------------------------------
  526. # ● 図鑑用ID取得
  527. #--------------------------------------------------------------------------
  528. def book_id(id)
  529. return @book_data.index(id)
  530. end
  531. #--------------------------------------------------------------------------
  532. # ● エネミー取得
  533. #--------------------------------------------------------------------------
  534. def item
  535. return @data[self.index]
  536. end
  537. #--------------------------------------------------------------------------
  538. # ● リフレッシュ
  539. #--------------------------------------------------------------------------
  540. def refresh
  541. if self.contents != nil
  542. self.contents.dispose
  543. self.contents = nil
  544. end
  545. self.contents = Bitmap.new(width - 32, row_max * 32)
  546. #項目数が 0 でなければビットマップを作成し、全項目を描画
  547. if @item_max > 0
  548. for i in 0...@item_max
  549. draw_item(i)
  550. end
  551. end
  552. end
  553. #--------------------------------------------------------------------------
  554. # ● 項目の描画
  555. # index : 項目番号
  556. #--------------------------------------------------------------------------
  557. def draw_item(index)
  558. enemy = $data_enemies[@data[index]]
  559. return if enemy == nil
  560. x = 4 + index % 2 * (288 + 32)
  561. y = index / 2 * 32
  562. rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  563. self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  564. self.contents.font.color = normal_color
  565. draw_enemy_book_id(enemy, x, y)
  566. if show?(enemy.id)
  567. self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
  568. else
  569. self.contents.draw_text(x + 28+16, y, 212, 32, "-----", 0)
  570. return
  571. end
  572. if analyze?(@data[index])
  573. self.contents.font.color = text_color(3)
  574. self.contents.draw_text(x + 256, y, 24, 32, "済", 2)
  575. end
  576. end
  577. #--------------------------------------------------------------------------
  578. # ● アナライズ済かどうか
  579. #--------------------------------------------------------------------------
  580. def analyze?(enemy_id)
  581. if $game_party.enemy_info[enemy_id] == 2
  582. return true
  583. else
  584. return false
  585. end
  586. end
  587. end

  588. class Window_MonsterBook_Info < Window_Base
  589. include Enemy_Book_Config
  590. #--------------------------------------------------------------------------
  591. # ● オブジェクト初期化
  592. #--------------------------------------------------------------------------
  593. def initialize
  594. super(0, 0+64, 640, 480-64)
  595. self.back_opacity=255
  596. self.contents = Bitmap.new(width - 32, height - 32)
  597. end
  598. #--------------------------------------------------------------------------
  599. # ● リフレッシュ
  600. #--------------------------------------------------------------------------
  601. def refresh(enemy_id)
  602. self.contents.clear
  603. self.contents.font.size = 22
  604. enemy = Game_Enemy_Book.new(enemy_id)
  605. @gra = Sprite_Enemy_Graphic.new(nil,enemy)
  606. @gra.z = 120 #怪物图片
  607. draw_enemy_book_id(enemy, 4, 0) #各种详细信息
  608. draw_enemy_name(enemy, 48, 0)
  609. draw_actor_hp(enemy, 288, 0)
  610. draw_actor_sp(enemy, 288+160, 0)
  611. self.contents.font.size=18
  612. draw_actor_parameter(enemy, 288 , 25, 0)
  613. self.contents.font.color = system_color
  614. self.contents.draw_text(288+160, 25, 120, 32, EVA_NAME)
  615. self.contents.font.color = normal_color
  616. self.contents.draw_text(288+160 + 120, 25, 36, 32, enemy.eva.to_s, 2)
  617. draw_actor_parameter(enemy, 288 , 50, 3)
  618. draw_actor_parameter(enemy, 288+160, 50, 4)
  619. draw_actor_parameter(enemy, 288 , 75, 5)
  620. draw_actor_parameter(enemy, 288+160, 75, 6)
  621. draw_actor_parameter(enemy, 288 , 100, 1)
  622. draw_actor_parameter(enemy, 288+160, 100, 2)
  623. draw_enemy_exp(enemy, 288, 125)
  624. draw_enemy_gold(enemy, 288+160, 125)
  625. draw_race(enemy, 288, 150)
  626. #--------------------------------------------------------------------
  627. draw_enemy_other(enemy, 0, 280) #简介文字
  628. draw_enemy_action(enemy,200, 30) #显示敌人行动
  629. draw_actor_element_radar_graph(enemy, 360, 180)#雷达图
  630. #--------------------------------------------------------------------
  631. if DROP_ITEM_NEED_ANALYZE==true #掉落物品
  632. self.contents.font.color = system_color
  633. self.contents.font.size=16
  634. self.contents.draw_text(0, 235, 96, 32, "掉落物品")
  635. draw_enemy_drop_item(enemy, 128, 235)
  636. self.contents.font.color = normal_color
  637. self.contents.font.size=18
  638. end
  639. end
  640. def cl
  641. @gra.dispose
  642. end
  643. #--------------------------------------------------------------------------
  644. # ● アナライズ済かどうか
  645. #--------------------------------------------------------------------------
  646. def analyze?(enemy_id)
  647. if $game_party.enemy_info[enemy_id] == 2
  648. return true
  649. else
  650. return false
  651. end
  652. end
  653. end

  654. class Scene_MonsterBook
  655. include Enemy_Book_Config
  656. #--------------------------------------------------------------------------
  657. # ● メイン処理
  658. #--------------------------------------------------------------------------
  659. def main
  660. $game_temp.enemy_book_data = Data_MonsterBook.new
  661. # ウィンドウを作成
  662. @title_window = Window_Base.new(0, 0, 640, 64)
  663. @title_window.contents = Bitmap.new(640 - 32, 64 - 32)
  664. @title_window.contents.draw_text(4, 0, 320, 32, "魔物图鉴", 0)
  665. if SHOW_COMPLETE_TYPE != 0
  666. case SHOW_COMPLETE_TYPE
  667. when 1
  668. e_now = $game_party.enemy_book_now
  669. e_max = $game_party.enemy_book_max
  670. text = e_now.to_s + "/" + e_max.to_s
  671. when 2
  672. comp = $game_party.enemy_book_complete_percentage
  673. text = comp.to_s + "%"
  674. when 3
  675. e_now = $game_party.enemy_book_now
  676. e_max = $game_party.enemy_book_max
  677. comp = $game_party.enemy_book_complete_percentage
  678. text = e_now.to_s + "/" + e_max.to_s + " " + comp.to_s + "%"
  679. end
  680. if text != nil
  681. @title_window.contents.draw_text(320, 0, 288, 32, text, 2)
  682. end
  683. end
  684. @main_window = Window_MonsterBook.new
  685. @main_window.active = true
  686. # インフォウィンドウを作成 (不可視・非アクティブに設定)
  687. @info_window = Window_MonsterBook_Info.new
  688. @info_window.z = 110
  689. @info_window.visible = false
  690. @info_window.active = false
  691. @visible_index = 0
  692. # トランジション実行
  693. Graphics.transition
  694. # メインループ
  695. loop do
  696. # ゲーム画面を更新
  697. Graphics.update
  698. # 入力情報を更新
  699. Input.update
  700. # フレーム更新
  701. update
  702. # 画面が切り替わったらループを中断
  703. if $scene != self
  704. break
  705. end
  706. end
  707. # トランジション準備
  708. Graphics.freeze
  709. # ウィンドウを解放
  710. @main_window.dispose
  711. @info_window.dispose
  712. @title_window.dispose
  713. end
  714. #--------------------------------------------------------------------------
  715. # ● フレーム更新
  716. #--------------------------------------------------------------------------
  717. def update
  718. # ウィンドウを更新
  719. @main_window.update
  720. @info_window.update
  721. # gra.update
  722. if @info_window.active
  723. update_info
  724. return
  725. end
  726. # メインウィンドウがアクティブの場合: update_target を呼ぶ
  727. if @main_window.active
  728. update_main
  729. return
  730. end
  731. end
  732. #--------------------------------------------------------------------------
  733. # ● フレーム更新 (メインウィンドウがアクティブの場合)
  734. #--------------------------------------------------------------------------
  735. def update_main
  736. # B ボタンが押された場合
  737. if Input.trigger?(Input::B)
  738. # キャンセル SE を演奏
  739. $game_system.se_play($data_system.cancel_se)
  740. $scene = Scene_Menu.new(7)
  741. return
  742. end
  743. # C ボタンが押された場合
  744. if Input.trigger?(Input::C)
  745. if @main_window.item == nil or @main_window.show?(@main_window.item) == false
  746. # ブザー SE を演奏
  747. $game_system.se_play($data_system.buzzer_se)
  748. return
  749. end
  750. # 決定 SE を演奏
  751. $game_system.se_play($data_system.decision_se)
  752. @main_window.active = false
  753. @info_window.active = true
  754. @info_window.visible = true
  755. @visible_index = @main_window.index
  756. @info_window.refresh(@main_window.item)
  757. return
  758. end
  759. end
  760. #--------------------------------------------------------------------------
  761. # ● フレーム更新 (インフォウィンドウがアクティブの場合)
  762. #--------------------------------------------------------------------------
  763. def update_info
  764. # B ボタンが押された場合
  765. if Input.trigger?(Input::B)
  766. # キャンセル SE を演奏
  767. $game_system.se_play($data_system.cancel_se)
  768. @main_window.active = true
  769. @info_window.active = false
  770. @info_window.visible = false
  771. @info_window.cl
  772. return
  773. end
  774. # C ボタンが押された場合
  775. if Input.trigger?(Input::C)
  776. # 決定 SE を演奏
  777. #$game_system.se_play($data_system.decision_se)
  778. return
  779. end
  780. if Input.trigger?(Input::L)
  781. # 決定 SE を演奏
  782. $game_system.se_play($data_system.decision_se)
  783. loop_end = false
  784. while loop_end == false
  785. if @visible_index != 0
  786. @visible_index -= 1
  787. else
  788. @visible_index = @main_window.data.size - 1
  789. end
  790. loop_end = true if @main_window.show?(@main_window.data[@visible_index])
  791. end
  792. @info_window.cl
  793. id = @main_window.data[@visible_index]
  794. @info_window.refresh(id)
  795. return
  796. end
  797. if Input.trigger?(Input::R)
  798. # 決定 SE を演奏
  799. $game_system.se_play($data_system.decision_se)
  800. loop_end = false
  801. while loop_end == false
  802. if @visible_index != @main_window.data.size - 1
  803. @visible_index += 1
  804. else
  805. @visible_index = 0
  806. end
  807. loop_end = true if @main_window.show?(@main_window.data[@visible_index])
  808. end
  809. @info_window.cl
  810. id = @main_window.data[@visible_index]
  811. @info_window.refresh(id)
  812. return
  813. end
  814. end
  815. end
  816. #==============================================================================
  817. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  818. #==============================================================================
  819. class Sprite_Enemy_Graphic< Sprite
  820. attr_accessor :enemy
  821. #--------------------------------------------------------------------------
  822. # ● オブジェクト初期化
  823. #--------------------------------------------------------------------------
  824. def initialize(viewport,enemy)
  825. super(viewport)
  826. if @enemy != enemy
  827. self.bitmap = RPG::Cache.battler(enemy.battler_name, enemy.battler_hue)
  828. cw = self.bitmap.width
  829. ch = self.bitmap.height
  830. if cw>ch
  831. self.zoom_x=200.0/cw
  832. self.zoom_y=200.0/cw
  833. else
  834. self.zoom_x=200.0/ch
  835. self.zoom_y=200.0/ch
  836. end
  837. self.x=10
  838. self.y=110
  839. @enemy=enemy
  840. end
  841. end
  842. #--------------------------------------------------------------------------
  843. # ● 解放
  844. #--------------------------------------------------------------------------
  845. def dispose
  846. if self.bitmap != nil
  847. self.bitmap.dispose
  848. end
  849. super
  850. end
  851. #--------------------------------------------------------------------------
  852. # ● フレーム更新
  853. #--------------------------------------------------------------------------
  854. def refresh(enemy)
  855. end
  856. end
复制代码

’’


‘‘──Mr.Faint于2012-4-9 14:49补充以下内容

RTAB脚本是日站的1.16,现在进入图鉴选择怪物查看详细信息的时候会出现这个……

’’

点评

- -b怪物图鉴脚本不复杂吧。主要就是排排版而已,可以考虑自己写个,有时整合别人脚本还不如自己写得快...  发表于 2012-4-9 14:25
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2763
在线时间
1603 小时
注册时间
2010-10-22
帖子
1058
4
发表于 2012-4-9 16:40:53 | 只看该作者
本帖最后由 kangxi0109 于 2012-4-9 16:42 编辑
  1. @enemy_id = troop.members[@member_index].enemy_id
复制代码
这句脚本是为了记录战斗中遇到的敌人id吧...是记录图鉴用的吧?
【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
【不可阻挡】异元-地劫黎明
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
71 小时
注册时间
2010-9-20
帖子
104
5
 楼主| 发表于 2012-4-9 20:32:55 | 只看该作者
kangxi0109 发表于 2012-4-9 16:40
这句脚本是为了记录战斗中遇到的敌人id吧...是记录图鉴用的吧?

嗯没错=。= 可是不读取id就不会自动排序,还是会出错的所以不能删掉这句QAQ


‘‘──Mr.Faint于2012-4-10 13:05补充以下内容

新开工程的话还是回合Game_Enemy里的enemy_id冲突……这图鉴脚本难道是没法用的?
’’
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-23 03:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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