Project1

标题: 我要造房子V2 [打印本页]

作者: yangff    时间: 2008-9-11 20:19
标题: 我要造房子V2
没错,这个是ForVX的版本哦~~
嘿嘿,加入了事件编辑功能,对地图数据的储存进行了优化,而且可以兼容没添加这个脚本的版本游戏(比如补丁,{/gg})
冲突:
存档类
自动存档
----------------------
修改会自动保存
----------------------
功能
----------------------
copy_ev
把mapid1的id的事件拷贝到mapid的x,y的位置
----------------------
editbymap
editbymap(操作地图id,资源地图id,起始x,起始y,资源地图起始x,资源地图起始y,资源地图结束x,资源地图结束y)
----------------------
不再提供edit方法,由于VX中进行edit非常的麻烦。。。
0000000000000000000000
----------------------
万恶的代码
-----------------------

  1. #废弃代码
  2. module Map
  3.   def self.new(w,h,id)  
  4.     $save_hash[id] = RPG::Map.new(w,h)
  5.     return id
  6.   end
  7. end
  8. #######################################################
  9. #注意,如果你想修改远景图什么的请使用$save_hash[地图id]
  10. $save_hash = {}
  11. #==============================================================================
  12. # ■ Game_Map
  13. #------------------------------------------------------------------------------
  14. #  处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。
  15. #==============================================================================

  16. class Game_Map
  17.   #--------------------------------------------------------------------------
  18.   # ● 定义实例变量
  19.   #--------------------------------------------------------------------------
  20.   attr_reader   :screen                   # 地图画面状态
  21.   attr_reader   :interpreter              # 地图事件解释器
  22.   attr_reader   :display_x                # 画面 X 座标 * 256
  23.   attr_reader   :display_y                # 画面 Y 座标 * 256
  24.   attr_reader   :parallax_name            # 远景图文件名
  25.   attr_reader   :passages                 # 通行列表
  26.   attr_accessor :events                   # 事件
  27.   attr_reader   :vehicles                 # 交通工具
  28.   attr_accessor :need_refresh             # 需要刷新标志
  29.   attr_accessor :map
  30.   #--------------------------------------------------------------------------
  31.   # ● 初始化对像
  32.   #--------------------------------------------------------------------------
  33.   def initialize
  34.     @screen = Game_Screen.new
  35.     @interpreter = Game_Interpreter.new(0, true)
  36.     @map_id = 0
  37.     @display_x = 0
  38.     @display_y = 0
  39.     create_vehicles
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 设置
  43.   #     map_id : 地图 ID
  44.   #--------------------------------------------------------------------------
  45.   def setup(map_id)
  46.     @map_id = map_id
  47.     $save_hash[@map_id] = load_data(sprintf("Data/Map%03d.rvdata", @map_id)) if $save_hash[@map_id] == nil
  48.     @map = $save_hash[@map_id]
  49.     @display_x = 0
  50.     @display_y = 0
  51.     @passages = $data_system.passages
  52.     referesh_vehicles
  53.     setup_events
  54.     setup_scroll
  55.     setup_parallax
  56.     @need_refresh = false
  57.   end
  58. end

  59. #==============================================================================
  60. # ■ Scene_File
  61. #------------------------------------------------------------------------------
  62. #  存档画面及读档画面的类。
  63. #==============================================================================

  64. class Scene_File < Scene_Base
  65.   #--------------------------------------------------------------------------
  66.   # ● 写入存档数据
  67.   #     file : 写入存档对象(已开启)
  68.   #--------------------------------------------------------------------------
  69.   def write_save_data(file)
  70.     characters = []
  71.     for actor in $game_party.members
  72.       characters.push([actor.character_name, actor.character_index])
  73.     end
  74.     $game_system.save_count += 1
  75.     $game_system.version_id = $data_system.version_id
  76.     @last_bgm = RPG::BGM::last
  77.     @last_bgs = RPG::BGS::last
  78.     Marshal.dump(characters,           file)
  79.     Marshal.dump(Graphics.frame_count, file)
  80.     Marshal.dump(@last_bgm,            file)
  81.     Marshal.dump(@last_bgs,            file)
  82.     Marshal.dump($game_system,         file)
  83.     Marshal.dump($game_message,        file)
  84.     Marshal.dump($game_switches,       file)
  85.     Marshal.dump($game_variables,      file)
  86.     Marshal.dump($game_self_switches,  file)
  87.     Marshal.dump($game_actors,         file)
  88.     Marshal.dump($game_party,          file)
  89.     Marshal.dump($game_troop,          file)
  90.     Marshal.dump($game_map,            file)
  91.     Marshal.dump($game_player,         file)
  92.     #
  93.     Marshal.dump($save_hash,           file)
  94.     #
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 读出存档数据
  98.   #     file : 读出存档对象(已开启)
  99.   #--------------------------------------------------------------------------
  100.   def read_save_data(file)
  101.     characters           = Marshal.load(file)
  102.     Graphics.frame_count = Marshal.load(file)
  103.     @last_bgm            = Marshal.load(file)
  104.     @last_bgs            = Marshal.load(file)
  105.     $game_system         = Marshal.load(file)
  106.     $game_message        = Marshal.load(file)
  107.     $game_switches       = Marshal.load(file)
  108.     $game_variables      = Marshal.load(file)
  109.     $game_self_switches  = Marshal.load(file)
  110.     $game_actors         = Marshal.load(file)
  111.     $game_party          = Marshal.load(file)
  112.     $game_troop          = Marshal.load(file)
  113.     $game_map            = Marshal.load(file)
  114.     $game_player         = Marshal.load(file)
  115.     begin
  116.       $save_hash =         Marshal.load(file)
  117.     rescue
  118.       $save_hash = {}
  119.     end
  120.     if $game_system.version_id != $data_system.version_id
  121.       $game_map.setup($game_map.map_id)
  122.       $game_player.center($game_player.x, $game_player.y)
  123.     end
  124.   end
  125. end

  126. #==============================================================================
  127. # ■ Scene_Map
  128. #------------------------------------------------------------------------------
  129. #  处理地图画面的类。
  130. #==============================================================================

  131. class Scene_Map < Scene_Base
  132.   def refresh_spriteset
  133.     @spriteset.dispose
  134.     @spriteset = Spriteset_Map.new
  135.   end
  136. end

  137. #
  138. #editbymap(操作地图id,资源地图id,起始x,起始y,资源地图起始x,资源地图起始y,资源地图结束x,资源地图结束y)
  139. #
  140. def editbymap(map_id,map_id1,x,y,x1,y1,x2,y2)
  141.   $save_hash[map_id1] = load_data(sprintf("Data/Map%03d.rvdata", map_id1)) if $save_hash[map_id1] == nil
  142.   ziyuan = $save_hash[map_id1]
  143.   $save_hash[map_id] = load_data(sprintf("Data/Map%03d.rvdata", map_id)) if $save_hash[map_id] == nil
  144.   yyy = y
  145.   for zz in [0,1,2]
  146.     for xx in x1..x2
  147.       for yy in y1..y2
  148.         $save_hash[map_id].data[x,y,zz] = ziyuan.data[xx,yy,zz]
  149.         y = y +1
  150.       end
  151.       x = x + 1
  152.       y = yyy
  153.     end
  154.   end
  155. end
  156. #
  157. #把mapid1的id的事件拷贝到mapid的x,y的位置
  158. #
  159. def copy_ev(map_id,x,y,map_id1,id)
  160.   begin
  161.     $save_hash[map_id1] = load_data(sprintf("Data/Map%03d.rvdata", map_id1)) if $save_hash[map_id1] == nil
  162.     ziyuan = $save_hash[map_id1]
  163.     $save_hash[map_id] = load_data(sprintf("Data/Map%03d.rvdata", map_id)) if $save_hash[map_id] == nil
  164.     c = ziyuan.events[id].clone
  165.     c.id = $save_hash[map_id].events.size+1
  166.     c.x = x
  167.     c.y = y
  168.     $save_hash[map_id].events[c.id] = c
  169.     if $game_map.map_id == map_id
  170.       $game_map.events[c.id] = Game_Event.new(c.id, $game_map.map.events[c.id])
  171.       $game_map.need_refresh = true
  172.       $game_map.update
  173.       if $scene.is_a?(Scene_Map)
  174.         $scene.refresh_spriteset
  175.       end
  176.     end
  177.     return true
  178.   end
  179.   return false
  180. end
