查看: 17413|回复: 334

[已经过期] sailcat的脚本 技能依赖变量 怒气槽应用

[复制链接]
梦石
0
星屑
35248
在线时间
4171 小时
注册时间
2007-12-15
回帖
9489
发表于 2018-5-22 07:53:13 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 89444640 于 2018-5-22 09:15 编辑

需要 技能消耗依赖 v1.2 by SailCat
说明中有这样的说法
g) 技能消耗变量:cv={变量ID=>消耗值},写成hash形式,不能省略花括号
然后我考虑,做个怒气槽,
应用变量A记录数据,数值为1000 角色普通攻击时增加 增加值暂定为100 使用技能时增加技能增加增加值暂定为200,被攻击增加增加值暂定为100,当数值达到1000和1000以上时,清为0,记录变量B为1 相当于怒气攒了满一格,
变量B最大数值为3,当数值为3。数值0时不能使用必杀技,当数值为3的时候,不再增加。
当变量B为3时,变量A不增加。
发动超必杀技消耗一个变量B,变量B为0时不能使用(废话--b)
发动超必杀技,需要消耗两个变量B,因为消耗一回合爆豆太耽误时间了,取消这个设置

目前不知道怎么设置,让技能增加变量A,被攻击和普通攻击增加变量A
然后肯定每个角色不通用,有多少个角色设置多少个ORZ,总数量又让我头疼了……

角色战斗不能时,变量A、B均归为0
为了保持平衡,战斗结束时清空变量A B,避免boss战上来就放超必杀,避免提前攒怒气槽

设置一些使用后可增加怒气槽的道具。

大概这样,我尽量今天抽空弄出个能配合我这界面用的简单怒气槽去- -b

nimabi 人太多了,烦死。我每天思路都被打断,真想……
是这个样子。
未标题-1副本.png
如果可能的话,整合系统增加个开关,初期没有必杀技,菜单下面是空的,这个不就是所谓的跟着系统一起升级了吗。但是后果极其严重,没有必杀技槽时候,下面是空的。还得有图标重排的隐患。

然后如果能实现怒气槽满的瞬间又动态效果,可以给使用者提示,你赞满了一条怒气槽,画出来容易,但是程序不支持我就没辙了。
然后如果可能,怒气槽用N帧循环动画显示,表现满了的晶体也用动画
梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-5-24 11:46:59 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-5-24 12:56 编辑
89444640 发表于 2018-5-24 08:37
测试中,想起个事情,当年有个飞机游戏,就是流程特别特别长的哪个,如果通关能打大概2个小时以上,保险是 ...




是你设置问题~~  

增加怒气值1000点#TP=1000;@蓄力  ←要用小写
降低敌人怒气值500点。#KP=500;@回复   ←扣元气要负数,TP KP都一样,正数+负数-,不管是对敌人还是我方

防御不加TP。 大姐,你防御+20哎,104像素的2%可不容易辨别= =,你防御50回合看看有没有一个豆子 ....

防御增加的TP是要等显示出“防御”才会增加的。而且挨打也会增加TP,就不容易辨别。
其实如果战斗中防御不是很重要的话,可以改成“蓄力”指令,然后去掉防御50%减伤功能,或者换成,增加50%伤害~ 这样用蓄力指令的时候挨打就要被counter

而且敌人也可以使用防御(蓄力)指令,可以做出一个只会憋大招的BOSS....

测试用小插件, 插到MAIN上面,不用的话可以删掉,战斗的时候就会弹出信息框提示,这样就方便测试有没有效果了吧。  然后要检查技能设置,建个NPC,输入脚本:葵花宝典(技能ID)   显示的不是nil就是设置正确。排除设置问题再来测试方便找BUG = =
[pre lang="ruby"]def 攒必杀(actor,n)
  a = actor.tp
  $game_variables[MAX_TP_ID][0] = a
  if actor.is_a?(Game_Actor)
    b = $game_variables[MAX_TP_ID][actor.id] != nil ? $game_variables[MAX_TP_ID][actor.id] : 0
    if actor.hp <= 0 and DEAD_CLEAN_TP
      actor.tp = 0
    else
     if ZERO_TP and b == 0
       actor.tp = 0
     else
       if n != 0
        actor.tp = [[a+n,b*1000+999].min,0].max
       else
        actor.tp = 0
       end
     end
    end
  else
    if actor.hp <= 0 and DEAD_CLEAN_TP
      actor.tp = 0
    else
      if n != 0
       actor.tp = [[a+n,3999].min,0].max
      else
       actor.tp = 0
      end
    end
  end
  if n == 0
   p actor.name +"的TP归0"
  elsif n < 0
   p actor.name +"增加"+ n.to_s + "TP"
  else n > 0
   p actor.name +"减少"+ n.to_s + "TP"
  end
