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

Project1

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

[已经解决] 我想要个菜单里边显示时间的窗口 ·········

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
84 小时
注册时间
2013-4-5
帖子
152
跳转到指定楼层
1
发表于 2013-5-4 16:41:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 光の異形 于 2013-5-5 18:39 编辑

试着改金钱的窗口 一直失败 ·············

Lv1.梦旅人

梦石
0
星屑
573
在线时间
27 小时
注册时间
2013-4-16
帖子
3
2
发表于 2013-5-4 17:33:23 | 只看该作者
#============================================================================
#Pause Menu Features
#By Ventwig
#Version 1.3 - April 10 2012
#For RPGMaker VX Ace
#============================================================================
# This simple scirpt was a request by JayPB08, then I decided I'd let everyone
# have it :)
# Thanks apoclaydon for pointing out a mistake where the icon didn't change!
#=============================================================================
# Description:
# This code draws a gold window, and a playtime window (which counts up)
# Right under the command window. They're two seperate windows to look nicer,
# and you can disable one if you'd like :)
# You can also draw icons, too!
# And in v 1.3, I added a Gold Window Extension!
#==============================================================================
# Compatability:
#  alias-es Scene_Menu Start
#  Creates two new methods in Scene_Menu
#  Works with Spike's Monentary System! OMG!
#===============================================================================
# Instructions: Put in materials, above main.Plug'N'Play
#==============================================================================
# Please give Credit to Ventwig if you would like to use one of my scripts
# in a NON-COMMERCIAL project.
# Please ask for permission if you would like to use it in a commercial game.
# You may not re-distribute any of my scripts or claim as your own.
# You may not release edits without permission, combatability patches are okay.
#===============================================================================
module VENTWIG #Do not touch

##################################################################
#Customization! Yay!
##################################################################

  #Disables (hides) the name/time window.
  #No point in this script if both are true...
  #True and False, default is both false.
  DISABLE_NAME = false
  DISABLE_TIME = false

  #Sets where to draw the window(s)
  #Either under the command menu, or over the gold hud
  #True = Under the command
  #False = Over Gold
  #Default false
  UNDER_COMMAND = false

  #Chooses whether or not an icon will be drawn in the windows.
  DRAW_ICON = true

  #Chooses whether or not to replace the gold window with a
  #new icon-gold window. This is seperate to extend compatibility.
  #Like Spike's Monentary System
  DRAW_GICON = true

  #The index of the icon.
  #Def NAME = 131 TIME = 280 GOLE = 361
  NAME_ICON = 231
  TIME_ICON = 280
  GOLD_ICON = 0


#########################################################################
#End Of configuration. Touch anything below and it'll delete system32   #
#########################################################################
end

class Window_MenuMapName < Window_Base
  def initialize
    super(0,100,160,50)
    if VENTWIG::DRAW_ICON == true
      draw_text(30,0,120,25,$game_map.display_name)
      draw_icon(VENTWIG::NAME_ICON,0,0,enabled = true)
    else
      draw_text(0,0,160,25,$game_map.display_name)
    end
  end
end

class Window_MenuPlaytime < Window_Base
  def initialize
    super(0,100,160,50)
    if VENTWIG::DRAW_ICON == true
      draw_text(30,0,160,25,$game_system.playtime_s)
        self.opacity = 0
      draw_icon(VENTWIG::TIME_ICON,0,0,enabled = true)
    else
      draw_text(0,0,160,25,$game_system.playtime_s)
    end
  end
  def update
    contents.clear
    if VENTWIG::DRAW_ICON == true
      draw_text(30,0,160,25,$game_system.playtime_s)
      draw_icon(VENTWIG::TIME_ICON,0,0,enabled = true)
    else
      draw_text(0,0,160,25,$game_system.playtime_s)
    end
  end
end

