演示图.png (237.36 KB, 下载次数: 8)
用插件测试遇敌图
3.png (53.31 KB, 下载次数: 10)
真实游戏遇敌图
3333.jpg (231.62 KB, 下载次数: 13)
192.04 KB, 下载次数: 76
用刀王插件制作遇敌
190.08 KB, 下载次数: 60
用并行事件遇敌制作
module RB end module RB::Region Mask_Name = "Mask" Max_Regions = 64 def self.create_region_png(max_id = 64) back_color = Color.new(128, 128, 128, 128) front_color = Color.new(255, 255, 255, 128) width = 32 * 8 height = max_id / 8 * 32 bitmap = Bitmap.new(width, height) bitmap.fill_rect(0, 0, width, height, back_color) bitmap.font.size = 32 bitmap.font.color = front_color bitmap.font.bold = true max_id.times do |id| x = id % 8 * 32 y = id / 8 * 32 bitmap.draw_text(x, y, 32, 32, id.to_s, 1) end filename = "Graphics/Tilesets/region_id_#{max_id}.png" bitmap.save_as_png(filename) bitmap.dispose end def self.append_region_png(tileset_filename, region_filename) basename = File.basename(tileset_filename, ".png") bitmap_tileset = Bitmap.new("Graphics/Tilesets/#{tileset_filename}") bitmap_region = Bitmap.new("Graphics/Tilesets/#{region_filename}") bitmap_out = Bitmap.new(bitmap_tileset.width, bitmap_tileset.height + bitmap_region.height) bitmap_out.blt(0, 0, bitmap_tileset, Rect.new(0, 0, bitmap_tileset.width, bitmap_tileset.height)) bitmap_out.blt(0, bitmap_tileset.height, bitmap_region, Rect.new(0, 0, bitmap_region.width, bitmap_region.height)) bitmap_out.save_as_png("Graphics/Tilesets/#{basename}_r.png") bitmap_out.dispose bitmap_tileset.dispose bitmap_region.dispose end end class Scene_Title alias rb_main_20190824 main def main mapinfos = load_data("Data/MapInfos.rxdata") $region_masks = {} mapinfos.each_pair do |i, info| if info.name == RB::Region::Mask_Name $region_masks[info.parent_id] = i end end rb_main_20190824 end end class Game_Map alias rb_setup_20190824 setup def setup(map_id) @mask_id = $region_masks[map_id] @mask = nil if @mask_id != nil @mask = load_data(sprintf("Data/Map%03d.rxdata", @mask_id)) mask_tileset_bmp = RPG::Cache.tileset($data_tilesets[@mask.tileset_id].tileset_name) @num_tiles = (mask_tileset_bmp.width) / 32 * (mask_tileset_bmp.height / 32) end rb_setup_20190824(map_id) end def region_id(x, y) if @mask == nil return -1 end tile_id = @mask.data[x, y, 2] return [-1, tile_id - 384 - (@num_tiles - RB::Region::Max_Regions)].max end end class Game_Character def region_id return $game_map.region_id(@x, @y) end end
$game_map.region_id(x, y) # 获取坐标为 (x, y) 的区域 ID $game_player.region_id # 获取主角当前坐标的区域 ID
# 生成一个纯区域 ID 的素材,存放在 Graphics/Tilesets 文件夹下,64 表示区域 ID 总共 64 种 RB::Region.create_region_png(64) # 将纯区域 ID 素材拼接到地图图块素材后面 RB::Region.append_region_png("001-Grassland01.png", "region_id_64.png")
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |