Project1

标题: 图书或图鉴系统va版 [打印本页]

作者: 电锤斧王    时间: 2013-3-8 13:16
标题: 图书或图鉴系统va版
本帖最后由 电锤斧王 于 2013-3-8 20:40 编辑

我前几天发了个图书系统vx版,说实话那是个很坑的系统,基本无实用价值,这次我发个好点的va版,希望弥补一下错误。另外vx的那个看看大家的反应,如果不好的话我不再维护。请大家用这个吧,如果你发现了什么bug请联系我
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.  
  21.   end
  22.  
  23.  
  24. end
  25.  
  26.  
  27.  
  28. class Window_InforCommand<Window_Command
  29.   def initialize(x,y,name_array,handbook,face,face_index)
  30.     @name_array=name_array
  31.     @handbook=handbook
  32.     @face_visible=face
  33.     @face_index=face_index
  34.     @character_rect=Rect.new(0,0,96,250)
  35.     @now_index=-1
  36.  
  37.    p
  38.     super(x,y)
  39.     if @name_array==[]
  40.       self.visible=false
  41.     else
  42.       @information_window=Window_Information.new(160,50,354,366)
  43.     end
  44.  
  45.  
  46.   end
  47.  
  48.   def make_command_list
  49.     for i in [email]0..@name_array.size[/email]-1
  50.       add_command(@name_array[i],:command)
  51.     end
  52.  
  53.   end
  54.  
  55.   def update
  56.     super
  57.     if @now_index!=self.index
  58.        @now_index=self.index
  59.       if @information_window!=nil
  60.         if @name_array[self.index]!="未解锁"
  61.          @information_window.draw_text_bylines(@handbook[@name_array[self.index]],@name_array[self.index])
  62.          if @face_index[self.index]!=9
  63.          @information_window.draw_face(@face_visible[self.index],@face_index[self.index],0,50)
  64.          else
  65.          @information_window.contents.blt(0,50,Cache.battler(@character[self.index],0),@character_rect)
  66.          end
  67.        else
  68.          @information_window.contents.clear
  69.          @information_window.draw_text(100,0,100,24,"未解锁")
  70.        end
  71.  
  72.      end
  73.    end
  74.  
  75.  
  76.  
  77.  
  78.    end
  79.  
  80.    def set_character(character)
  81.      @character=character
  82.    end
  83.  
  84.  
  85.  
  86. end
  87.  
  88.  
  89.  
  90.  
  91. class Window_MenuCommand
  92.   def add_hand_book_command
  93.     add_command("图鉴",:hand_book)
  94.   end
  95.  
  96.   alias make_command_list_old make_command_list
  97.  
  98.   def make_command_list
  99.     make_command_list_old
  100.     add_hand_book_command
  101.   end
  102.  
  103. end
  104.  
  105. class Scene_Menu
  106.   alias create_command_window_old create_command_window
  107.   def create_command_window
  108.      create_command_window_old
  109.      @command_window.set_handler(:hand_book, method(:command_hand_book))
  110.    end
  111.  
  112.   def command_hand_book
  113.     SceneManager.call(Scene_Information)
  114.   end
  115. end
  116.  
  117.  
  118.  
  119. class Scene_Information<Scene_MenuBase
  120.  
  121.   MAX_ROW_WORDS=9
  122.   def initialize
  123.     super()
  124.     @pages=[]
  125. #--------------------------------------------------------------------------
  126.   # ●以下这是这个脚本关键,按说明填数组中的内容
  127. #--------------------------------------------------------------------------
  128.     name_array=["影魔","剧毒术士","宙斯","幻影长矛手"]
  129.     #说明上面一句是设置npc的名字,名字中不要换行
  130.  
  131.     set_name_switches={0=>1,1=>2,2=>3,3=>4}
  132.     #上面设置每个npc图鉴是否可见所对应的开关,比如把剧毒术士对应7号开关
  133.     #可以这样设置“ 1=>7”左边的1表示7号开关对应名字数组中的1号位置即数组中的
  134.     #第二项。因为数组的0号位置对应数组的第一项,说以以此类推这样设置。
  135.  
  136.     @hand_book={"影魔"=>"我是影魔
  137.     我今天要横扫新手
  138.     场哈p哈哈哈哈","剧毒术士"=>"我是剧毒术士","宙斯"=>"我是宙斯","幻影长矛手"=>"我是幻影长矛手aaaaaa"}
  139.     #以上数组是设置npc的介绍,里面可以换行,如果有英文字母p,则p以后的
  140.     #内容会令起一段。
  141.  
  142.     face=["actor1","actor1","actor1","actor1"]
  143.     #以上是设置npc的头像文件名,在actor文件夹下。可以自己更改
  144.  
  145.  
  146.     face_index=[0,1,2,9]
  147.     #以上是设置每个对应头像的文件中具体头像的编号,应为每个头像文件包含
  148.     #8个头像,所以要设置一下。,如果你不想用默认头像,应自己的图像
  149.  
  150.     character=["asura","bandit","captain","hero_m"]
  151.     #设置人物半身像,半身像文件要放在ballters中,文件名填入以上数组
  152.     #注意半身像文件高度不要超过200,宽度不要超过96.
  153.      #注意以上数组中的项数一定要相同,比如上面填写的数组每个都是4项。
  154. #--------------------------------------------------------------------------
  155.   # ●以上这是这个脚本关键按说明填数组中的内容
  156. #--------------------------------------------------------------------------
  157.  
  158.     @face_visible=[]
  159.     @face_index=[]
  160.     @name_visible_array=[]
  161.     @character_visible=[]
  162.     for i in 0..set_name_switches.size-1
  163.       if $game_switches[set_name_switches[i]]==true
  164.          @name_visible_array.push(name_array[i])
  165.          @face_visible.push(face[i])
  166.          @face_index.push(face_index[i])
  167.          @character_visible.push(character[i])
  168.        else
  169.          @name_visible_array.push("未解锁")
  170.          @face_visible.push("")
  171.          @face_index.push(9)
  172.          @character_visible.push("")
  173.        end
  174.      end
  175.  
  176.      @hand_book.each{|key,value|@hand_book[key]=hand_book_tolines(value)}
  177.  
  178.  
  179.  
  180.   end
  181.  
  182.   def start
  183.     super
  184.     create_title_window
  185.     create_inforcommand_window
  186.   end
  187.  
  188.   def create_title_window
  189.     @title_window=Window_Base.new(0,0,544,50)
  190.     @title_window.draw_text(220,0,100,24,"图鉴")
  191.   end
  192.  
  193.   def create_inforcommand_window
  194.     @inforcommand_window=Window_InforCommand.new(0,50,@name_visible_array, @hand_book,@face_visible,@face_index)
  195.     @inforcommand_window.set_handler(:cancel,    method(:return_scene))
  196.     @inforcommand_window.set_character(@character_visible)
  197.   end
  198.   #下面这个函数是脚本关键部分之一,不理解不影响脚本的使用
  199.   #这里说明一下:这个脚本的想法是把每个图鉴的字符串分按字数分为
  200.   #几个数组,每个数组会画成图鉴窗口的一行字符,9个字为一行,
  201.   #所以这个有个问题,即每个图鉴中的文字最好不要超过60个字,否则多余的字会显示
  202.   #不出来。
  203.   def hand_book_tolines(string)
  204.     @inforlines=[]
  205.     inforline=""
  206.     wordCount=0
  207.     lineCount=0
  208.     string.delete!("\n ")
  209.  
  210.     loop do
  211.       c=string.slice!(/./m)
  212.       if c==nil
  213.         break
  214.       end
  215.  
  216.       if c!="p"
  217.           if wordCount<MAX_ROW_WORDS
  218.             wordCount+=1
  219.           else
  220.             @inforlines.push(inforline)
  221.             wordCount=1
  222.             inforline=""
  223.           end
  224.             inforline+=c
  225.  
  226.       else
  227.           @inforlines.push(inforline)
  228.           wordCount=0
  229.           inforline=""
  230.  
  231.       end
  232.  
  233.     end
  234.     @inforlines.push(inforline)
  235.     return @inforlines
  236.  
  237.   end
  238.  
  239.  
  240. end

5QJGK%DN1)1@FOV`HMMGH4F.jpg (61.2 KB, 下载次数: 37)

5QJGK%DN1)1@FOV`HMMGH4F.jpg

