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

Project1

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

[已经过期] 请指教,这脚本怎么改才能变成多人效果。

[复制链接]

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
跳转到指定楼层
1
发表于 2017-11-20 21:38:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 文雅夕露 于 2017-11-20 22:05 编辑

就是根据队伍人数而定。
而不是只能够是队伍第一个人参与。
请教该怎么修改?
RUBY 代码复制
  1. ###############################################################################
  2. #==============================================================================
  3. class Window_MapStatus < Window_Base
  4.   #--------------------------------------------------------------------------
  5.   def initialize
  6.     super(0, -132, 640, 128)
  7.     self.contents = Bitmap.new(width - 32, height - 32)
  8.     # 定义 升级标志 为 false
  9.     $level_up_flags = false
  10.     refresh
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   def refresh
  14.     self.contents.clear
  15.     x = 4
  16.     y = 0
  17.     # 定义角色,队伍 1 号
  18.     actor = $game_party.actors[0]
  19.     # 如果 升级 。(也就是上面那个升级标志为 true)
  20.     if $level_up_flags
  21.       # 定义显示头像的 bitmap 为 微笑头像
  22.       bitmap = RPG::Cache.character(actor.name + "_fl", 0)
  23.       # 显示升级图标图片
  24.       self.contents.blt(x + 330, y, RPG::Cache.icon("level_up"), Rect.new(0, 0, 183, 36))
  25.       # 其他情况(也就是升级标志为 false)
  26.     else
  27.       # 定义显示头像的 bitmap 为 一般头像
  28.       bitmap = RPG::Cache.character(actor.name + "_f", 0)
  29.       # 显示角色等级。
  30.       draw_actor_level(actor, x + 364, y + 3)
  31.     end
  32.     # 显示上面所定义的头像。
  33.     src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  34.     self.contents.blt(x - 4, y, bitmap, src_rect) #<-(括号里面可改头像坐标)
  35.     #  描绘角色名
  36.     draw_actor_name(actor, x + 144, y)
  37.     #  描绘角色最大HP 和 最大 SP。
  38.     self.contents.font.color = system_color
  39.     txta = "最大" + $data_system.words.hp + ":"
  40.     txtb = "最大" + $data_system.words.sp + ":"
  41.     self.contents.draw_text(x + 144, y + 34, 96, 32, txta)
  42.     self.contents.draw_text(x + 144, y + 58, 96, 32, txtb)
  43.     self.contents.font.color = normal_color
  44.     self.contents.draw_text(x + 246, y + 34, 48, 32, actor.maxhp.to_s)
  45.     self.contents.draw_text(x + 246, y + 58, 48, 32, actor.maxsp.to_s)
  46.     # 描绘角色当前经念 和 升级经念。
  47.     self.contents.font.color = system_color
  48.     self.contents.draw_text(x + 360, y + 38, 96, 32, "当前经念:")
  49.     self.contents.draw_text(x + 360, y + 60, 144, 32, "升级所需经念:")
  50.     self.contents.font.color = normal_color
  51.     self.contents.draw_text(x + 514, y + 38, 84, 32, actor.exp_s)
  52.     self.contents.draw_text(x + 514, y + 60, 84, 32, actor.next_exp_s)
  53.   end
  54. end
  55. ###############################################################################
  56. #==============================================================================
  57. class Scene_Map
  58.   #--------------------------------------------------------------------------
  59.   # ● 主处理
  60.   #--------------------------------------------------------------------------
  61.   def main
  62.     # 生成活动块
  63.     @spriteset = Spriteset_Map.new
  64.     # 生成信息窗口
  65.     @message_window = Window_Message.new
  66.     # 生成地图状态栏
  67.     @mapstatus_window = Window_MapStatus.new  ####################
  68.     # 执行过渡
  69.     Graphics.transition
  70.     # 主循环
  71.     loop do
  72.       # 刷新游戏画面
  73.       Graphics.update
  74.       # 刷新输入信息
  75.       Input.update
  76.       # 刷新画面
  77.       update
  78.       # 如果画面切换的话就中断循环
  79.       if $scene != self
  80.         break
  81.       end
  82.     end
  83.     # 准备过渡
  84.     Graphics.freeze
  85.     # 释放活动块
  86.     @spriteset.dispose
  87.     # 释放信息窗口
  88.     @message_window.dispose
  89.     @mapstatus_window.dispose   ########################
  90.     if $scene.is_a?(Scene_Title)
  91.       Graphics.transition
  92.       Graphics.freeze
  93.     end
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 刷新画面
  97.   #--------------------------------------------------------------------------
  98.   def update
  99.     # 循环
  100.     loop do
  101.       #########################################################################
  102.       # 状态窗口滑出
  103.       if @mapstatus_window.y < 0 and $game_switches[1] == true
  104.         for i in 1..10
  105.           @mapstatus_window.y += 13
  106.           Graphics.update
  107.         end
  108.         @mapstatus_window.y = 0
  109.       end
  110.       # 如果动态增加经念打开(也就是事件—>脚本:$game_raise_exp = true)
  111.       if $game_raise_exp
  112.         # 定义角色
  113.         actor = $game_party_raise_exp[0]
  114.         # 获取经念
  115.         exp = $game_party_raise_exp[1]
  116.         # 如果经念为负值,改为正数,其他情况不变,并代入 n  
  117.         if exp < 0
  118.           # 经念减少 SE,可仿照修改
  119.           Audio.se_play("Audio/SE/012-system12", 80, 100)
  120.           n = -exp
  121.         else
  122.           # 经念增加 SE
  123.           Audio.se_play("Audio/SE/109-heal05", 80, 100)
  124.           n = exp
  125.         end
  126.         # 1 到 n 的循环
  127.         for i in 1..n
  128.           # 记录角色等级(旧的等级)
  129.           last_level = actor.level
  130.           # 如果角色经念小于 0
  131.           if actor.exp < 0
  132.             # 跳出循环
  133.             break
  134.           end
  135.           # 如果经念小于 0 ,角色经念就递减 1 ,反之就递增 1 。
  136.           if exp < 0
  137.             actor.exp -= 1
  138.           else
  139.             actor.exp += 1
  140.             # 如果角色等级(当前等级) 大于 旧的等级
  141.             if actor.level > last_level
  142.               # 打开升级标志
  143.               $level_up_flags = true
  144.               # 升级 SE
  145.               Audio.se_play("Audio/SE/level_up", 80, 100)
  146.               # 1 到 40 的循环
  147.               for j in 1..40
  148.                 # 刷新地图状态窗口
  149.                 @mapstatus_window.refresh
  150.                 # 刷新游戏画面
  151.                 Graphics.update
  152.               end
  153.               # 关闭升级标志
  154.               $level_up_flags = false
  155.             end
  156.           end
  157.           # 刷新地图状态窗口
  158.           @mapstatus_window.refresh
  159.           # 刷新游戏画面
  160.           Graphics.update
  161.         end
  162.         # 关闭动态增加经念。
  163.         $game_raise_exp = false
  164.       end
  165.       # 状态窗口滑入
  166.       if @mapstatus_window.y == 0 and $game_switches[1] == false
  167.         for i in 1..10
  168.           @mapstatus_window.y -= 13
  169.           Graphics.update
  170.         end
  171.         @mapstatus_window.y = -132
  172.       end
  173.       ##########################################################################
  174.       # 按照地图、实例、主角的顺序刷新
  175.       # (本更新顺序不会在满足事件的执行条件下成为给予角色瞬间移动
  176.       #  的机会的重要因素)
  177.       $game_map.update
  178.       $game_system.map_interpreter.update
  179.       $game_player.update
  180.       # 系统 (计时器)、画面刷新
  181.       $game_system.update
  182.       $game_screen.update
  183.       # 如果主角在场所移动中就中断循环
  184.       unless $game_temp.player_transferring
  185.         break
  186.       end
  187.       # 执行场所移动
  188.       transfer_player
  189.       # 处理过渡中的情况下、中断循环
  190.       if $game_temp.transition_processing
  191.         break
  192.       end
  193.     end
  194.     # 刷新活动块
  195.     @spriteset.update
  196.     # 刷新信息窗口
  197.     @message_window.update
  198.     # 游戏结束的情况下
  199.     if $game_temp.gameover
  200.       # 切换的游戏结束画面
  201.       $scene = Scene_Gameover.new
  202.       return
  203.     end
  204.     # 返回标题画面的情况下
  205.     if $game_temp.to_title
  206.       # 切换到标题画面
  207.       $scene = Scene_Title.new
  208.       return
  209.     end
  210.     # 处理过渡中的情况下
  211.     if $game_temp.transition_processing
  212.       # 清除过渡处理中标志
  213.       $game_temp.transition_processing = false
  214.       # 执行过渡
  215.       if $game_temp.transition_name == ""
  216.         Graphics.transition(20)
  217.       else
  218.         Graphics.transition(40, "Graphics/Transitions/" +
  219.           $game_temp.transition_name)
  220.       end
  221.     end
  222.     # 显示信息窗口中的情况下
  223.     if $game_temp.message_window_showing
  224.       return
  225.     end
  226.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  227.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  228.       # 不是在事件执行中或者禁止遇敌中
  229.       unless $game_system.map_interpreter.running? or
  230.              $game_system.encounter_disabled
  231.         # 确定队伍
  232.         n = rand($game_map.encounter_list.size)
  233.         troop_id = $game_map.encounter_list[n]
  234.         # 队伍有效的话
  235.         if $data_troops[troop_id] != nil
  236.           # 设置调用战斗标志
  237.           $game_temp.battle_calling = true
  238.           $game_temp.battle_troop_id = troop_id
  239.           $game_temp.battle_can_escape = true
  240.           $game_temp.battle_can_lose = false
  241.           $game_temp.battle_proc = nil
  242.         end
  243.       end
  244.     end
  245.     # 按下 B 键的情况下
  246.     if Input.trigger?(Input::B)
  247.       # 不是在事件执行中或菜单禁止中
  248.       unless $game_system.map_interpreter.running? or
  249.              $game_system.menu_disabled
  250.         # 设置菜单调用标志以及 SE 演奏
  251.         $game_temp.menu_calling = true
  252.         $game_temp.menu_beep = true
  253.       end
  254.     end
  255.     # 调试模式为 ON 并且按下 F9 键的情况下
  256.     if $DEBUG and Input.press?(Input::F9)
  257.       # 设置调用调试标志
  258.       $game_temp.debug_calling = true
  259.     end
  260.     # 不在主角移动中的情况下
  261.     unless $game_player.moving?
  262.       # 执行各种画面的调用
  263.       if $game_temp.battle_calling
  264.         call_battle
  265.       elsif $game_temp.shop_calling
  266.         call_shop
  267.       elsif $game_temp.name_calling
  268.         call_name
  269.       elsif $game_temp.menu_calling
  270.         call_menu
  271.       elsif $game_temp.save_calling
  272.         call_save
  273.       elsif $game_temp.debug_calling
  274.         call_debug
  275.       end
  276.     end
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 调用战斗
  280.   #--------------------------------------------------------------------------
  281.   def call_battle
  282.     # 清除战斗调用标志
  283.     $game_temp.battle_calling = false
  284.     # 清除菜单调用标志
  285.     $game_temp.menu_calling = false
  286.     $game_temp.menu_beep = false
  287.     # 生成遇敌计数
  288.     $game_player.make_encounter_count
  289.     # 记忆地图 BGM 、停止 BGM
  290.     $game_temp.map_bgm = $game_system.playing_bgm
  291.     $game_system.bgm_stop
  292.     # 演奏战斗开始 SE
  293.     $game_system.se_play($data_system.battle_start_se)
  294.     # 演奏战斗 BGM
  295.     $game_system.bgm_play($game_system.battle_bgm)
  296.     # 矫正主角姿势
  297.     $game_player.straighten
  298.     # 切换到战斗画面
  299.     $scene = Scene_Battle.new
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● 调用商店
  303.   #--------------------------------------------------------------------------
  304.   def call_shop
  305.     # 清除商店调用标志
  306.     $game_temp.shop_calling = false
  307.     # 矫正主角姿势
  308.     $game_player.straighten
  309.     # 切换到商店画面
  310.     $scene = Scene_Shop.new
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ● 调用名称输入
  314.   #--------------------------------------------------------------------------
  315.   def call_name
  316.     # 清除调用名称输入标志
  317.     $game_temp.name_calling = false
  318.     # 矫正主角姿势
  319.     $game_player.straighten
  320.     # 切换到名称输入画面
  321.     $scene = Scene_Name.new
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 调用菜单
  325.   #--------------------------------------------------------------------------
  326.   def call_menu
  327.     # 清除菜单调用标志
  328.     $game_temp.menu_calling = false
  329.     # 已经设置了菜单 SE 演奏标志的情况下
  330.     if $game_temp.menu_beep
  331.       # 演奏确定 SE
  332.       $game_system.se_play($data_system.decision_se)
  333.       # 清除菜单演奏 SE 标志
  334.       $game_temp.menu_beep = false
  335.     end
  336.     # 矫正主角姿势
  337.     $game_player.straighten
  338.     # 切换到菜单画面
  339.     $scene = Scene_Menu.new
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● 调用存档
  343.   #--------------------------------------------------------------------------
  344.   def call_save
  345.     # 矫正主角姿势
  346.     $game_player.straighten
  347.     # 切换到存档画面
  348.     $scene = Scene_Save.new
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 调用调试
  352.   #--------------------------------------------------------------------------
  353.   def call_debug
  354.     # 清除调用调试标志
  355.     $game_temp.debug_calling = false
  356.     # 演奏确定 SE
  357.     $game_system.se_play($data_system.decision_se)
  358.     # 矫正主角姿势
  359.     $game_player.straighten
  360.     # 切换到调试画面
  361.     $scene = Scene_Debug.new
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ● 主角的场所移动
  365.   #--------------------------------------------------------------------------
  366.   def transfer_player
  367.     # 清除主角场所移动调试标志
  368.     $game_temp.player_transferring = false
  369.     # 移动目标与现在的地图有差异的情况下
  370.     if $game_map.map_id != $game_temp.player_new_map_id
  371.       # 设置新地图
  372.       $game_map.setup($game_temp.player_new_map_id)
  373.     end
  374.     # 设置主角位置
  375.     $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  376.     # 设置主角朝向
  377.     case $game_temp.player_new_direction
  378.     when 2  # 下
  379.       $game_player.turn_down
  380.     when 4  # 左
  381.       $game_player.turn_left
  382.     when 6  # 右
  383.       $game_player.turn_right
  384.     when 8  # 上
  385.       $game_player.turn_up
  386.     end
  387.     # 矫正主角姿势
  388.     $game_player.straighten
  389.     # 刷新地图 (执行并行事件)
  390.     $game_map.update
  391.     # 在生成活动块
  392.     @spriteset.dispose
  393.     @spriteset = Spriteset_Map.new
  394.     # 处理过渡中的情况下
  395.     if $game_temp.transition_processing
  396.       # 清除过渡处理中标志
  397.       $game_temp.transition_processing = false
  398.       # 执行过渡
  399.       Graphics.transition(20)
  400.     end
  401.     # 执行地图设置的 BGM、BGS 的自动切换
  402.     $game_map.autoplay
  403.     # 设置画面
  404.     Graphics.frame_reset
  405.     # 刷新输入信息
  406.     Input.update
  407.   end
  408. end

