Project1

标题: XP如何自定怪物区? [打印本页]

作者: 隐藏主角    时间: 2012-1-11 21:20
标题: XP如何自定怪物区?
同题,就像VX版的。
作者: 亿万星辰    时间: 2012-1-11 21:26
用地形标记,结合公共事件
作者: 隐藏主角    时间: 2012-1-11 21:43
能载图教教我吗?
作者: 510035021    时间: 2012-1-12 12:45
隐藏主角 发表于 2012-1-11 21:43
能载图教教我吗?

http://www.tudou.com/playlist/id/7845874/  六大教学视频合集,其中一个有
作者: 510035021    时间: 2012-1-12 12:47
亿万星辰 发表于 2012-1-11 21:26
用地形标记,结合公共事件

条件分歧里有   当地形标志为XX时      吗?
作者: 亿万星辰    时间: 2012-1-12 13:09
510035021 发表于 2012-1-12 12:47
条件分歧里有   当地形标志为XX时      吗?

一个并行事件,根据步数来模拟处理遇敌判断,当满足遇敌前提后,看脚下的地形标志是多少,再根据分歧来做出对应的战斗事件。
作者: 510035021    时间: 2012-1-12 16:27
亿万星辰 发表于 2012-1-12 13:09
一个并行事件,根据步数来模拟处理遇敌判断,当满足遇敌前提后,看脚下的地形标志是多少,再根据分歧来做 ...

懂了,那个“看脚下的地形标志是多少”是用脚本判断对吧!
作者: 亿万星辰    时间: 2012-1-12 17:43
510035021 发表于 2012-1-12 16:27
懂了,那个“看脚下的地形标志是多少”是用脚本判断对吧!

脚本自然是可以的,用变量获取当前位置的地形标志以后再判断也没错。
作者: 510035021    时间: 2012-1-12 17:44
亿万星辰 发表于 2012-1-12 17:43
脚本自然是可以的,用变量获取当前位置的地形标志以后再判断也没错。

变量?如果地形不是矩形的岂不是很麻烦
作者: 亿万星辰    时间: 2012-1-12 17:47
本帖最后由 亿万星辰 于 2012-1-12 17:47 编辑
510035021 发表于 2012-1-12 17:44
变量?如果地形不是矩形的岂不是很麻烦


XP里的地形标志和是否是矩形有关系么?
作者: 510035021    时间: 2012-1-12 17:50
亿万星辰 发表于 2012-1-12 17:47
XP里的地形标志和是否是矩形有关系么?

