Project1

标题: 高手救命! [打印本页]

作者: 剑独高手    时间: 2009-7-13 18:27
标题: 高手救命!
各位高手,帮帮我这比新手还新的菜鸟。
就是这么样才能让等级到达一定的时候时系统自动给予物品。
比如说 我升到20级   物品栏里就自动出现一瓶药水。
要怎么弄?
作者: zh99998    时间: 2009-7-13 18:39
在脚本的升级那里做做手脚调用公共事件
作者: 剑独高手    时间: 2009-7-13 18:40
2# zh99998
能不能说得在详细一点?
作者: 像奶牛的猫    时间: 2009-7-13 18:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 风雪优游    时间: 2009-7-13 19:22
变相思考,楼上的意见很好。
再说,你如何解释为什么一刀20级就凭空出现物品?
作者: 剑独高手    时间: 2009-7-13 20:15
4# 像奶牛的猫


我要自动的!
作者: ONEWateR    时间: 2009-7-13 20:29
本帖最后由 ONEWateR 于 2009-7-16 11:29 编辑

class Scene_Battle
  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]
    a = []
    # 获得 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)
          a.push $data_items[1] if actor.level == 20  #20级赠送编号为1的物品。编号可自行修改~
       end
      end
    end
   
    treasures.concat(a)   

    # 获得金钱
    $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
end

ps:效果有点囧。但考虑了所有队员~
当然可以在战斗结束后公共事件~效果只针对一员会简单很多~
以下是调用公共事件的脚本~

class Scene_Battle
  def battle_end(result)
    # 清除战斗中标志
    $game_temp.in_battle = false
    # 清除全体同伴的行动
    $game_party.clear_actions
    # 解除战斗用状态
    for actor in $game_party.actors
      actor.remove_states_battle
    end
    # 清除敌人
    $game_troop.enemies.clear
    # 调用战斗返回调用
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
      $game_temp.battle_proc = nil
    end
    $game_temp.common_event_id = 1
    # 切换到地图画面
    $scene = Scene_Map.new
  end
end
作者: 剑独高手    时间: 2009-7-13 20:39
7# ONEWateR


大哥,我把你脚本全部都复制。  运行游戏就错误
分开两个脚本  也是错误
谁能告诉我详细点
尽量不要用到脚本。
作者: zj19921223    时间: 2009-7-13 20:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前リョーマ    时间: 2009-7-13 20:51
这还不简单,这里的关键是独立开关之类的,不知道你有多少等级的赠品,就拿变量好了。

并行事件,条件分歧:如果等级达到20,再条件分歧:如果变量=0——增加物品;如果变量大于0,不处理。
          条件分歧:如果等级达到30,再条件分歧:如果变量=1——增加物品:如果变量大于1,不处理。
依此类推。
作者: 玄月    时间: 2009-7-13 21:29
还要利用开关,得到一次之后就关闭该开关,全事件是没问题的
作者: 剑独高手    时间: 2009-7-14 10:33
条件分歧有等级这个项目吗?
我怎么没看到。
看了好几百遍了 都没有有关等级的条件分歧
作者: tommay    时间: 2009-7-14 10:41
变量操作总有等级吧
作者: 剑独高手    时间: 2009-7-14 11:36
谁能告诉我变量要怎么用。
作者: 霜冻之狼    时间: 2009-7-14 13:25
用事件命令的变量操作就可以了,具体可以看本站的新手教材
有问题吗?




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