设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 懒人
打印 上一主题 下一主题

如何用变量生成文件

 关闭 [复制链接]

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

11
发表于 2008-5-24 05:41:06 | 只看该作者
讀取腳本先於開始遊戲及生成必要實例...你們都無留意到是第一行出錯咩?
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1702
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

12
发表于 2008-5-24 05:59:22 | 只看该作者
我想问问,可以不可以把某些变量或者开关自动输出,然后在下次开始的时候读入呢。
例如获得的物品等等可以作为图鉴什么的,可以下次进入游戏的时候欣赏……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

13
发表于 2008-5-24 06:02:06 | 只看该作者
以下引用禾西于2008-5-22 23:22:13的发言:
好像可以用 Marshal.load( ) 函數

再一次純引。記錄腳本就是這樣操作的。把變量記下,下次讀取
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

14
发表于 2008-5-24 06:14:55 | 只看该作者
給個例子你們好了:
#==============================================================================
# ■ Scene_Save
#------------------------------------------------------------------------------
#  处理存档画面的类。
#==============================================================================

class Scene_Save < Scene_File
  #--------------------------------------------------------------------------
  # ● 写入存档数据
  #     file : 写入用文件对像 (已经打开)
  #--------------------------------------------------------------------------
  def write_save_data(file)
    # 生成描绘存档文件用的角色图形
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      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($game_map, file)
    Marshal.dump($game_player, file)
# ----------------------------------

    Marshal.dump($data_weapons, file)
    Marshal.dump($data_armors, file)
    Marshal.dump($data_classes, file)

# ----------------------------------
  end
end
#==============================================================================
# ■ 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)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
# ----------------------------------

    $data_weapons       = Marshal.load(file)
    $data_armors        = Marshal.load(file)
    $data_classes       = 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

這個是是武器改造系統的存檔腳本,裏面增加了三個存儲變量,分別是$data_weapons,$data_armors,$data_classes。目的就是記錄新生成的裝備數據。同樣大家可以自己添加需要記錄的變量。但是爲了防止大量使用而引起衝突。變量最後還是寫在一些默認就會記錄的「實例類」裏面。
比如下面:
class Game_Party

  attr_reader   :pets_got                   # 是否擁有寵物
  attr_reader   :pets_met                   # 是否見過寵物

  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  alias old_method_initialize initialize
  def initialize
    old_method_initialize

    @pets_got = []
    @pets_met = []

  end
  #--------------------------------------------------------------------------
  # ● 加入寵物
  #     actor_id : 寵物 ID
  #--------------------------------------------------------------------------
  def got_pet(actor_id)
    @pets_got =@pets_got|[actor_id]
  end
  #--------------------------------------------------------------------------
  # ● 見過寵物
  #     actor_id : 寵物 ID
  #--------------------------------------------------------------------------
  def met_pet(actor_id)
    @pets_met =@pets_met|[actor_id]
  end
  #--------------------------------------------------------------------------
  # ● 加入同伴
  #     actor_id : 角色 ID
  #--------------------------------------------------------------------------
  def add_actor(actor_id)
    # 获取角色
    actor = $game_actors[actor_id]
    # 同伴人数未满 5 人、本角色不在队伍中的情况下
    if @actors.size < 5 and not @actors.include?(actor)

#-------------------------#
      # 得到寵物          #
      got_pet(actor_id)   #
#-------------------------#

      # 添加角色
      if actor.id == $game_actors[387].id
        @actors.insert(0,actor)
      else
        @actors.push(actor)
      end
      # 还原主角
      $game_player.refresh
    end
  end
end

此腳本是天空之城的精靈圖鑒腳本,裏面伴隨class Game_Party(因爲系統默認需要記錄)生成了兩個儲存變量作爲圖鑒資料使用。在記錄的時候,會伴隨 $game_party 一齊記錄入存檔

|||連帖...我有罪...
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-3-29
帖子
826
15
发表于 2008-5-24 06:15:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

16
发表于 2008-5-24 06:18:05 | 只看该作者
你試試在main以前新建腳本,在空白處打上

if $game_variables != nil
p "拍飛禾西"
else
p "3535腦殘了"
end

看發生甚麽事(笑)
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

17
发表于 2008-5-24 06:27:01 | 只看该作者
数据库在Scene_Title的main
其余全局在 command_new_game或Scene_Load 中
而在main前直接插入非函数或类, 会被当成全局流程来运行
而此时上面两个都未执行
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-3-29
帖子
826
18
发表于 2008-5-24 06:35:19 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-5-1
帖子
364
19
发表于 2008-5-25 03:24:22 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-15
帖子
66
20
 楼主| 发表于 2008-5-25 04:29:53 | 只看该作者
以下引用Stifling于2008-5-24 19:24:22的发言:

问一下,lz这个要来做什么功能,一定要在一开始运行Game.exe时生成?


做解迷类游戏,最好是要在一开始运行Game.exe时生成
先给你10分作为鼓励!
3天内未有更好答案认可3535
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-8-1 22:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表