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

Project1

 找回密码
 注册会员
搜索
查看: 1772|回复: 2
打印 上一主题 下一主题

怎么做游戏的开头?

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-5-27
帖子
14
跳转到指定楼层
1
发表于 2008-6-10 00:41:36 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

忆颐

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-4-26
帖子
2048
3
发表于 2008-6-10 01:20:35 | 只看该作者
跳过标题画面:

用这个脚本替换Scene_Title,就可以跳过标题画面,点击运行就直接从玩家在第一张地图开始进行了。
  1. #==============================================================================
  2. # ■ Scene_Title
  3. #------------------------------------------------------------------------------
  4. #  处理标题画面的类。
  5. #==============================================================================

  6. class Scene_Title < Scene_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     if $BTEST                         # 战斗测试的情况
  12.       battle_test                     # 开始处理战斗测试
  13.     else                              # 一般处理
  14.       super                           # 返回原来的主处理
  15.     end
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 开始处理
  19.   #--------------------------------------------------------------------------
  20.   def start
  21.     super
  22.     load_database                     # 读取数据库
  23.     create_game_objects               # 生成游戏对象
  24.     check_continue                    # 继续游戏的有效判定
  25.     command_new_game
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 执行过渡
  29.   #--------------------------------------------------------------------------
  30.   def perform_transition
  31.     Graphics.transition(20)
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 结束处理
  35.   #--------------------------------------------------------------------------
  36.   def terminate
  37.     super
  38.     snapshot_for_background
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 读取数据库
  42.   #--------------------------------------------------------------------------
  43.   def load_database
  44.     $data_actors        = load_data("Data/Actors.rvdata")
  45.     $data_classes       = load_data("Data/Classes.rvdata")
  46.     $data_skills        = load_data("Data/Skills.rvdata")
  47.     $data_items         = load_data("Data/Items.rvdata")
  48.     $data_weapons       = load_data("Data/Weapons.rvdata")
  49.     $data_armors        = load_data("Data/Armors.rvdata")
  50.     $data_enemies       = load_data("Data/Enemies.rvdata")
  51.     $data_troops        = load_data("Data/Troops.rvdata")
  52.     $data_states        = load_data("Data/States.rvdata")
  53.     $data_animations    = load_data("Data/Animations.rvdata")
  54.     $data_common_events = load_data("Data/CommonEvents.rvdata")
  55.     $data_system        = load_data("Data/System.rvdata")
  56.     $data_areas         = load_data("Data/Areas.rvdata")
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 战斗测试用的读取数据库
  60.   #--------------------------------------------------------------------------
  61.   def load_bt_database
  62.     $data_actors        = load_data("Data/BT_Actors.rvdata")
  63.     $data_classes       = load_data("Data/BT_Classes.rvdata")
  64.     $data_skills        = load_data("Data/BT_Skills.rvdata")
  65.     $data_items         = load_data("Data/BT_Items.rvdata")
  66.     $data_weapons       = load_data("Data/BT_Weapons.rvdata")
  67.     $data_armors        = load_data("Data/BT_Armors.rvdata")
  68.     $data_enemies       = load_data("Data/BT_Enemies.rvdata")
  69.     $data_troops        = load_data("Data/BT_Troops.rvdata")
  70.     $data_states        = load_data("Data/BT_States.rvdata")
  71.     $data_animations    = load_data("Data/BT_Animations.rvdata")
  72.     $data_common_events = load_data("Data/BT_CommonEvents.rvdata")
  73.     $data_system        = load_data("Data/BT_System.rvdata")
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 做成各种游戏对象
  77.   #--------------------------------------------------------------------------
  78.   def create_game_objects
  79.     $game_temp          = Game_Temp.new
  80.     $game_message       = Game_Message.new
  81.     $game_system        = Game_System.new
  82.     $game_switches      = Game_Switches.new
  83.     $game_variables     = Game_Variables.new
  84.     $game_self_switches = Game_SelfSwitches.new
  85.     $game_actors        = Game_Actors.new
  86.     $game_party         = Game_Party.new
  87.     $game_troop         = Game_Troop.new
  88.     $game_map           = Game_Map.new
  89.     $game_player        = Game_Player.new
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 继续游戏的有效判定
  93.   #--------------------------------------------------------------------------
  94.   def check_continue
  95.     $continue_enabled = (Dir.glob('Save*.rvdata').size > 0)
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 指令 : 新的游戏
  99.   #--------------------------------------------------------------------------
  100.   def command_new_game
  101.     confirm_player_location
  102.     $game_party.setup_starting_members            # 初期队伍
  103.     $game_map.setup($data_system.start_map_id)    # 初期位置的地图
  104.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  105.     $game_player.refresh
  106.     $scene = Scene_Map.new
  107.     Graphics.frame_count = 0
  108.     $game_map.autoplay
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 检查玩家的初期位置
  112.   #--------------------------------------------------------------------------
  113.   def confirm_player_location
  114.     if $data_system.start_map_id == 0
  115.       print "还没设置玩家的初期位置。"
  116.       exit
  117.     end
  118.   end  
  119.   #--------------------------------------------------------------------------
  120.   # ● 指令 : 继续游戏
  121.   #--------------------------------------------------------------------------
  122.   def command_continue
  123.     if $continue_enabled
  124.       Sound.play_decision
  125.       $scene = Scene_File.new(false, true, false)
  126.     else
  127.       Sound.play_buzzer
  128.     end
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 指令 : 离开游戏
  132.   #--------------------------------------------------------------------------
  133.   def command_shutdown
  134.     Sound.play_decision
  135.     RPG::BGM.fade(800)
  136.     RPG::BGS.fade(800)
  137.     RPG::ME.fade(800)
  138.     $scene = nil
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 战斗测试
  142.   #--------------------------------------------------------------------------
  143.   def battle_test
  144.     load_bt_database                  # 战斗测试用数据库读取
  145.     create_game_objects               # 作成游戏对象
  146.     Graphics.frame_count = 0          # 初期化游戏时间
  147.     $game_party.setup_battle_test_members
  148.     $game_troop.setup($data_system.test_troop_id)
  149.     $game_troop.can_escape = true
  150.     $game_system.battle_bgm.play
  151.     snapshot_for_background
  152.     $scene = Scene_Battle.new
  153.   end
  154. end