end  
def 葵花宝典(n)
  a = $date_skills[n]._tp
  b = $date_skills[n]._kp
  p "TP是"+a.to_s+";KP是"+b.to_s
end
[/pre]

挨技能打不增加TP,是我没打包进去= =   把  Scene_Battle 4  这个脚本内容用下面的覆盖就可以了   然后第一个脚本 增加一句  B_SKILL_TP = 200   这个就是技能挨打增加的TP

原本想用kp来+技能挨打TP就好了,帖子发了后,想了想,这样等于一堆技能全部要设置kp,就改了下,然后忘记更新=。=

[pre lang="ruby"]#==============================================================================
# ■ Scene_Battle (分割定义 4)
#------------------------------------------------------------------------------
#  处理战斗画面的类。
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 开始主回合
  #--------------------------------------------------------------------------
  def start_phase4
    # 转移到回合 4
    @phase = 4
    # 回合数计数
    $game_temp.battle_turn += 1
    # 搜索全页的战斗事件
    for index in 0...$data_troops[@troop_id].pages.size
      # 获取事件页
      page = $data_troops[@troop_id].pages[index]
      # 本页的范围是 [回合] 的情况下
      if page.span == 1
        # 设置已经执行标志
        $game_temp.battle_event_flags[index] = false
      end
    end
    # 设置角色为非选择状态
    @actor_index = -1
    @active_battler = nil
    # 有效化同伴指令窗口
    @party_command_window.active = false
    @party_command_window.visible = false
    # 无效化角色指令窗口
    @actor_command_window.active = false
    @actor_command_window.visible = false
    # 设置主回合标志
    $game_temp.battle_main_phase = true
    # 生成敌人行动
    for enemy in $game_troop.enemies
      enemy.make_action
    end
    # 生成行动顺序
    make_action_orders
    # 移动到步骤 1
    @phase4_step = 1
  end
  #--------------------------------------------------------------------------
  # ● 生成行动循序
  #--------------------------------------------------------------------------
  def make_action_orders
    # 初始化序列 @action_battlers
    @action_battlers = []
    # 添加敌人到 @action_battlers 序列
    for enemy in $game_troop.enemies
      @action_battlers.push(enemy)
    end
    # 添加角色到 @action_battlers 序列
    for actor in $game_party.actors
      @action_battlers.push(actor)
    end
    # 确定全体的行动速度
    for battler in @action_battlers
      battler.make_action_speed
    end
    # 按照行动速度从大到小排列
    @action_battlers.sort! {|a,b|
      b.current_action.speed - a.current_action.speed }
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合)
  #--------------------------------------------------------------------------
  def update_phase4
    case @phase4_step
    when 1
      update_phase4_step1
    when 2
      update_phase4_step2
    when 3
      update_phase4_step3
    when 4
      update_phase4_step4
    when 5
      update_phase4_step5
    when 6
      update_phase4_step6
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 1 : 准备行动)
  #--------------------------------------------------------------------------
  def update_phase4_step1
    # 隐藏帮助窗口
    @help_window.visible = false
    # 判定胜败
    if judge
      # 胜利或者失败的情况下 : 过程结束
      return
    end
    # 强制行动的战斗者不存在的情况下
    if $game_temp.forcing_battler == nil
      # 设置战斗事件
      setup_battle_event
      # 执行战斗事件中的情况下
      if $game_system.battle_interpreter.running?
        return
      end
    end
    # 强制行动的战斗者存在的情况下
    if $game_temp.forcing_battler != nil
      # 在头部添加后移动
      @action_battlers.delete($game_temp.forcing_battler)
      @action_battlers.unshift($game_temp.forcing_battler)
    end
    # 未行动的战斗者不存在的情况下 (全员已经行动)
    if @action_battlers.size == 0
      # 开始同伴命令回合
      start_phase2
      return
    end
    # 初始化动画 ID 和公共事件 ID
    @animation1_id = 0
    @animation2_id = 0
    @common_event_id = 0
    # 未行动的战斗者移动到序列的头部
    @active_battler = @action_battlers.shift
    # 如果已经在战斗之外的情况下
    if @active_battler.index == nil
      return
    end
    # 连续伤害
    if @active_battler.hp > 0 and @active_battler.slip_damage?
      @active_battler.slip_damage_effect
      @active_battler.damage_pop = true
    end
    # 自然解除状态
    @active_battler.remove_states_auto
    # 刷新状态窗口
    @status_window.refresh
    # 移至步骤 2
    @phase4_step = 2
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 2 : 开始行动)
  #--------------------------------------------------------------------------
  def update_phase4_step2
    # 如果不是强制行动
    unless @active_battler.current_action.forcing
      # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
      if @active_battler.restriction == 2 or @active_battler.restriction == 3
        # 设置行动为攻击
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
      end
      # 限制为 [不能行动] 的情况下
      if @active_battler.restriction == 4
        # 清除行动强制对像的战斗者
        $game_temp.forcing_battler = nil
        # 移至步骤 1
        @phase4_step = 1
        return
      end
    end
    # 清除对像战斗者
    @target_battlers = []
    # 行动种类分支
    case @active_battler.current_action.kind
    when 0  # 基本
      make_basic_action_result
    when 1  # 特技
      make_skill_action_result
    when 2  # 物品
      make_item_action_result
    end
    # 移至步骤 3
    if @phase4_step == 2
      @phase4_step = 3
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成基本行动结果
  #--------------------------------------------------------------------------
  def make_basic_action_result
    # 攻击的情况下
    if @active_battler.current_action.basic == 0
      # 设置攻击 ID
      @animation1_id = @active_battler.animation1_id
      @animation2_id = @active_battler.animation2_id
      # 行动方的战斗者是敌人的情况下
      if @active_battler.is_a?(Game_Enemy)
        if @active_battler.restriction == 3
          target = $game_troop.random_target_enemy
        elsif @active_battler.restriction == 2
          target = $game_party.random_target_actor
        else
          index = @active_battler.current_action.target_index
          target = $game_party.smooth_target_actor(index)
        end
      end
      # 行动方的战斗者是角色的情况下
      if @active_battler.is_a?(Game_Actor)
        if @active_battler.restriction == 3
          target = $game_party.random_target_actor
        elsif @active_battler.restriction == 2
          target = $game_troop.random_target_enemy
        else
          index = @active_battler.current_action.target_index
          target = $game_troop.smooth_target_enemy(index)
        end
      end
      # 设置对像方的战斗者序列
      @target_battlers = [target]
      # 应用通常攻击效果
      for target in @target_battlers
        target.attack_effect(@active_battler)
        攒必杀(target,BEAT_TP)
      end
      攒必杀(@active_battler,ATTACK_TP)
      return
    end
    # 防御的情况下
    if @active_battler.current_action.basic == 1
      攒必杀(@active_battler,DEFENSE_TP)
      # 帮助窗口显示"防御"
      @help_window.set_text($data_system.words.guard, 1)
      return
    end
    # 逃跑的情况下
    if @active_battler.is_a?(Game_Enemy) and
       @active_battler.current_action.basic == 2
      #  帮助窗口显示"逃跑"
      @help_window.set_text("逃跑", 1)
      # 逃跑
      @active_battler.escape
      return
    end
    # 什么也不做的情况下
    if @active_battler.current_action.basic == 3
      # 清除强制行动对像的战斗者
      $game_temp.forcing_battler = nil
      # 移至步骤 1
      @phase4_step = 1
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置物品或特技对像方的战斗者
  #     scope : 特技或者是物品的范围
  #--------------------------------------------------------------------------
  def set_target_battlers(scope)
    # 行动方的战斗者是敌人的情况下
    if @active_battler.is_a?(Game_Enemy)
      # 效果范围分支
      case scope
      when 1  # 敌单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_party.smooth_target_actor(index))
      when 2  # 敌全体
        for actor in $game_party.actors
          if actor.exist?
            @target_battlers.push(actor)
          end
        end
      when 3  # 我方单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_troop.smooth_target_enemy(index))
      when 4  # 我方全体
        for enemy in $game_troop.enemies
          if enemy.exist?
            @target_battlers.push(enemy)
          end
        end
      when 5  # 我方单体 (HP 0)
        index = @active_battler.current_action.target_index
        enemy = $game_troop.enemies[index]
        if enemy != nil and enemy.hp0?
          @target_battlers.push(enemy)
        end
      when 6  # 我方全体 (HP 0)
        for enemy in $game_troop.enemies
          if enemy != nil and enemy.hp0?
            @target_battlers.push(enemy)
          end
        end
      when 7  # 使用者
        @target_battlers.push(@active_battler)
      end
    end
    # 行动方的战斗者是角色的情况下
    if @active_battler.is_a?(Game_Actor)
      # 效果范围分支
      case scope
      when 1  # 敌单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_troop.smooth_target_enemy(index))
      when 2  # 敌全体
        for enemy in $game_troop.enemies
          if enemy.exist?
            @target_battlers.push(enemy)
          end
        end
      when 3  # 我方单体
        index = @active_battler.current_action.target_index
        @target_battlers.push($game_party.smooth_target_actor(index))
      when 4  # 我方全体
        for actor in $game_party.actors
          if actor.exist?
            @target_battlers.push(actor)
          end
        end
      when 5  # 我方单体 (HP 0)
        index = @active_battler.current_action.target_index
        actor = $game_party.actors[index]
        if actor != nil and actor.hp0?
          @target_battlers.push(actor)
        end
      when 6  # 我方全体 (HP 0)
        for actor in $game_party.actors
          if actor != nil and actor.hp0?
            @target_battlers.push(actor)
          end
        end
      when 7  # 使用者
        @target_battlers.push(@active_battler)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成特技行动结果
  #--------------------------------------------------------------------------
  def make_skill_action_result
    # 获取特技
    @skill = $data_skills[@active_battler.current_action.skill_id]
    # 如果不是强制行动
    unless @active_battler.current_action.forcing
      # 因为 SP 耗尽而无法使用的情况下
      unless @active_battler.skill_can_use?(@skill.id)
        # 清除强制行动对像的战斗者
        $game_temp.forcing_battler = nil
        # 移至步骤 1
        @phase4_step = 1
        return
      end
    end
    # 消耗 SP
    @active_battler.sp -= @skill.sp_cost
    攒必杀(@active_battler,@skill._tp) if @skill._tp != nil
    # 刷新状态窗口
    @status_window.refresh
    # 在帮助窗口显示特技名
    #@help_window.set_text(@skill.name, 1)   
    if @active_battler.is_a?(Game_Enemy)
    @help_window.set_text(@skill.name, 1)
    end
    # 设置动画 ID
    @animation1_id = @skill.animation1_id
    @animation2_id = @skill.animation2_id
    # 设置公共事件 ID
    @common_event_id = @skill.common_event_id
    # 设置对像侧战斗者
    set_target_battlers(@skill.scope)
    # 应用特技效果
    a = @skill._kp != nil ? @skill._kp : B_SKILL_TP
    for target in @target_battlers
      target.skill_effect(@active_battler, @skill)
      攒必杀(target,a)
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成物品行动结果
  #--------------------------------------------------------------------------
  def make_item_action_result
    # 获取物品
    @item = $data_items[@active_battler.current_action.item_id]
    # 因为物品耗尽而无法使用的情况下
    unless $game_party.item_can_use?(@item.id)
      # 移至步骤 1
      @phase4_step = 1
      return
    end
    # 消耗品的情况下
    if @item.consumable
      # 使用的物品减 1
      $game_party.lose_item(@item.id, 1)
    end
    # 在帮助窗口显示物品名
    @help_window.set_text(@item.name, 1)
    # 设置动画 ID
    @animation1_id = @item.animation1_id
    @animation2_id = @item.animation2_id
    # 设置公共事件 ID
    @common_event_id = @item.common_event_id
    # 确定对像
    index = @active_battler.current_action.target_index
    target = $game_party.smooth_target_actor(index)
    # 设置对像侧战斗者
    set_target_battlers(@item.scope)
    # 应用物品效果
    for target in @target_battlers
      target.item_effect(@item)
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  #--------------------------------------------------------------------------
  def update_phase4_step3
    # 行动方动画 (ID 为 0 的情况下是白色闪烁)
    if @animation1_id == 0
      @active_battler.white_flash = true
    else
      @active_battler.animation_id = @animation1_id
      @active_battler.animation_hit = true
    end
    # 移至步骤 4
    @phase4_step = 4
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  #--------------------------------------------------------------------------
  def update_phase4_step4
    # 对像方动画
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != "Miss")
    end
    # 限制动画长度、最低 8 帧
    @wait_count = 8
    # 移至步骤 5
    @phase4_step = 5
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  #--------------------------------------------------------------------------
  def update_phase4_step5
    # 隐藏帮助窗口
    @help_window.visible = false
    # 刷新状态窗口
    @status_window.refresh
    # 显示伤害
    for target in @target_battlers
      if target.damage != nil
        target.damage_pop = true
      end
    end
    # 移至步骤 6
    @phase4_step = 6
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (主回合步骤 6 : 刷新)
  #--------------------------------------------------------------------------
  def update_phase4_step6
    # 清除强制行动对像的战斗者
    $game_temp.forcing_battler = nil
    # 公共事件 ID 有效的情况下
    if @common_event_id > 0
      # 设置事件
      common_event = $data_common_events[@common_event_id]
      $game_system.battle_interpreter.setup(common_event.list, 0)
    end
    # 移至步骤 1
    @phase4_step = 1
  end
