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

Project1

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

[已经解决] 关于简单任务系统文字被压缩的问题!

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7431
在线时间
1096 小时
注册时间
2006-7-18
帖子
569
跳转到指定楼层
1
发表于 2015-7-6 12:59:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 雷影 于 2015-7-6 18:36 编辑

就是图书管里的脚本
使用$game_party.get_task(r任务数字,任务名称,任务描述)方式接任务的脚本!
文字过长就被自动压缩了!在哪个地方改可以增加显示字数问题啊?
记得和显示名字的问题一样,加长显示的区域的长度就可以做到,虽然这样会出现文字显示到框外!
不过自己控制文字的长度在框里就行了!补:附上代码

RUBY 代码复制
  1. class Task
  2.   attr_reader :desc
  3.   attr_reader :finished
  4.   def initialize(origin_name,desc)
  5.     @origin_name = origin_name
  6.     @desc = desc
  7.     @finished = false
  8.   end
  9.   def name
  10.     if @finished
  11.       return @origin_name + "(完成)"
  12.     else
  13.       return @origin_name
  14.     end
  15.   end
  16.   def finish
  17.     @finished = true
  18.   end
  19.  
  20. end
  21.  
  22. class Game_Party < Game_Unit
  23.   alias old_init initialize
  24.   def initialize
  25.     old_init
  26.     @tasks = {}
  27.   end
  28.   def get_task(i,name,desc)
  29.     @tasks[i]=Task.new(name,desc)
  30.   end
  31.   def have_task?(i)
  32.     @tasks[i] != nil
  33.   end
  34.   def finish_task(i)
  35.     @tasks[i].finish if have_task?(i)
  36.   end
  37.   def unfinished_tasks
  38.     n = []
  39.     for i in @tasks.values
  40.       next if i.finished
  41.       n.push(i)
  42.     end
  43.     return n
  44.   end
  45.   def finished_tasks
  46.     n = []
  47.     for i in @tasks.values
  48.       next unless i.finished
  49.       n.push(i)
  50.     end
  51.     return n
  52.   end
  53. end
  54.  
  55. class Window_Task_Type < Window_HorzCommand
  56.   #--------------------------------------------------------------------------
  57.   # ● オブジェクト初期化
  58.   #--------------------------------------------------------------------------
  59.   def initialize
  60.     super(0, 0)
  61.     activate
  62.   end
  63.   def window_width
  64.     return Graphics.width
  65.   end
  66.   def col_max
  67.     return 3
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● コマンドリストの作成
  71.   #--------------------------------------------------------------------------
  72.   def make_command_list
  73.     add_command("未完成任务",  :unfinished_task)
  74.     add_command("已完成任务", :finished_task)
  75.     add_command("取消", :cancel)
  76.   end
  77. end
  78.  
  79. class Window_TaskLeft < Window_Selectable
  80.   attr_reader :finished
  81.   def initialize
  82.     super(0,48,160,Graphics.height - 48)
  83.     create_contents
  84.     @finished = false
  85.     @index = 0
  86.     refresh
  87.     deactivate
  88.   end
  89.   def set_finish(finish)
  90.     @finished = finish
  91.     set_item_max
  92.   end
  93.   def item_max
  94.     return @item_max != nil ? @item_max : 0
  95.   end
  96.   def set_item_max
  97.     if @finished
  98.       @item_max = $game_party.finished_tasks.size
  99.     else
  100.       @item_max = $game_party.unfinished_tasks.size
  101.     end
  102.   end
  103.  
  104.   def refresh
  105.     set_item_max
  106.     super
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 項目の描画
  110.   #--------------------------------------------------------------------------
  111.   def draw_item(index)
  112.     text = ""
  113.     unless @finished
  114.       if $game_party.unfinished_tasks[index] != nil
  115.         text = $game_party.unfinished_tasks[index].name
  116.       end
  117.     else
  118.       if $game_party.finished_tasks[index] != nil
  119.         text = $game_party.finished_tasks[index].name  
  120.       end
  121.     end
  122.     draw_text(item_rect_for_text(index), text)
  123.   end
  124.  
  125. end
  126.  
  127. class Window_TaskRight < Window_Base
  128.   attr_reader :left_index
  129.   def initialize
  130.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  131.     create_contents
  132.     @left_index = 0
  133.     @finished = false
  134.     refresh
  135.   end
  136.   def set_index(i)
  137.     @left_index = i
  138.     refresh
  139.   end
  140.   def set_finish(i)
  141.     @finished = i
  142.   end
  143.  
  144.   def refresh
  145.     contents.clear
  146.     draw_desc
  147.   end
  148.   def draw_desc
  149.     if @finished
  150.       if $game_party.finished_tasks[@left_index] != nil
  151.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  152.       end
  153.     else
  154.       if $game_party.unfinished_tasks[@left_index] != nil
  155.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  156.       end
  157.     end
  158.   end
  159.  
  160. end
  161.  
  162. class Scene_Task < Scene_Base
  163.   def start
  164.     super
  165.     create_task_type_window
  166.     create_left_window
  167.     create_right_window
  168.   end
  169.   def update
  170.     super
  171.     if @left_window.active
  172.       if Input.trigger?(:B)
  173.         @left_window.deactivate
  174.         @task_type_window.activate
  175.       end
  176.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  177.         @right_window.set_finish(@left_window.finished)
  178.         @right_window.set_index(@left_window.index)
  179.       end
  180.     end
  181.   end
  182.  
  183.   def terminate
  184.     super
  185.   end
  186.   def create_task_type_window
  187.     @task_type_window = Window_Task_Type.new
  188.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  189.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  190.     @task_type_window.set_handler(:cancel,method(:return_scene))
  191.   end
  192.   def create_left_window
  193.     @left_window = Window_TaskLeft.new
  194.     @left_window.set_finish(false)
  195.     @left_window.refresh
  196.   end
  197.   def create_right_window
  198.     @right_window = Window_TaskRight.new
  199.     @right_window.refresh
  200.   end
  201.   def view_unfinished_task
  202.     @left_window.set_finish(false)
  203.     @left_window.refresh
  204.     @left_window.activate
  205.     @task_type_window.deactivate
  206.     @right_window.set_finish(false)
  207.     @right_window.set_index(@left_window.index)
  208.   end
  209.   def view_finished_task
  210.     @left_window.set_finish(true)
  211.     @left_window.refresh
  212.     @left_window.activate
  213.     @task_type_window.deactivate
  214.     @right_window.set_finish(true)
  215.     @right_window.set_index(@left_window.index)
  216.   end
  217.  
  218. end

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-7-6 13:36:49 | 只看该作者
把 draw_text 的那个 width 参数增加就可以了
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7431
在线时间
1096 小时
注册时间
2006-7-18
帖子
569
3
 楼主| 发表于 2015-7-6 18:33:36 | 只看该作者
taroxd 发表于 2015-7-6 13:36
把 draw_text 的那个 width 参数增加就可以了

不行呢!找到了draw_text的部分,有3个部分,没有width……自己添加的话就出错了!
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21621
在线时间
9413 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
发表于 2015-7-6 19:33:38 | 只看该作者
雷影 发表于 2015-7-6 18:33
不行呢!找到了draw_text的部分,有3个部分,没有width……自己添加的话就出错了! ...

未测试:
找到 : draw_text(item_rect_for_text(index), text) 这句,改成
  1. m5150575rect = item_rect_for_text(index)
  2. m5150575rect.width += 100
  3. draw_text(m5150575rect, text)
复制代码

点评

谢谢!另外能不能控制字体的大小!只是任务名称的文字!自己改不知怎么的连任务说明的文字也一起变小了!  发表于 2015-7-7 00:06

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 m0

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7431
在线时间
1096 小时
注册时间
2006-7-18
帖子
569
5
 楼主| 发表于 2015-7-6 20:06:19 | 只看该作者

成了!谢谢!目前没发现其他问题!
剩下的就是字体大小和字数的控制了!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 01:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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