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

Project1

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

[已经解决] 我有了脚本要怎么用

[复制链接]

Lv1.梦旅人

梦石
0
星屑
210
在线时间
3 小时
注册时间
2012-10-11
帖子
4
跳转到指定楼层
1
发表于 2012-10-12 17:14:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

2
发表于 2012-10-12 17:56:21 | 只看该作者
点击脚本编辑器,在Main前面按Insert插入就可以了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
210
在线时间
3 小时
注册时间
2012-10-11
帖子
4
3
 楼主| 发表于 2012-10-12 17:58:17 | 只看该作者
hys111111 发表于 2012-10-12 17:56
点击脚本编辑器,在Main前面按Insert插入就可以了。

可是要只能样让他出现在玩的时候的屏幕


‘‘──weizhihua@于2012-10-12 17:59补充以下内容:

可是要怎么样才能让他出现在玩的时候的屏幕.
’’
回复 支持 反对

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

4
发表于 2012-10-12 18:02:39 | 只看该作者
注意一下,不要一题多问。


只要在事件里面放入:$scene = Scene_Achievement.new
就可以了。


如图所示,点击一下脚本就可以了。

评分

参与人数 1星屑 +200 收起 理由
hcm + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
251 小时
注册时间
2009-11-13
帖子
453
5
发表于 2012-10-12 19:21:07 | 只看该作者
要放在菜单里,也很简单,你先在Scene_Menu里找到
比如:

      when 0  # 物品
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到物品画面
        $scene = Scene_Item.new


里面的
$scene = Scene_Item.new     或者        $scene = Scene_End.new 总之是   $scene = 。。。。。
然后将之替换为   $scene = Scene_Achievement.new
然后把Scene_Menu前面的

    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "状态"
    s5 = "存档"
    s6 = "结束游戏"
里的对应项给改了就行了,


      when 0  # 物品
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到物品画面
        $scene = Scene_Item.new
改为

      when 0  # 物品
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到物品画面
  $scene = Scene_Achievement.new
以为 是when 0 所以改第一项
    s1 = “成就”
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "状态"
    s5 = "存档"
    s6 = "结束游戏"







这是替换,要添加的话,就在
s6 = "结束游戏"    后面加一个  s7 = "成就"
把    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
改为     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])


      when 5  # 游戏结束
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到游戏结束画面
        $scene = Scene_End.new
后面加一个
      when 6  # 成就
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到游戏结束画面
       $scene = Scene_Achievement.new
就ok了

点评

谢谢  发表于 2012-10-14 09:48

评分

参与人数 1星屑 +160 收起 理由
hcm + 160 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 20:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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