end
[/pre]

然后存档初始化问题, Scene_Title  这个脚本内容用下面的覆盖

[pre lang="ruby"]#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  处理标题画面的类。
#==============================================================================

class Scene_Title
  #--------------------------------------------------------------------------
  # ● 住处理
  #--------------------------------------------------------------------------
  def main
    # 战斗测试的情况下
    if $BTEST
      battle_test
      return
    end
    # 载入数据库
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes       = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items         = load_data("Data/Items.rxdata")
    $data_weapons       = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies       = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    # 生成系统对像
    $game_system = Game_System.new
    # 生成标题图形
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
    $game_variables[MAX_TP_ID] = []
    # 生成命令窗口
    s1 = "新游"
    s2 = "继续"
    s3 = "退出"
    @command_window = Window_Command.new(192, [s1, s2, s3])
    @command_window.back_opacity = 160
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 288
    # 判定继续的有效性
    # 存档文件一个也不存在的时候也调查
    # 有効为 @continue_enabled 为 true、無効为 false
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    # 继续为有效的情况下、光标停止在继续上
    # 无效的情况下、继续的文字显示为灰色
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end
    # 演奏标题 BGM
    $game_system.bgm_play($data_system.title_bgm)
    # 停止演奏 ME、BGS
    Audio.me_stop
    Audio.bgs_stop
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果画面被切换就中断循环
      if $scene != self
        break
      end
    end
    # 装备过渡
    Graphics.freeze
    # 释放命令窗口
    @command_window.dispose
    # 释放标题图形
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 刷新命令窗口
    @command_window.update
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 命令窗口的光标位置的分支
      case @command_window.index
      when 0  # 新游戏
        command_new_game
      when 1  # 继续
        command_continue
      when 2  # 退出
        command_shutdown
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 命令 : 新游戏
  #--------------------------------------------------------------------------
  def command_new_game
    # 演奏确定 SE
    $game_system.se_play($data_system.decision_se)
    # 停止 BGM
    Audio.bgm_stop
    # 重置测量游戏时间用的画面计数器
    Graphics.frame_count = 0
    # 生成各种游戏对像
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new
    # 设置初期同伴位置
    $game_party.setup_starting_members
    # 设置初期位置的地图
    $game_map.setup($data_system.start_map_id)
    # 主角向初期位置移动
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    # 刷新主角
    $game_player.refresh
    # 执行地图设置的 BGM 与 BGS 的自动切换
    $game_map.autoplay
    # 刷新地图 (执行并行事件)
    $game_map.update
    $game_variables[MAX_TP_ID] = []
    # 切换地图画面
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # ● 命令 : 继续
  #--------------------------------------------------------------------------
  def command_continue
    # 继续无效的情况下
    unless @continue_enabled
      # 演奏无效 SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # 演奏确定 SE
    $game_system.se_play($data_system.decision_se)
    # 切换到读档画面
    $scene = Scene_Load.new
  end
  #--------------------------------------------------------------------------
  # ● 命令 : 退出
  #--------------------------------------------------------------------------
  def command_shutdown
    # 演奏确定 SE
    $game_system.se_play($data_system.decision_se)
    # BGM、BGS、ME 的淡入淡出
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # 退出
    $scene = nil
  end
  #--------------------------------------------------------------------------
  # ● 战斗测试
  #--------------------------------------------------------------------------
  def battle_test
    # 载入数据库 (战斗测试用)
    $data_actors        = load_data("Data/BT_Actors.rxdata")
    $data_classes       = load_data("Data/BT_Classes.rxdata")
    $data_skills        = load_data("Data/BT_Skills.rxdata")
    $data_items         = load_data("Data/BT_Items.rxdata")
    $data_weapons       = load_data("Data/BT_Weapons.rxdata")
    $data_armors        = load_data("Data/BT_Armors.rxdata")
    $data_enemies       = load_data("Data/BT_Enemies.rxdata")
    $data_troops        = load_data("Data/BT_Troops.rxdata")
    $data_states        = load_data("Data/BT_States.rxdata")
    $data_animations    = load_data("Data/BT_Animations.rxdata")
    $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
    $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
    $data_system        = load_data("Data/BT_System.rxdata")
    # 重置测量游戏时间用的画面计数器
    Graphics.frame_count = 0
    # 生成各种游戏对像
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new
    # 设置战斗测试用同伴
    $game_party.setup_battle_test_members
    $game_variables[MAX_TP_ID] = []
    # 设置队伍 ID、可以逃走标志、战斗背景
    $game_temp.battle_troop_id = $data_system.test_troop_id
    $game_temp.battle_can_escape = true
    $game_map.battleback_name = $data_system.battleback_name
    # 演奏战斗开始 BGM
    $game_system.se_play($data_system.battle_start_se)
    # 演奏战斗 BGM
    #$game_system.bgm_play($game_system.battle_bgm)
    # 切换到战斗画面
    $scene = Scene_Battle.new
  end
