Project1
标题:
本人初涉RPG
[打印本页]
作者:
萧韩
时间:
2010-11-29 19:49
标题:
本人初涉RPG
如果角色挂了,如何使让它回到城镇
作者:
EngShun
时间:
2010-11-29 20:16
本帖最后由 EngShun 于 2010-12-3 21:07 编辑
我无法帮你找出,所以直接写了一个给你。
#==============================================================================
# ● 死亡后返回地图的脚本(附有一些附加功能)
#==============================================================================
#
# =(必)说明(看)=
#
# 死亡后是否会返回地图?默认是不会,不过用了此脚本后只要
# 将$return_map改成true就会在死亡后返回地图,当然只要在
# 事件中用脚本将$return_map改成false,功能就会被关闭。(可
# 以一下开一下关,增加游戏乐趣)战斗结束后显示胜利或失败的
# 图片,必须在Pictures的文件夹放入名为"胜利"和"失败"的图
# 片,其实名称可以自己改。失败返回地图后是否治疗?其实应
# 该是要的,但是这里可以关掉此功能。(开启条件:$return_map
# 要为true,默认是会自动治疗)
#
# 注意:扣钱的算法:拥有的金钱除于$gold_lose(大过30直接扣除)
#
#------------------------------------------------------------------------------
$return_map = false # 是否返回地图
$end_pic = true # 战斗结束后是否显示胜利或失败的图片
$auto_recover = true # 失败返回地图后是否治疗
$lose_gold = true # 失败返回地图后是否扣钱
$map_id = 1 # 战斗失败返回的地图ID
$map_x = 9 # 战斗失败返回的地图的X
$map_y = 7 # 战斗失败返回的地图的Y
$direction = 2 # 战斗失败返回的地图的方向(2=↓,4=←,6=→,8=↑)
$lose_pic = "失败" # 胜利图片的名称
$win_pic = "胜利" # 失败图片的名称
$gold_lose = 10 # 扣多少钱
#==============================================================================
class Scene_Battle
def judge
# 全灭判定是真、并且同伴人数为 0 的情况下
if $game_party.all_dead? or $game_party.actors.size == 0
if $end_pic == true
# 生成战斗失败图形
@sprite = Sprite.new
@sprite.z = 9999
@sprite.bitmap = RPG::Cache.picture($lose_pic)
@sprite.x = 320 - @sprite.bitmap.width / 2
@sprite.y = 240 - @sprite.bitmap.height / 2
# 执行过渡
Graphics.transition(40)
@wait_count = 40
# 准备过渡
Graphics.freeze
# 释放战斗失败图形
@sprite.bitmap.dispose
end
# 允许失败的情况下
if $game_temp.battle_can_lose
# 还原为战斗开始前的 BGM
$game_system.bgm_play($game_temp.map_bgm)
# 战斗结束
battle_end(2)
# 返回 true
return true
end
# 允许返回地图的情况下
if $return_map == true
battle_end(2)
$game_system.bgm_play($game_temp.map_bgm)
$game_temp.player_transferring = true
$game_temp.player_new_map_id = $map_id
$game_temp.player_new_x = $map_x
$game_temp.player_new_y = $map_y
$game_temp.player_new_direction = $direction
# 准备过渡
Graphics.freeze
# 设置过渡处理中标志
$game_temp.transition_processing = true
$game_temp.transition_name = ""
if $auto_recover == true
@inter = Interpreter.new
@inter.iterate_actor(0) do |actor|
# 角色全回复
actor.recover_all
end
end
if $lose_gold == true
if $gold_lose >= 30
$game_party.lose_gold($gold_lose)
else
$lose_value = $game_party.gold / $gold_lose
$game_party.lose_gold($lose_value)
end
end
else
# 设置游戏结束标志
$game_temp.gameover = true
end
# 返回 true
return true
end
# 如果存在任意 1 个敌人就返回 false
for enemy in $game_troop.enemies
if enemy.exist?
return false
end
end
# 开始结束战斗回合 (胜利)
start_phase5
# 返回 true
return true
end
#--------------------------------------------------------------------------
# ● 开始结束战斗回合
#--------------------------------------------------------------------------
def start_phase5
# 转移到回合 5
@phase = 5
if $end_pic == true
# 生成战斗胜利图形
@sprite = Sprite.new
@sprite.z = 9999
@sprite.bitmap = RPG::Cache.picture($win_pic)
@sprite.x = 320 - @sprite.bitmap.width / 2
@sprite.y = 240 - @sprite.bitmap.height / 2
# 执行过渡
Graphics.transition(40)
@wait_count = 40
# 准备过渡
Graphics.freeze
# 释放战斗胜利图形
@sprite.bitmap.dispose
end
# 演奏战斗结束 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[i]
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
end
#==============================================================================
# ◆ 此脚本来自一个无聊的人,使用或转载时请勿保留此信息。
#==============================================================================
复制代码
范例:
范例.rar
(396.46 KB, 下载次数: 29)
2010-12-3 21:07 上传
点击文件名下载附件
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1