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

Project1

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

请教关于离队系统

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-17
帖子
41
跳转到指定楼层
1
发表于 2008-9-30 06:13:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
下面是我用的一个离队脚本,我想在这个脚本里添加这个功能:当指定离队角色的编号大于10,那么数据库中该角色以下的所有角色编号都上升1。

比如当选择20号角色离队,那么数据库下面的21号角色自动上升变成20号角色,各项属性都覆盖了原来的20号角色,同样22号角色自动变成21号。。。。。。



  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================

  6. class Scene_Menu
  7. #--------------------------------------------------------------------------
  8. # ● 初始化对像
  9. #     menu_index : 命令光标的初期位置
  10. #--------------------------------------------------------------------------
  11. def initialize(menu_index = 0)
  12.    @menu_index = menu_index
  13. end
  14. #--------------------------------------------------------------------------
  15. # ● 主处理
  16. #--------------------------------------------------------------------------
  17. def main
  18.    # 生成命令窗口
  19.    s1 = $data_system.words.item
  20.    s2 = $data_system.words.skill
  21.    s3 = $data_system.words.equip
  22.    s4 = "状态"
  23.    s5 = "宠物仓库"
  24.    s6 = "升级加点"
  25.    s7 = "离队"
  26.    s8 = "存档"   
  27.    s9 = "结束游戏"
  28.    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9])
  29.    @command_window.index = @menu_index
  30.    # 同伴人数为 0 的情况下
  31.    if $game_party.actors.size == 0
  32.      # 物品、特技、装备、状态无效化
  33.      @command_window.disable_item(0)
  34.      @command_window.disable_item(1)
  35.      @command_window.disable_item(2)
  36.      @command_window.disable_item(3)
  37.    end
  38.    if $game_switches[1]
  39.      @command_window.disable_item(6)
  40.      end
  41.    # 禁止存档的情况下
  42.    if $game_system.save_disabled
  43.      # 存档无效
  44.      @command_window.disable_item(4)
  45.    end
  46.    # 生成游戏时间窗口
  47.    @playtime_window = Window_PlayTime.new
  48.    @playtime_window.x = 0
  49.    @playtime_window.y = 320
  50.    # 生成步数窗口
  51.    #@steps_window = Window_Steps.new
  52.    #@steps_window.x = 0
  53.    #@steps_window.y = 320
  54.    # 生成金钱窗口
  55.    @gold_window = Window_Gold.new
  56.    @gold_window.x = 0
  57.    @gold_window.y = 416
  58.    # 生成状态窗口
  59.    @status_window = Window_MenuStatus.new
  60.    @status_window.x = 160
  61.    @status_window.y = 0
  62.    # 执行过渡
  63.    Graphics.transition
  64.    # 主循环
  65.    loop do
  66.      # 刷新游戏画面
  67.      Graphics.update
  68.      # 刷新输入信息
  69.      Input.update
  70.      # 刷新画面
  71.      update
  72.      # 如果切换画面就中断循环
  73.      if $scene != self
  74.        break
  75.      end
  76.    end
  77.    # 准备过渡
  78.    Graphics.freeze
  79.    # 释放窗口
  80.    @command_window.dispose
  81.    @playtime_window.dispose
  82.    #@steps_window.dispose
  83.    @gold_window.dispose
  84.    @status_window.dispose
  85. end
  86. #--------------------------------------------------------------------------
  87. # ● 刷新画面
  88. #--------------------------------------------------------------------------
  89. def update
  90.    # 刷新窗口
  91.    @command_window.update
  92.    @playtime_window.update
  93.    #@steps_window.update
  94.    @gold_window.update
  95.    @status_window.update
  96.    # 命令窗口被激活的情况下: 调用 update_command
  97.    if @command_window.active
  98.      update_command
  99.      return
  100.    end
  101.    # 状态窗口被激活的情况下: 调用 update_status
  102.    if @status_window.active
  103.      update_status
  104.      return
  105.    end
  106. end
  107. #--------------------------------------------------------------------------
  108. # ● 刷新画面 (命令窗口被激活的情况下)
  109. #--------------------------------------------------------------------------
  110. def update_command
  111.    # 按下 B 键的情况下
  112.    if Input.trigger?(Input::B)
  113.      # 演奏取消 SE
  114.      $game_system.se_play($data_system.cancel_se)
  115.      # 切换的地图画面
  116.      $scene = Scene_Map.new
  117.      return
  118.    end
  119.    # 按下 C 键的情况下
  120.    if Input.trigger?(Input::C)
  121.      # 同伴人数为 0、存档、游戏结束以外的场合
  122.      if $game_party.actors.size == 0 and @command_window.index < 4
  123.        # 演奏冻结 SE
  124.        $game_system.se_play($data_system.buzzer_se)
  125.        return
  126.      end
  127.      # 命令窗口的光标位置分支
  128.      case @command_window.index
  129.      when 0  # 物品
  130.        # 演奏确定 SE
  131.        $game_system.se_play($data_system.decision_se)
  132.        # 切换到物品画面
  133.        $scene = Scene_Item.new
  134.      when 1  # 特技
  135.        # 演奏确定 SE
  136.        $game_system.se_play($data_system.decision_se)
  137.        # 激活状态窗口
  138.        @command_window.active = false
  139.        @status_window.active = true
  140.        @status_window.index = 0
  141.      when 2  # 装备
  142.        # 演奏确定 SE
  143.        $game_system.se_play($data_system.decision_se)
  144.        # 激活状态窗口
  145.        @command_window.active = false
  146.        @status_window.active = true
  147.        @status_window.index = 0
  148.      when 3  # 状态
  149.        # 演奏确定 SE
  150.        $game_system.se_play($data_system.decision_se)
  151.        # 激活状态窗口
  152.        @command_window.active = false
  153.        @status_window.active = true
  154.        @status_window.index = 0
  155.       
  156.      when 4  # 装备宠物
  157.        $game_system.se_play($data_system.decision_se)
  158.        $scene = Scene_Item2.new
  159.       
  160.      when 5  # 升级加点
  161.        # 演奏确定 SE
  162.        $game_system.se_play($data_system.decision_se)
  163.        # 切换到加点界面
  164.        $scene = Scene_Lvup.new
  165.               
  166.      when 6  # 离队
  167.       if $game_switches[1]
  168.         $game_system.se_play($data_system.buzzer_se)
  169.         else
  170.         $game_system.se_play($data_system.decision_se)
  171.         @command_window.active = false
  172.         @status_window.active = true
  173.         @status_window.index = 0
  174.       end
  175.      
  176.      when 7  # 存档
  177.        # 禁止存档的情况下
  178.        if $game_system.save_disabled
  179.          # 演奏冻结 SE
  180.          $game_system.se_play($data_system.buzzer_se)
  181.          return
  182.        end
  183.        # 演奏确定 SE
  184.        $game_system.se_play($data_system.decision_se)
  185.        # 切换到存档画面
  186.        $scene = Scene_Save.new  
  187.      
  188.      when 8  # 游戏结束
  189.        # 演奏确定 SE
  190.        $game_system.se_play($data_system.decision_se)
  191.        # 切换到游戏结束画面
  192.        $scene = Scene_End.new      
  193.      end
  194.      return
  195.    end
  196. end
  197. #--------------------------------------------------------------------------
  198. # ● 刷新画面 (状态窗口被激活的情况下)
  199. #--------------------------------------------------------------------------
  200. def update_status
  201.    # 按下 B 键的情况下
  202.    if Input.trigger?(Input::B)
  203.      # 演奏取消 SE
  204.      $game_system.se_play($data_system.cancel_se)
  205.      # 激活命令窗口
  206.      @command_window.active = true
  207.      @status_window.active = false
  208.      @status_window.index = -1
  209.      return
  210.    end
  211.    # 按下 C 键的情况下
  212.    if Input.trigger?(Input::C)
  213.      # 命令窗口的光标位置分支
  214.      case @command_window.index
  215.      when 1  # 特技
  216.        # 本角色的行动限制在 2 以上的情况下
  217.        if $game_party.actors[@status_window.index].restriction >= 2
  218.          # 演奏冻结 SE
  219.          $game_system.se_play($data_system.buzzer_se)
  220.          return
  221.        end
  222.        # 演奏确定 SE
  223.        $game_system.se_play($data_system.decision_se)
  224.        # 切换到特技画面
  225.        $scene = Scene_Skill.new(@status_window.index)
  226.      when 2  # 装备
  227.        # 演奏确定 SE
  228.        $game_system.se_play($data_system.decision_se)
  229.        # 切换的装备画面
  230.        $scene = Scene_Equip.new(@status_window.index)
  231.      when 3  # 状态
  232.        # 演奏确定 SE
  233.        $game_system.se_play($data_system.decision_se)
  234.        # 切换到状态画面
  235.        $scene = Scene_Status.new(@status_window.index)
  236.      when 6
  237.       if @status_window.index == 0
  238.        $game_system.se_play($data_system.buzzer_se)
  239.      else
  240.        @actor = $game_party.actors[@status_window.index]
  241.        if  @actor.id == 1
  242.          $game_system.se_play($data_system.buzzer_se)
  243.        else
  244.           $game_system.se_play($data_system.decision_se)
  245.        $game_party.actors.delete(@actor)
  246.        $game_player.refresh
  247.        $scene = Scene_Menu.new(6)
  248.        end
  249.        end
  250.      end
  251.      return
  252.    end
  253. end
  254. end