end
[/pre]

点评

上面这个攒必杀和后面的动态血条脚本,我能直接用在我的游戏里面吗?还需要别的脚本支撑吗?  发表于 2021-2-28 16:20
测试了一下,没用debug脚本,因为会跳出orz,数值增减目前正常,战斗结束TP归零正常,读盘异常,道具和增减tp依然显示失误  发表于 2018-5-24 15:18
行,加上插件测试就不需要盯着槽来数像素点了.... 方便一点  发表于 2018-5-24 11:55
我等人少了再调节吧,半分钟一次有人打断,这错出的……  发表于 2018-5-24 11:53
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2018-5-22 09:56:24 | 显示全部楼层
怒气槽用必杀?真头大..
QQ图片20180522095424.png
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-5-22 10:56:48 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-5-22 11:06 编辑

开始想动UI啦,本来美工用默认窗口就是太LOW了

战斗窗口的UI也重新设计吧,改成VA式 横线竖直排列到一边(FF样式)比较适合横版战斗,还能加上角色的眼部头像什么的,角色名字固定的话,干脆连名字一起做成图片, 把战斗背景扩满480,战斗UI就直接透明背景,看起来战斗场景会大一些,像你这种规格的战斗图塞4个才不至于显得挤

血槽就别用什么填充矩形了,全换图片显示。

