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

Project1

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

[已经解决] 近大远小的脚本(教我怎用)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
120
在线时间
63 小时
注册时间
2010-12-19
帖子
78
跳转到指定楼层
1
发表于 2011-5-15 16:29:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 980582939 于 2011-5-17 12:25 编辑
  1. #==============================================================================
  2. # ■ Scene_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面的类。
  5. #==============================================================================

  6. class Scene_Map
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 生成活动块
  12.     @spriteset = Spriteset_Map.new
  13.     # 生成信息窗口
  14.     @message_window = Window_Message.new
  15.     # 执行过渡
  16.     Graphics.transition
  17.     Graphics.update
  18.     if $savscr == true
  19.       i = 0
  20.       while i<5
  21.         i += 1
  22.       end
  23.       Screen::shot("SavScr",2,$savscr_index)
  24.       $savscr = false
  25.     end
  26.     # 主循环
  27.     loop do
  28.       # 刷新游戏画面
  29.       Graphics.update
  30.       # 刷新输入信息
  31.       Input.update
  32.       # 刷新画面
  33.       update
  34.       # 如果画面切换的话就中断循环
  35.       if $scene != self
  36.         break
  37.       end
  38.     end
  39.     # 准备过渡
  40.     Graphics.freeze
  41.     # 释放活动块
  42.     @spriteset.dispose
  43.     # 释放信息窗口
  44.     @message_window.dispose
  45.     # 标题画面切换中的情况下
  46.     if $scene.is_a?(Scene_Title)
  47.       # 淡入淡出画面
  48.       Graphics.transition
  49.       Graphics.freeze
  50.     end
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 刷新画面
  54.   #--------------------------------------------------------------------------
  55.   def update
  56.     # 循环
  57.     loop do
  58.       # 按照地图、实例、主角的顺序刷新
  59.       # (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
  60.       #  的机会的重要因素)
  61.       $game_system.map_name = $mapname[$game_map.map_id].name
  62.       if $game_switches[3]
  63.         @message_window.z = 1000
  64.         @message_window.x = 110
  65.         @message_window.width = 400
  66.       else
  67.         case $game_system.message_position
  68.         when 0
  69.         #  @message_window.x = -10
  70.         when 1
  71.           if $game_temp.in_battle
  72.             @message_window.x = 0
  73.           else
  74.             @message_window.x = 70
  75.           end
  76.         when 2
  77.         #  @message_window.x = -10
  78.         end
  79.         @message_window.z = 1
  80.         #@message_window.width = 660
  81.       end
  82.       
  83.       if $game_system.map_name.include?("★")
  84.         $game_system.map_name = $game_system.map_name.split(/★/)[0]
  85.       end
  86.       $game_map.update
  87.       $game_system.map_interpreter.update
  88.       $game_player.update
  89.       # 系统 (计时器)、画面刷新
  90.       $game_system.update
  91.       $game_screen.update
  92.       # 如果主角在场所移动中就中断循环
  93.       unless $game_temp.player_transferring
  94.         break
  95.       end
  96.       # 执行场所移动
  97.       transfer_player
  98.       # 处理过渡中的情况下、中断循环
  99.       if $game_temp.transition_processing
  100.         break
  101.       end
  102.     end
  103.     # 刷新活动块
  104.     @spriteset.update
  105.     # 刷新信息窗口
  106.     @message_window.update
  107.     # 游戏结束的情况下
  108.     if $game_temp.gameover
  109.       # 切换的游戏结束画面
  110.       $scene = Scene_Gameover.new
  111.       return
  112.     end
  113.     # 返回标题画面的情况下
  114.     if $game_temp.to_title
  115.       # 切换到标题画面
  116.       $scene = Scene_Title.new
  117.       return
  118.     end
  119.     # 处理过渡中的情况下
  120.     if $game_temp.transition_processing
  121.       # 清除过渡处理中标志
  122.       $game_temp.transition_processing = false
  123.       # 执行过渡
  124.       if $game_temp.transition_name == ""
  125.         Graphics.transition(20)
  126.       else
  127.         Graphics.transition(40, "Graphics/Transitions/" +
  128.           $game_temp.transition_name)
  129.       end
  130.     end
  131.     # 显示信息窗口中的情况下
  132.     if $game_temp.message_window_showing
  133.       return
  134.     end
  135.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  136.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  137.       # 不是在事件执行中或者禁止遇敌中
  138.       unless $game_system.map_interpreter.running? or
  139.              $game_system.encounter_disabled
  140.         # 确定队伍
  141.         n = rand($game_map.encounter_list.size)
  142.         troop_id = $game_map.encounter_list[n]
  143.         # 队伍有效的话
  144.         if $data_troops[troop_id] != nil
  145.           # 设置调用战斗标志
  146.           $game_temp.battle_calling = true
  147.           $game_temp.battle_troop_id = troop_id
  148.           $game_temp.battle_can_escape = true
  149.           $game_temp.battle_can_lose = false
  150.           $game_temp.battle_proc = nil
  151.         end
  152.       end
  153.     end
  154.     # 按下 B 键的情况下
  155.     if Input.trigger?(Input::B)
  156.       # 不是在事件执行中或菜单禁止中
  157.       unless $game_system.map_interpreter.running? or
  158.              $game_system.menu_disabled
  159.         # 设置菜单调用标志以及 SE 演奏
  160.         $game_temp.menu_calling = true
  161.         $game_temp.menu_beep = true
  162.       end
  163.     end
  164.     # 调试模式为 ON 并且按下 F9 键的情况下
  165.     if $DEBUG and Input.press?(Input::F9)
  166.       # 设置调用调试标志
  167.       $game_temp.debug_calling = true
  168.     end
  169.     # 不在主角移动中的情况下
  170.     unless $game_player.moving?
  171.       # 执行各种画面的调用
  172.       if $game_temp.battle_calling
  173.         call_battle
  174.       elsif $game_temp.shop_calling
  175.         call_shop
  176.       elsif $game_temp.name_calling
  177.         call_name
  178.       elsif $game_temp.menu_calling
  179.         call_menu
  180.       elsif $game_temp.save_calling
  181.         call_save
  182.       elsif $game_temp.debug_calling
  183.         call_debug
  184.       end
  185.     end
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 调用战斗
  189.   #--------------------------------------------------------------------------
  190.   def call_battle
  191.     # 清除战斗调用标志
  192.     #--------战前定量回复----------------
  193.     for i in 0...$game_party.actors.size
  194.       if $game_party.actors[i].hp != 0
  195.         $game_party.actors[i].hp += $game_party.actors[i].maxhp/5
  196.         $game_party.actors[i].sp += $game_party.actors[i].maxsp/6
  197.       end
  198.     end
  199.     #-------------------------------------
  200.     $game_temp.battle_calling = false
  201.     # 清除菜单调用标志
  202.     $game_temp.menu_calling = false
  203.     $game_temp.menu_beep = false
  204.     # 生成遇敌计数
  205.     $game_player.make_encounter_count
  206.     # 记忆地图 BGM 、停止 BGM
  207.     $game_temp.map_bgm = $game_system.playing_bgm
  208.     $game_system.bgm_stop
  209.     # 演奏战斗开始 SE
  210.     $game_system.se_play($data_system.battle_start_se)
  211.     # 演奏战斗 BGM
  212.     $game_system.bgm_play($game_system.battle_bgm)
  213.     # 矫正主角姿势
  214.     $game_player.straighten
  215.     # 切换到战斗画面
  216.     $scene = Scene_Battle.new
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 调用商店
  220.   #--------------------------------------------------------------------------
  221.   def call_shop
  222.     # 清除商店调用标志
  223.     $game_temp.shop_calling = false
  224.     # 矫正主角姿势
  225.     $game_player.straighten
  226.     # 切换到商店画面
  227.     $scene = Scene_Shop.new
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 调用名称输入
  231.   #--------------------------------------------------------------------------
  232.   def call_name
  233.     # 清除商店调用名称输入标志
  234.     $game_temp.name_calling = false
  235.     # 矫正主角姿势
  236.     $game_player.straighten
  237.     # 切换到名称输入画面
  238.     $scene = Scene_Name.new
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 调用菜单
  242.   #--------------------------------------------------------------------------
  243.   def call_menu
  244.     # 清除商店调用菜单标志
  245.     $game_temp.menu_calling = false
  246.     # 已经设置了菜单 SE 演奏标志的情况下
  247.     if $game_temp.menu_beep
  248.       # 演奏确定 SE
  249.       $game_system.se_play($data_system.decision_se)
  250.       # 清除菜单演奏 SE 标志
  251.       $game_temp.menu_beep = false
  252.     end
  253.     # 矫正主角姿势
  254.     $game_player.straighten
  255.     # 切换到菜单画面
  256.     $scene = Scene_Menu.new
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● 调用存档
  260.   #--------------------------------------------------------------------------
  261.   def call_save
  262.     # 矫正主角姿势
  263.     $game_player.straighten
  264.     # 切换到存档画面
  265.     $scene = Scene_Save.new
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● 调用调试
  269.   #--------------------------------------------------------------------------
  270.   def call_debug
  271.     # 清除商店调用调试标志
  272.     $game_temp.debug_calling = false
  273.     # 演奏确定 SE
  274.     $game_system.se_play($data_system.decision_se)
  275.     # 矫正主角姿势
  276.     $game_player.straighten
  277.     # 切换到调试画面
  278.     $scene = Scene_Debug.new
  279.   end
  280.   #--------------------------------------------------------------------------
  281.   # ● 主角的场所移动
  282.   #--------------------------------------------------------------------------
  283.   def transfer_player
  284.     # 清除主角场所移动调试标志
  285.     $game_temp.player_transferring = false
  286.     # 移动目标与现在的地图有差异的情况下
  287.     if $game_map.map_id != $game_temp.player_new_map_id
  288.       # 设置新地图
  289.       $game_map.setup($game_temp.player_new_map_id)
  290.     end
  291.     # 设置主角位置
  292.     $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  293.     # 设置主角朝向
  294.     case $game_temp.player_new_direction
  295.     when 2  # 下
  296.       $game_player.turn_down
  297.     when 4  # 左
  298.       $game_player.turn_left
  299.     when 6  # 右
  300.       $game_player.turn_right
  301.     when 8  # 上
  302.       $game_player.turn_up
  303.     end
  304.     # 矫正主角姿势
  305.     $game_player.straighten
  306.     # 刷新地图 (执行并行事件)
  307.     $game_map.update
  308.     # 在生成活动块
  309.     @spriteset.dispose
  310.     @spriteset = Spriteset_Map.new
  311.     # 处理过渡中的情况下
  312.     if $game_temp.transition_processing
  313.       # 清除过渡处理中标志
  314.       $game_temp.transition_processing = false
  315.       # 执行过渡
  316.       Graphics.transition(20)
  317.     end
  318.     # 执行地图设置的 BGM、BGS 的自动切换
  319.     $game_map.autoplay
  320.     # 设置画面
  321.     Graphics.frame_reset
  322.     # 刷新输入信息
  323.     Input.update
  324.   end
  325. end
