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

Project1

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

[已经过期] 关于图书图鉴脚本求帮助

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
160 小时
注册时间
2010-11-7
帖子
28
跳转到指定楼层
1
发表于 2013-9-4 02:02:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
先说下我用这个脚本实现的功能 完成一个任务自动在图鉴里解锁一段介绍 得到一个物品XX风物志 使用后解锁这个物品的介绍

想问怎样可以实现类似敌人图鉴http://rpg.blue/forum.php?mod=viewthread&tid=223640这样的效果 就是有多个分页比如通过任务解锁的介绍放到故事选项里 通过风物志解锁的风景类 放到风景的选项里 一共3个选项就可以了 故事 风景 珍宝 哪位可以帮帮忙非常感谢


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. class Window_InforCommand<Window_Command
  24.   def initialize(x,y,name_array,handbook,face,face_index)
  25.     @name_array=name_array
  26.     @handbook=handbook
  27.     @face_visible=face
  28.     @face_index=face_index
  29.     @character_rect=Rect.new(0,0,96,250)
  30.     @now_index=-1
  31.   #--------------------------------------------------------------------------
  32.   # ● 获取窗口的高度
  33.   #--------------------------------------------------------------------------
  34.   def window_height
  35.     fitting_height(14.3)
  36.   end
  37.    p
  38.     super(x,y)
  39.     if @name_array==[]
  40.       self.visible=false
  41.     else
  42.       @information_window=Window_Information.new(160,50,384,366)
  43.     end
  44.   end
  45.   def make_command_list
  46.     for i in [email]0..@name_array.size[/email]-1
  47.       add_command(@name_array[i],:command)
  48.     end
  49.   end
  50.   def update
  51.     super
  52.     if @now_index!=self.index
  53.        @now_index=self.index
  54.       if @information_window!=nil
  55.         if @name_array[self.index]!="未解锁"
  56.          @information_window.draw_text_bylines(@handbook[@name_array[self.index]],@name_array[self.index])
  57.          if @face_index[self.index]!=9
  58.          @information_window.draw_face(@face_visible[self.index],@face_index[self.index],0,50)
  59.          else
  60.          @information_window.contents.blt(0,50,Cache.battler(@character[self.index],0),@character_rect)
  61.          end
  62.        else
  63.          @information_window.contents.clear
  64.          @information_window.draw_text(100,0,100,24,"未解锁")
  65.        end
  66.  
  67.      end
  68.    end
  69.  
  70.   end
  71.  
  72.    def set_character(character)
  73.      @character=character
  74.    end
  75. end
  76.  
  77. class Scene_Information<Scene_MenuBase
  78.  
  79.   MAX_ROW_WORDS=14
  80.   def initialize
  81.     super()
  82.     @pages=[]
  83. #--------------------------------------------------------------------------
  84.   # ●以下这是这个脚本关键,按说明填数组中的内容
  85. #--------------------------------------------------------------------------
  86.     name_array=["初入世道长略试探","缘自起黄家祸横生","小娘子求方救夫壹","小娘子寻方救夫贰",
  87.     "小娘子寻方救夫叁","凝香草疗伤显功效","村长愁扰心为乡里","小桑村村外斗野猪","家事多村长寻孙童",
  88.     "传情信妖孽思春情","受嘱托除妖寻灵子"]
  89.     #说明上面一句是设置npc的名字,名字中不要换行,""
  90.  
  91.     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}
  92.     #上面设置每个npc图鉴是否可见所对应的开关,比如把剧毒术士对应7号开关
  93.     #可以这样设置“ 1=>7”左边的1表示7号开关对应名字数组中的1号位置即数组中的
  94.     #第二项。因为数组的0号位置对应数组的第一项,说以以此类推这样设置。
  95.  
  96.     @hand_book={
  97.                "初入世道长略试探"=>"仙途初始风波起,世间苍茫少不了风波异事。话说这宁海县境内的小桑村,突生离奇怪病。不得已请来三清派茂阳道长,前来看个究竟。",
  98.                "缘自起黄家祸横生"=>"那茂阳道长追查线索,发现村外有豺出没,此事并不简单。应与村中黄李两家所得怪病有关。",
  99.                "小娘子求方救夫壹"=>"不出所料,村中黄妻诉说丈夫自从一次外出后便遭横祸,终日昏沉沉卧床不起。只得她心神不宁,寝食难安。",
  100.                "小娘子寻方救夫贰"=>"茂阳子问明缘由,心中变有了计较,于是开出了一个药方,采来小桑村河边的一种凝香草,补气祛毒,活络血脉,救治黄李两家之病。",
  101.                "小娘子寻方救夫叁"=>"黄妻当然得知自己夫君有救,喜不自胜,忙不迭的感谢恩人。",
  102.                "凝香草疗伤显功效"=>"俗话说远亲不如近邻,李家的长贵还昏迷不醒,黄妻将茂阳子道长之药分出了一半给了李家二嫂,足见两家交情深厚。",
  103.                "村长愁扰心为乡里"=>"李二嫂得了药心中欢喜,但想到老村长整日为村里的怪事操心劳神,如今来了能人异士,希望能前去帮他排忧解难。",
  104.                "小桑村村外斗野猪"=>" 村外野猪横行,着实令村长头痛,与其等它们伤了人毁了物,不如趁早将它们除去方能安心。",
  105.                "家事多村长寻孙童"=>"赶走了野猪,罗村长说村里最近怪事频发,一桩挨着一桩,村里的小孩也不知跑去哪里玩了,罗村长就怕他们被野兽,妖精伤着。",
  106.                "传情信妖孽思春情"=>"由于最近怪事连连,村里的孩子都被喝令留在家中。李小瑶本来就胆小,却被罗小虎骗到村外,不成想遇见了妖精,惊慌之中罗小虎跑回了村内,剩下小瑶吉凶未卜。"
  107.  
  108.                }
  109.     #以上数组是设置npc的介绍,里面可以换行,如果有英文字母p,则p以后的
  110.     #内容会令起一段。,""=>""
  111.     face=["RW-01","RW-01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01","自定义01",
  112.     "自定义01"]
  113.     #以上是设置npc的头像文件名,在actor文件夹下。可以自己更改
  114.  
  115.  
  116.     face_index=[0,1,1,0,1,2,3,4,4,5,0]
  117.     #以上是设置每个对应头像的文件中具体头像的编号,应为每个头像文件包含
  118.     #8个头像,所以要设置一下。,如果你不想用默认头像,应自己的图像
  119.  
  120.     character=["asura","bandit","captain","hero_m"]
  121.     #设置人物半身像,半身像文件要放在ballters中,文件名填入以上数组
  122.     #注意半身像文件高度不要超过200,宽度不要超过96.
  123.      #注意以上数组中的项数一定要相同,比如上面填写的数组每个都是4项。
  124. #--------------------------------------------------------------------------
  125.   # ●以上这是这个脚本关键按说明填数组中的内容
  126. #--------------------------------------------------------------------------
  127.  
  128.     @face_visible=[]
  129.     @face_index=[]
  130.     @name_visible_array=[]
  131.     @character_visible=[]
  132.     for i in 0..set_name_switches.size-1
  133.       if $game_switches[set_name_switches[i]]==true
  134.          @name_visible_array.push(name_array[i])
  135.          @face_visible.push(face[i])
  136.          @face_index.push(face_index[i])
  137.          @character_visible.push(character[i])
  138.        else
  139.          @name_visible_array.push("未解锁")
  140.          @face_visible.push("")
  141.          @face_index.push(9)
  142.          @character_visible.push("")
  143.        end
  144.      end
  145.      @hand_book.each{|key,value|@hand_book[key]=hand_book_tolines(value)}
  146.   end
  147.  
  148.   def start
  149.     super
  150.     create_title_window
  151.     create_inforcommand_window
  152.   end
  153.  
  154.   def create_title_window
  155.     @title_window=Window_Base.new(0,0,544,50)
  156.     @title_window.draw_text(220,0,150,24,"风物志")
  157.   end
  158.  
  159.   def create_inforcommand_window
  160.     @inforcommand_window=Window_InforCommand.new(0,50,@name_visible_array, @hand_book,@face_visible,@face_index)
  161.     @inforcommand_window.set_handler(:cancel,    method(:return_scene))
  162.     @inforcommand_window.set_character(@character_visible)
  163.   end
  164.   #下面这个函数是脚本关键部分之一,不理解不影响脚本的使用
  165.   #这里说明一下:这个脚本的想法是把每个图鉴的字符串分按字数分为
  166.   #几个数组,每个数组会画成图鉴窗口的一行字符,9个字为一行,
  167.   #所以这个有个问题,即每个图鉴中的文字最好不要超过60个字,否则多余的字会显示
  168.   #不出来。
  169.   def hand_book_tolines(string)
  170.     @inforlines=[]
  171.     inforline=""
  172.     wordCount=0
  173.     lineCount=0
  174.     string.delete!("\n ")
  175.     loop do
  176.       c=string.slice!(/./m)
  177.       if c==nil
  178.         break
  179.       end
  180.       if c!="p"
  181.           if wordCount<MAX_ROW_WORDS
  182.             wordCount+=1
  183.           else
  184.             @inforlines.push(inforline)
  185.             wordCount=1
  186.             inforline=""
  187.           end
  188.             inforline+=c        
  189.       else
  190.           @inforlines.push(inforline)
  191.           wordCount=0
  192.           inforline=""
  193.       end
  194.     end
  195.     @inforlines.push(inforline)
  196.     return @inforlines
  197.   end
  198. end