要开关,要动画效果都不难,只要有图片(以及没有大佬插件来乾坤大挪移....)

咱给你建好bese的方法,你直接像这样调用来做UI就会了吧。就是根据设计,分层填上各种图片名称,坐标,就OK, 坐标可以直接看PS的导航填

未标题-1.jpg

这个是咱的状态浏览窗口写法,一目了然吧

效果 ↓,

点评

窗口的皮肤还是有的,只是让它透明了而已,要做图片式UI就用这招,当然要保留窗口皮肤,就在窗口里面填东西也行  发表于 2018-5-22 13:58
我试着改下菜单布局,能上背景图不用菜单?不过依旧是……没图像……,中午得平土地去,我樱花树边上长了两科榆树,抢营养,砍了去,下午继续  发表于 2018-5-22 11:40
物品技能不用改,看着习惯了,如果改造……需要改造的就是装备和状态了。装备,也不知道双饰品和二刀有没有希望,最低来个双饰品。  发表于 2018-5-22 11:36
然后状态这里,因为没人帮我调,所以还是按照行走图显示的,一并显示32的头像好了。布局因为默认的嘛没觉得不好,换半身立绘改布局…没有立绘ORZ  发表于 2018-5-22 11:31
主菜单左边的头像吗?那个原本是行走图的位置,因为行走图会有大型的,显示不全才找人帮忙做成这个的,  发表于 2018-5-22 11:29
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-5-22 11:54:05 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-5-22 11:58 编辑