class Scene_Menu < Scene_MenuBase
  alias ventwig_map_name_menu_start start
  def start
    ventwig_map_name_menu_start
    if VENTWIG::DISABLE_NAME == false
      create_map_name_window
    end
    if VENTWIG::DISABLE_TIME == false
      create_playtime_window
    end
  end
  def create_map_name_window
    if VENTWIG::UNDER_COMMAND == true
      @namemap_window = Window_MenuMapName.new
      @namemap_window.x = 0
      @namemap_window.y = @command_window.height
      @namemap_window.width = @command_window.width
      @namemap_window.height = 50
    end
    if VENTWIG::UNDER_COMMAND == false
      if VENTWIG::DISABLE_TIME == false
        @namemap_window = Window_MenuMapName.new
        @namemap_window.x = 0
        @namemap_window.y = @gold_window.y - 100
        @namemap_window.width = @command_window.width
        @namemap_window.height = 50
      end
      if VENTWIG::DISABLE_TIME == true
        @namemap_window = Window_MenuMapName.new
        @namemap_window.x = 0
        @namemap_window.y = @gold_window.y - 50
        @namemap_window.width = @command_window.width
        @namemap_window.height = 50
      end
    end
  end
  def create_playtime_window
    if VENTWIG::UNDER_COMMAND == true
      if VENTWIG::DISABLE_NAME == false
        @playtime_window = Window_MenuPlaytime.new
        @playtime_window.x = 0
        @playtime_window.y = @namemap_window.y + @namemap_window.height
        @playtime_window.width = @command_window.width
        @playtime_window.height = 50
      end
      if VENTWIG::DISABLE_NAME == true
        @playtime_window = Window_MenuPlaytime.new
        @playtime_window.x = 0
        @playtime_window.y = @command_window.height
        @playtime_window.width = @command_window.width
        @playtime_window.height = 50
      end
    end
    if VENTWIG::UNDER_COMMAND == false
      if VENTWIG::DISABLE_NAME == false
        @playtime_window = Window_MenuPlaytime.new
        @playtime_window.x = 0
        @playtime_window.y = @namemap_window.y + @namemap_window.height
        @playtime_window.width = @command_window.width
        @playtime_window.height = 50
      end
      if VENTWIG::DISABLE_NAME == true
        @playtime_window = Window_MenuPlaytime.new
        @playtime_window.x = 0
        @playtime_window.y = @gold_window.y - 50
        @playtime_window.width = @command_window.width
        @playtime_window.height = 50
      end
    end
  end
end

还附加显示地图名

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 感谢解答

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
84 小时
注册时间
2013-4-5
帖子
152
3
 楼主| 发表于 2013-5-4 22:54:22 | 只看该作者
本帖最后由 光の異形 于 2013-5-5 11:01 编辑


谢谢大大 经过早上的研究 终于改好了 另外对窗口的了解懂了好多 多谢啦~!!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
4
发表于 2013-5-5 03:32:17 | 只看该作者
其实只需要这样子:

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Menu_Playtime
  4. #------------------------------------------------------------------------------
  5. #  显示游戏累计时间的视窗
  6. #==============================================================================
  7.  
  8. class Window_Menu_Playtime < Window_Base
  9.   def initialize
  10.     super(0, 0, window_width, fitting_height(1))
  11.     update
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 取得视窗的宽度
  15.   #--------------------------------------------------------------------------
  16.   def window_width
  17.     return 160
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 更新画面
  21.   #--------------------------------------------------------------------------
  22.   def update
  23.     super
  24.     return if $game_system.playtime == @playtime
  25.     @playtime = $game_system.playtime
  26.     contents.clear
  27.     draw_icon(280,0,0)
  28.     draw_text(contents.rect, $game_system.playtime_s, 2)
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 开启视窗
  32.   #--------------------------------------------------------------------------
  33.   def open
  34.     refresh
  35.     super
  36.   end
  37. end


上面的脚本放到 Window_XXX 窗口那一排的最后,名称定为 Window_Menu_Playtime

然后打开 Scene_Menu 主菜单脚本,在 def start 的 end 之前加一行

RUBY 代码复制
  1. create_playtime_window


最后,在生成状态视窗 def create_status_window 的 end 下方放这一段

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 生成游戏时间视窗
  3.   #--------------------------------------------------------------------------
  4.   def create_playtime_window
  5.     @playtime_window = Window_Menu_Playtime.new
  6.     @playtime_window.x = 0
  7.     @playtime_window.y = Graphics.height - @gold_window.height * 2
  8.     @playtime_window.opacity = 0
  9.   end


这样会在主菜单的左下角最底下的金钱窗口上面显示一个时间窗口,这是完全按照默认脚本程式码语法来写的,应该不会有冲突错误。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
84 小时
注册时间
2013-4-5
帖子
152
5
 楼主| 发表于 2013-5-5 11:03:50 | 只看该作者
j433463 发表于 2013-5-5 03:32
其实只需要这样子:

#encoding:utf-8


  多谢前辈了 经过自己一早上的努力 已经改好了
不过还是会研究下这个脚本的 毕竟多学点是好的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
84 小时
注册时间
2013-4-5
帖子
152
6
 楼主| 发表于 2013-5-5 13:08:14 | 只看该作者
