幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1827|回复: 9

[RMVX] 问几个问题

[复制链接]

2

主题

3

帖子

35

积分

②入门

积分
35
发表于 2008-3-3 21:30:18 | 显示全部楼层 |阅读模式
在RMXP中的问题

1.游戏执行文件的太阳图标是否可以修改?
如果可以,应该怎么改

2.游戏中人物升级后的红和蓝是否可以回满

3.在升级时可不可以显示属性的改变和新学到的技能

4.游戏的战斗音乐只能有一个吗?

5.游戏中人物死亡和游戏结束的背景一样
可以区分开吗

6.哪有一些素材
最好是仙剑1的

暂时就这么多了
等待回答
回复

使用道具 举报

330

主题

3719

帖子

5万

积分

⑧专业

霄月破苍穹

积分
58690
QQ
发表于 2008-3-3 22:01:04 | 显示全部楼层
1.请使用第3方软件修改
2.请使用RGSS脚本
3.同2
4.在战斗事件数据库队伍页面可以设置
5.没听懂..
6.同5.
噩梦刃化
回复 支持 反对

使用道具 举报

70

主题

2089

帖子

71

积分

版主

PitoriQ/庫伊

Rank: 7Rank: 7Rank: 7

积分
71
发表于 2008-3-4 10:09:34 | 显示全部楼层
人物死亡就是游戏结束- -
回复 支持 反对

使用道具 举报

4

主题

70

帖子

96

积分

②入门

积分
96
QQ
发表于 2008-3-4 17:03:19 | 显示全部楼层
1.图标在数据库中修改,
2.可以的,脚本在此"
比较好的方法:在Game_Actor里的

   #--------------------------------------------------------------------------
# ● 更改 EXP
#     exp : 新的 EXP
#--------------------------------------------------------------------------
def exp=(exp)
   @exp = [[exp, 9999999].min, 0].max
   # 升级
   while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
     @level += 1
     @hp = maxhp
     @sp = maxsp
     # 学会特技
     for j in $data_classes[@class_id].learnings
       if j.level == @level
         learn_skill(j.skill_id)
       end
     end
   end
   # 降级
   while @exp < @exp_list[@level]
     @level -= 1
   end
   # 修正当前的 HP 与 SP 超过最大值
   @hp = [@hp, self.maxhp].min
   @sp = [@sp, self.maxsp].min
end
3:脚本
回复 支持 反对

使用道具 举报

4

主题

70

帖子

96

积分

②入门

积分
96
QQ
发表于 2008-3-4 17:03:57 | 显示全部楼层
接上面的...
Q:使用1.1版后,战斗中升级提示窗口出完后等一段时间才出战斗结果窗口(就是那个获得xxEXP,xx金钱的窗口),怎么办?