未标题-1.jpg

  战斗UI 改一下,整体的画面感就大不同了,

东方风格的UI,大概这样吧。 自己看看效果呗, 不是比默认的瞬间高大上

点评

可以先构思大概布局,然后画草稿,之后再加上滤镜特效等,然后PS摆好位置后,写到脚本里,就这样,UI是练手级脚本,技术难度低,但是成就感满载  发表于 2018-5-22 13:52
不过这上班最可恶的是,没法画完整线条,一条直线都画一半就来人我都想掐……  发表于 2018-5-22 13:49
我先试试……  发表于 2018-5-22 13:48
咱这个只是栗子,网上随便扒个头像,拉几个路径套下滤镜的草稿,怎么布局,要什么样的画面,还是要你自己想自己设计,咱最多教你怎么改  发表于 2018-5-22 13:38
全动画都画了,区区个头像还想省= =,用全动画不就是为了华丽? 改UI是提高华丽度最简单也是最直接的方法竟然不用  发表于 2018-5-22 13:36
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2018-5-22 13:05:56 | 显示全部楼层
新增UI麻烦在释放..不懂脚本的萌新止步..

点评

也就是说用图片做窗口?  发表于 2018-5-23 09:02
不懂...图怎么塞到现有窗口里?  发表于 2018-5-22 15:03
就是图“可以一起移动坐标,一起调用一起释放”比显示图片一张一张的来省事。  发表于 2018-5-22 13:44
再说,窗口的释放也不难嘛=3=,咱现在剧情里都拿窗口当“显示图片”使用了...  发表于 2018-5-22 13:43
只要是塞在现有窗口里,就不用考虑释放问题了,窗口释放就一起释放掉了  发表于 2018-5-22 13:40
回复