工程附上:https://pan.baidu.com/s/1o7Ztv78


一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2017-11-20 21:46:30 | 只看该作者
actor = $game_party.actors[0]
所以用的是队伍里的第一个角色
把$game_party.actors[0]改掉就是别的角色了
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
3
 楼主| 发表于 2017-11-20 21:49:37 | 只看该作者
chd114 发表于 2017-11-20 21:46
actor = $game_party.actors[0]
所以用的是队伍里的第一个角色
把$game_party.actors[0]改掉就是别的角色了 ...

这个我当然知道了
可我要的是队伍里的所有角色
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2017-11-20 21:53:56 | 只看该作者
文雅夕露 发表于 2017-11-20 21:49
这个我当然知道了
可我要的是队伍里的所有角色

你是要一次显示完吗?那你可以参考一下菜单里面的角色的显示(我用默认工程放你镇楼脚本没效果所以改了也看不出变化),你自己试试看···

点评

头疼改不出来,范例放在首楼了。有兴趣可以改改吗  发表于 2017-11-20 22:06
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36124
在线时间
10712 小时
注册时间
2009-3-15
帖子
4806
5
发表于 2017-11-20 22:07:14 | 只看该作者
在地图里显示的?用循环就好了吧..
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

6
发表于 2017-11-20 22:31:45 | 只看该作者
  1.     for i in 0...$game_party.actors.size
  2.       x = 64
  3.       y = i * 116
  4.       actor = $game_party.actors[i]
  5.       draw_actor_graphic(actor, x - 40, y + 80)
  6.       draw_actor_name(actor, x, y)
  7.       draw_actor_class(actor, x + 144, y)
  8.       draw_actor_level(actor, x, y + 32)
  9.       draw_actor_state(actor, x + 90, y + 32)
  10.       draw_actor_exp(actor, x, y + 64)
  11.       draw_actor_hp(actor, x + 236, y + 32)
  12.       draw_actor_sp(actor, x + 236, y + 64)
  13.     end
