赞 | 12 |
VIP | 107 |
好人卡 | 6 |
积分 | 4 |
经验 | 31122 |
最后登录 | 2024-6-29 |
在线时间 | 1606 小时 |
Lv2.观梦者 傻♂逼
- 梦石
- 0
- 星屑
- 374
- 在线时间
- 1606 小时
- 注册时间
- 2007-3-13
- 帖子
- 6562
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
2008年6.1更新发现:
RMXP的数据库实际支持宽度,高度〉500的地图,只是编辑器作了限制。
使用newmap可以建立宽度,高度〉500的地图
但是系统自动为他们涂上背景,要循环500*500次,所以很正常的失败了 {/hx}
2008年6.1再次更新
to:暴风龙,错误修正了 {/cy}
范例更新:
http://rpg.blue/upload_program/files/Save_Map!Yes!_92755880.rar
本脚本修改了
Scene_Load
Scene_Save
Scene_Title
Game_Map
冲突较大
如:
四处留情(一个改事件,一个改地图,能不冲突吗?)
股票(债券系统)
(涉及
Scene_Load
Scene_Save
修改)
本脚本用处:
比如您想在地图的2*2到5*5的地方造一个房子,一般只能用事件.很卡.
使用这个脚本只需要:
edit(mapid,x,y,lv,dat)
就可以修改任意地图,id的任意层的地图元件。
使用本脚本可以延伸出事件的修改//
使用方法:
edit(mapid,x,y,lv,dat)
实现:修改某个地图的某一格
使用:
mapid:要修改的地图id
x,y,lv:要修改的x,y,层(0、1、2)
dat:要替换的内容,不支持自动元件,从384开始
editbymap(mapid,x,y,mapid1,x1,y1,w1,h1)
实现:edit功能只能一格一格修改,不方便。
这个程序可以从其他地图拷贝一块到当前地图。
使用:
mapid:要修改的地图id
x,y:要修改的地图的x,y
mapid1:地图库
x1,y1,w1,h1:从x1,y1开始复制大小为w1,h1的地图元件到mapid的x,y
newmap(h,w,tileset)
实现:创建新地图
使用:
h,w:新地图大小
tileset:地图所使用图块的 ID。
脚本内容:
- #==============================================================================
- # ■ Scene_Load
- #------------------------------------------------------------------------------
- # 处理读档画面的类。
- #==============================================================================
- class Scene_Load < Scene_File
- #--------------------------------------------------------------------------
- # ● 读取存档数据
- # file : 读取用文件对像 (已经打开)
- #--------------------------------------------------------------------------
- def read_save_data(file)
- # 读取描绘存档文件用的角色数据
- characters = Marshal.load(file)
- # 读取测量游戏时间用画面计数
- Graphics.frame_count = Marshal.load(file)
- # 读取各种游戏对像
- $game_system = Marshal.load(file)
- $game_switches = Marshal.load(file)
- $game_variables = Marshal.load(file)
- $game_self_switches = Marshal.load(file)
- $game_screen = Marshal.load(file)
- $game_actors = Marshal.load(file)
- $game_party = Marshal.load(file)
- $game_troop = Marshal.load(file)
- $mapdat = Marshal.load(file)
- $game_map = Marshal.load(file)
- $game_player = Marshal.load(file)
- # 魔法编号与保存时有差异的情况下
- # (加入编辑器的编辑过的数据)
- if $game_system.magic_number != $data_system.magic_number
- # 重新装载地图
- $game_map.setup($game_map.map_id)
- $game_player.center($game_player.x, $game_player.y)
- end
- # 刷新同伴成员
- $game_party.refresh
- end
- end
- #==============================================================================
- # ■ Scene_Title
- #------------------------------------------------------------------------------
- # 处理标题画面的类。
- #==============================================================================
- class Scene_Title
- #--------------------------------------------------------------------------
- # ● 命令 : 新游戏
- #--------------------------------------------------------------------------
- def command_new_game
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
- # 停止 BGM
- Audio.bgm_stop
- # 重置测量游戏时间用的画面计数器
- Graphics.frame_count = 0
- # 生成各种游戏对像
- $game_temp = Game_Temp.new
- $game_system = Game_System.new
- $game_switches = Game_Switches.new
- $game_variables = Game_Variables.new
- $game_self_switches = Game_SelfSwitches.new
- $game_screen = Game_Screen.new
- $game_actors = Game_Actors.new
- $game_party = Game_Party.new
- $game_troop = Game_Troop.new
- $mapdat = []
- for i in 1...1000
- file = sprintf("Data/Map%03d.rxdata", i)
- if FileTest.exist?(file)
- $mapdat.push(load_data(sprintf("Data/Map%03d.rxdata", i)))
- end
- end
- $game_map = Game_Map.new
- $game_player = Game_Player.new
- # 设置初期同伴位置
- $game_party.setup_starting_members
- # 设置初期位置的地图
- $game_map.setup($data_system.start_map_id)
- # 主角向初期位置移动
- $game_player.moveto($data_system.start_x, $data_system.start_y)
- # 刷新主角
- $game_player.refresh
- # 执行地图设置的 BGM 与 BGS 的自动切换
- $game_map.autoplay
- # 刷新地图 (执行并行事件)
- $game_map.update
- # 切换地图画面
- $scene = Scene_Map.new
- end
- end
- #==============================================================================
- # ■ Game_Map
- #------------------------------------------------------------------------------
- # 处理地图的类。包含卷动以及可以通行的判断功能。
- # 本类的实例请参考 $game_map 。
- #==============================================================================
- class Game_Map
- #--------------------------------------------------------------------------
- # ● 设置
- # map_id : 地图 ID
- #--------------------------------------------------------------------------
- def setup(map_id)
- # 地图 ID 记录到 @map_id
- @map_id = map_id
- # 地图文件装载后、设置到 @map
- @map = $mapdat[@map_id-1]#load_data(sprintf("Data/Map%03d.rxdata", @map_id))
- # 定义实例变量设置地图元件信息
- tileset = $data_tilesets[@map.tileset_id]
- @tileset_name = tileset.tileset_name
- @autotile_names = tileset.autotile_names
- @panorama_name = tileset.panorama_name
- @panorama_hue = tileset.panorama_hue
- @fog_name = tileset.fog_name
- @fog_hue = tileset.fog_hue
- @fog_opacity = tileset.fog_opacity
- @fog_blend_type = tileset.fog_blend_type
- @fog_zoom = tileset.fog_zoom
- @fog_sx = tileset.fog_sx
- @fog_sy = tileset.fog_sy
- @battleback_name = tileset.battleback_name
- @passages = tileset.passages
- @priorities = tileset.priorities
- @terrain_tags = tileset.terrain_tags
- # 初始化显示坐标
- @display_x = 0
- @display_y = 0
- # 清除刷新要求标志
- @need_refresh = false
- # 设置地图事件数据
- @events = {}
- for i in @map.events.keys
- @events[i] = Game_Event.new(@map_id, @map.events[i])
- end
- # 设置公共事件数据
- @common_events = {}
- for i in 1...$data_common_events.size
- @common_events[i] = Game_CommonEvent.new(i)
- end
- # 初始化雾的各种信息
- @fog_ox = 0
- @fog_oy = 0
- @fog_tone = Tone.new(0, 0, 0, 0)
- @fog_tone_target = Tone.new(0, 0, 0, 0)
- @fog_tone_duration = 0
- @fog_opacity_duration = 0
- @fog_opacity_target = 0
- # 初始化滚动信息
- @scroll_direction = 2
- @scroll_rest = 0
- @scroll_speed = 4
- end
- #--------------------------------------------------------------------------
- # ● 刷新2
- #--------------------------------------------------------------------------
- def refresh2
- @map = $mapdat[@map_id-1]#load_data(sprintf("Data/Map%03d.rxdata", @map_id))
- end
- end
- #==============================================================================
- # ■ Scene_Save
- #------------------------------------------------------------------------------
- # 处理存档画面的类。
- #==============================================================================
- class Scene_Save < Scene_File
- def write_save_data(file)
- # 生成描绘存档文件用的角色图形
- characters = []
- for i in 0...$game_party.actors.size
- actor = $game_party.actors[i]
- characters.push([actor.character_name, actor.character_hue])
- end
- # 写入描绘存档文件用的角色数据
- Marshal.dump(characters, file)
- # 写入测量游戏时间用画面计数
- Marshal.dump(Graphics.frame_count, file)
- # 增加 1 次存档次数
- $game_system.save_count += 1
- # 保存魔法编号
- # (将编辑器保存的值以随机值替换)
- $game_system.magic_number = $data_system.magic_number
- # 写入各种游戏对像
- Marshal.dump($game_system, file)
- Marshal.dump($game_switches, file)
- Marshal.dump($game_variables, file)
- Marshal.dump($game_self_switches, file)
- Marshal.dump($game_screen, file)
- Marshal.dump($game_actors, file)
- Marshal.dump($game_party, file)
- Marshal.dump($game_troop, file)
- Marshal.dump($mapdat, file)
- Marshal.dump($game_map, file)
- Marshal.dump($game_player, file)
- end
- end
复制代码- def edit(mapid,x,y,lv,dat) #lv=0,1,2
- $mapdat[mapid-1].data[x,y,lv] = dat
- upmap
- end
- def editbymap(mapid,x,y,mapid1,x1,y1,w1,h1) #lv=0,1,2
- #$mapdat[mapid-1].data[x,y,lv] = dat
- x3 = x
- for y2 in x1..h1+(x1-1)
- for x2 in y1..w1+(y1-1)
- $mapdat[mapid-1].data[x3,y,0] = $mapdat[mapid1-1].data[x2,y2,0]
- $mapdat[mapid-1].data[x3,y,1] = $mapdat[mapid1-1].data[x2,y2,1]
- $mapdat[mapid-1].data[x3,y,2] = $mapdat[mapid1-1].data[x2,y2,2]
- x3 = x3+1
- end
- y = y+1
- x3 = x
- end
- upmap
- end
- def newmap(h,w,tileset)
- $mapdat.push(RPG::Map.new(w,h))
- # $mapdat.height = h
- # $mapdat.width = w
- # $mapdat.data = Table.new(h,w,3)
- for x in 0..w
- for y in 0..h
- edit($mapdat.size,x,y,0,384)
- end
- end
- return $mapdat.size
- upmap
- end
- def upmap
- $game_map.refresh2
- $game_map.update
- end
复制代码
截图怎么截捏?
使用草原地图时的范例
for i in 0..4
edit(1,2,2+i,1,488+(i*8))
edit(1,3,2+i,1,489+(i*8))
edit(1,4,2+i,1,490+(i*8))
edit(1,5,2+i,1,491+(i*8))
edit(1,6,2+i,1,492+(i*8))
end |
|