一个区域啊!判断时不是当X小于多少、大于多少时;当Y小于多少、大于多少时;允许遇敌。如果不是长方形岂不是要很多判断。额,可能判断方法不一样
作者: 亿万星辰    时间: 2012-1-12 17:56
$game_map.terrain_tag($game_player.x,$game_player.y)
作者: 爆焰    时间: 2012-1-16 13:00
区域遇怪,脚本写得很清楚了。不需要我说明了吧?
  1. =begin

  2. ■ 区域遇敌-脚本版 By 茄子
  3. 联系QQ 9244579

  4. 轻松设置某个区域遇敌的敌人ID
  5. 在每个地图上放一个并行事件
  6. 事件内容为脚本(也就是设置该地图的敌人)
  7. 如:
  8. Control_Enemys::RANGS = [
  9. [1,[0,3],[0,3]],
  10. 数据分别为
  11. [数据库里敌人队伍1,[起始X坐标0,目的X坐标3],[起始Y坐标0,目的Y坐标3]]
  12. ==>该敌人ID=1)<== ================>该敌人遇到的范围<=============
  13. 该ID是数据库中队伍的ID,不是敌人的ID。
  14. 遇敌概率还是在地图上设置
  15. 如果不需要区域遇敌,类型 0 = 单独区域遇敌, 1 = 区域遇敌+普通遇敌 , 2 = 普通遇敌
  16. 普通遇敌遇到的就是你原来在地图上设置的敌人了。
  17. Control_Enemys::TYPE = 2
  18. ]
  19. 设置完后在最后需要设置现在地图原来的敌人编号
  20. 如:
  21. 原来地图设置敌人两个编号为 1 2 都是幽灵
  22. Control_Enemys::OLD_ENEMYS = [1,2] 这样以便返回以前的敌人。

  23. =end
  24. module Control_Enemys
  25. OLD_ENEMYS = [1,2]
  26. RANGS = [
  27. [1,[0,3],[0,3]],
  28. [4,[16,19],[0,3]]
  29. ]
  30. TYPE = 0
  31. end
  32. class Game_Player
  33. attr_writer :encounter_count
  34. end
  35. class Game_Map
  36. attr_writer :encounter_list
  37. end
  38. class Scene_Map
  39. def update
  40. loop do
  41. $game_map.update
  42. $game_system.map_interpreter.update
  43. $game_player.update
  44. $game_system.update
  45. $game_screen.update
  46. unless $game_temp.player_transferring
  47. break
  48. end
  49. transfer_player
  50. if $game_temp.transition_processing
  51. break
  52. end
  53. end
  54. @spriteset.update
  55. @message_window.update
  56. if $game_temp.gameover
  57. $scene = Scene_Gameover.new
  58. return
  59. end
  60. if $game_temp.to_title
  61. $scene = Scene_Title.new
  62. return
  63. end
  64. if $game_temp.transition_processing
  65. $game_temp.transition_processing = false
  66. if $game_temp.transition_name == ""
  67. Graphics.transition(20)
  68. else
  69. Graphics.transition(40, "Graphics/Transitions/" +
  70. $game_temp.transition_name)
  71. end
  72. end
  73. if $game_temp.message_window_showing
  74. return
  75. end
  76. if Control_Enemys::TYPE == 1
  77. if $game_player.encounter_count == 0 and Control_Enemys::OLD_ENEMYS != []
  78. unless $game_system.map_interpreter.running? or
  79. $game_system.encounter_disabled
  80. n = rand(Control_Enemys::OLD_ENEMYS.size)
  81. troop_id = Control_Enemys::OLD_ENEMYS[n]
  82. if $data_troops[troop_id] != nil
  83. $game_temp.battle_calling = true
  84. $game_temp.battle_troop_id = troop_id
  85. $game_temp.battle_can_escape = true
  86. $game_temp.battle_can_lose = false
  87. $game_temp.battle_proc = nil
  88. end
  89. end
  90. end
  91. end
  92. else
  93. for i in Control_Enemys::RANGS
  94. if $game_player.x >= i[1][0] and $game_player.x <= i[1][1] and
  95. $game_player.y >= i[2][0] and $game_player.y <= i[2][1]
  96. if $game_player.encounter_count == 0 and i[0] != []
  97. unless $game_system.map_interpreter.running? or
  98. $game_system.encounter_disabled
  99. enemys = []
  100. enemys.push(i[0])
  101. n = rand(enemys.size)
  102. troop_id = enemys[n]
  103. if $data_troops[troop_id] != nil
  104. $game_temp.battle_calling = true
  105. $game_temp.battle_troop_id = troop_id
  106. $game_temp.battle_can_escape = true
  107. $game_temp.battle_can_lose = false
  108. $game_temp.battle_proc = nil
  109. end
  110. end
  111. end
  112. end
  113. end
  114. if Control_Enemys::TYPE == 2
  115. if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  116. unless $game_system.map_interpreter.running? or
  117. $game_system.encounter_disabled
  118. n = rand($game_map.encounter_list.size)
  119. troop_id = $game_map.encounter_list[n]
  120. if $data_troops[troop_id] != nil
  121. $game_temp.battle_calling = true
  122. $game_temp.battle_troop_id = troop_id
  123. $game_temp.battle_can_escape = true
  124. $game_temp.battle_can_lose = false
  125. $game_temp.battle_proc = nil
  126. end
  127. end
  128. end
  129. end
  130. if Input.trigger?(Input::B)
  131. unless $game_system.map_interpreter.running? or
  132. $game_system.menu_disabled
  133. $game_temp.menu_calling = true
  134. $game_temp.menu_beep = true
  135. end
  136. end
  137. if $DEBUG and Input.press?(Input::F9)
  138. $game_temp.debug_calling = true
  139. end
  140. unless $game_player.moving?
  141. if $game_temp.battle_calling
  142. call_battle
  143. elsif $game_temp.shop_calling
  144. call_shop
  145. elsif $game_temp.name_calling
  146. call_name
  147. elsif $game_temp.menu_calling
  148. call_menu
  149. elsif $game_temp.save_calling
  150. call_save
  151. elsif $game_temp.debug_calling
  152. call_debug
  153. end
  154. end
  155. end
  156. end
复制代码





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