解决方法:
删除脚本编辑器中的Scene_Battle 2,用此段脚本代替之(只适用于原版战斗系统)
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 2)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================
  6. class Scene_Battle
  7. #--------------------------------------------------------------------------
  8. # ● 开始自由战斗回合
  9. #--------------------------------------------------------------------------
  10. def start_phase1
  11.    # 转移到回合 1
  12.    @phase = 1
  13.    # 清除全体同伴的行动
  14.    $game_party.clear_actions
  15.    # 设置战斗事件
  16.    setup_battle_event
  17. end
  18. #--------------------------------------------------------------------------
  19. # ● 刷新画面 (自由战斗回合)
  20. #--------------------------------------------------------------------------
  21. def update_phase1
  22.    # 胜败判定
  23.    if judge
  24.      # 胜利或者失败的情况下 : 过程结束
  25.      return
  26.    end
  27.    # 开始同伴命令回合
  28.    start_phase2
  29. end
  30. #--------------------------------------------------------------------------
  31. # ● 开始同伴命令回合
  32. #--------------------------------------------------------------------------
  33. def start_phase2
  34.    # 转移到回合 2
  35.    @phase = 2
  36.    # 设置角色为非选择状态
  37.    @actor_index = -1
  38.    @active_battler = nil
  39.    # 有效化同伴指令窗口
  40.    @party_command_window.active = true
  41.    @party_command_window.visible = true
  42.    # 无效化角色指令窗口
  43.    @actor_command_window.active = false
  44.    @actor_command_window.visible = false
  45.    # 清除主回合标志
  46.    $game_temp.battle_main_phase = false
  47.    # 清除全体同伴的行动
  48.    $game_party.clear_actions
  49.    # 不能输入命令的情况下
  50.    unless $game_party.inputable?
  51.      # 开始主回合
  52.      start_phase4
  53.    end
  54. end
  55. #--------------------------------------------------------------------------
  56. # ● 刷新画面 (同伴命令回合)
  57. #--------------------------------------------------------------------------
  58. def update_phase2
  59.    # 按下 C 键的情况下
  60.    if Input.trigger?(Input::C)
  61.      # 同伴指令窗口光标位置分支
  62.      case @party_command_window.index
  63.      when 0  # 战斗
  64.        # 演奏确定 SE
  65.        $game_system.se_play($data_system.decision_se)
  66.        # 开始角色的命令回合
  67.        start_phase3
  68.      when 1  # 逃跑
  69.        # 不能逃跑的情况下
  70.        if $game_temp.battle_can_escape == false
  71.          # 演奏冻结 SE
  72.          $game_system.se_play($data_system.buzzer_se)
  73.          return
  74.        end
  75.        # 演奏确定 SE
  76.        $game_system.se_play($data_system.decision_se)
  77.        # 逃走处理
  78.        update_phase2_escape
  79.      end
  80.      return
  81.    end
  82. end
  83. #--------------------------------------------------------------------------
  84. # ● 画面更新 (同伴指令回合 : 逃跑)
  85. #--------------------------------------------------------------------------
  86. def update_phase2_escape
  87.    # 计算敌人速度的平均值
  88.    enemies_agi = 0
  89.    enemies_number = 0
  90.    for enemy in $game_troop.enemies
  91.      if enemy.exist?
  92.        enemies_agi += enemy.agi
  93.        enemies_number += 1
  94.      end
  95.    end
  96.    if enemies_number > 0
  97.      enemies_agi /= enemies_number
  98.    end
  99.    # 计算角色速度的平均值
  100.    actors_agi = 0
  101.    actors_number = 0
  102.    for actor in $game_party.actors
  103.      if actor.exist?
  104.        actors_agi += actor.agi
  105.        actors_number += 1
  106.      end
  107.    end
  108.    if actors_number > 0
  109.      actors_agi /= actors_number
  110.    end
  111.    # 逃跑成功判定
  112.    success = rand(100) < 50 * actors_agi / enemies_agi
  113.    # 成功逃跑的情况下
  114.    if success
  115.      # 演奏逃跑 SE
  116.      $game_system.se_play($data_system.escape_se)
  117.      # 还原为战斗开始前的 BGM
  118.      $game_system.bgm_play($game_temp.map_bgm)
  119.      # 战斗结束
  120.      battle_end(1)
  121.    # 逃跑失败的情况下
  122.    else
  123.      # 清除全体同伴的行动
  124.      $game_party.clear_actions
  125.      # 开始主回合
  126.      start_phase4
  127.    end
  128. end
  129. #--------------------------------------------------------------------------
  130. # ● 开始结束战斗回合
  131. #--------------------------------------------------------------------------
  132. def start_phase5
  133.    # 转移到回合 5
  134.    @phase = 5
  135.    # 演奏战斗结束 ME
  136.    $game_system.me_play($game_system.battle_end_me)
  137.    # 还原为战斗开始前的 BGM
  138.    $game_system.bgm_play($game_temp.map_bgm)
  139.    # 初始化 EXP、金钱、宝物
  140.    @exp = 0
  141.    gold = 0
  142.    treasures = []
  143.    # 循环
  144.    for enemy in $game_troop.enemies
  145.      # 敌人不是隐藏状态的情况下
  146.      unless enemy.hidden
  147.        # 获得 EXP、增加金钱
  148.        @exp += enemy.exp
  149.        gold += enemy.gold
  150.        # 出现宝物判定
  151.        if rand(100) < enemy.treasure_prob
  152.          if enemy.item_id > 0
  153.            treasures.push($data_items[enemy.item_id])
  154.          end
  155.          if enemy.weapon_id > 0
  156.            treasures.push($data_weapons[enemy.weapon_id])
  157.          end
  158.          if enemy.armor_id > 0
  159.            treasures.push($data_armors[enemy.armor_id])
  160.          end
  161.        end
  162.      end
  163.    end
  164.    # 限制宝物数为 6 个
  165.    treasures = treasures[0..5]
  166.    # 获得金钱
  167.    $game_party.gain_gold(gold)
  168.    # 获得宝物
  169.    for item in treasures
  170.      case item
  171.      when RPG::Item
  172.        $game_party.gain_item(item.id, 1)
  173.      when RPG::Weapon
  174.        $game_party.gain_weapon(item.id, 1)
  175.      when RPG::Armor
  176.        $game_party.gain_armor(item.id, 1)
  177.      end
  178.    end
  179.    # 生成战斗结果窗口
  180.    @result_window = Window_BattleResult.new(@exp, gold, treasures)
  181.    # 设置等待计数
  182.    @phase5_wait_count = 100
  183. end
  184. #--------------------------------------------------------------------------
  185. # ● 画面更新 (结束战斗回合)
  186. #--------------------------------------------------------------------------
  187. def update_phase5
  188.    # 等待计数大于 0 的情况下
  189.    if @phase5_wait_count > 0
  190.      # 减少等待计数
  191.      @phase5_wait_count -= 1
  192.      # 等待计数为 0 的情况下
  193.      if @phase5_wait_count == 0
  194.        # 显示结果窗口
  195.        @result_window.visible = true
  196.        # 清除主回合标志
  197.        $game_temp.battle_main_phase = false
  198.        # 刷新状态窗口
  199.        @status_window.refresh
  200.      end
  201.      return
  202.    end
  203.    # 按下 C 键的情况下
  204.    if Input.trigger?(Input::C)
  205.      # 关闭结果窗口
  206.      @result_window.visible = false
  207.      # 获得 EXP
  208.      for i in 0...$game_party.actors.size
  209.        actor = $game_party.actors[i]
  210.        if actor.cant_get_exp? == false
  211.          last_level = actor.level
  212.          actor.exp += @exp
  213.          if actor.level > last_level
  214.            @status_window.level_up(i)
  215.          end
  216.        end
  217.      end
  218.      # 战斗结束
  219.      battle_end(0)
  220.    end
  221. end
  222. end
