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

Project1

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

[已经解决] XP如何自定怪物区?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2127
在线时间
437 小时
注册时间
2010-11-22
帖子
413
跳转到指定楼层
1
发表于 2012-1-11 21:20:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
同题,就像VX版的。

Lv3.寻梦者

梦石
0
星屑
3176
在线时间
1442 小时
注册时间
2009-7-27
帖子
1454
13
发表于 2012-1-16 13:00:37 | 只看该作者
区域遇怪,脚本写得很清楚了。不需要我说明了吧?
  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
复制代码

博客:我的博客
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

12
发表于 2012-1-12 17:56:12 | 只看该作者
$game_map.terrain_tag($game_player.x,$game_player.y)

评分

参与人数 1星屑 +200 梦石 +2 收起 理由
「旅」 + 200 + 2 认可答案,恭喜你获得由66RPG提供的精美好.

查看全部评分

我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
710
在线时间
217 小时
注册时间
2011-1-26
帖子
690
11
发表于 2012-1-12 17:50:18 | 只看该作者
亿万星辰 发表于 2012-1-12 17:47
XP里的地形标志和是否是矩形有关系么?

一个区域啊!判断时不是当X小于多少、大于多少时;当Y小于多少、大于多少时;允许遇敌。如果不是长方形岂不是要很多判断。额,可能判断方法不一样
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

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


XP里的地形标志和是否是矩形有关系么?
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
710
在线时间
217 小时
注册时间
2011-1-26
帖子
690
9
发表于 2012-1-12 17:44:44 | 只看该作者
亿万星辰 发表于 2012-1-12 17:43
脚本自然是可以的,用变量获取当前位置的地形标志以后再判断也没错。

变量?如果地形不是矩形的岂不是很麻烦
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

8
发表于 2012-1-12 17:43:21 | 只看该作者
510035021 发表于 2012-1-12 16:27
懂了,那个“看脚下的地形标志是多少”是用脚本判断对吧!

脚本自然是可以的,用变量获取当前位置的地形标志以后再判断也没错。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
710
在线时间
217 小时
注册时间
2011-1-26
帖子
690
7
发表于 2012-1-12 16:27:44 | 只看该作者
亿万星辰 发表于 2012-1-12 13:09
一个并行事件,根据步数来模拟处理遇敌判断,当满足遇敌前提后,看脚下的地形标志是多少,再根据分歧来做 ...

懂了,那个“看脚下的地形标志是多少”是用脚本判断对吧!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

6
发表于 2012-1-12 13:09:46 | 只看该作者
510035021 发表于 2012-1-12 12:47
条件分歧里有   当地形标志为XX时      吗?

一个并行事件,根据步数来模拟处理遇敌判断,当满足遇敌前提后,看脚下的地形标志是多少,再根据分歧来做出对应的战斗事件。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
710
在线时间
217 小时
注册时间
2011-1-26
帖子
690
5
发表于 2012-1-12 12:47:57 | 只看该作者
亿万星辰 发表于 2012-1-11 21:26
用地形标记,结合公共事件

条件分歧里有   当地形标志为XX时      吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 04:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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