复制代码
(这个是仙剑时空传的)有人会用吗?

点评

蛋疼的脚本,……  发表于 2011-5-27 20:09
本人制作《新仙剑奇侠传—完美结局》中!欢迎你的加入!QQ:980582939

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1500
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

2
发表于 2011-5-22 15:31:49 | 只看该作者
似乎不是这个脚本的说,应该是Sprite_Character有关的那个脚本~
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
63 小时
注册时间
2010-12-19
帖子
78
3
 楼主| 发表于 2011-5-26 19:42:16 | 只看该作者
「旅」 发表于 2011-5-22 15:31
似乎不是这个脚本的说,应该是Sprite_Character有关的那个脚本~
  1. #==============================================================================
  2. # ■ Sprite_Character
  3. #------------------------------------------------------------------------------
  4. #  角色显示用脚本。监视 Game_Character 类的实例、
  5. # 自动变化脚本状态。
  6. #==============================================================================

  7. class Sprite_Character < RPG::Sprite
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :character                # 角色
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     viewport  : 查看端口
  15.   #     character : 角色 (Game_Character)
  16.   #--------------------------------------------------------------------------
  17.   def initialize(viewport,character = nil)
  18.     super(viewport)
  19.     @character = character
  20.     @v = RPG::Sprite.new(viewport)
  21.     update
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 更新画面
  25.   #--------------------------------------------------------------------------
  26.   def update
  27.    super
  28.    # 元件 ID、文件名、色相与现在的情况存在差异的情况下
  29.    id = $game_map.map_id
  30.    name = $mapname[id].name
  31.    
  32.    if @tile_id != @character.tile_id or
  33.       @character_name != @character.character_name or
  34.       @character_hue != @character.character_hue
  35.      # 记忆元件 ID 与文件名、色相
  36.      @tile_id = @character.tile_id
  37.      @character_name = @character.character_name
  38.      @character_hue = @character.character_hue
  39.      # 元件 ID 为有效值的情况下
  40.      if @tile_id >= 384
  41.        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  42.          @tile_id, @character.character_hue)
  43.        self.src_rect.set(0, 0, 32, 32)
  44.        self.ox = 16
  45.        self.oy = 32
  46.      # 元件 ID 为无效值的情况下
  47.      else
  48.        self.bitmap = RPG::Cache.character(@character.character_name,
  49.        @character.character_hue)
  50.        @v.bitmap = RPG::Cache.character(@character.character_name,
  51.        @character.character_hue)
  52.        @v.flash(Color.new(0, 0, 0, 255), 1)
  53.        @v.angle = 180
  54.        @v.mirror = true
  55.        #@v.opacity = 179
  56.        @cw = self.bitmap.width / $c3_每一步的帧数
  57.        if $c3_总共可用的方向数==4
  58.          @ch = self.bitmap.height / 4
  59.        else
  60.          @ch = self.bitmap.height / 8
  61.        end
  62.        self.ox = @cw / 2
  63.        self.oy = @ch
  64.        @v.ox = @cw / 2
  65.        @v.oy = @ch
  66.      end
  67.    end
  68.    # 设置可视状态
  69.    self.visible = (not @character.transparent)
  70.    @v.visible = (not @character.transparent)
  71.    # 图形是角色的情况下
  72.    if @tile_id == 0
  73.      # 设置传送目标的矩形
  74.      sx = @character.pattern * @cw
  75.      if $c3_总共可用的方向数==8
  76.        case @character.direction
  77.        when 2
  78.          sy = 0 * @ch
  79.        when 4
  80.          sy = 1 * @ch
  81.        when 6
  82.          sy = 2 * @ch
  83.        when 8
  84.          sy = 3 * @ch
  85.        when 1
  86.          sy = 4 * @ch
  87.        when 3
  88.          sy = 5 * @ch
  89.        when 7
  90.          sy = 6 * @ch
  91.        when 9
  92.          sy = 7 * @ch
  93.        end
  94.      else
  95.        sy = (@character.direction - 2) / 2 * @ch
  96.      end
  97.      self.src_rect.set(sx, sy, @cw, @ch)
  98.      @v.src_rect.set(sx, sy, @cw, @ch)
  99.    end
  100.    # 设置脚本的坐标
  101.    self.x = @character.screen_x
  102.    self.y = @character.screen_y
  103.    self.z = @character.screen_z(@ch)
  104.    @v.x = @character.screen_x
  105.    @v.y = @character.screen_y - 30
  106.    @v.z = 0
  107.    @v.zoom_y = 0.5
  108.    @v.zoom_x = 1
  109.    # 设置不透明度、合成方式、茂密
  110.    self.opacity = @character.opacity
  111.    if $game_variables[8] == 112 or $game_variables[8] ==113 or $game_variables[8] ==114 or $game_variables[8] == 132
  112.       @v.opacity = 0
  113.     else
  114.       if @character.character_name == "灵儿倒地" or @character.character_name == "酒剑仙烛台" or @character.character_name == "酒剑仙升空" or @character.character_name == "蛇"
  115.         @v.opacity = 0
  116.       else
  117.         @v.opacity = @character.opacity-153
  118.       end
  119.       if $game_switches[144]
  120.         if @character.character_name == "彩依杂"
  121.           @v.opacity = 0
  122.         end
  123.       end
  124.    end
  125.    
  126.    self.blend_type = @character.blend_type
  127.    self.bush_depth = @character.bush_depth
  128.    # 动画
  129.    if @character.animation_id != 0
  130.      animation = $data_animations[@character.animation_id]
  131.      animation(animation, true)
  132.      @character.animation_id = 0
  133.    end
  134.    if name.include?("★")
  135.     rage = name.split(/★/)[1]
  136.     min_rate = rage.split(/~/)[0].to_f
  137.     max_rate = rage.split(/~/)[1].to_f
  138.     rate =  min_rate + (@character.y.to_f / $game_map.height.to_f * (max_rate - min_rate))
  139.     self.zoom_x = self.zoom_y = rate
  140.     @v.zoom_x = rate;@v.zoom_y = 0.7*(rate)
  141.    end
  142. end
  143. end
复制代码
脚本在这!就是不懂怎用!请帮忙解决!谢谢!
本人制作《新仙剑奇侠传—完美结局》中!欢迎你的加入!QQ:980582939
回复

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
334
在线时间
1196 小时
注册时间
2010-12-18
帖子
3928

贵宾

4
发表于 2011-5-27 20:10:11 | 只看该作者
这个脚本不适宜直接放入你私人的工程使用。
可以搜查原版。
使用方法是适用地图的名字后面加★x~y。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-20 17:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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