复制代码
回复 支持 反对

使用道具 举报

4

主题

70

帖子

96

积分

②入门

积分
96
QQ
发表于 2008-3-4 17:05:09 | 显示全部楼层
又是接的上面的..怕格子不够了...
原理(各种战斗系统通用):
1、把最后的几个exp改成@exp,使其实例化
2、把获得经验的部分移动至最后的步骤
就是把

#--------------------------------------------------------------------------
# ● 开始结束战斗回合
#--------------------------------------------------------------------------
def start_phase5
   # 转移到回合 5
   @phase = 5
   # 演奏战斗结束 ME
   $game_system.me_play($game_system.battle_end_me)
   # 还原为战斗开始前的 BGM
   $game_system.bgm_play($game_temp.map_bgm)
   # 初始化 EXP、金钱、宝物
   exp = 0
   gold = 0
   treasures = []
   # 循环
   for enemy in $game_troop.enemies
     # 敌人不是隐藏状态的情况下
     unless enemy.hidden
       # 获得 EXP、增加金钱
       exp += enemy.exp
       gold += enemy.gold
       # 出现宝物判定
       if rand(100) < enemy.treasure_prob
         if enemy.item_id > 0
           treasures.push($data_items[enemy.item_id])
         end
         if enemy.weapon_id > 0
           treasures.push($data_weapons[enemy.weapon_id])
         end
         if enemy.armor_id > 0
           treasures.push($data_armors[enemy.armor_id])
         end
       end
     end
   end
   # 限制宝物数为 6 个
   treasures = treasures[0..5]
   # 获得 EXP
   for i in 0...$game_party.actors.size
     actor = $game_party.actors
     if actor.cant_get_exp? == false
       last_level = actor.level
       actor.exp += exp
       if actor.level > last_level
         @status_window.level_up(i)
       end
     end
   end
   # 获得金钱
   $game_party.gain_gold(gold)
   # 获得宝物
   for item in treasures
     case item
     when RPG::Item
       $game_party.gain_item(item.id, 1)
     when RPG::Weapon
       $game_party.gain_weapon(item.id, 1)
     when RPG::Armor
       $game_party.gain_armor(item.id, 1)
     end
   end
   # 生成战斗结果窗口
   @result_window = Window_BattleResult.new(exp, gold, treasures)
   # 设置等待计数
   @phase5_wait_count = 100