本帖最后由 光の異形 于 2013-5-5 13:09 编辑

#此脚本的关键之处已做了注释,
#请务必仔细阅读
class Window_Information<Window_Base
  TEXTHEIGHT=24                        #信息窗口中文字行高
  
  
  def initialize(x,y,width,height)
    super(x,y,width,height)
  end
  
  def draw_text_bylines(lines,name)
    text_x=100
    text_y=24
    self.contents.clear
    self.contents.draw_text(150,0,354,24,name)
    for i in 0..lines.size-1
      self.contents.draw_text(text_x,text_y,354,24,lines)
      text_y+=24
    end
   
  end
  

end



class Window_InforCommand<Window_Command
  def initialize(x,y,name_array,handbook,face,face_index)
    @name_array=name_array
    @handbook=handbook
    @face_visible=face
    @face_index=face_index
    @character_rect=Rect.new(0,0,96,250)
    @now_index=-1
  
   p
    super(x,y)
    if @name_array==[]
      self.visible=false
    else
      @information_window=Window_Information.new(160,50,354,366)
    end
   
   
  end
  
  def make_command_list
    for i in 0..@name_array.size-1
      add_command(@name_array,:command)
    end
   
  end
  
  def update
    super
    if @now_index!=self.index
       @now_index=self.index
      if @information_window!=nil
        if @name_array[self.index]!="未解锁"
         @information_window.draw_text_bylines(@handbook[@name_array[self.index]],@name_array[self.index])
         if @face_index[self.index]!=9
         @information_window.draw_face(@face_visible[self.index],@face_index[self.index],0,50)
         else
         @information_window.contents.blt(0,50,Cache.battler(@character[self.index],0),@character_rect)
         end
       else
         @information_window.contents.clear
         @information_window.draw_text(100,0,100,24,"未解锁")
       end
     
     end
   end
   
  

  
   end
   
   def set_character(character)
     @character=character
   end
   
  
   
end




class Window_MenuCommand
  def add_hand_book_command
    add_command("图鉴",:hand_book)
  end
  
  alias make_command_list_old make_command_list
  
  def make_command_list
    make_command_list_old
    add_hand_book_command
  end
  
end

class Scene_Menu
  alias create_command_window_old create_command_window
  def create_command_window
     create_command_window_old
     @command_window.set_handler(:hand_book, method(:command_hand_book))
   end
   
  def command_hand_book
    SceneManager.call(Scene_Information)
  end
end



class Scene_Information<Scene_MenuBase
  
  MAX_ROW_WORDS=9
  def initialize
    super()
    @pages=[]
#--------------------------------------------------------------------------
  # ●以下这是这个脚本关键,按说明填数组中的内容