复制代码

参考window_menustates的这部分改改看
不过你确定要改多吗。。。如果不做其他调整显示4个人就能挡完地图了

点评

好吧,我看看  发表于 2017-11-21 14:49
不懂的地方好多,能否帮忙改下做个参考?  发表于 2017-11-20 23:32
你的脚本里面限制了窗口大小,需要改的地方还有initialize和状态窗口滑入  发表于 2017-11-20 23:16
稍微按照那段脚本改了下,但是实际显示效果却弄不出来。  发表于 2017-11-20 23:14
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

7
发表于 2017-11-21 15:00:01 | 只看该作者
这样的话你队伍里的2个人都能显示出来了
但是有点问题
首先这里面加的新能力似乎只有领队有,即使2个人都显示出来,答对题以后也只有一个人会加经念
然后就是你不改显示内容和窗口大小的话会挡掉半个屏幕
  1. ###############################################################################
  2. #==============================================================================
  3. class Window_MapStatus < Window_Base
  4.   #--------------------------------------------------------------------------
  5.   def initialize#x0,y-132
  6.     super(0, 0, 640, 128*$game_party.actors.size)
  7.     self.contents = Bitmap.new(width - 32, height - 32)
  8.     # 定义 升级标志 为 false
  9.     $level_up_flags = false
  10.     refresh
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   def refresh
  14.     self.contents.clear
  15.     # 定义角色,队伍 1 号
  16.    
  17. =begin   
  18.     for i in 0...$game_party.actors.size
  19.       x = 64
  20.       y = i * 116
  21.       actor = $game_party.actors[i]
  22.       draw_actor_graphic(actor, x - 40, y + 80)
  23.       draw_actor_name(actor, x, y)
  24.       draw_actor_class(actor, x + 144, y)
  25.       draw_actor_level(actor, x, y + 32)
  26.       draw_actor_state(actor, x + 90, y + 32)
  27.       draw_actor_exp(actor, x, y + 64)
  28.       draw_actor_hp(actor, x + 236, y + 32)
  29.       draw_actor_sp(actor, x + 236, y + 64)
  30.     end
  31. =end
  32.    
  33.   for i in 0...$game_party.actors.size
  34.     x = 4
  35.     y = i*116#0
  36.     actor = $game_party.actors[i]
  37.     # 如果 升级 。(也就是上面那个升级标志为 true)
  38.     if $level_up_flags
  39.       # 定义显示头像的 bitmap 为 微笑头像
  40.       bitmap = RPG::Cache.character(actor.name + "_fl", 0)
  41.       # 显示升级图标图片
  42.       self.contents.blt(x + 330, y, RPG::Cache.icon("level_up"), Rect.new(0, 0, 183, 36))
  43.       # 其他情况(也就是升级标志为 false)
  44.     else
  45.       # 定义显示头像的 bitmap 为 一般头像
  46.       bitmap = RPG::Cache.character(actor.name + "_f", 0)
  47.       # 显示角色等级。
  48.       draw_actor_level(actor, x + 364, y + 3)
  49.     end
  50.     # 显示上面所定义的头像。
  51.     src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  52.     self.contents.blt(x - 4, y, bitmap, src_rect) #<-(括号里面可改头像坐标)
  53.     #  描绘角色名
  54.     draw_actor_name(actor, x + 144, y)
  55.     #  描绘角色最大HP 和 最大 SP。
  56.     self.contents.font.color = system_color
  57.     txta = "最大" + $data_system.words.hp + ":"
  58.     txtb = "最大" + $data_system.words.sp + ":"
  59.     self.contents.draw_text(x + 144, y + 34, 96, 32, txta)
  60.     self.contents.draw_text(x + 144, y + 58, 96, 32, txtb)
  61.     self.contents.font.color = normal_color
  62.     self.contents.draw_text(x + 246, y + 34, 48, 32, actor.maxhp.to_s)
  63.     self.contents.draw_text(x + 246, y + 58, 48, 32, actor.maxsp.to_s)
  64.     # 描绘角色当前经念 和 升级经念。
  65.     self.contents.font.color = system_color
  66.     self.contents.draw_text(x + 360, y + 38, 96, 32, "当前经念:")
  67.     self.contents.draw_text(x + 360, y + 60, 144, 32, "升级所需经念:")
  68.     self.contents.font.color = normal_color
  69.     self.contents.draw_text(x + 514, y + 38, 84, 32, actor.exp_s)
  70.     self.contents.draw_text(x + 514, y + 60, 84, 32, actor.next_exp_s)
  71.   end
  72.   end
  73. end
  74. ###############################################################################
  75. #==============================================================================
  76. class Scene_Map
  77.   #--------------------------------------------------------------------------
  78.   # ● 主处理
  79.   #--------------------------------------------------------------------------
  80.   def main
  81.     # 生成活动块
  82.     @spriteset = Spriteset_Map.new
  83.     # 生成信息窗口
  84.     @message_window = Window_Message.new
  85.     # 生成地图状态栏
  86.     @mapstatus_window = Window_MapStatus.new  ####################
  87.     # 执行过渡
  88.     Graphics.transition
  89.     # 主循环
  90.     loop do
  91.       # 刷新游戏画面
  92.       Graphics.update
  93.       # 刷新输入信息
  94.       Input.update
  95.       # 刷新画面
  96.       update
  97.       # 如果画面切换的话就中断循环
  98.       if $scene != self
  99.         break
  100.       end
  101.     end
  102.     # 准备过渡
  103.     Graphics.freeze
  104.     # 释放活动块
  105.     @spriteset.dispose
  106.     # 释放信息窗口
  107.     @message_window.dispose
  108.     @mapstatus_window.dispose   ########################
  109.     if $scene.is_a?(Scene_Title)
  110.       Graphics.transition
  111.       Graphics.freeze
  112.     end
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 刷新画面
  116.   #--------------------------------------------------------------------------
  117.   def update
  118.     # 循环
  119.     loop do
  120.       #########################################################################
  121.       # 状态窗口滑出
  122.       if @mapstatus_window.y < 0 and $game_switches[1] == true
  123.         for i in 1..10
  124.           @mapstatus_window.y += 13
  125.           Graphics.update
  126.         end
  127.         @mapstatus_window.y = 0
  128.       end
  129.       # 如果动态增加经念打开(也就是事件—>脚本:$game_raise_exp = true)
  130.       if $game_raise_exp
  131.         # 定义角色
  132.         actor = $game_party_raise_exp[0]
  133.         # 获取经念
  134.         exp = $game_party_raise_exp[1]
  135.         # 如果经念为负值,改为正数,其他情况不变,并代入 n  
  136.         if exp < 0
  137.           # 经念减少 SE,可仿照修改
  138.           Audio.se_play("Audio/SE/012-system12", 80, 100)
  139.           n = -exp
  140.         else
  141.           # 经念增加 SE
  142.           Audio.se_play("Audio/SE/109-heal05", 80, 100)
  143.           n = exp
  144.         end
  145.         # 1 到 n 的循环
  146.         for i in 1..n
  147.           # 记录角色等级(旧的等级)
  148.           last_level = actor.level
  149.           # 如果角色经念小于 0
  150.           if actor.exp < 0
  151.             # 跳出循环
  152.             break
  153.           end
  154.           # 如果经念小于 0 ,角色经念就递减 1 ,反之就递增 1 。
  155.           if exp < 0
  156.             actor.exp -= 1
  157.           else
  158.             actor.exp += 1
  159.             # 如果角色等级(当前等级) 大于 旧的等级
  160.             if actor.level > last_level
  161.               # 打开升级标志
  162.               $level_up_flags = true
  163.               # 升级 SE
  164.               Audio.se_play("Audio/SE/level_up", 80, 100)
  165.               # 1 到 40 的循环
  166.               for j in 1..40
  167.                 # 刷新地图状态窗口
  168.                 @mapstatus_window.refresh
  169.                 # 刷新游戏画面
  170.                 Graphics.update
  171.               end
  172.               # 关闭升级标志
  173.               $level_up_flags = false
  174.             end
  175.           end
  176.           # 刷新地图状态窗口
  177.           @mapstatus_window.refresh
  178.           # 刷新游戏画面
  179.           Graphics.update
  180.         end
  181.         # 关闭动态增加经念。
  182.         $game_raise_exp = false
  183.       end
  184.       # 状态窗口滑入
  185. =begin
  186.       if @mapstatus_window.y == 0 and $game_switches[1] == false
  187.         for i in 1..10
  188.           @mapstatus_window.y -= 13
  189.           Graphics.update
  190.         end
  191.         @mapstatus_window.y = -132
  192.       end
  193. =end
  194.       ##########################################################################
  195.       # 按照地图、实例、主角的顺序刷新
  196.       # (本更新顺序不会在满足事件的执行条件下成为给予角色瞬间移动
  197.       #  的机会的重要因素)
  198.       $game_map.update
  199.       $game_system.map_interpreter.update
  200.       $game_player.update
  201.       # 系统 (计时器)、画面刷新
  202.       $game_system.update
  203.       $game_screen.update
  204.       # 如果主角在场所移动中就中断循环
  205.       unless $game_temp.player_transferring
  206.         break
  207.       end
  208.       # 执行场所移动
  209.       transfer_player
  210.       # 处理过渡中的情况下、中断循环
  211.       if $game_temp.transition_processing
  212.         break
  213.       end
  214.     end
  215.     # 刷新活动块
  216.     @spriteset.update
  217.     # 刷新信息窗口
  218.     @message_window.update
  219.     # 游戏结束的情况下
  220.     if $game_temp.gameover
  221.       # 切换的游戏结束画面
  222.       $scene = Scene_Gameover.new
  223.       return
  224.     end
  225.     # 返回标题画面的情况下
  226.     if $game_temp.to_title
  227.       # 切换到标题画面
  228.       $scene = Scene_Title.new
  229.       return
  230.     end
  231.     # 处理过渡中的情况下
  232.     if $game_temp.transition_processing
  233.       # 清除过渡处理中标志
  234.       $game_temp.transition_processing = false
  235.       # 执行过渡
  236.       if $game_temp.transition_name == ""
  237.         Graphics.transition(20)
  238.       else
  239.         Graphics.transition(40, "Graphics/Transitions/" +
  240.           $game_temp.transition_name)
  241.       end
  242.     end
  243.     # 显示信息窗口中的情况下
  244.     if $game_temp.message_window_showing
  245.       return
  246.     end
  247.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  248.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  249.       # 不是在事件执行中或者禁止遇敌中
  250.       unless $game_system.map_interpreter.running? or
  251.              $game_system.encounter_disabled
  252.         # 确定队伍
  253.         n = rand($game_map.encounter_list.size)
  254.         troop_id = $game_map.encounter_list[n]
  255.         # 队伍有效的话
  256.         if $data_troops[troop_id] != nil
  257.           # 设置调用战斗标志
  258.           $game_temp.battle_calling = true
  259.           $game_temp.battle_troop_id = troop_id
  260.           $game_temp.battle_can_escape = true
  261.           $game_temp.battle_can_lose = false
  262.           $game_temp.battle_proc = nil
  263.         end
  264.       end
  265.     end
  266.     # 按下 B 键的情况下
  267.     if Input.trigger?(Input::B)
  268.       # 不是在事件执行中或菜单禁止中
  269.       unless $game_system.map_interpreter.running? or
  270.              $game_system.menu_disabled
  271.         # 设置菜单调用标志以及 SE 演奏
  272.         $game_temp.menu_calling = true
  273.         $game_temp.menu_beep = true
  274.       end
  275.     end
  276.     # 调试模式为 ON 并且按下 F9 键的情况下
  277.     if $DEBUG and Input.press?(Input::F9)
  278.       # 设置调用调试标志
  279.       $game_temp.debug_calling = true
  280.     end
  281.     # 不在主角移动中的情况下
  282.     unless $game_player.moving?
  283.       # 执行各种画面的调用
  284.       if $game_temp.battle_calling
  285.         call_battle
  286.       elsif $game_temp.shop_calling
  287.         call_shop
  288.       elsif $game_temp.name_calling
  289.         call_name
  290.       elsif $game_temp.menu_calling
  291.         call_menu
  292.       elsif $game_temp.save_calling
  293.         call_save
  294.       elsif $game_temp.debug_calling
  295.         call_debug
  296.       end
  297.     end
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 调用战斗
  301.   #--------------------------------------------------------------------------
  302.   def call_battle
  303.     # 清除战斗调用标志
  304.     $game_temp.battle_calling = false
  305.     # 清除菜单调用标志
  306.     $game_temp.menu_calling = false
  307.     $game_temp.menu_beep = false
  308.     # 生成遇敌计数
  309.     $game_player.make_encounter_count
  310.     # 记忆地图 BGM 、停止 BGM
  311.     $game_temp.map_bgm = $game_system.playing_bgm
  312.     $game_system.bgm_stop
  313.     # 演奏战斗开始 SE
  314.     $game_system.se_play($data_system.battle_start_se)
  315.     # 演奏战斗 BGM
  316.     $game_system.bgm_play($game_system.battle_bgm)
  317.     # 矫正主角姿势
  318.     $game_player.straighten
  319.     # 切换到战斗画面
  320.     $scene = Scene_Battle.new
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 调用商店
  324.   #--------------------------------------------------------------------------
  325.   def call_shop
  326.     # 清除商店调用标志
  327.     $game_temp.shop_calling = false
  328.     # 矫正主角姿势
  329.     $game_player.straighten
  330.     # 切换到商店画面
  331.     $scene = Scene_Shop.new
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ● 调用名称输入
  335.   #--------------------------------------------------------------------------
  336.   def call_name
  337.     # 清除调用名称输入标志
  338.     $game_temp.name_calling = false
  339.     # 矫正主角姿势
  340.     $game_player.straighten
  341.     # 切换到名称输入画面
  342.     $scene = Scene_Name.new
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ● 调用菜单
  346.   #--------------------------------------------------------------------------
  347.   def call_menu
  348.     # 清除菜单调用标志
  349.     $game_temp.menu_calling = false
  350.     # 已经设置了菜单 SE 演奏标志的情况下
  351.     if $game_temp.menu_beep
  352.       # 演奏确定 SE
  353.       $game_system.se_play($data_system.decision_se)
  354.       # 清除菜单演奏 SE 标志
  355.       $game_temp.menu_beep = false
  356.     end
  357.     # 矫正主角姿势
  358.     $game_player.straighten
  359.     # 切换到菜单画面
  360.     $scene = Scene_Menu.new
  361.   end
  362.   #--------------------------------------------------------------------------
  363.   # ● 调用存档
  364.   #--------------------------------------------------------------------------
  365.   def call_save
  366.     # 矫正主角姿势
  367.     $game_player.straighten
  368.     # 切换到存档画面
  369.     $scene = Scene_Save.new
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● 调用调试
  373.   #--------------------------------------------------------------------------
  374.   def call_debug
  375.     # 清除调用调试标志
  376.     $game_temp.debug_calling = false
  377.     # 演奏确定 SE
  378.     $game_system.se_play($data_system.decision_se)
  379.     # 矫正主角姿势
  380.     $game_player.straighten
  381.     # 切换到调试画面
  382.     $scene = Scene_Debug.new
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ● 主角的场所移动
  386.   #--------------------------------------------------------------------------
  387.   def transfer_player
  388.     # 清除主角场所移动调试标志
  389.     $game_temp.player_transferring = false
  390.     # 移动目标与现在的地图有差异的情况下
  391.     if $game_map.map_id != $game_temp.player_new_map_id
  392.       # 设置新地图
  393.       $game_map.setup($game_temp.player_new_map_id)
  394.     end
  395.     # 设置主角位置
  396.     $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  397.     # 设置主角朝向
  398.     case $game_temp.player_new_direction
  399.     when 2  # 下
  400.       $game_player.turn_down
  401.     when 4  # 左
  402.       $game_player.turn_left
  403.     when 6  # 右
  404.       $game_player.turn_right
  405.     when 8  # 上
  406.       $game_player.turn_up
  407.     end
  408.     # 矫正主角姿势
  409.     $game_player.straighten
  410.     # 刷新地图 (执行并行事件)
  411.     $game_map.update
  412.     # 在生成活动块
  413.     @spriteset.dispose
  414.     @spriteset = Spriteset_Map.new
  415.     # 处理过渡中的情况下
  416.     if $game_temp.transition_processing
  417.       # 清除过渡处理中标志
  418.       $game_temp.transition_processing = false
  419.       # 执行过渡
  420.       Graphics.transition(20)
  421.     end
  422.     # 执行地图设置的 BGM、BGS 的自动切换
  423.     $game_map.autoplay
  424.     # 设置画面
  425.     Graphics.frame_reset
  426.     # 刷新输入信息
  427.     Input.update
  428.   end
  429. end