end
#--------------------------------------------------------------------------
# ● 画面更新 (结束战斗回合)
#--------------------------------------------------------------------------
def update_phase5
   # 等待计数大于 0 的情况下
   if @phase5_wait_count > 0
     # 减少等待计数
     @phase5_wait_count -= 1
     # 等待计数为 0 的情况下
     if @phase5_wait_count == 0
       # 显示结果窗口
       @result_window.visible = true
       # 清除主回合标志
       $game_temp.battle_main_phase = false
       # 刷新状态窗口
       @status_window.refresh
     end
     return
   end
   # 按下 C 键的情况下
   if Input.trigger?(Input::C)
     # 战斗结束
     battle_end(0)
   end
end

改成这个样子:

#--------------------------------------------------------------------------
# ● 开始结束战斗回合
#--------------------------------------------------------------------------
def start_phase5
   # 转移到回合 5
   @phase = 5
   # 演奏战斗结束 ME
   $game_system.me_play($game_system.battle_end_me)
   # 还原为战斗开始前的 BGM
   $game_system.bgm_play($game_temp.map_bgm)
   # 初始化 EXP、金钱、宝物
   @exp = 0
   gold = 0
   treasures = []
   # 循环
   for enemy in $game_troop.enemies
     # 敌人不是隐藏状态的情况下
     unless enemy.hidden
       # 获得 EXP、增加金钱
       @exp += enemy.exp
       gold += enemy.gold
       # 出现宝物判定
       if rand(100) < enemy.treasure_prob
         if enemy.item_id > 0
           treasures.push($data_items[enemy.item_id])
         end
         if enemy.weapon_id > 0
           treasures.push($data_weapons[enemy.weapon_id])
         end
         if enemy.armor_id > 0
           treasures.push($data_armors[enemy.armor_id])
         end
       end
     end
   end
   # 限制宝物数为 6 个
   treasures = treasures[0..5]
   # 获得金钱
   $game_party.gain_gold(gold)
   # 获得宝物
   for item in treasures
     case item
     when RPG::Item
       $game_party.gain_item(item.id, 1)
     when RPG::Weapon
       $game_party.gain_weapon(item.id, 1)
     when RPG::Armor
       $game_party.gain_armor(item.id, 1)
     end
   end
   # 生成战斗结果窗口
   @result_window = Window_BattleResult.new(@exp, gold, treasures)
   # 设置等待计数
   @phase5_wait_count = 100
end
#--------------------------------------------------------------------------
# ● 画面更新 (结束战斗回合)
#--------------------------------------------------------------------------
def update_phase5
   # 等待计数大于 0 的情况下
   if @phase5_wait_count > 0
     # 减少等待计数
     @phase5_wait_count -= 1
     # 等待计数为 0 的情况下
     if @phase5_wait_count == 0
       # 显示结果窗口
       @result_window.visible = true
       # 清除主回合标志
       $game_temp.battle_main_phase = false
       # 刷新状态窗口
       @status_window.refresh
     end
     return
   end
   # 按下 C 键的情况下
   if Input.trigger?(Input::C)
     # 关闭结果窗口
     @result_window.visible = false
     # 获得 EXP
     for i in 0...$game_party.actors.size
       actor = $game_party.actors
       if actor.cant_get_exp? == false
         last_level = actor.level
         actor.exp += @exp
         if actor.level > last_level
           @status_window.level_up(i)
         end
       end
     end
     # 战斗结束
     battle_end(0)
   end
end

3、记得加经验前要关闭结果窗口

@result_window.visible = false



--------------------------------------------------------------------------------


Q:这么麻烦,有更简便的方法吗?

有!就是显示完升级提示不等待直接显示结果窗口
把Scene_Battle 2里194行左右的

   # 设置等待计数
   @phase5_wait_count = 100
删掉即可
回复 支持 反对

使用道具 举报

4

主题

70

帖子

96

积分

②入门

积分
96
QQ
发表于 2008-3-4 17:08:01 | 显示全部楼层
4.可以换的
首先说,我也没有想到,后来是玩英雄传说玩郁闷了才想到的。英雄传说无愧是音乐场景都很优秀的游戏,可是一些时候如果进入重复地图都是某一个不太喜欢的音乐。真不如去撞死捏。。