使用道具 举报

梦石
0
星屑
35248
在线时间
4171 小时
注册时间
2007-12-15
回帖
9489
 楼主| 发表于 2018-5-22 13:46:06 | 显示全部楼层
soulsaga 发表于 2018-5-22 13:05
新增UI麻烦在释放..不懂脚本的萌新止步..


反正这东西要真想用,必须调必须调的一步到位,而且必须风格一致,菜单那样,合成界面那样,回头战斗这样……更别扭- -b只能自己画,如果找同人素材用,后果不堪设想。
顺道,中午去剪树枝,蔷薇开的挺好,可是樱桃树没怎么结果,明年一定得施肥。红枫居然没死,可是张得特别不好,被埋在里面了。
花朵后面的树是樱桃,六年了才长这么高,必须早种,前人种树后人乘凉。
01.jpg
这个是蔷薇 很香~
02.jpg

点评

其实现在的我看着就挺顺眼的--b稍微改改也好。只要我自己能改回来,改不回来就废了ORZ  发表于 2018-5-22 14:49
UI是不容易一步到位的,咱前后就改了至少6次布局=3=,所以咱说给你方法,让你自己慢慢折腾,这样做出来的UI才是自己看得最顺眼的。  发表于 2018-5-22 13:49
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-5-22 14:38:53 | 显示全部楼层
咱歪了一个大大的楼

补上主楼的问题答案.....

1变量设置: 不需要搞N个变量,你要4段必杀槽,一段1000,那直接一个变量 4000 就是4段了。

2角色属性设置: 默认变量有5000个,找个变量段来当角色的怒气值就是了 比如 变量 [1000+角色ID]
这样主角的怒气值就是 1001号变量。  用变量的优点是方便你用事件来控制增减,如果不想用变量,大可直接给角色添加新属性。

3技能消耗设置,猫大的脚本一行备注搞定

4技能限制设定, 猫大的脚本一行备注搞定

5攒必杀槽设定,猫大的脚本一行备注搞定

6清空必杀,猫大的脚本一行备注搞定

7物品增加必杀,猫大的..... 呃,公共事件搞定

点评

