| 
 
| 赞 | 0 |  
| VIP | 0 |  
| 好人卡 | 0 |  
| 积分 | 1 |  
| 经验 | 2684 |  
| 最后登录 | 2017-1-18 |  
| 在线时间 | 160 小时 |  
 Lv1.梦旅人 
	梦石0 星屑50 在线时间160 小时注册时间2010-11-7帖子28 | 
| 
先说下我用这个脚本实现的功能 完成一个任务自动在图鉴里解锁一段介绍 得到一个物品XX风物志 使用后解锁这个物品的介绍
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
   想问怎样可以实现类似敌人图鉴http://rpg.blue/forum.php?mod=viewthread&tid=223640这样的效果 就是有多个分页比如通过任务解锁的介绍放到故事选项里 通过风物志解锁的风景类 放到风景的选项里 一共3个选项就可以了 故事 风景 珍宝 哪位可以帮帮忙非常感谢
 
   
 
 #此脚本的关键之处已做了注释,#请务必仔细阅读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[i])      text_y+=24    end  endend 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  #--------------------------------------------------------------------------  # ● 获取窗口的高度  #--------------------------------------------------------------------------  def window_height    fitting_height(14.3)  end   p     super(x,y)    if @name_array==[]      self.visible=false    else      @information_window=Window_Information.new(160,50,384,366)    end  end  def make_command_list    for i in [email]0..@name_array.size[/email]-1      add_command(@name_array[i],: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   endend class Scene_Information<Scene_MenuBase   MAX_ROW_WORDS=14  def initialize    super()    @pages=[]#--------------------------------------------------------------------------  # ●以下这是这个脚本关键,按说明填数组中的内容#--------------------------------------------------------------------------    name_array=["初入世道长略试探","缘自起黄家祸横生","小娘子求方救夫壹","小娘子寻方救夫贰",    "小娘子寻方救夫叁","凝香草疗伤显功效","村长愁扰心为乡里","小桑村村外斗野猪","家事多村长寻孙童",    "传情信妖孽思春情","受嘱托除妖寻灵子"]    #说明上面一句是设置npc的名字,名字中不要换行,""     set_name_switches={0=>1,1=>4,2=>5,3=>6,4=>8,5=>10,6=>11,7=>12,8=>13,9=>14,10=>15}    #上面设置每个npc图鉴是否可见所对应的开关,比如把剧毒术士对应7号开关    #可以这样设置“ 1=>7”左边的1表示7号开关对应名字数组中的1号位置即数组中的    #第二项。因为数组的0号位置对应数组的第一项,说以以此类推这样设置。     @hand_book={               "初入世道长略试探"=>"仙途初始风波起,世间苍茫少不了风波异事。话说这宁海县境内的小桑村,突生离奇怪病。不得已请来三清派茂阳道长,前来看个究竟。",               "缘自起黄家祸横生"=>"那茂阳道长追查线索,发现村外有豺出没,此事并不简单。应与村中黄李两家所得怪病有关。",               "小娘子求方救夫壹"=>"不出所料,村中黄妻诉说丈夫自从一次外出后便遭横祸,终日昏沉沉卧床不起。只得她心神不宁,寝食难安。",               "小娘子寻方救夫贰"=>"茂阳子问明缘由,心中变有了计较,于是开出了一个药方,采来小桑村河边的一种凝香草,补气祛毒,活络血脉,救治黄李两家之病。",               "小娘子寻方救夫叁"=>"黄妻当然得知自己夫君有救,喜不自胜,忙不迭的感谢恩人。",               "凝香草疗伤显功效"=>"俗话说远亲不如近邻,李家的长贵还昏迷不醒,黄妻将茂阳子道长之药分出了一半给了李家二嫂,足见两家交情深厚。",               "村长愁扰心为乡里"=>"李二嫂得了药心中欢喜,但想到老村长整日为村里的怪事操心劳神,如今来了能人异士,希望能前去帮他排忧解难。",               "小桑村村外斗野猪"=>" 村外野猪横行,着实令村长头痛,与其等它们伤了人毁了物,不如趁早将它们除去方能安心。",               "家事多村长寻孙童"=>"赶走了野猪,罗村长说村里最近怪事频发,一桩挨着一桩,村里的小孩也不知跑去哪里玩了,罗村长就怕他们被野兽,妖精伤着。",               "传情信妖孽思春情"=>"由于最近怪事连连,村里的孩子都被喝令留在家中。李小瑶本来就胆小,却被罗小虎骗到村外,不成想遇见了妖精,惊慌之中罗小虎跑回了村内,剩下小瑶吉凶未卜。"                }    #以上数组是设置npc的介绍,里面可以换行,如果有英文字母p,则p以后的    #内容会令起一段。,""=>""    face=["RW-01","RW-01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01",    "自定义01"]    #以上是设置npc的头像文件名,在actor文件夹下。可以自己更改      face_index=[0,1,1,0,1,2,3,4,4,5,0]    #以上是设置每个对应头像的文件中具体头像的编号,应为每个头像文件包含    #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[i]]==true         @name_visible_array.push(name_array[i])         @face_visible.push(face[i])         @face_index.push(face_index[i])         @character_visible.push(character[i])       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,150,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  endend
