Project1

标题: 图书或图鉴系统va版无法向下翻页 [打印本页]

作者: 394178110    时间: 2013-7-24 13:24
标题: 图书或图鉴系统va版无法向下翻页
本帖最后由 394178110 于 2013-7-25 20:47 编辑

如下脚本 我想用他代替任务脚本的“已完成任务”选项 就是完成一个任务 介绍一个故事 但是发现这个脚本无法向下翻页 超过一页就会突破下面的边框无法选择。求解如何实现翻页。 很急 多谢了。

附件里面有详细演示
Project1.rar (316.5 KB, 下载次数: 63)
RUBY 代码复制
  1. #此脚本的关键之处已做了注释,
  2. #请务必仔细阅读
  3. class Window_Information<Window_Base
  4.   TEXTHEIGHT=24                        #信息窗口中文字行高
  5.  
  6.  
  7.   def initialize(x,y,width,height)
  8.     super(x,y,width,height)
  9.   end
  10.  
  11.   def draw_text_bylines(lines,name)
  12.     text_x=100
  13.     text_y=24
  14.     self.contents.clear
  15.     self.contents.draw_text(150,0,354,24,name)
  16.     for i in 0..lines.size-1
  17.       self.contents.draw_text(text_x,text_y,354,24,lines[i])
  18.       text_y+=24
  19.     end
  20.   end
  21. end
  22.  
  23.  
  24. class Window_InforCommand<Window_Command
  25.   def initialize(x,y,name_array,handbook,face,face_index)
  26.     @name_array=name_array
  27.     @handbook=handbook
  28.     @face_visible=face
  29.     @face_index=face_index
  30.     @character_rect=Rect.new(0,0,96,250)
  31.     @now_index=-1
  32.  
  33.    p
  34.     super(x,y)
  35.     if @name_array==[]
  36.       self.visible=false
  37.     else
  38.       @information_window=Window_Information.new(160,50,354,366)
  39.     end
  40.  
  41.  
  42.   end
  43.  
  44.   def make_command_list
  45.     for i in [email]0..@name_array.size[/email]-1
  46.       add_command(@name_array[i],:command)
  47.     end
  48.  
  49.   end
  50.  
  51.   def update
  52.     super
  53.     if @now_index!=self.index
  54.        @now_index=self.index
  55.       if @information_window!=nil
  56.         if @name_array[self.index]!="未解锁"
  57.          @information_window.draw_text_bylines(@handbook[@name_array[self.index]],@name_array[self.index])
  58.          if @face_index[self.index]!=9
  59.          @information_window.draw_face(@face_visible[self.index],@face_index[self.index],0,50)
  60.          else
  61.          @information_window.contents.blt(0,50,Cache.battler(@character[self.index],0),@character_rect)
  62.          end
  63.        else
  64.          @information_window.contents.clear
  65.          @information_window.draw_text(100,0,100,24,"未解锁")
  66.        end
  67.  
  68.      end
  69.    end
  70.  
  71.  
  72.  
  73.  
  74.    end
  75.  
  76.    def set_character(character)
  77.      @character=character
  78.    end
  79. end
  80.  
  81. class Scene_Information<Scene_MenuBase
  82.  
  83.   MAX_ROW_WORDS=12
  84.   def initialize
  85.     super()
  86.     @pages=[]
  87. #--------------------------------------------------------------------------
  88.   # ●以下这是这个脚本关键,按说明填数组中的内容
  89. #--------------------------------------------------------------------------
  90.     name_array=["初入世道长略试探","剧毒术士","宙斯","幻影长矛手","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"]
  91.     #说明上面一句是设置npc的名字,名字中不要换行
  92.  
  93.     set_name_switches={0=>1,1=>2,2=>3,3=>4,4=>5,5=>6,6=>7,7=>8,8=>9,9=>10,10=>11,11=>12,12=>13,13=>14,14=>15,
  94.     15=>16,16=>17,17=>18,18=>19,19=>20,20=>21,21=>22}
  95.     #上面设置每个npc图鉴是否可见所对应的开关,比如把剧毒术士对应7号开关
  96.     #可以这样设置“ 1=>7”左边的1表示7号开关对应名字数组中的1号位置即数组中的
  97.     #第二项。因为数组的0号位置对应数组的第一项,说以以此类推这样设置。
  98.  
  99.     @hand_book={"初入世道长略试探"=>"仙途初始风波起,世间苍茫少不了风波异事。
  100.     话说这宁海县境内的小桑村,突生离奇怪病。不得已请来三清派茂阳道长,前来看个究竟。",
  101.     "剧毒术士"=>"我是剧毒术士","1"=>"8","14"=>"20"}
  102.     #以上数组是设置npc的介绍,里面可以换行,如果有英文字母p,则p以后的
  103.     #内容会令起一段。
  104.     face=["自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01",
  105.     "自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01",]
  106.     #以上是设置npc的头像文件名,在actor文件夹下。可以自己更改
  107.  
  108.  
  109.     face_index=[0,1,2,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
  110.     #以上是设置每个对应头像的文件中具体头像的编号,应为每个头像文件包含
  111.     #8个头像,所以要设置一下。,如果你不想用默认头像,应自己的图像
  112.  
  113.     character=["asura","bandit","captain","hero_m"]
  114.     #设置人物半身像,半身像文件要放在ballters中,文件名填入以上数组
  115.     #注意半身像文件高度不要超过200,宽度不要超过96.
  116.      #注意以上数组中的项数一定要相同,比如上面填写的数组每个都是4项。
  117. #--------------------------------------------------------------------------
  118.   # ●以上这是这个脚本关键按说明填数组中的内容
  119. #--------------------------------------------------------------------------
  120.  
  121.     @face_visible=[]
  122.     @face_index=[]
  123.     @name_visible_array=[]
  124.     @character_visible=[]
  125.     for i in 0..set_name_switches.size-1
  126.       if $game_switches[set_name_switches[i]]==true
  127.          @name_visible_array.push(name_array[i])
  128.          @face_visible.push(face[i])
  129.          @face_index.push(face_index[i])
  130.          @character_visible.push(character[i])
  131.        else
  132.          @name_visible_array.push("未解锁")
  133.          @face_visible.push("")
  134.          @face_index.push(9)
  135.          @character_visible.push("")
  136.        end
  137.      end
  138.  
  139.      @hand_book.each{|key,value|@hand_book[key]=hand_book_tolines(value)}
  140.  
  141.  
  142.  
  143.   end
  144.  
  145.   def start
  146.     super
  147.     create_title_window
  148.     create_inforcommand_window
  149.   end
  150.  
  151.   def create_title_window
  152.     @title_window=Window_Base.new(0,0,544,50)
  153.     @title_window.draw_text(220,0,100,24,"风物志-故事篇")
  154.   end
  155.  
  156.   def create_inforcommand_window
  157.     @inforcommand_window=Window_InforCommand.new(0,50,@name_visible_array, @hand_book,@face_visible,@face_index)
  158.     @inforcommand_window.set_handler(:cancel,    method(:return_scene))
  159.     @inforcommand_window.set_character(@character_visible)
  160.   end
  161.   #下面这个函数是脚本关键部分之一,不理解不影响脚本的使用
  162.   #这里说明一下:这个脚本的想法是把每个图鉴的字符串分按字数分为
  163.   #几个数组,每个数组会画成图鉴窗口的一行字符,9个字为一行,
  164.   #所以这个有个问题,即每个图鉴中的文字最好不要超过60个字,否则多余的字会显示
  165.   #不出来。
  166.   def hand_book_tolines(string)
  167.     @inforlines=[]
  168.     inforline=""
  169.     wordCount=0
  170.     lineCount=0
  171.     string.delete!("\n ")
  172.     loop do
  173.       c=string.slice!(/./m)
  174.       if c==nil
  175.         break
  176.       end
  177.       if c!="p"
  178.           if wordCount<MAX_ROW_WORDS
  179.             wordCount+=1
  180.           else
  181.             @inforlines.push(inforline)
  182.             wordCount=1
  183.             inforline=""
  184.           end
  185.             inforline+=c        
  186.       else
  187.           @inforlines.push(inforline)
  188.           wordCount=0
  189.           inforline=""
  190.       end
  191.     end
  192.     @inforlines.push(inforline)
  193.     return @inforlines
  194.   end
  195. end

作者: 345912390    时间: 2013-7-25 18:00
  1. class Window_InforCommand<Window_Command
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取窗口的高度
  4.   #--------------------------------------------------------------------------
  5.   def window_height
  6.     fitting_height(14)
  7.   end
  8. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1