查看: 3016|回复: 0

[RMVX发布] VX增加地图通行度和图块

[复制链接]
梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-2-21 00:49:51 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 夜狠简单 于 2016-2-22 12:43 编辑

脚本里有注释
首先是需要替换的图块文件夹需要准备的事
[fold] system文件夹.png [/fold]


然后是通行度文件夹,里面的数据不满意的可以删掉
[fold] 保存通行度的文件夹.png [/fold]


打开编辑器
[fold] 打开编辑器.png [/fold]
观察一下A2图块区就行

继续
[fold] 脚本1.png

这里改为了,更换图块的地图必须用新的通行度,
而不更换的地图如果需要有自己的通行度,就添加
进$Tingzhitxd数组里,否则使用默认的通行度
这里建议先弄原来图块的通行度保存[/fold]

因为脚本里地图2,3替换了A2图块,所以测试游戏的时候,会提醒更换了文件
[fold] 提示更换.png [/fold]

存档,并看见游戏里A2图块区里面已经变了
[fold] 地图2.png [/fold]

关掉游戏,地图来回切换几次

[fold] 重新打开编辑器.png

编辑器内的A2图块区变了[/fold]


然后之前脚本里也添加了6号地图有自己的通行度,所以在6号地图上初次测试运行的时候会提示

[fold] 生成通行度提示.png

地图6.png [/fold]



当然,如果我之前做了个游戏,现在想添加新图块做几张新地图更新进去,但是以前的通行度怎么办呢?

那么用下面这个脚本,并且按照上面说的那样准备好素材。准备好素材。准备好素材!尤其是TF文件夹一定要有

然后先建立一张新地图(用原来游戏里的原图块建立的地图。复制一张地图也行,地图名字改为 默认地图通行度)
然后将主角初始位置放在这张地图上,然后运行,生成默认地图通行度。
之后再脚本里添加打算改动的地图通行度ID就行了。

并不知道这个的兼容性如何,脚本应该还能简化,不过应该还是能用的。

[fold=地图处理初始化]#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
#  处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。
#==============================================================================


class Game_Map
  
COPYF = Win32API.new("kernel32","CopyFileA","pp","l")

def copyfile(a,b)
  a = COPYF.call(a,b)
  return a
end

def  mkdir(n)
  return  if FileTest.exist?(n)  
  Dir.mkdir(n)
end



#############################################################
  #--------------------------------------------------------------------------
  # ● 设置
  #     map_id : 地图 ID
  #--------------------------------------------------------------------------
  def setup(map_id)
    @map_id = map_id
    #把格式化的数据写入某个字符串
    @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
    @display_x = 0
    @display_y = 0
    #需要更新图块的地图数组
    $TileA1=[]
#2号3地图更换图块A2
#~   $TileA2=[2,3]
    $TileA2=[]
    $TileA3=[]
    $TileA3_1=[]
    $TileA4=[]
    $TileA5=[]
    $TileB=[]
    $TileC=[]
    $TileD=[]
=begin
停止更新地图的通行度,编辑的时候,把主角放到地图上,并将对应的地图IDn
写入$Tingzhitxd[n]即可保存地图的通行度设置,如果想改动删掉该地图的通行度数据
即可。
=end
    #允许生成通行度的地图
   $Tingzhitxd=[]
   $Tingzhitxd=$Tingzhitxd+$TileA1+$TileA2+$TileA3+$TileA3_1+
   $TileA4+$TileA5+$TileB+$TileC+$TileD
    #添加地图ID 用 $Tingzhitxd.push 如地图5,6  $Tingzhitxd.push 5,6
   
   #$Tingzhitxd.push 1,6 这里添加的话,可以用循环语句来添加啊
   
   #移除重复的地图ID
   $Tingzhitxd=$Tingzhitxd.uniq
   

   
    mname = load_data("Data/MapInfos.rvdata") #读取地图名文件
    mname= mname[map_id].name
if  mname=="默认地图通行度"or $Tingzhitxd.include?(map_id)!=true
    name =  "Mappassages/default/"
    mkdir name.to_s  if $TEST and mname=="默认地图通行度" and FileTest.exist?(name+"System.rvdata") !=true
    p "默认地图通行度已生成" if $TEST and mname=="默认地图通行度" and FileTest.exist?(name+"System.rvdata") !=true
    copyfile "Data/System.rvdata" ,  name+"System.rvdata" if $TEST and mname=="默认地图通行度" and FileTest.exist?(name+"System.rvdata") !=true
    $data_system = load_data("Data/System.rvdata")
    $data_system.passages = load_data(name+"System.rvdata").passages if FileTest.exist?(name+"System.rvdata") ==true
    @passages = $data_system.passages
   else
  name =  "Mappassages/Map_#{map_id}/"