#--------------------------------------------------------------------------
    name_array=["影魔","剧毒术士","宙斯","幻影长矛手"]
    #说明上面一句是设置npc的名字,名字中不要换行
   
    set_name_switches={0=>1,1=>2,2=>3,3=>4}
    #上面设置每个npc图鉴是否可见所对应的开关,比如把剧毒术士对应7号开关
    #可以这样设置“ 1=>7”左边的1表示7号开关对应名字数组中的1号位置即数组中的
    #第二项。因为数组的0号位置对应数组的第一项,说以以此类推这样设置。
   
    @hand_book={"影魔"=>"我是影魔
    我今天要横扫新手
    场哈p哈哈哈哈","剧毒术士"=>"我是剧毒术士","宙斯"=>"我是宙斯","幻影长矛手"=>"我是幻影长矛手aaaaaa"}
    #以上数组是设置npc的介绍,里面可以换行,如果有英文字母p,则p以后的
    #内容会令起一段。
   
    face=["actor1","actor1","actor1","actor1"]
    #以上是设置npc的头像文件名,在actor文件夹下。可以自己更改
   
   
    face_index=[0,1,2,9]
    #以上是设置每个对应头像的文件中具体头像的编号,应为每个头像文件包含
    #8个头像,所以要设置一下。,如果你不想用默认头像,应自己的图像
   
    character=["asura","bandit","captain","hero_m"]
    #设置人物半身像,半身像文件要放在ballters中,文件名填入以上数组
    #注意半身像文件高度不要超过200,宽度不要超过96.
     #注意以上数组中的项数一定要相同,比如上面填写的数组每个都是4项。
#--------------------------------------------------------------------------
  # ●以上这是这个脚本关键按说明填数组中的内容
#--------------------------------------------------------------------------
   
    @face_visible=[]
    @face_index=[]
    @name_visible_array=[]
    @character_visible=[]
    for i in 0..set_name_switches.size-1
      if $game_switches[set_name_switches]==true
         @name_visible_array.push(name_array)
         @face_visible.push(face)
         @face_index.push(face_index)
         @character_visible.push(character)
       else
         @name_visible_array.push("未解锁")
         @face_visible.push("")
         @face_index.push(9)
         @character_visible.push("")
       end
     end
     
     @hand_book.each{|key,value|@hand_book[key]=hand_book_tolines(value)}
     


  end
  
  def start
    super
    create_title_window
    create_inforcommand_window
  end
  
  def create_title_window
    @title_window=Window_Base.new(0,0,544,50)
    @title_window.draw_text(220,0,100,24,"图鉴")
  end
  
  def create_inforcommand_window
    @inforcommand_window=Window_InforCommand.new(0,50,@name_visible_array, @hand_book,@face_visible,@face_index)
    @inforcommand_window.set_handler(:cancel,    method(:return_scene))
    @inforcommand_window.set_character(@character_visible)
  end
  #下面这个函数是脚本关键部分之一,不理解不影响脚本的使用
  #这里说明一下:这个脚本的想法是把每个图鉴的字符串分按字数分为
  #几个数组,每个数组会画成图鉴窗口的一行字符,9个字为一行,
  #所以这个有个问题,即每个图鉴中的文字最好不要超过60个字,否则多余的字会显示
  #不出来。
  def hand_book_tolines(string)
    @inforlines=[]
    inforline=""
    wordCount=0
    lineCount=0
    string.delete!("\n ")
   
    loop do
      c=string.slice!(/./m)
      if c==nil
        break
      end
      
      if c!="p"
          if wordCount<MAX_ROW_WORDS
            wordCount+=1
          else
            @inforlines.push(inforline)
            wordCount=1
            inforline=""
          end
            inforline+=c
        
      else
          @inforlines.push(inforline)
          wordCount=0
          inforline=""
        
      end
   
    end
    @inforlines.push(inforline)
    return @inforlines
  
  end
  

end




我想吧图鉴放到 物品下边 要怎么弄啊 图鉴是这个脚本
貌似 也是窗口的问题 我就在这里一起问了 拜托了 我真的搞不定 要出错 ······ T    T
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
7
发表于 2013-5-5 14:49:47 | 只看该作者
本帖最后由 j433463 于 2013-5-5 14:52 编辑
  1. class Window_MenuCommand
  2.   def add_hand_book_command
  3.     #add_command("图鉴",:hand_book) #这一行注释起来不用了
  4.   end
复制代码
如上,注释掉有 # 的那一行,并且开启 Window_MenuCommand 脚本,
  1.   #--------------------------------------------------------------------------
  2.   # ● 向指令清单加入主要的指令
  3.   #--------------------------------------------------------------------------
  4.   def add_main_commands
  5.     add_command(Vocab::item,   :item,   main_commands_enabled)
  6.     add_command("图鉴", :hand_book) #加入这一行
  7.     add_command(Vocab::skill,  :skill,  main_commands_enabled)
  8.     add_command(Vocab::equip,  :equip,  main_commands_enabled)
  9.     add_command(Vocab::status, :status, main_commands_enabled)
  10.   end
复制代码
item 是物品,skill 是技能,equip 是装备,status 是状态,自己看要放在哪个下面,就自己把那一行移过去。

不过我测试时开启图鉴有错误讯息,可能有别的脚本配套吧?不过那跟我无关,反正不影响您要的修改结果。

另外,最好不要一帖多问,不然版主会出来扣分滴,有别的问题请另外开新帖,而这个帖的问题解决后请把主题前那个改成[已经解决]。

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 感谢解答

查看全部评分

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
84 小时
注册时间
2013-4-5
帖子
152
8
 楼主| 发表于 2013-5-5 18:38:44 | 只看该作者
j433463 发表于 2013-5-5 14:49
如上,注释掉有 # 的那一行,并且开启 Window_MenuCommand 脚本,item 是物品,skill 是技能,equip 是装备 ...


嗯 明白了   我只有1分呢 扣掉的 那真是穷光光啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
525 小时
注册时间
2012-2-23
帖子
186
9
发表于 2013-7-15 22:02:06 | 只看该作者
j433463 发表于 2013-5-5 03:32
其实只需要这样子:

#encoding:utf-8

请问下,你这个脚本怎么添加个窗口
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 06:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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