主菜单如果不用这个默认风格,至少这两个界面的单独做,明显我弄不了ORZ,合成那个哪里调用串口了一句都看不懂  发表于 2018-5-22 14:55
窗口虽然是可以单独绘制,默认界面就完蛋了,现在调用的是默认的,目前想到的有,队伍管理界面,猫大的合成界面,音乐播放器bug治不了删了  发表于 2018-5-22 14:54
回复

使用道具 举报

梦石
0
星屑
35248
在线时间
4171 小时
注册时间
2007-12-15
回帖
9489
 楼主| 发表于 2018-5-22 14:46:35 | 显示全部楼层
本帖最后由 89444640 于 2018-5-22 15:52 编辑
灯笼菜刀王 发表于 2018-5-22 14:38
咱歪了一个大大的楼

补上主楼的问题答案.....


其实我就只想用默认的,别人看着别扭但是我用的时间太长了,有人帮忙改的更好看当然愿意,但是,头像、立绘绘我被喷的都有阴影了,全是找毛病的,而且完全不给你解决方案,
你看我图区还发过东西吗XD,惹不起我躲得起行吗?
大概还是默认菜单界面,但是单独改了以后,讲面临无穷无尽的冲突。而且我改不了的几率非常高。
01.png
刚才照的花,花都是我种的,我手机照的,不服自己种去XD,看哪个再跟我提版权。
本来想找个枫叶,满眼标着版权,等秋天自己照去#
大概这个感觉吧,角色头像这里,不行我就宁可空着也再也不用任何人的版权素材!!!!!

更新了一下,缩小了能量槽的大小
把状态栏放在下面窗口中间了,没有态也没关系看着也比较合适,不过得把脚本中,在没有任何状态时现实正常这个给弄没了。
01.png
战斗菜单.rar (534.61 KB, 下载次数: 114)

点评

不过,不是五点下班吗?大哥你还没下班?我得回去了,路上聊XD?  发表于 2018-5-22 17:20
大水晶这个点子不错,不过考虑节奏问题,攒的太慢,还是按照初始的设置来吧,我做个能量满了像素级的闪烁提示就好,整体风格统一更重要嘛~  发表于 2018-5-22 17:19
有图就可以换,槽也可以做成满了后改变颜色甚至替换图形变成一个大水晶,不存在什么差一点看不清,要闪烁也不是不可以,要燃烧都行,素材问题  发表于 2018-5-22 17:13
然后,既然能变,濒死不管了,反正也没濒死待机动作,战斗不能给实现个闭眼凸显改变成灰色吧。  发表于 2018-5-22 16:08
技术上没有,绘制上,我得补充一整套动作来说明,确实是衣服换了,自己不累死画找人画,一帧至少100R哦……  发表于 2018-5-22 16:05
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2018-5-22 17:35:37 | 显示全部楼层
本帖最后由 soulsaga 于 2018-5-22 20:00 编辑

我用立绘纸娃娃生成器搞了个主角立绘..233
LIN.png

点评

手机应用要下载图像必须用日本IP..  发表于 2018-5-22 20:03
这个只是不能商用..没其他规约..你要抄也没人管..  发表于 2018-5-22 20:02
appstore日服的,进不去T T google有墙……网页版打不开ORZ  发表于 2018-5-22 19:43
这个生成的我照着描一遍线条算抄袭吗?抄袭结构啥的- -b印象中绘画界特别鄙视这个……  发表于 2018-5-22 19:40
https://charaft.com/  发表于 2018-5-22 17:51

评分

参与人数 1赞 +1 收起 理由
89444640 + 1

查看全部评分

回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-5-22 18:57:42 | 显示全部楼层
你那堆脚本山, 还是直接做定制脚本,不做成插件了, 把昨天soulsaga君帮你改后的最终版本脚本发给我把~~

定制功能
1,每个角色添加独立TP槽,战后归0,不存储.
2,用猫大的注释扩展.*需要占用一个全局变量.

可选
1,怪物也可以使用TP,也有自己的TP,也可以显示(在HELP栏)
2,开关TP显示功能
3,TP上限可控 ,即可以自由改变某个角色在什么时候拥有多少TP上限 *需要占用一个全局变量
4, 上面扩展, TP上限为0不显示槽, 即可以设置某些角色没有TP槽








点评

我在下面的回复里补充了一下看法,请看一下~  发表于 2018-5-22 19:34
那个……没复制回来ORZ,明天把。  发表于 2018-5-22 19:07
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部