Project1

标题: 【仿仙3】角色切换以及对应角色的机关 [打印本页]

作者: iisnow    时间: 2011-10-10 13:11
标题: 【仿仙3】角色切换以及对应角色的机关
本帖最后由 iisnow 于 2011-10-10 22:36 编辑

我有来发无聊的脚本了:(也不知道有没有人做过,重复了就算了吧)
脚本在3L
假如在地图上你的
A键用来确认对话,触发剧情
B键用来调用菜单
那么L和R键没有用的话,该脚本可完全无缝插入(Game_player类没有改的前提下)


(事先声明,该脚本完全可以用事件代替,但是需要做很多只有排序不同的角色)
大致就是这个意思:
队伍行进时,总是要一个带头人,游戏默认永远为ID最小的带头
脚本实现在地图上按L、R键切换行走人物;

另外还觉得脚本可以用来做角色的机关
用$scene.get_actor == ID的形式来判定

附件最后的hhhhhhh就是我的脚本,转的时候给我一点面子吧
我还是不会发脚本……求教啊
附件给的一个小游戏,你能打开宝箱吗??
哈哈~~

Project_new.rar (254.18 KB, 下载次数: 749)



作者: 不会脚本    时间: 2011-10-10 19:13
话说发脚本用代码,hhhhhhh这个脚本帮助×99999
作者: iisnow    时间: 2011-10-10 22:35
  1. #------------------------------------------------------------------
  2. # 用L\R键切换当前显示角色(行走图)
  3. #--------------------------------------------------------------------
  4. # 加入了get_actor的方法,在地图上调用得到当前显示角色的ID
  5. # 即使用      $scene.get_actor   即可
  6. #-------------------------------------------------------------------
  7. # iisnow 原创小脚本
  8. #-----------------------------------------------------------------

  9. class Game_Player
  10.   attr_accessor :actors
  11.   
  12.   def refresh(index = 0)
  13.     # 同伴人数为 0 的情况下
  14.     if $game_party.actors.size == 0
  15.       # 清除角色的文件名及对像
  16.       @character_name = ""
  17.       @character_hue = 0
  18.       # 分支结束
  19.       return
  20.     end
  21.     # 获取带头的角色
  22.     actor = $game_party.actors[index]
  23.     # 设置角色的文件名及对像
  24.     @character_name = actor.character_name
  25.     @character_hue = actor.character_hue
  26.     # 初始化不透明度和合成方式子
  27.     @opacity = 255
  28.     @blend_type = 0
  29.   end
  30. end

  31. class Scene_Map
  32.   def initialize
  33.     @index = 0
  34.   end
  35.   
  36.   def update
  37.     # 循环
  38.     loop do
  39.       # 按照地图、实例、主角的顺序刷新
  40.       # (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
  41.       #  的机会的重要因素)
  42.       $game_map.update
  43.       $game_system.map_interpreter.update
  44.       $game_player.update
  45.       # 系统 (计时器)、画面刷新
  46.       $game_system.update
  47.       $game_screen.update
  48.       # 如果主角在场所移动中就中断循环
  49.       unless $game_temp.player_transferring
  50.         break
  51.       end
  52.       # 执行场所移动
  53.       transfer_player
  54.       # 处理过渡中的情况下、中断循环
  55.       if $game_temp.transition_processing
  56.         break
  57.       end
  58.     end
  59.     # 刷新活动块
  60.     @spriteset.update
  61.     # 刷新信息窗口
  62.     @message_window.update
  63.     # 游戏结束的情况下
  64.     if $game_temp.gameover
  65.       # 切换的游戏结束画面
  66.       $scene = Scene_Gameover.new
  67.       return
  68.     end
  69.     # 返回标题画面的情况下
  70.     if $game_temp.to_title
  71.       # 切换到标题画面
  72.       $scene = Scene_Title.new
  73.       return
  74.     end
  75.     # 处理过渡中的情况下
  76.     if $game_temp.transition_processing
  77.       # 清除过渡处理中标志
  78.       $game_temp.transition_processing = false
  79.       # 执行过渡
  80.       if $game_temp.transition_name == ""
  81.         Graphics.transition(20)
  82.       else
  83.         Graphics.transition(40, "Graphics/Transitions/" +
  84.           $game_temp.transition_name)
  85.       end
  86.     end
  87.     # 显示信息窗口中的情况下
  88.     if $game_temp.message_window_showing
  89.       return
  90.     end
  91.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  92.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  93.       # 不是在事件执行中或者禁止遇敌中
  94.       unless $game_system.map_interpreter.running? or
  95.              $game_system.encounter_disabled
  96.         # 确定队伍
  97.         n = rand($game_map.encounter_list.size)
  98.         troop_id = $game_map.encounter_list[n]
  99.         # 队伍有效的话
  100.         if $data_troops[troop_id] != nil
  101.           # 设置调用战斗标志
  102.           $game_temp.battle_calling = true
  103.           $game_temp.battle_troop_id = troop_id
  104.           $game_temp.battle_can_escape = true
  105.           $game_temp.battle_can_lose = false
  106.           $game_temp.battle_proc = nil
  107.         end
  108.       end
  109.     end
  110.     # 按下 B 键的情况下
  111.     if Input.trigger?(Input::B)
  112.       # 不是在事件执行中或菜单禁止中
  113.       unless $game_system.map_interpreter.running? or
  114.              $game_system.menu_disabled
  115.         # 设置菜单调用标志以及 SE 演奏
  116.         $game_temp.menu_calling = true
  117.         $game_temp.menu_beep = true
  118.       end
  119.     end
  120.     # 按下 L 键的情况下
  121.     if Input.trigger?(Input::L)
  122.       # 不是在事件执行中或菜单禁止中
  123.       unless $game_system.map_interpreter.running? or
  124.              $game_system.menu_disabled
  125.         # 设置菜单调用标志以及 SE 演奏
  126.         @index += 1
  127.         if @index >= $game_party.actors.size
  128.           @index = 0
  129.         end
  130.         $game_system.se_play($data_system.cancel_se)
  131.         $game_player.refresh(@index)
  132.         
  133.       end
  134.     end
  135.    
  136.     if Input.trigger?(Input::R)
  137.       # 不是在事件执行中或菜单禁止中
  138.       unless $game_system.map_interpreter.running? or
  139.              $game_system.menu_disabled
  140.         # 设置菜单调用标志以及 SE 演奏
  141.         @index -= 1
  142.         if @index < 0
  143.           @index = $game_party.actors.size - 1
  144.         end
  145.         $game_system.se_play($data_system.cancel_se)
  146.         $game_player.refresh(@index)
  147.       end
  148.     end
  149.     # 调试模式为 ON 并且按下 F9 键的情况下
  150.     if $DEBUG and Input.press?(Input::F9)
  151.       # 设置调用调试标志
  152.       $game_temp.debug_calling = true
  153.     end
  154.     # 不在主角移动中的情况下
  155.     unless $game_player.moving?
  156.       # 执行各种画面的调用
  157.       if $game_temp.battle_calling
  158.         call_battle
  159.       elsif $game_temp.shop_calling
  160.         call_shop
  161.       elsif $game_temp.name_calling
  162.         call_name
  163.       elsif $game_temp.menu_calling
  164.         call_menu
  165.       elsif $game_temp.save_calling
  166.         call_save
  167.       elsif $game_temp.debug_calling
  168.         call_debug
  169.       end
  170.     end
  171.   end
  172.   
  173.   def get_actor
  174.     return $game_party.actors[@index].id
  175.   end
  176.   
  177. end
复制代码
试试能不能发脚本
感谢告诉我方法的……君




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