Project1

标题: XP,如何实现同一地图不同区域遇到不同的怪物 [打印本页]

作者: 傀儡马夫    时间: 昨天 19:09
标题: XP,如何实现同一地图不同区域遇到不同的怪物
在下新人,地图可以设定敌人队伍,但是貌似都是随机刷的,有没有什么办法不同区域刷新不同的怪物,我现在是用了一堆的触发事件来实现,弊端就是地图一打开,全是事件方块……不知道大神有没有更好的办法,小弟在此拜谢了~~
作者: 无忧谷主幻    时间: 昨天 19:28
1,最简单的方法,把一个大地图拆分成复数小地图
2,做成明雷或暗雷
作者: 无忧谷主幻    时间: 15 小时前
3,如果以上皆不愿的话
RUBY 代码复制
  1. encounter_list = $game_map.encounter_list
  2. encounter_list.clear
  3. $game_map.encounter_list.push(2)
  4. $game_map.encounter_list.push(3)

将(2)和(3)替换为你实际的怪物队伍ID即可
另外如果你还想保留原有队伍列表,前两行可以不用加
作者: 傀儡马夫    时间: 7 小时前
无忧谷主幻 发表于 2025-10-22 04:00
3,如果以上皆不愿的话
encounter_list = $game_map.encounter_list
encounter_list.clear

感谢大神赐教,我研究研究~~拜谢~~~
作者: 灯笼菜刀王    时间: 7 小时前
RUBY 代码复制
  1. class Game_Map
  2.   def encounter_list
  3.     return [] if (f=@map.encounter_list).empty?
  4.     tag = 1.to_s
  5.     return f.find_all{|i| $data_troops[i].name[/【(\d+)】/] ;
  6.     ($1.nil? or $1 == tag)}
  7.   end
  8. end


把这段脚本塞到 main 之前

然后, 你就可以在敌群的名字里添加 【1】 作为不同区域的标志, 在该区域里就只会出现带有对应数字标志的敌群(没有设置【数字】的敌群视为通用敌群,任何区域都会出现)

接下来, 就是如何定义"区域"

1, 用变量法, 在区域入口处铺上"接触执行"的事件, 事件内容为改变指定变量的数值从而实现区域区分 ; 这种做法需要把脚本第4行的 tag = 1.to_s 改成 tag = $game_variables[10086].to_s ; 10086换成你要指定的变量ID

2, 地形标志法, 通过不同的地形标志来区分区域 ; 这种做法需要把tag = 1.to_s 改成 tag = terrain_tag($game_player.x, $game_player.y).to_s

3, 扩展法, 使用脚本定义区域ID等
这种做法把 tag = 1.to_s 改成脚本提供的区域ID函数就行了 (记得最后要加上 .to_s 点不要漏了哦)

PS: 没测试, 有问题再说






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