复制代码

版务信息:版主帮忙结贴~

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
2
发表于 2008-9-30 06:26:44 | 只看该作者
1.改數據庫估計不可能
2.提供錯了腳本
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

3
发表于 2008-9-30 06:33:21 | 只看该作者
这不是菜单画面的脚本么……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-17
帖子
41
4
 楼主| 发表于 2008-9-30 06:37:40 | 只看该作者
类似于数据库中批量复制粘贴的效果不能在脚本里实现么


回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

5
发表于 2008-9-30 06:40:10 | 只看该作者
以下引用如梦于2008-9-29 22:37:40的发言:

类似于数据库中批量复制粘贴的效果不能在脚本里实现么

至今没见过改这个的,
而且也没什么用处。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-17
帖子
41
6
 楼主| 发表于 2008-9-30 06:42:00 | 只看该作者
对我很有用啦.!..好像最后那一段是关于离队的
......
     when 6
      if @status_window.index == 0
       $game_system.se_play($data_system.buzzer_se)
     else
       @actor = $game_party.actors[@status_window.index]
       if  @actor.id == 1
         $game_system.se_play($data_system.buzzer_se)
       elsif  @actor.id == 6
         $game_system.se_play($data_system.buzzer_se)
       elsif  @actor.id == 7
         $game_system.se_play($data_system.buzzer_se)
       else
          $game_system.se_play($data_system.decision_se)
       $game_party.actors.delete(@actor)
       $game_player.refresh
       $scene = Scene_Menu.new(6)
       end
       end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
7
发表于 2008-9-30 06:54:16 | 只看该作者
actor.id為索引創建數組 ACTOR_ID = [0,0,0,0,0,0,0,0,0,0,10,11,12,13...]
actor.id >= 10的退了,就相應索引的數值 -1
actor.id == 20的退了,循環以上的值 -1
吧所有要變得隊員的屬性從算一邊就好了
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-17
帖子
41
8
 楼主| 发表于 2008-9-30 07:04:53 | 只看该作者
这...写哪儿哦{/fd}{/fd}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
9
发表于 2008-9-30 07:14:13 | 只看该作者
只是個思路,要實現,路還有很長

用事件,改個頭像,改個名字,改幾個屬性 就算了
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

10
发表于 2008-9-30 08:40:42 | 只看该作者
关于数据库修改角色的设定可以看这里:
http://rpg.blue/web/htm/news229.htm

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-23 11:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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