赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 0 |
经验 | 0 |
最后登录 | 2012-10-20 |
在线时间 | 3 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 210
- 在线时间
- 3 小时
- 注册时间
- 2012-10-11
- 帖子
- 4
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
比如成就系统
#==============================================================================
# ■ Scene_Achievement
#------------------------------------------------------------------------------
# 成就系统第五弹!图片成就系统,欢迎使用 转载请标明魔塔ILOVE写谢谢!
#==============================================================================
#呼出场景方法:$scene = Scene_Achievement.new
#获得成就方法:save_data(0,"Save/chengjiuXX.rxdata"),XX改为1-无限大的数字。
#设定区
$成就总数=3
#首先在上面设定成就总数,然后再下面指定位置进行设定。
#下面是一个范例。
#if $nowachi==1 将按顺序更改数字
#if FileTest.exist?("save/chengjiu1.rxdata") 将1改为成就编号
# $成就名称="新手上路" 设定成就名称
# $成就介绍="完成新手教学" 设定成就介绍
# @cjtp.bitmap = RPG::Cache.picture("新手上路") 设定成就图片
#else 剩下的不用管了
# wwc
#end
#end
#
#上面是填写规则。这次有3个范例。大家仿照并且复制粘贴增加新成就。
class Scene_Achievement
#--------------------------------------------------------------------------
# ● 初始化对像
# menu_index : 命令光标的初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
Audio.bgm_play("Audio/BGM/XXX", 100, 100) #更改BGM
end
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
$nowachi=-1
@back = Plane.new
@back.bitmap = RPG::Cache.panorama("成就界面",0)
# 生成命令窗口
s1 = "上一项成就"
s2 = " 下一项成就"
#第一个成就
$成就名称="欢迎"
$成就介绍="你可以在这里查看你的成就"
@command_window = Window_Commandx.new(640, [s1, s2])
@command_window.index = @menu_index
@command_window.opacity =0
@command_window.y=100
@a_window = Window_Js.new
@a_window.x = 0
@a_window.y = 416
@a_window.opacity =0
@b_window = Window_Bt.new
@b_window.x = 0
@b_window.y = 150
@b_window.opacity =0
@cjtp = Sprite.new
@cjtp.bitmap = RPG::Cache.picture("封面")
@cjtp.x=70
@cjtp.y=205
# 执行过渡
Graphics.transition
# 主循环
loop do
if $nowachi <1
$nowachi= 1
end
if $nowachi >$成就总数
$nowachi= $成就总数
end
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果切换画面就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@command_window.dispose
@back.dispose
@a_window.dispose
@b_window.dispose
@cjtp.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
@command_window.update
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 命令窗口的光标位置分支
case @command_window.index
when 0
updatecjq
$nowachi-=1
cjsd
updatecjh
when 1
updatecjq
$nowachi+=1
cjsd
updatecjh
end
end
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换的地图画面
$scene = Scene_Title.new
end
def cjsd
#——————从这里开始设定
#第一个成就
if $nowachi==1
if FileTest.exist?("save/chengjiu1.rxdata")
$成就名称="新手上路"
$成就介绍="完成新手教学"
@cjtp.bitmap = RPG::Cache.picture("新手上路")
else
wwc
end
end
#第二个成就
if $nowachi==2
if FileTest.exist?("save/chengjiu2.rxdata")
$成就名称="友情"
$成就介绍="同时控制2个角色到40层"
@cjtp.bitmap = RPG::Cache.picture("友情")
else
wwc
end
end
#第三个成就
if $nowachi==3
if FileTest.exist?("save/chengjiu3.rxdata")
$成就名称="有钱人"
$成就介绍="拥有1000000金钱"
@cjtp.bitmap = RPG::Cache.picture("有钱人")
else
wwc
end
end
#——————设定至此结束
end
def wwc
$成就名称="未完成"
$成就介绍="未完成此成就"
@cjtp.bitmap = RPG::Cache.picture("未完成")
end
end
def updatecjq
@a_window.dispose
@b_window.dispose
end
def updatecjh
@a_window = Window_Js.new
@a_window.x = 0
@a_window.y = 416
@a_window.opacity =0
@b_window = Window_Bt.new
@b_window.x = 0
@b_window.y = 150
@b_window.opacity =0
end
end
#==============================================================================
# ■ Window_Js
#------------------------------------------------------------------------------
# 显示解释的窗口。
#==============================================================================
class Window_Js < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color= text_color(6)
self.contents.draw_text(0, 0, 612, 32, $成就介绍, 1)
end
end
#==============================================================================
# ■ Window_Bt
#------------------------------------------------------------------------------
# 显示标题的窗口。
#==============================================================================
class Window_Bt < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color= text_color(2)
self.contents.draw_text(0, 0, 612, 32, $成就名称, 1)
end
end
#——————————————————————————————————————
class Window_Commandx < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# width : 窗口的宽
# commands : 命令字符串序列
#--------------------------------------------------------------------------
def initialize(width, commands)
# 由命令的个数计算出窗口的高
super(0, 0, width, 64)
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, 32)
@column_max = 2
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
# color : 文字色
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
# rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
rect = Rect.new(160 * index+80, 0, 320, 32) #这行改成你自己的描绘项目规则
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
end
#--------------------------------------------------------------------------
# ● 项目无效化
# index : 项目编号
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
end
module PLAN_TITLE_NAME
$finachi=0
for i in 1..$成就总数
$finachi+=1 if FileTest.exist?("save/chengjiu#{i}.rxdata")
end
if $finachi<$成就总数
TITLE_STR = "——我的成就——" # 标题名,自己改
else
TITLE_STR = " "
end
FONT_NAME = ["黑体"] # 字体列表,当玩家电脑没有安装第一种字体会顺序往下寻找第二种
FONT_SIZE = 75 # 文字字号
FONT_BOLD = false # 加粗
FONT_ITALIC = false # 斜体
STR_COLOR = Color.new(225, 0, 144, 255) # 文字颜色
DRAW_FRAME = false # 文字是否勾边(true/false)
FRAME_COLOR = Color.new(50, 50, 50) # 勾边颜色
DRAW_X = 0 # X 座标修正値(相对中心)
DRAW_Y = -170 # Y 座标修正値(相对中心)
BLINK = true # 闪烁
end
#==============================================================================
# ■ Scene_Achievement
#==============================================================================
class Scene_Achievement
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias plan_title_name_main main
def main
# 戦闘テストの场合
if $BTEST
battle_test
return
end
# スプライトの作成
@title_name_sprite = RPG::Sprite.new
@title_name_sprite.z = 100
bitmap = Bitmap.new(32, 32)
bitmap.font.name = PLAN_TITLE_NAME::FONT_NAME
bitmap.font.size = PLAN_TITLE_NAME::FONT_SIZE
bitmap.font.bold = PLAN_TITLE_NAME::FONT_BOLD
rect = bitmap.text_size(PLAN_TITLE_NAME::TITLE_STR)
bitmap.dispose
bitmap = nil
@title_name_sprite.bitmap = Bitmap.new(rect.width, rect.height)
@title_name_sprite.bitmap.font.name = PLAN_TITLE_NAME::FONT_NAME
@title_name_sprite.bitmap.font.size = PLAN_TITLE_NAME::FONT_SIZE
@title_name_sprite.bitmap.font.bold = PLAN_TITLE_NAME::FONT_BOLD
@title_name_sprite.bitmap.font.italic = PLAN_TITLE_NAME::FONT_ITALIC
str = PLAN_TITLE_NAME::TITLE_STR
if PLAN_TITLE_NAME::DRAW_FRAME
@title_name_sprite.bitmap.font.color = PLAN_TITLE_NAME::FRAME_COLOR
if defined?(@title_name_sprite.bitmap.draw_text_plan_frame)
@title_name_sprite.bitmap.draw_text_plan_frame(0, 0, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text_plan_frame(2, 0, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text_plan_frame(0, 2, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text_plan_frame(2, 2, rect.width, rect.height, str)
@title_name_sprite.bitmap.font.color = PLAN_TITLE_NAME::STR_COLOR
@title_name_sprite.bitmap.draw_text_plan_frame(1, 1, rect.width, rect.height, str)
else
@title_name_sprite.bitmap.draw_text(0, 0, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text(2, 0, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text(0, 2, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text(2, 2, rect.width, rect.height, str)
@title_name_sprite.bitmap.font.color = PLAN_TITLE_NAME::STR_COLOR
@title_name_sprite.bitmap.draw_text(1, 1, rect.width, rect.height, str)
end
else
@title_name_sprite.bitmap.font.color = PLAN_TITLE_NAME::STR_COLOR
@title_name_sprite.bitmap.draw_text(rect, str)
end
@title_name_sprite.x = 640 / 2 - rect.width / 2 + PLAN_TITLE_NAME::DRAW_X
@title_name_sprite.y = 480 / 2 - rect.height / 2 + PLAN_TITLE_NAME::DRAW_Y
@title_name_sprite.blink_on if PLAN_TITLE_NAME::BLINK
# 元のメソッドに戻す
plan_title_name_main
# スプライトの解放
@title_name_sprite.bitmap.dispose
@title_name_sprite.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias plan_title_name_update update
def update
# スプライトの更新
@title_name_sprite.update
# 元のメソッドに戻す
plan_title_name_update
end
end
#-------------------------------------------------------------
#----------本脚本BY:h907308901,使用或转载请保留此信息--------
#-------------------------------------------------------------
class Scene_Achievement
alias h907308901_main main
def main
# 战斗测试的情况下
if $BTEST
battle_test
return
end
@word = Sprite.new
@word.bitmap = Bitmap.new(608, 428)
@word.z = 210
@r = 0
@g = 0
@b = 0
@i = 1
h907308901_main
@word.bitmap.dispose
@word.dispose
end
alias h907308901_update update
def update
case @i
when 1
if @r >= 255
@i = 2
else
@r += 5
end
when 2
if @g >= 255
@i = 3
else
@g += 5
end
when 3
if @r <= 0
@i = 4
else
@r -= 5
end
when 4
if @b >= 255
@i = 5
else
@b += 5
end
when 5
if @g <= 0
@i = 6
else
@g -= 5
end
when 6
if @r >= 255
@i = 7
else
@r += 5
end
when 7
if @b <= 0
@i = 2
else
@b -= 5
end
end
h907308901_update
@word.bitmap.clear
@word.bitmap.font.color = Color.new(@r, @g, @b)
@word.bitmap.font.size = 44
@word.bitmap.draw_text(70, 40, 512, 64, "★游戏成就全部达成!★", 1) if $finachi>=$成就总数
end
end
|
|