#生成通行度
if $Tingzhitxd.include?(map_id)==true and FileTest.exist?(name+"System.rvdata") !=true
  mkdir name.to_s  if $TEST
copyfile "Data/System.rvdata" ,  name+"System.rvdata" if $TEST
$game_temp.common_event_id =1 if $TEST #调用公共事件1可修改
end

#读取通行度
$data_system = load_data("Data/System.rvdata")
$data_system.passages = load_data(name+"System.rvdata").passages if FileTest.exist?(name+"System.rvdata") ==true
@passages = $data_system.passages
end

#更换文件,请将文件放在Graphics/System下,文件名可修改

############################################################
    map_id=$game_map.map_id
   if  $TileA1.include?(map_id)==true
    if FileTest.exist?("Graphics/System/TileA1-1.png") ==true
File.rename("Graphics/System/TileA1.png", "Graphics/System/TileA1-A.png")
File.rename("Graphics/System/TileA1-1.png", "Graphics/System/TileA1.png")
p "地图图块A1更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块"  if $TEST
     end

else
  

  if FileTest.exist?("Graphics/System/TileA1-A.png") ==true
File.rename("Graphics/System/TileA1.png", "Graphics/System/TileA1-1.png")
File.rename("Graphics/System/TileA1-A.png", "Graphics/System/TileA1.png")
p "地图图块A1更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块"  if $TEST
end

    end
############################################################   
   if  $TileA2.include?(map_id)==true

if FileTest.exist?("Graphics/System/TileA2-1.png") ==true
File.rename("Graphics/System/TileA2.png", "Graphics/System/TileA2-A.png")
File.rename("Graphics/System/TileA2-1.png", "Graphics/System/TileA2.png")
p "地图图块A2更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST
     end

else
  

  if FileTest.exist?("Graphics/System/TileA2-A.png") ==true
File.rename("Graphics/System/TileA2.png", "Graphics/System/TileA2-1.png")
File.rename("Graphics/System/TileA2-A.png", "Graphics/System/TileA2.png")
p "地图图块A2更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST

end
     end
###########################################################   
   if  $TileA3.include?(map_id)==true

if FileTest.exist?("Graphics/System/TileA3-1.png") ==true
File.rename("Graphics/System/TileA3.png", "Graphics/System/TileA3-A.png")
File.rename("Graphics/System/TileA3-1.png", "Graphics/System/TileA3.png")
p "地图图块A3更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST
     end

else
  

  if FileTest.exist?("Graphics/System/TileA3-A.png") ==true

File.rename("Graphics/System/TileA3.png", "Graphics/System/TileA3-1.png")
File.rename("Graphics/System/TileA3-A.png", "Graphics/System/TileA3.png")
p "地图图块A3更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST

end
    end
#########################################################
   if $TileA3_1.include?(map_id)==true

if FileTest.exist?("Graphics/System/TileA3-2.png") ==true
File.rename("Graphics/System/TileA3.png", "Graphics/System/TileA3-B.png")
File.rename("Graphics/System/TileA3-2.png", "Graphics/System/TileA3.png")
p "地图图块A3更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST
     end
#~       @tilemap.bitmaps[0] = Cache.system("TileA-1")
else
  

  if FileTest.exist?("Graphics/System/TileA3-B.png") ==true
File.rename("Graphics/System/TileA3.png", "Graphics/System/TileA3-2.png")
File.rename("Graphics/System/TileA3-B.png", "Graphics/System/TileA3.png")
p "地图图块A3更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST

end
   end
############################################################
   if  $TileA4.include?(map_id)==true

if FileTest.exist?("Graphics/System/TileA4-1.png") ==true
File.rename("Graphics/System/TileA4.png", "Graphics/System/TileA4-A.png")
File.rename("Graphics/System/TileA4-1.png", "Graphics/System/TileA4.png")
p "地图图块A4更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST
     end

else
  

  if FileTest.exist?("Graphics/System/TileA4-A.png") ==true

File.rename("Graphics/System/TileA4.png", "Graphics/System/TileA4-1.png")
File.rename("Graphics/System/TileA4-A.png", "Graphics/System/TileA4.png")
p "地图图块A4更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST

end
   end
############################################################  
   if  $TileA5.include?(map_id)==true
if FileTest.exist?("Graphics/System/TileA5-1.png") ==true
File.rename("Graphics/System/TileA5.png", "Graphics/System/TileA5-A.png")
File.rename("Graphics/System/TileA5-1.png", "Graphics/System/TileA5.png")
p "地图图块A5更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST
     end

else
  

  if FileTest.exist?("Graphics/System/TileA5-A.png") ==true

File.rename("Graphics/System/TileA5.png", "Graphics/System/TileA5-1.png")
File.rename("Graphics/System/TileA5-A.png", "Graphics/System/TileA5.png")
p "地图图块A5更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST

end
    end
#############################################################   
   if  $TileB.include?(map_id)==true

if FileTest.exist?("Graphics/System/TileB-1.png") ==true
File.rename("Graphics/System/TileB.png", "Graphics/System/TileB-A.png")
File.rename("Graphics/System/TileB-1.png", "Graphics/System/TileB.png")
p "地图图块B更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST
     end
#~       @tilemap.bitmaps[0] = Cache.system("TileA-1")
else
  

  if FileTest.exist?("Graphics/System/TileB-A.png") ==true

File.rename("Graphics/System/TileB.png", "Graphics/System/TileB-1.png")
File.rename("Graphics/System/TileB-A.png", "Graphics/System/TileB.png")
p "地图图块B更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST

end
   end
#############################################################   
   if  $TileC.include?(map_id)==true

if FileTest.exist?("Graphics/System/TileC-1.png") ==true
File.rename("Graphics/System/TileC.png", "Graphics/System/TileC-A.png")
File.rename("Graphics/System/TileC-1.png", "Graphics/System/TileC.png")
p "地图图块C更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST
     end
#~       @tilemap.bitmaps[0] = Cache.system("TileA-1")
else
  

  if FileTest.exist?("Graphics/System/TileC-A.png") ==true
File.rename("Graphics/System/TileC.png", "Graphics/System/TileC-1.png")
File.rename("Graphics/System/TileC-A.png", "Graphics/System/TileC.png")
p "地图图块C更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST

end
   end
############################################################   
   if  $TileD.include?(map_id)==true

if FileTest.exist?("Graphics/System/TileD-1.png") ==true
File.rename("Graphics/System/TileD.png", "Graphics/System/TileD-A.png")
File.rename("Graphics/System/TileD-1.png", "Graphics/System/TileD.png")
p "地图图块D更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST
     end

else
  

  if FileTest.exist?("Graphics/System/TileD-A.png") ==true

File.rename("Graphics/System/TileD.png", "Graphics/System/TileD-1.png")
File.rename("Graphics/System/TileD-A.png", "Graphics/System/TileD.png")
p "地图图块D更新完毕,如后面不再提醒即可重新打开RPG VX编辑器读取新地图图块" if $TEST

end
end
############################################################   


    referesh_vehicles
    setup_events
    setup_scroll
    setup_parallax
    @need_refresh = false
  end
end



class Spriteset_Map
  
  def create_tilemap
    @tilemap = Tilemap.new(@viewport1)
   
   
  #需要更新图块的地图数组
    $TileA1=[]
#2号3地图更换图块A2
  #~   $TileA2=[2,3]
    $TileA2=[]
    $TileA3=[]
    $TileA3_1=[]
    $TileA4=[]
    $TileA5=[]
    $TileB=[]
    $TileC=[]
    $TileD=[]
=begin
    备份原系统图块文件到文件夹System/TF内
    如文件System/TF内含有"TileC"则可以注释掉
    @tilemap.bitmaps[6] = Cache.system("TileC")
    改为
    @tilemap.bitmaps[6] = Cache.system("TF/TileC")
=end   
    @tilemap.bitmaps[0] = Cache.system("TileA1")
   #~@tilemap.bitmaps[1] = Cache.system("TileA2")
    @tilemap.bitmaps[1] = Cache.system("TF/TileA2")
    @tilemap.bitmaps[2] = Cache.system("TileA3")
    @tilemap.bitmaps[3] = Cache.system("TileA4")
    @tilemap.bitmaps[4] = Cache.system("TileA5")
    @tilemap.bitmaps[5] = Cache.system("TileB")
    @tilemap.bitmaps[6] = Cache.system("TileC")
    @tilemap.bitmaps[7] = Cache.system("TileD")
    #获取地图ID
    map_id = $game_map.map_id

   
#这里是读取特殊地图用的图块
#读取System/TF-文件夹内的,用到的自己扩展就行
#如用到C图块就加一句 @tilemap.bitmaps[6] = Cache.system("TF-/TileC")
#~ @tilemap.bitmaps[0] = Cache.system("TF-/TileA1-1") if  $TileA1.include?(map_id)==true
@tilemap.bitmaps[1] = Cache.system("TF-/TileA2-1") if  $TileA2.include?(map_id)==true
#~ @tilemap.bitmaps[2] = Cache.system("TF-/TileA3-1") if $TileA3.include?(map_id)==true




@tilemap.bitmaps[8] = Cache.system("TileE")
@tilemap.map_data = $game_map.data
@tilemap.passages = $game_map.passages
  
#ta_map[13]s.passages
end
end[/fold]

地图变化.rar

1.72 MB, 下载次数: 120

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部