下面是我弄的游戏 基础系统就差这个没弄好了 我脚本盲,哪位能帮帮我{:2_264:}




点评

我的回答更了个新~  发表于 2013-9-4 11:47

Lv1.梦旅人

梦石
0
星屑
47
在线时间
366 小时
注册时间
2012-10-6
帖子
221
2
发表于 2013-9-4 09:24:49 | 只看该作者
你问了也是没人回答的,因为这个脚本是我写的。但是我这几天找工作,吃饭都成问题,实在是没心情解决这个
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
366 小时
注册时间
2012-10-6
帖子
221
3
发表于 2013-9-4 09:27:39 | 只看该作者
你发的链接我看了,你可以用那个脚本啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
160 小时
注册时间
2010-11-7
帖子
28
4
 楼主| 发表于 2013-9-4 11:04:04 | 只看该作者
{:2_276:}  怪物图鉴那个脚本做这个不太合适(我不会改)

点评

遊戲裡有那些系統卻不會改? 都 用別人腳本/伸手 是沒法進步的  发表于 2013-9-4 11:17
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
362
在线时间
1292 小时
注册时间
2013-1-12
帖子
3590

贵宾

5
发表于 2013-9-4 11:20:48 | 只看该作者
本帖最后由 76213585 于 2013-9-3 20:44 编辑