图鉴.rar

2.3 KB, 下载次数: 353


作者: 神秘来客3    时间: 2013-3-8 17:04
本帖最后由 神秘来客3 于 2013-3-8 17:09 编辑

还没用,一会用用看。
希望楼主把所有注释都放到最前面,然后说是在第几行。
突然发现楼主的代码没有“复制代码”这个按钮,直接复制代码全挤到一行去了……
这是怎么了???

作者: 电锤斧王    时间: 2013-3-8 20:40
神秘来客3 发表于 2013-3-8 17:04
还没用,一会用用看。
希望楼主把所有注释都放到最前面,然后说是在第几行。
突然发现楼主的代码没有“复制 ...

你说的问题我发现了。但我不知怎么弄“复制”。
作者: 电锤斧王    时间: 2013-3-8 20:41
神秘来客3 发表于 2013-3-8 17:04
还没用,一会用用看。
希望楼主把所有注释都放到最前面,然后说是在第几行。
突然发现楼主的代码没有“复制 ...

我把脚本上传了
作者: oobuluo    时间: 2013-3-14 17:42
还是从范例中直接拉脚本吧,复制给的不对
作者: 电锤斧王    时间: 2013-3-14 19:17
oobuluo 发表于 2013-3-14 17:42
还是从范例中直接拉脚本吧,复制给的不对

目测是不对不知范例的脚本对吗
作者: arnie510    时间: 2013-3-15 02:12
请问如何乎叫出介面??
作者: 电锤斧王    时间: 2013-3-15 09:13
arnie510 发表于 2013-3-15 02:12
请问如何乎叫出介面??

菜单里就有啊




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