复制代码


VX开头特效:

使用方法:复制到main前
效果:在开头画面显示天气,这里是流星雨,可以设置为默认的雨、暴风雨、雪,也可以设置为自定义图形(如流星雨)。参考开头设置
  1. #==============================================================================
  2. # ■ Scene_Title
  3. #------------------------------------------------------------------------------
  4. #  タイトル画面の処理を行うクラスです。
  5. #==============================================================================

  6. class Scene_Title < Scene_Base
  7.   WEATHER = 4     # 使用自定义效果(0:无,1:雨,2:暴风雨,3:雪,4:自定义)
  8.   MAXNUMBER = 18  # 天气图片数量
  9.   
  10.   WEATHER_FILE = "Graphics/Pictures/Title_starlong.png"
  11.   # 自定义图片路径,这个文件是流星雨
  12.   
  13.   BLEND_TYPE = 1 # 合成方式(0:普通,1:加法,2:减法)
  14.   WEATHER_X = 5 # X方向每回合减少象素
  15.   WEATHER_Y = 5 # Y方向每回合减少象素
  16.   WEATHER_OPACITY = 2 #每回合减低透明度
  17.   START_OPACITY = 200 #出现时的透明度
  18.   RAND_X = 1200 # 随机X范围
  19.   RAND_Y = 600 # 随机Y范围
  20.   HEIGHT = -600 # 出现时候的屏幕Y
  21.   WIDTH = 100 # 出现时候的屏幕X
  22.   #--------------------------------------------------------------------------
  23.   # ● メイン処理
  24.   #--------------------------------------------------------------------------
  25.   def main
  26.     if $BTEST                         # 戦闘テストの場合
  27.       battle_test                     # 戦闘テストの開始処理
  28.     else                              # 通常のプレイの場合
  29.       super                           # 本来のメイン処理
  30.     end
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 開始処理
  34.   #--------------------------------------------------------------------------
  35.   def start
  36.     super
  37.     load_database                     # データベースをロード
  38.     create_game_objects               # ゲームオブジェクトを作成
  39.     check_continue                    # コンティニュー有効判定
  40.     create_title_graphic   # タイトルグラフィックを作成
  41.     @ox = 0
  42.     @oy = 0
  43.     color1 = Color.new(255, 255, 255, 255)
  44.     color2 = Color.new(255, 255, 255, 128)
  45.     @rain_bitmap = Bitmap.new(7, 56)
  46.     for i in 0..6
  47.       @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
  48.     end
  49.     @storm_bitmap = Bitmap.new(34, 64)
  50.     for i in 0..31
  51.       @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
  52.       @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
  53.       @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
  54.     end
  55.     @snow_bitmap = Bitmap.new(6, 6)
  56.     @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
  57.     @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
  58.     @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
  59.     @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
  60.     @sprites = []
  61.     for i in 1..40
  62.       sprite = Sprite.new
  63.       case WEATHER
  64.       when 1
  65.         sprite.bitmap = @rain_bitmap
  66.       when 2
  67.         sprite.bitmap = @storm_bitmap
  68.       when 3
  69.         sprite.bitmap = @snow_bitmap
  70.       when 4
  71.         sprite.bitmap = Bitmap.new(WEATHER_FILE)
  72.       end
  73.       sprite.z = 1000
  74.       sprite.x = -1000
  75.       sprite.y = -1000
  76.       sprite.visible = (i <= MAXNUMBER)
  77.       sprite.blend_type = BLEND_TYPE
  78.       sprite.opacity = START_OPACITY
  79.       @sprites.push(sprite)
  80.     end
  81.     weather_update
  82.     create_command_window             # コマンドウィンドウを作成
  83.     play_title_music                  # タイトル画面の音楽を演奏
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● トランジション実行
  87.   #--------------------------------------------------------------------------
  88.   def perform_transition
  89.     Graphics.transition(20)
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 開始後処理
  93.   #--------------------------------------------------------------------------
  94.   def post_start
  95.     super
  96.     open_command_window
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 終了前処理
  100.   #--------------------------------------------------------------------------
  101.   def pre_terminate
  102.     super
  103.     close_command_window
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 終了処理
  107.   #--------------------------------------------------------------------------
  108.   def terminate
  109.     super
  110.     dispose_command_window
  111.     snapshot_for_background
  112.     @sprite.bitmap.dispose
  113.     @sprite.dispose
  114.     for sprite in @sprites
  115.       sprite.dispose
  116.     end
  117.     @rain_bitmap.dispose
  118.     @storm_bitmap.dispose
  119.     @snow_bitmap.dispose
  120.     dispose_title_graphic
  121.   end
  122.   
  123.   def weather_update
  124.     return if WEATHER == 0
  125.     for i in 1..MAXNUMBER
  126.       sprite = @sprites[i]
  127.       if sprite == nil
  128.         break
  129.       end
  130.       if WEATHER == 1
  131.         sprite.x -= 2
  132.         sprite.y += 16
  133.         sprite.opacity -= 8
  134.       end
  135.       if WEATHER == 2
  136.         sprite.x -= 8
  137.         sprite.y += 16
  138.         sprite.opacity -= 12
  139.       end
  140.       if WEATHER == 3
  141.         sprite.x -= 2
  142.         sprite.y += 8
  143.         sprite.opacity -= 8
  144.       end
  145.       if WEATHER == 4
  146.         sprite.x -= WEATHER_X
  147.         sprite.y += WEATHER_Y
  148.         sprite.opacity -= WEATHER_OPACITY
  149.       end
  150.       x = sprite.x - @ox
  151.       y = sprite.y - @oy
  152.       if sprite.opacity < 32 or x < -100 or x > 750 or y < -1000 or y > 500
  153.         sprite.x = rand(RAND_X) + WIDTH + @ox
  154.         sprite.y = rand(RAND_Y) + HEIGHT + @oy
  155.         sprite.opacity = START_OPACITY
  156.       end
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● フレーム更新
  161.   #--------------------------------------------------------------------------
  162.   def update
  163.     super
  164.     @command_window.update
  165.     if Input.trigger?(Input::C)
  166.       case @command_window.index
  167.       when 0    # ニューゲーム
  168.         command_new_game
  169.       when 1    # コンティニュー
  170.         command_continue
  171.       when 2    # シャットダウン
  172.         command_shutdown
  173.       end
  174.     end
  175.     weather_update
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● データベースのロード
  179.   #--------------------------------------------------------------------------
  180.   def load_database
  181.     $data_actors        = load_data("Data/Actors.rvdata")
  182.     $data_classes       = load_data("Data/Classes.rvdata")
  183.     $data_skills        = load_data("Data/Skills.rvdata")
  184.     $data_items         = load_data("Data/Items.rvdata")
  185.     $data_weapons       = load_data("Data/Weapons.rvdata")
  186.     $data_armors        = load_data("Data/Armors.rvdata")
  187.     $data_enemies       = load_data("Data/Enemies.rvdata")
  188.     $data_troops        = load_data("Data/Troops.rvdata")
  189.     $data_states        = load_data("Data/States.rvdata")
  190.     $data_animations    = load_data("Data/Animations.rvdata")
  191.     $data_common_events = load_data("Data/CommonEvents.rvdata")
  192.     $data_system        = load_data("Data/System.rvdata")
  193.     $data_areas         = load_data("Data/Areas.rvdata")
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 戦闘テスト用データベースのロード
  197.   #--------------------------------------------------------------------------
  198.   def load_bt_database
  199.     $data_actors        = load_data("Data/BT_Actors.rvdata")
  200.     $data_classes       = load_data("Data/BT_Classes.rvdata")
  201.     $data_skills        = load_data("Data/BT_Skills.rvdata")
  202.     $data_items         = load_data("Data/BT_Items.rvdata")
  203.     $data_weapons       = load_data("Data/BT_Weapons.rvdata")
  204.     $data_armors        = load_data("Data/BT_Armors.rvdata")
  205.     $data_enemies       = load_data("Data/BT_Enemies.rvdata")
  206.     $data_troops        = load_data("Data/BT_Troops.rvdata")
  207.     $data_states        = load_data("Data/BT_States.rvdata")
  208.     $data_animations    = load_data("Data/BT_Animations.rvdata")
  209.     $data_common_events = load_data("Data/BT_CommonEvents.rvdata")
  210.     $data_system        = load_data("Data/BT_System.rvdata")
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● 各種ゲームオブジェクトの作成
  214.   #--------------------------------------------------------------------------
  215.   def create_game_objects
  216.     $game_temp          = Game_Temp.new
  217.     $game_message       = Game_Message.new
  218.     $game_system        = Game_System.new
  219.     $game_switches      = Game_Switches.new
  220.     $game_variables     = Game_Variables.new
  221.     $game_self_switches = Game_SelfSwitches.new
  222.     $game_actors        = Game_Actors.new
  223.     $game_party         = Game_Party.new
  224.     $game_troop         = Game_Troop.new
  225.     $game_map           = Game_Map.new
  226.     $game_player        = Game_Player.new
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ● コンティニュー有効判定
  230.   #--------------------------------------------------------------------------
  231.   def check_continue
  232.     @continue_enabled = (Dir.glob('Save*.rvdata').size > 0)
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● タイトルグラフィックの作成
  236.   #--------------------------------------------------------------------------
  237.   def create_title_graphic
  238.     @sprite = Sprite.new
  239.     @sprite.bitmap = Cache.system("Title")
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● タイトルグラフィックの解放
  243.   #--------------------------------------------------------------------------
  244.   def dispose_title_graphic
  245.     @sprite.bitmap.dispose
  246.     @sprite.dispose
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● コマンドウィンドウの作成
  250.   #--------------------------------------------------------------------------
  251.   def create_command_window
  252.     s1 = Vocab::new_game
  253.     s2 = Vocab::continue
  254.     s3 = Vocab::shutdown
  255.     @command_window = Window_Command.new(172, [s1, s2, s3])
  256.     @command_window.x = (544 - @command_window.width) / 2
  257.     @command_window.y = 288
  258.     if @continue_enabled                    # コンティニューが有効な場合
  259.       @command_window.index = 1             # カーソルを合わせる
  260.     else                                    # 無効な場合
  261.       @command_window.draw_item(1, false)   # コマンドを半透明表示にする
  262.     end
  263.     @command_window.openness = 0
  264.     @command_window.open
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ● コマンドウィンドウの解放
  268.   #--------------------------------------------------------------------------
  269.   def dispose_command_window
  270.     @command_window.dispose
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● コマンドウィンドウを開く
  274.   #--------------------------------------------------------------------------
  275.   def open_command_window
  276.     @command_window.open
  277.     begin
  278.       @command_window.update
  279.       Graphics.update
  280.     end until @command_window.openness == 255
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● コマンドウィンドウを閉じる
  284.   #--------------------------------------------------------------------------
  285.   def close_command_window
  286.     @command_window.close
  287.     begin
  288.       @command_window.update
  289.       Graphics.update
  290.     end until @command_window.openness == 0
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● タイトル画面の音楽演奏
  294.   #--------------------------------------------------------------------------
  295.   def play_title_music
  296.     $data_system.title_bgm.play
  297.     RPG::BGS.stop
  298.     RPG::ME.stop
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● プレイヤーの初期位置存在チェック
  302.   #--------------------------------------------------------------------------
  303.   def confirm_player_location
  304.     if $data_system.start_map_id == 0
  305.       print "プレイヤーの初期位置が設定されていません。"
  306.       exit
  307.     end
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ● コマンド : ニューゲーム
  311.   #--------------------------------------------------------------------------
  312.   def command_new_game
  313.     confirm_player_location
  314.     Sound.play_decision
  315.     $game_party.setup_starting_members            # 初期パーティ
  316.     $game_map.setup($data_system.start_map_id)    # 初期位置のマップ
  317.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  318.     $game_player.refresh
  319.     $scene = Scene_Map.new
  320.     RPG::BGM.fade(1500)
  321.     close_command_window
  322.     Graphics.fadeout(60)
  323.     Graphics.wait(40)
  324.     Graphics.frame_count = 0
  325.     RPG::BGM.stop
  326.     $game_map.autoplay
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● コマンド : コンティニュー
  330.   #--------------------------------------------------------------------------
  331.   def command_continue
  332.     if @continue_enabled
  333.       Sound.play_decision
  334.       $scene = Scene_File.new(false, true, false)
  335.     else
  336.       Sound.play_buzzer
  337.     end
  338.   end
  339.   #--------------------------------------------------------------------------
  340.   # ● コマンド : シャットダウン
  341.   #--------------------------------------------------------------------------
  342.   def command_shutdown
  343.     Sound.play_decision
  344.     RPG::BGM.fade(800)
  345.     RPG::BGS.fade(800)
  346.     RPG::ME.fade(800)
  347.     $scene = nil
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ● 戦闘テスト
  351.   #--------------------------------------------------------------------------
  352.   def battle_test
  353.     load_bt_database                  # 戦闘テスト用データベースをロード
  354.     create_game_objects               # ゲームオブジェクトを作成
  355.     Graphics.frame_count = 0          # プレイ時間を初期化
  356.     $game_party.setup_battle_test_members
  357.     $game_troop.setup($data_system.test_troop_id)
  358.     $game_troop.can_escape = true
  359.     $game_system.battle_bgm.play
  360.     snapshot_for_background
  361.     $scene = Scene_Battle.new
  362.   end
  363. end
复制代码


附带流星雨图一张:



以上脚本作者:66大

若LZ觉得可以,请尽快认可答案,谢谢

请LZ快速认可,谢谢
我已经没有当时刚来6R时的那种激情了啊。
看来6R中的人又变了一轮,让我很陌生。
当时我只是路过,什么都没留下。
因为记得我的人已经不多了吧。
http://hi.baidu.com/fantasylen
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
614
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

2
发表于 2008-6-10 00:52:30 | 只看该作者
跳过标题画面?
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-25 22:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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