复制代码

点评

窗口遮挡的问题自己可以修改解决,不过那加减4全队经验的效果还是需要的...  发表于 2017-11-21 16:04

评分

参与人数 2星屑 +20 +1 收起 理由
RyanBern + 20 chd聚聚怎么开始聊其他的了
文雅夕露 + 1

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
8
 楼主| 发表于 2017-11-21 16:07:45 | 只看该作者
chd114 发表于 2017-11-21 15:00
这样的话你队伍里的2个人都能显示出来了
但是有点问题
首先这里面加的新能力似乎只有领队有,即使2个人都显 ...

加减经验的问题可能是因为这儿还没有做修改。
  1. # 如果动态增加经念打开(也就是事件—>脚本:$game_raise_exp = true)
  2.       if $game_raise_exp
  3.         # 定义角色
  4.         actor = $game_party_raise_exp[0]
  5.         # 获取经念
  6.         exp = $game_party_raise_exp[1]
  7.         # 如果经念为负值,改为正数,其他情况不变,并代入 n  
  8.         if exp < 0
  9.           # 经念减少 SE,可仿照修改
  10.           Audio.se_play("Audio/SE/012-system12", 80, 100)
  11.           n = -exp
  12.         else
  13.           # 经念增加 SE
  14.           Audio.se_play("Audio/SE/109-heal05", 80, 100)
  15.           n = exp
  16.         end
  17.         # 1 到 n 的循环
  18.         for i in 1..n
  19.           # 记录角色等级(旧的等级)
  20.           last_level = actor.level
  21.           # 如果角色经念小于 0
  22.           if actor.exp < 0
  23.             # 跳出循环
  24.             break
  25.           end
  26.           # 如果经念小于 0 ,角色经念就递减 1 ,反之就递增 1 。
  27.           if exp < 0
  28.             actor.exp -= 1
  29.           else
  30.             actor.exp += 1
  31.             # 如果角色等级(当前等级) 大于 旧的等级
  32.             if actor.level > last_level
  33.               # 打开升级标志
  34.               $level_up_flags = true
  35.               # 升级 SE
  36.               Audio.se_play("Audio/SE/level_up", 80, 100)
  37.               # 1 到 40 的循环
  38.               for j in 1..40
  39.                 # 刷新地图状态窗口
  40.                 @mapstatus_window.refresh
  41.                 # 刷新游戏画面
  42.                 Graphics.update
  43.               end
  44.               # 关闭升级标志
  45.               $level_up_flags = false
  46.             end
  47.           end
  48.           # 刷新地图状态窗口
  49.           @mapstatus_window.refresh
  50.           # 刷新游戏画面
  51.           Graphics.update
  52.         end
复制代码

最后就是事件页的脚本修改吧
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

9
发表于 2017-11-21 16:16:58 | 只看该作者
文雅夕露 发表于 2017-11-21 16:07
加减经验的问题可能是因为这儿还没有做修改。

最后就是事件页的脚本修改吧 ...

那你先试试看
···你不上课吗?

点评

不清楚,我是下载一个范例得到的  发表于 2017-11-21 17:26
加了,顺便想问下这个脚本原版到底谁写的···  发表于 2017-11-21 17:24
1312580936  发表于 2017-11-21 17:19
没收到提示···我加你吧  发表于 2017-11-21 17:13
没反应...  发表于 2017-11-21 17:06
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 16:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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