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

Project1

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

[已经过期] 本人初涉RPG

[复制链接]

Lv1.梦旅人

梦石
0
星屑
128
在线时间
0 小时
注册时间
2010-11-29
帖子
1
跳转到指定楼层
1
发表于 2010-11-29 19:49:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如果角色挂了,如何使让它回到城镇

点评

以前有人做过了,我试看帮你找出来。  发表于 2010-11-29 20:05
请学会如何提问  发表于 2010-11-29 19:54

评分

参与人数 1星屑 -2 收起 理由
fux2 -2 问题

查看全部评分

Lv2.观梦者

梦石
0
星屑
635
在线时间
244 小时
注册时间
2010-9-9
帖子
472
2
发表于 2010-11-29 20:16:48 | 只看该作者
本帖最后由 EngShun 于 2010-12-3 21:07 编辑

我无法帮你找出,所以直接写了一个给你。
  1. #==============================================================================
  2. # ● 死亡后返回地图的脚本(附有一些附加功能)
  3. #==============================================================================
  4. #
  5. #   =(必)说明(看)=
  6. #
  7. #   死亡后是否会返回地图?默认是不会,不过用了此脚本后只要
  8. #   将$return_map改成true就会在死亡后返回地图,当然只要在
  9. #   事件中用脚本将$return_map改成false,功能就会被关闭。(可
  10. #   以一下开一下关,增加游戏乐趣)战斗结束后显示胜利或失败的
  11. #   图片,必须在Pictures的文件夹放入名为"胜利"和"失败"的图
  12. #   片,其实名称可以自己改。失败返回地图后是否治疗?其实应
  13. #   该是要的,但是这里可以关掉此功能。(开启条件:$return_map
  14. #   要为true,默认是会自动治疗)
  15. #
  16. #   注意:扣钱的算法:拥有的金钱除于$gold_lose(大过30直接扣除)
  17. #
  18. #------------------------------------------------------------------------------
  19. $return_map = false     # 是否返回地图
  20. $end_pic = true         # 战斗结束后是否显示胜利或失败的图片
  21. $auto_recover = true    # 失败返回地图后是否治疗
  22. $lose_gold = true       # 失败返回地图后是否扣钱
  23. $map_id = 1             # 战斗失败返回的地图ID
  24. $map_x = 9              # 战斗失败返回的地图的X
  25. $map_y = 7              # 战斗失败返回的地图的Y
  26. $direction = 2          # 战斗失败返回的地图的方向(2=↓,4=←,6=→,8=↑)
  27. $lose_pic = "失败"      # 胜利图片的名称
  28. $win_pic = "胜利"       # 失败图片的名称
  29. $gold_lose = 10         # 扣多少钱
  30. #==============================================================================
  31. class Scene_Battle
  32.   def judge
  33.     # 全灭判定是真、并且同伴人数为 0 的情况下
  34.     if $game_party.all_dead? or $game_party.actors.size == 0
  35.       if $end_pic == true
  36.         # 生成战斗失败图形
  37.         @sprite = Sprite.new
  38.         @sprite.z = 9999
  39.         @sprite.bitmap = RPG::Cache.picture($lose_pic)
  40.         @sprite.x = 320 - @sprite.bitmap.width / 2
  41.         @sprite.y = 240 - @sprite.bitmap.height / 2
  42.         # 执行过渡
  43.         Graphics.transition(40)
  44.         @wait_count = 40
  45.         # 准备过渡
  46.         Graphics.freeze
  47.         # 释放战斗失败图形
  48.         @sprite.bitmap.dispose
  49.       end
  50.       # 允许失败的情况下
  51.       if $game_temp.battle_can_lose
  52.         # 还原为战斗开始前的 BGM
  53.         $game_system.bgm_play($game_temp.map_bgm)
  54.         # 战斗结束
  55.         battle_end(2)
  56.         # 返回 true
  57.         return true
  58.       end
  59.       # 允许返回地图的情况下
  60.       if $return_map == true
  61.         battle_end(2)
  62.         $game_system.bgm_play($game_temp.map_bgm)
  63.         $game_temp.player_transferring = true
  64.         $game_temp.player_new_map_id = $map_id
  65.         $game_temp.player_new_x = $map_x
  66.         $game_temp.player_new_y = $map_y
  67.         $game_temp.player_new_direction = $direction
  68.         # 准备过渡
  69.         Graphics.freeze
  70.         # 设置过渡处理中标志
  71.         $game_temp.transition_processing = true
  72.         $game_temp.transition_name = ""
  73.         if $auto_recover == true
  74.           @inter = Interpreter.new
  75.           @inter.iterate_actor(0) do |actor|
  76.             # 角色全回复
  77.             actor.recover_all
  78.           end
  79.         end
  80.         if $lose_gold == true
  81.           if $gold_lose >= 30
  82.             $game_party.lose_gold($gold_lose)
  83.           else
  84.             $lose_value = $game_party.gold / $gold_lose
  85.             $game_party.lose_gold($lose_value)
  86.           end
  87.         end
  88.       else
  89.         # 设置游戏结束标志
  90.         $game_temp.gameover = true
  91.       end
  92.       # 返回 true
  93.       return true
  94.     end
  95.     # 如果存在任意 1 个敌人就返回 false
  96.     for enemy in $game_troop.enemies
  97.       if enemy.exist?
  98.         return false
  99.       end
  100.     end
  101.     # 开始结束战斗回合 (胜利)
  102.     start_phase5
  103.     # 返回 true
  104.     return true
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 开始结束战斗回合
  108.   #--------------------------------------------------------------------------
  109.   def start_phase5
  110.     # 转移到回合 5
  111.     @phase = 5
  112.     if $end_pic == true
  113.       # 生成战斗胜利图形
  114.       @sprite = Sprite.new
  115.       @sprite.z = 9999
  116.       @sprite.bitmap = RPG::Cache.picture($win_pic)
  117.       @sprite.x = 320 - @sprite.bitmap.width / 2
  118.       @sprite.y = 240 - @sprite.bitmap.height / 2
  119.       # 执行过渡
  120.       Graphics.transition(40)
  121.       @wait_count = 40
  122.       # 准备过渡
  123.       Graphics.freeze
  124.       # 释放战斗胜利图形
  125.       @sprite.bitmap.dispose
  126.     end
  127.     # 演奏战斗结束 ME
  128.     $game_system.me_play($game_system.battle_end_me)
  129.     # 还原为战斗开始前的 BGM
  130.     $game_system.bgm_play($game_temp.map_bgm)
  131.     # 初始化 EXP、金钱、宝物
  132.     exp = 0
  133.     gold = 0
  134.     treasures = []
  135.     # 循环
  136.     for enemy in $game_troop.enemies
  137.       # 敌人不是隐藏状态的情况下
  138.       unless enemy.hidden
  139.         # 获得 EXP、增加金钱
  140.         exp += enemy.exp
  141.         gold += enemy.gold
  142.         # 出现宝物判定
  143.         if rand(100) < enemy.treasure_prob
  144.           if enemy.item_id > 0
  145.             treasures.push($data_items[enemy.item_id])
  146.           end
  147.           if enemy.weapon_id > 0
  148.             treasures.push($data_weapons[enemy.weapon_id])
  149.           end
  150.           if enemy.armor_id > 0
  151.             treasures.push($data_armors[enemy.armor_id])
  152.           end
  153.         end
  154.       end
  155.     end
  156.     # 限制宝物数为 6 个
  157.     treasures = treasures[0..5]
  158.     # 获得 EXP
  159.     for i in 0...$game_party.actors.size
  160.       actor = $game_party.actors[i]
  161.       if actor.cant_get_exp? == false
  162.         last_level = actor.level
  163.         actor.exp += exp
  164.         if actor.level > last_level
  165.           @status_window.level_up(i)
  166.         end
  167.       end
  168.     end
  169.     # 获得金钱
  170.     $game_party.gain_gold(gold)
  171.     # 获得宝物
  172.     for item in treasures
  173.       case item
  174.       when RPG::Item
  175.         $game_party.gain_item(item.id, 1)
  176.       when RPG::Weapon
  177.         $game_party.gain_weapon(item.id, 1)
  178.       when RPG::Armor
  179.         $game_party.gain_armor(item.id, 1)
  180.       end
  181.     end
  182.     # 生成战斗结果窗口
  183.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  184.     # 设置等待计数
  185.     @phase5_wait_count = 100
  186.   end
  187. end

  188. #==============================================================================
  189. # ◆ 此脚本来自一个无聊的人,使用或转载时请勿保留此信息。
  190. #==============================================================================
复制代码
范例: 范例.rar (396.46 KB, 下载次数: 29)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-6-7 02:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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