那么夜夜可以推荐大家一点——

就是如果你的游戏中有玩家可能会重复路过的地段,那么就可以设置 随机变量

变量设置两个:

1随机音乐  找你游戏中 最精华的15首歌,然后做成 随机事件  主角一进入地图就自动判断 自动运行 然后……

2随机渐变 (需要动脚本)

在脚本 Scene_Map 类上

将 274行后面修改:

# 执行过渡
     case $game_variables[19]
when 0
Graphics.transition(20)
when 1
Graphics.transition(40)
when 2
Graphics.transition(40, "Graphics/Transitions/002-夜雨莹心-地图")  #——002后面的可以自己修改,我是直接复制我脚本上的…
when 3
Graphics.transition(40, "Graphics/Transitions/003-夜雨莹心-地图")
when 4
Graphics.transition(40, "Graphics/Transitions/004-夜雨莹心-地图")
when 5
Graphics.transition(40, "Graphics/Transitions/005-夜雨莹心-地图")
when 6
Graphics.transition(40, "Graphics/Transitions/006-夜雨莹心-地图")
end

这样也可以加15个左右的随机渐变,那么效果就很不错了捏。。另外还可以设置

3——随机的天气

4——随机的突发事件



如果你够努力的话,每个NPC 都设置随机的对话,这个游戏的内容就很充实的。HOHO。。

另外 两个相临地图中间最好可以使用 级进 法   就是同一个音乐  80  --100音量
《黑暗圣剑传说》

或者是空音法——  两个随机音乐之间是空1个甚至多个地图。 那么每当走到不同的地方变换音乐的时候,空地图会跟着上一个音乐走 但是请注意不要空太多,不然会有无音乐的地图出现哦。。。

   追加内容,by“呆呆的新手”

RMXP虽然有设置战斗音乐,不过只能设置一种。每次战斗都是用一个音乐,听不了几遍就会腻了。尤其是像我这样的新手做的游戏,本来就没什么好图片,要是音乐在太单调,做出来的游戏就没法玩了。所以,我利用随技数的功能,制作了这个小系统,在一般战斗中,有几种不同的音乐可以播放。

(当然,改脚本的话也许会有更好的效果,但对新手来说难了点……)

现在假设有3个战斗音乐,分别为音乐1、音乐2和音乐3。

首先,需要一个接受随机数的变量,取名为“随机数”。
然后在公共事件中设置一个公共事件,取名为“随机战斗音乐”,目标无。



变量操作:[随机数] = 随机数 (1..3)
条件分歧:变量 [随机数] == 1
演奏BGM:'音乐1', 100, 100

除此以外的场合
   条件分歧:变量 [随机数] == 2
     演奏BGM:'音乐2', 100, 100

     除此以外的场合
       演奏BGM:'音乐1', 100, 100

       分歧结束

    分歧结束

接下来,在队伍中设置需要随机战斗音乐的敌人队伍。
条件:回合0    距离:战斗
公共事件:随机战斗音乐

另外,在系统中,将战斗音乐设为“无”,否则在战斗开始前会先播放1秒钟左右的系统战斗音乐,才会开始随机战斗音乐。

这样,在遇敌时就可以随机播放某个战斗音乐。当然战斗音乐个数还可以增加。

(虽然每一个队伍都要设置一次显得麻烦了点,不过我个人觉得还是值得的)
回复 支持 反对

使用道具 举报

4

主题

70

帖子

96

积分

②入门

积分
96
QQ
发表于 2008-3-4 17:09:27 | 显示全部楼层
5.人死了后不就进入结局图了吗?
  请LZ说明白点...
回复 支持 反对

使用道具 举报

2

主题

3

帖子

35

积分

②入门

积分
35
 楼主| 发表于 2008-3-4 21:21:07 | 显示全部楼层
就是在人物死亡的时候是游戏结束

而当游戏打翻版之后,也是游戏结束的画面

两个一样

不好区分
可以区别吗?

最后一个问题是
我想找一些RMXP的素材
哪有

我想要仙剑1的RMXP的素材
回复 支持 反对

使用道具 举报

62

主题

332

帖子

3234

积分

⑥精研

人造神经病患者

积分
3234
发表于 2008-3-4 21:34:15 | 显示全部楼层
像我一样
自己画!
笔没水了,暂时无法签名
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-20 11:57 , Processed in 0.012994 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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