复制代码

作者: yangff    时间: 2008-9-11 20:19
占楼更新

说明:XP版的我要造房子不支持事件,这个支持。
      XP版的我要造房子功能会稍微多一些。。。
作者: 綠色森林    时间: 2008-9-11 20:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2008-9-12 19:33
以下引用綠色森林于2008-9-11 12:41:09的发言:

不知道远景图的盖房子版本什么时候能出,不过把远景建筑物转化为土块就完事了


[本贴由作者于 2008-9-11 12:41:49 最后编辑]

汗………………
作者: 龙轩    时间: 2008-9-12 21:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2008-9-18 02:08
果然,VX区的人气不如XP区
作者: wsffx13    时间: 2008-9-18 06:40
那是由于XP比较成熟,脚本支持多,而VX脚本支持太少了……而默认的战斗系统又不符合大众口味。

看来还得靠楼主来改善啊………
作者: yangff    时间: 2008-9-20 02:44
以下引用wsffx13于2008-9-17 22:40:12的发言:

那是由于XP比较成熟,脚本支持多,而VX脚本支持太少了……而默认的战斗系统又不符合大众口味。

看来还得靠楼主来改善啊………

战斗的插件不是很多吗?
作者: 飯。    时间: 2008-9-20 03:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2008-9-20 03:45
没看懂什么用处{/fd}
作者: 淘金鸭    时间: 2008-9-20 04:10
这是干什么的?
我不明白!
作者: 雪流星    时间: 2008-9-20 18:20
yangff的说明还是一如往昔的模糊啊{/fd}