http://rpg.blue/thread-216707-1-1.html
可以試試看任務腳本
把相對vacab修改就可以了
然後標題就是日志標題
內容就是文章

選項數量改一下改一下就行了(自己想想看吧!)

然後於是改的新手向一点了 (不是只為了你改的说  所以 用詞 選項數量 那些還是得設定)
RUBY 代码复制
  1. =begin
  2. 我自己加了一些幫助新手的说明好了.....
  3. 用法:
  4. 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
  5. 如:前面有事件$game_party.get_task(1,"测试","只是测试")
  6.  
  7. 完成任务:$game_party.finish_task(领取任务时设定的数字)
  8. 如:$game_party.finish_task(1)
  9.  
  10. 召唤任务界面:SceneManager.call(Scene_Task)
  11.  
  12. 然後下面可以設定用詞
  13. =end
  14. module Panda
  15.  
  16.   $UNFIN_TASK = "喵"  #未完成任务的用詞
  17.  
  18.   $FIN_TASK = "喵" #已完成任务的用詞
  19.  
  20.   $CANCEL = "取消" #退出界面的用詞
  21.  
  22.   $TASK_NAME = "任務" #菜單內任務的用詞
  23.  
  24.   $MEUN_ON = true #是否在菜單中顯示  要的話true 不要的話 false
  25. end
  26.  
  27.  
  28. class Task
  29.   attr_reader :desc
  30.   attr_reader :finished
  31.   def initialize(origin_name,desc)
  32.     @origin_name = origin_name
  33.     @desc = desc
  34.     @finished = false
  35.   end
  36.   def name
  37.     if @finished
  38.       return @origin_name + "(完成)"
  39.     else
  40.       return @origin_name
  41.     end
  42.   end
  43.   def finish
  44.     @finished = true
  45.   end
  46.  
  47. end
  48.  
  49. class Game_Party < Game_Unit
  50.   alias old_init initialize
  51.   def initialize
  52.     old_init
  53.     @tasks = {}
  54.   end
  55.   def get_task(i,name,desc)
  56.     @tasks[i]=Task.new(name,desc)
  57.   end
  58.   def have_task?(i)
  59.     @tasks[i] != nil
  60.   end
  61.   def finish_task(i)
  62.     @tasks[i].finish if have_task?(i)
  63.   end
  64.   def unfinished_tasks
  65.     n = []
  66.     for i in @tasks.values
  67.       next if i.finished
  68.       n.push(i)
  69.     end
  70.     return n
  71.   end
  72.   def finished_tasks
  73.     n = []
  74.     for i in @tasks.values
  75.       next unless i.finished
  76.       n.push(i)
  77.     end
  78.     return n
  79.   end
  80. end
  81.  
  82. class Window_Task_Type < Window_HorzCommand
  83.   #--------------------------------------------------------------------------
  84.   # ● オブジェクト初期化
  85.   #--------------------------------------------------------------------------
  86.   def initialize
  87.     super(0, 0)
  88.     activate
  89.   end
  90.   def window_width
  91.     return Graphics.width
  92.   end
  93.   def col_max
  94.     return 3
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● コマンドリストの作成
  98.   #--------------------------------------------------------------------------
  99.   def make_command_list
  100.     add_command($UNFIN_TASK,  :unfinished_task)
  101.     add_command($FIN_TASK, :finished_task)
  102.     add_command($CANCEL, :cancel)
  103.   end
  104. end
  105.  
  106. class Window_TaskLeft < Window_Selectable
  107.   attr_reader :finished
  108.   def initialize
  109.     super(0,48,160,Graphics.height - 48)
  110.     create_contents
  111.     @finished = false
  112.     [url=home.php?mod=space&uid=370741]@Index[/url] = 0
  113.     refresh
  114.     deactivate
  115.   end
  116.   def set_finish(finish)
  117.     @finished = finish
  118.     set_item_max
  119.   end
  120.   def item_max
  121.     return @item_max != nil ? @item_max : 0
  122.   end
  123.   def set_item_max
  124.     if @finished
  125.       @item_max = $game_party.finished_tasks.size
  126.     else
  127.       @item_max = $game_party.unfinished_tasks.size
  128.     end
  129.   end
  130.  
  131.   def refresh
  132.     set_item_max
  133.     super
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● 項目の描画
  137.   #--------------------------------------------------------------------------
  138.   def draw_item(index)
  139.     text = ""
  140.     unless @finished
  141.       if $game_party.unfinished_tasks[index] != nil
  142.         text = $game_party.unfinished_tasks[index].name
  143.       end
  144.     else
  145.       if $game_party.finished_tasks[index] != nil
  146.         text = $game_party.finished_tasks[index].name  
  147.       end
  148.     end
  149.     draw_text(item_rect_for_text(index), text)
  150.   end
  151.  
  152. end
  153.  
  154. class Window_TaskRight < Window_Base
  155.   attr_reader :left_index
  156.   def initialize
  157.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  158.     create_contents
  159.     @left_index = 0
  160.     @finished = false
  161.     refresh
  162.   end
  163.   def set_index(i)
  164.     @left_index = i
  165.     refresh
  166.   end
  167.   def set_finish(i)
  168.     @finished = i
  169.   end
  170.  
  171.   def refresh
  172.     contents.clear
  173.     draw_desc
  174.   end
  175.   def draw_desc
  176.     if @finished
  177.       if $game_party.finished_tasks[@left_index] != nil
  178.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  179.       end
  180.     else
  181.       if $game_party.unfinished_tasks[@left_index] != nil
  182.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  183.       end
  184.     end
  185.   end
  186.  
  187. end
  188.  
  189. class Scene_Task < Scene_Base
  190.   def start
  191.     super
  192.     create_task_type_window
  193.     create_left_window
  194.     create_right_window
  195.   end
  196.   def update
  197.     super
  198.     if @left_window.active
  199.       if Input.trigger?(:B)
  200.         @left_window.deactivate
  201.         @task_type_window.activate
  202.       end
  203.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  204.         @right_window.set_finish(@left_window.finished)
  205.         @right_window.set_index(@left_window.index)
  206.       end
  207.     end
  208.   end
  209.  
  210.   def terminate
  211.     super
  212.   end
  213.   def create_task_type_window
  214.     @task_type_window = Window_Task_Type.new
  215.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  216.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  217.     @task_type_window.set_handler(:cancel,method(:return_scene))
  218.   end
  219.   def create_left_window
  220.     @left_window = Window_TaskLeft.new
  221.     @left_window.set_finish(false)
  222.     @left_window.refresh
  223.   end
  224.   def create_right_window
  225.     @right_window = Window_TaskRight.new
  226.     @right_window.refresh
  227.   end
  228.   def view_unfinished_task
  229.     @left_window.set_finish(false)
  230.     @left_window.refresh
  231.     @left_window.activate
  232.     @task_type_window.deactivate
  233.     @right_window.set_finish(false)
  234.     @right_window.set_index(@left_window.index)
  235.   end
  236.   def view_finished_task
  237.     @left_window.set_finish(true)
  238.     @left_window.refresh
  239.     @left_window.activate
  240.     @task_type_window.deactivate
  241.     @right_window.set_finish(true)
  242.     @right_window.set_index(@left_window.index)
  243.   end
  244.  
  245. end
  246.  
  247.   if $MEUN_ON == true
  248.         class Window_MenuCommand < Window_Command
  249.           alias task_add_main_commands add_main_commands #A
  250.           def add_main_commands
  251.               task_add_main_commands#A
  252.               add_command($TASK_NAME, :task, main_commands_enabled)#B
  253.           end
  254.         end   
  255.         class Scene_Menu < Scene_MenuBase
  256.            alias task_create_command_window create_command_window#C
  257.            def create_command_window
  258.                task_create_command_window  #C
  259.                @command_window.set_handler(:task,     method(:task))#B 跟 後面是 D
  260.            end
  261.            def task #D
  262.                SceneManager.call(Scene_Task)
  263.            end
  264.         end   
  265.     else
  266.   end

点评

这个脚本无法翻页超过一定数量无法显示名字。。。。。。  发表于 2013-9-4 21:03

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-7 16:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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