#此脚本的关键之处已做了注释, 
#请务必仔细阅读 
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[i]) 
      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 
  #-------------------------------------------------------------------------- 
  # ● 获取窗口的高度 
  #-------------------------------------------------------------------------- 
  def window_height 
    fitting_height(14.3) 
  end 
   p  
    super(x,y) 
    if @name_array==[] 
      self.visible=false 
    else 
      @information_window=Window_Information.new(160,50,384,366) 
    end 
  end 
  def make_command_list 
    for i in [email]0..@name_array.size[/email]-1 
      add_command(@name_array[i],: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 Scene_Information<Scene_MenuBase 
  
  MAX_ROW_WORDS=14 
  def initialize 
    super() 
    @pages=[] 
#-------------------------------------------------------------------------- 
  # ●以下这是这个脚本关键,按说明填数组中的内容 
#-------------------------------------------------------------------------- 
    name_array=["初入世道长略试探","缘自起黄家祸横生","小娘子求方救夫壹","小娘子寻方救夫贰", 
    "小娘子寻方救夫叁","凝香草疗伤显功效","村长愁扰心为乡里","小桑村村外斗野猪","家事多村长寻孙童", 
    "传情信妖孽思春情","受嘱托除妖寻灵子"] 
    #说明上面一句是设置npc的名字,名字中不要换行,"" 
  
    set_name_switches={0=>1,1=>4,2=>5,3=>6,4=>8,5=>10,6=>11,7=>12,8=>13,9=>14,10=>15} 
    #上面设置每个npc图鉴是否可见所对应的开关,比如把剧毒术士对应7号开关 
    #可以这样设置“ 1=>7”左边的1表示7号开关对应名字数组中的1号位置即数组中的 
    #第二项。因为数组的0号位置对应数组的第一项,说以以此类推这样设置。 
  
    @hand_book={ 
               "初入世道长略试探"=>"仙途初始风波起,世间苍茫少不了风波异事。话说这宁海县境内的小桑村,突生离奇怪病。不得已请来三清派茂阳道长,前来看个究竟。", 
               "缘自起黄家祸横生"=>"那茂阳道长追查线索,发现村外有豺出没,此事并不简单。应与村中黄李两家所得怪病有关。", 
               "小娘子求方救夫壹"=>"不出所料,村中黄妻诉说丈夫自从一次外出后便遭横祸,终日昏沉沉卧床不起。只得她心神不宁,寝食难安。", 
               "小娘子寻方救夫贰"=>"茂阳子问明缘由,心中变有了计较,于是开出了一个药方,采来小桑村河边的一种凝香草,补气祛毒,活络血脉,救治黄李两家之病。", 
               "小娘子寻方救夫叁"=>"黄妻当然得知自己夫君有救,喜不自胜,忙不迭的感谢恩人。", 
               "凝香草疗伤显功效"=>"俗话说远亲不如近邻,李家的长贵还昏迷不醒,黄妻将茂阳子道长之药分出了一半给了李家二嫂,足见两家交情深厚。", 
               "村长愁扰心为乡里"=>"李二嫂得了药心中欢喜,但想到老村长整日为村里的怪事操心劳神,如今来了能人异士,希望能前去帮他排忧解难。", 
               "小桑村村外斗野猪"=>" 村外野猪横行,着实令村长头痛,与其等它们伤了人毁了物,不如趁早将它们除去方能安心。", 
               "家事多村长寻孙童"=>"赶走了野猪,罗村长说村里最近怪事频发,一桩挨着一桩,村里的小孩也不知跑去哪里玩了,罗村长就怕他们被野兽,妖精伤着。", 
               "传情信妖孽思春情"=>"由于最近怪事连连,村里的孩子都被喝令留在家中。李小瑶本来就胆小,却被罗小虎骗到村外,不成想遇见了妖精,惊慌之中罗小虎跑回了村内,剩下小瑶吉凶未卜。" 
  
               } 
    #以上数组是设置npc的介绍,里面可以换行,如果有英文字母p,则p以后的 
    #内容会令起一段。,""=>"" 
    face=["RW-01","RW-01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01", 
    "自定义01"] 
    #以上是设置npc的头像文件名,在actor文件夹下。可以自己更改 
  
  
    face_index=[0,1,1,0,1,2,3,4,4,5,0] 
    #以上是设置每个对应头像的文件中具体头像的编号,应为每个头像文件包含 
    #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[i]]==true 
         @name_visible_array.push(name_array[i]) 
         @face_visible.push(face[i]) 
         @face_index.push(face_index[i]) 
         @character_visible.push(character[i]) 
       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,150,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 
下面是我弄的游戏 基础系统就差这个没弄好了 我脚本盲,哪位能帮帮我{:2_264:}
 
   
   
   
   
   | 
 |