我来解释一下吧(没有看脚本也没有试用过的解释):
就是从「资源地图」(可以理解成「仓库」地图)拷贝图块(包括事件)
然後替换指定座标的图块/事件。
作者: yangff    时间: 2008-9-20 18:36
以下引用snstar2006于2008-9-20 10:20:55的发言:

yangff的说明还是一如往昔的模糊啊


我来解释一下吧(没有看脚本也没有试用过的解释):
就是从「资源地图」(可以理解成「仓库」地图)拷贝图块(包括事件)
然後替换指定座标的图块/事件。

事件不会被拷贝.
但是你可以像四处留情一样创造事件
作者: yangff    时间: 2008-9-20 18:39
功能不如XP版,VX的图快比较复杂,几乎都是自动元件………………
所以。。。
实在不明白的:http://rpg.blue/viewthread.php?tid=88421
作者: 美兽    时间: 2008-9-22 02:17
以下引用yangff于2008-9-20 10:39:02的发言:

功能不如XP版,VX的图快比较复杂,几乎都是自动元件………………
所以。。。
实在不明白的:http://rpg.blue/viewthread.php?tid=88421


VX的图块表中自动原件与普通块的索引恒定,A图块自动原件起始编号似乎在7000以上?以前做自定义通行时,导出过列表,印象很模糊。
作者: 雪流星    时间: 2008-9-23 18:52
美兽你说的那帖
我有写出一段脚本计算图块的ID

就在你那帖里
连结可以看置顶帖{/hx}
作者: yangff    时间: 2008-9-23 20:05
嘿嘿与其让做游戏的人一个一个点,还不如这样,xp的也很难算
作者: 一路一风尘    时间: 2008-9-24 15:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: 东皇    时间: 2009-2-6 19:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2009-2-6 20:27
XP版的更新:http://rpg.blue/viewthread.php?tid=105060
作者: 黑之翅膀    时间: 2009-5-30 00:43
有图吗? [LINE]1,#dddddd[/LINE]版主对此帖的评论:『灌水+挖坟』,积分『-20』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
作者: 月夜驃鱈    时间: 2009-6-5 03:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: 419565918    时间: 2009-6-8 23:50
以下引用綠色森林于2008-9-11 12:41:09的发言:

不知道远景图的盖房子版本什么时候能出,不过把远景建筑物转化为土块就完事了


[本贴由作者于 2008-9-11 12:41:49 最后编辑]
以下引用zh99998于2008-9-19 19:45:00的发言:

没看懂什么用处
以下引用飯。于2008-9-19 19:27:42的发言:

这个不错不错-w-
可以现在vx绝望只
以下引用yangff于2008-9-19 18:44:13的发言:


以下引用wsffx13于2008-9-17 22:40:12的发言:

那是由于XP比较成熟,脚本支持多,而VX脚本支持太少了……而默认的战斗系统又不符合大众口味。

看来还得靠楼主来改善啊………


战斗的插件不是很多吗?
以下引用yangff于2008-9-11 12:19:38的发言:

占楼更新

说明:XP版的我要造房子不支持事件,这个支持。
     XP版的我要造房子功能会稍微多一些。。。


[本贴由作者于 2008-9-11 12:21:08 最后编辑]

[LINE]1,#dddddd[/LINE]版主对此帖的评论:『蠢引灌水 = =!』,积分『-20』。这些被扣积分的一半会用于对本帖正确答案的悬赏。




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