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

Project1

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

[已经解决] 随机遇敌 接任务后提示错误

[复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
294 小时
注册时间
2013-5-21
帖子
33
跳转到指定楼层
1
发表于 2013-8-13 21:49:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 rao125 于 2013-8-13 23:51 编辑

战斗测试时,随机遇敌系统是好的,游戏中,遇敌系统也没有问题,但是去工会接到任务后,相对应的怪A就会在地图出来,
我设置的是明雷,一遇见A,就提示随机遇敌系统错误。


脚本如下,请高手帮忙看一下。
  1. #==============================================================================
  2. # vx新遇敌系统 by 沉影不器
  3. # protosssonny修改版
  4. # -----------------------------------------------------------------------------
  5. # 功能描述:
  6. # 根据角色队伍人数决定敌人数
  7. # 在[数据库-敌人队伍]中增加多个不同的敌人;遇敌中,敌人将随机抽取,并自动排列
  8. # 明雷指定敌人ID: 明雷遇敌时,允许指定某个敌人必出现
  9. # -----------------------------------------------------------------------------
  10. # 目前大概是这样,不同敌人有不同出现率(这点还没写 - -!).
  11. # 周末之前没时间,先放出这个粗糙工程,欢迎找bug,礼拜天早上查收意见

  12. # $special_array =[0,1,1,2,2]
  13. #==============================================================================
  14. # ■ Game_Temp
  15. #==============================================================================
  16. class Game_Temp
  17. #--------------------------------------------------------------------------
  18. # ● 定义实例变量
  19. #--------------------------------------------------------------------------
  20. attr_accessor :enemy_id # 指定敌人 ID
  21. #--------------------------------------------------------------------------
  22. # ● 初始化对象
  23. #--------------------------------------------------------------------------
  24. alias ini initialize
  25. def initialize
  26. ini
  27. # 初始化指定敌人 ID
  28. @enemy_id = 0
  29. end
  30. end

  31. #==============================================================================
  32. # ■ Game_Interpreter
  33. #==============================================================================
  34. class Game_Interpreter
  35. #--------------------------------------------------------------------------
  36. # ● 战斗处理
  37. #--------------------------------------------------------------------------
  38. def command_301
  39. return true if $game_temp.in_battle
  40. if @params[0] == 0 # 直接指定
  41. troop_id = @params[1]
  42. else # 使用变量指定
  43. troop_id = $game_variables[@params[1]]
  44. end
  45. # 代入指定敌人 ID
  46. $game_troop.setup(troop_id, $game_temp.enemy_id)
  47. if $data_troops[troop_id] != nil
  48. $game_troop.can_escape = @params[2]
  49. $game_troop.can_lose = @params[3]
  50. $game_temp.battle_proc = Proc.new { |n| @branch[@indent] = n }
  51. $game_temp.next_scene = "battle"
  52. end
  53. [url=home.php?mod=space&uid=370741]@Index[/url] += 1
  54. return false
  55. end
  56. end

  57. #==============================================================================
  58. # ■ Scene_Battle
  59. #==============================================================================
  60. class Scene_Battle < Scene_Base
  61. #--------------------------------------------------------------------------
  62. # ● 结束处理
  63. #--------------------------------------------------------------------------
  64. def terminate
  65. super
  66. # 还原指定敌人 ID
  67. $game_temp.enemy_id = 0
  68. dispose_info_viewport
  69. @message_window.dispose
  70. @spriteset.dispose
  71. unless $scene.is_a?(Scene_Gameover)
  72. $scene = nil if $BTEST
  73. end
  74. end
  75. end

  76. #==============================================================================
  77. # ■ Game_Troop
  78. #==============================================================================
  79. class Game_Troop < Game_Unit
  80. #--------------------------------------------------------------------------
  81. # ● 敌人角色名称后的文字表
  82. #--------------------------------------------------------------------------
  83. LETTER_TABLE = [ 'A','B','C','D','E','F','G','H','I','J',
  84. 'K','L','M','N','O','P','Q','R','S','T',
  85. 'U','V','W','X','Y','Z']
  86. SPACE = 32
  87. #--------------------------------------------------------------------------
  88. # ● 清除
  89. #--------------------------------------------------------------------------
  90. def clear
  91. @screen.clear
  92. @interpreter.clear
  93. @event_flags.clear
  94. @enemies = []
  95. @turn_count = 0
  96. @names_count = {}
  97. @can_escape = false
  98. @can_lose = false
  99. @preemptive = false
  100. @surprise = false
  101. @turn_ending = false
  102. @forcing_battler = nil
  103. # 新坐标数组
  104. @coordinate_x = []
  105. # 敌方新队伍对象
  106. @troop = nil
  107. end
  108. #--------------------------------------------------------------------------
  109. # ○ 获取成员
  110. #--------------------------------------------------------------------------
  111. def members
  112. return @enemies
  113. end
  114. #--------------------------------------------------------------------------
  115. # ○ 获取敌方组对象
  116. #--------------------------------------------------------------------------
  117. def troop
  118. return @troop
  119. end
  120. #--------------------------------------------------------------------------
  121. # ○ 获取敌方组对象
  122. # enemy_id : 敌人 ID
  123. #--------------------------------------------------------------------------
  124. def setup_troop(enemy_id)
  125. # 角色数
  126. party_size = $game_party.members.size
  127. # 指定敌人数
  128. if $game_variables[PA::V_E_N] > 0
  129. enemies_size = $game_variables[PA::V_E_N]
  130. else
  131. case party_size
  132. when 1
  133. enemies_size = 1+rand(2)
  134. when 2
  135. enemies_size = 1+rand(4) #2,4,6,8
  136. when 3
  137. enemies_size = 1+rand(6)
  138. when 4
  139. enemies_size = 1+rand(8)
  140. when 5
  141. enemies_size = 1+rand(8)
  142. end
  143. end
  144. troop_members = []
  145. # 没注意这是实例,晕! @_@
  146. troop_all = $data_troops[@troop_id].clone
  147. # 使敌人组按指定顺序排列,比如在战斗前调用脚本 $special_array =[0,1,1,2,2]
  148. if $special_array != nil
  149. for i in 0...$special_array.size
  150. troop_members.push troop_all.members[$special_array[i]]
  151. end
  152. # 普通遇敌
  153. else
  154. if $game_switches[PA::S_E_O] == false
  155. # 1号ID敌人必须出现在1号位
  156. if $game_switches[PA::S_E_M] == true
  157. enemy_index = 0
  158. for i in 0...enemies_size
  159. troop_members.push troop_all.members[enemy_index]
  160. enemy_index = 1 + rand(troop_all.members.size - 1)
  161. end
  162. else
  163. for i in 0...enemies_size
  164. enemy_index = rand(troop_all.members.size)
  165. troop_members.push troop_all.members[enemy_index]
  166. end
  167. end
  168. end
  169. end
  170. troop_all.members = troop_members
  171. return troop_all
  172. end
  173. #--------------------------------------------------------------------------
  174. # ○ 设定敌人坐标
  175. #--------------------------------------------------------------------------
  176. def setup_coordinate_x
  177. # 获取宽度数组
  178. width = []
  179. # 获取宽度和
  180. width_all = 0
  181. for i in 0...troop.members.size
  182. width.push battle_graphic_width(i)
  183. width_all += width[i]
  184. end
  185. # 计算间距
  186. space = [(Graphics.width-width_all)/(troop.members.size), SPACE].min
  187. space = [(Graphics.width-width_all)/(troop.members.size-1), SPACE].min if troop.members.size > 1
  188. # 预算外
  189. width_all += space * (troop.members.size-1)
  190. # 计算首敌横坐标
  191. x = (Graphics.width - width_all) / 2
  192. x += width[0]/2
  193. x = width[0]/2 if x < width[0]/2
  194. # 循环返回值数组
  195. @coordinate_x.push(x)
  196. for i in 1...troop.members.size
  197. x += width[i-1]/2 + width[i]/2 + space
  198. @coordinate_x.push x
  199. end
  200. end
  201. #--------------------------------------------------------------------------
  202. # ○ 获取敌人战斗图宽度
  203. # index : 敌人队内序号
  204. #--------------------------------------------------------------------------
  205. def battle_graphic_width(index)
  206. id = troop.members[index].enemy_id
  207. battler_name = $data_enemies[id].battler_name
  208. battler_hue = $data_enemies[id].battler_hue
  209. bitmap = Cache.battler(battler_name, battler_hue)
  210. return bitmap.width
  211. end
  212. #--------------------------------------------------------------------------
  213. # ● 设置
  214. # troop_id : 敌方队伍 ID
  215. # enemy_id : 敌人 ID
  216. #--------------------------------------------------------------------------
  217. def setup(troop_id, enemy_id = 0)
  218. clear
  219. @troop_id = troop_id
  220. # 生成敌方队伍
  221. @troop = setup_troop(enemy_id)
  222. # 新坐标重排
  223. setup_coordinate_x
  224. @enemies = []
  225. a = 1
  226. for member in troop.members
  227. next if $data_enemies[member.enemy_id] == nil
  228. enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  229. enemy.hidden = member.hidden
  230. enemy.immortal = member.immortal
  231. case a
  232. when 1
  233. enemy.screen_x = 195
  234. enemy.screen_y = 135
  235. when 2
  236. enemy.screen_x = 185
  237. enemy.screen_y = 205
  238. when 3
  239. enemy.screen_x = 175
  240. enemy.screen_y = 275
  241. when 4
  242. enemy.screen_x = 165
  243. enemy.screen_y = 345
  244. when 5
  245. enemy.screen_x = 115
  246. enemy.screen_y = 135
  247. when 6
  248. enemy.screen_x = 105
  249. enemy.screen_y = 205
  250. when 7
  251. enemy.screen_x = 95
  252. enemy.screen_y = 275
  253. when 8
  254. enemy.screen_x = 85
  255. enemy.screen_y = 345
  256. when 9
  257. enemy.screen_x = 55
  258. enemy.screen_y = 165
  259. when 10
  260. enemy.screen_x = 45
  261. enemy.screen_y = 300
  262. end
  263. a += 1
  264. @enemies.push(enemy)
  265. end
  266. make_unique_names
  267. end
  268. end



复制代码

评分

参与人数 1星屑 -10 收起 理由
怪蜀黍 -10 擅自将标签改为“已经解决”按版规扣分.

查看全部评分

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4699
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

2
发表于 2013-8-13 22:02:42 | 只看该作者
其实是你遇敌设置有错。
注释掉227行试试。
  1. # setup_coordinate_x
复制代码
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
294 小时
注册时间
2013-5-21
帖子
33
3
 楼主| 发表于 2013-8-13 22:52:32 | 只看该作者
protosssonny 发表于 2013-8-13 22:02
其实是你遇敌设置有错。
注释掉227行试试。

注释掉227行又提示错误


敌人设置

请P叔看看

点评

知道原因了,因为之前有设定敌人数量位置,参考了您的范例,发现没有数组还原,导致单人的队伍出错。感谢P叔,P叔威武。。。  发表于 2013-8-13 23:51
没有设置敌人数量。全局搜索V_E_N看看是多少,然后要设置等于这个值的变量为当前敌人的数量。参考我的范例,不要乱设置或不设置。  发表于 2013-8-13 22:56
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 06:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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