查看: 1628|回复: 3

[已经解决] 谁能帮忙把这任务脚本改一下

[复制链接]
梦石
0
星屑
250
在线时间
233 小时
注册时间
2013-8-2
回帖
544
发表于 2014-8-1 14:59:11 | 显示全部楼层 |阅读模式

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

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

×
我想要设定领取任务的脚本改成字母A,完成任务脚本就是B

然后召唤任务的时候就不用弄得那么麻烦

。。[pre lang="ruby" line="1"]#==============================================================================02.# ■ 弹性滚动地图 V 1.00 BY SLICK03.#------------------------------------------------------------------------------04.#  处理主角的类。事件启动的判定、以及地图的滚动等功能。05.# 本类的实例请参考 $game_player。06.# 我:。。。这个黄金版已经被改的面目全非了07.#==============================================================================08. 09.class Game_Player < Game_Character10.  MOVESPEA = 0.265625#这数值。。。囧11.  def update_scroll(last_real_x, last_real_y)12.    ax1 = $game_map.adjust_x(last_real_x)13.    ay1 = $game_map.adjust_y(last_real_y)14.    ax2 = $game_map.adjust_x(@real_x)15.    ay2 = $game_map.adjust_y(@real_y)16.    movespeb = (2 ** (@move_speed+1))*MOVESPEA17.    movesped = movespeb / Graphics.width18.    movespec = movespeb / Graphics.height19.    tmp=center_x-ax220.    $game_map.scroll_left(movesped*tmp) if tmp>021.    $game_map.scroll_right(-movesped*tmp) if tmp<022.    tmp=center_y-ay223.    $game_map.scroll_up(movespec*tmp) if tmp>024.    $game_map.scroll_down(-movespec*tmp) if tmp<0    25.  end  26.end#==============================================================================
# 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
# 完成任务:$game_party.finish_task(领取任务时设定的数字)
# 如:前面有事件$game_party.get_task(1,"测试","只是测试")
# 后面完成任务的脚本就是$game_party.finish_task(1)
# 召唤任务界面:SceneManager.call(Scene_Task)
#==============================================================================

class Task
  attr_reader :desc
  attr_reader :finished
  def initialize(origin_name,desc)
    @origin_name = origin_name
    @desc = desc
    @finished = false
  end
  def name
    if @finished
      return @origin_name + "(完成)"
    else
      return @origin_name
    end
  end
  def finish
    @finished = true
  end
   
end

class Game_Party < Game_Unit
  alias old_init initialize
  def initialize
    old_init
    @tasks = {}
  end
  def get_task(i,name,desc)
    @tasks=Task.new(name,desc)
  end
  def have_task?(i)
    @tasks != nil
  end
  def finish_task(i)
    @tasks.finish if have_task?(i)
  end
  def unfinished_tasks
    n = []
    for i in @tasks.values
      next if i.finished
      n.push(i)
    end
    return n
  end
  def finished_tasks
    n = []
    for i in @tasks.values
      next unless i.finished
      n.push(i)
    end
    return n
  end
end

class Window_Task_Type < Window_HorzCommand
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
    activate
  end
  def window_width
    return Graphics.width
  end
  def col_max
    return 3
  end
  #--------------------------------------------------------------------------
  # ● コマンドリストの作成
  #--------------------------------------------------------------------------
  def make_command_list
    add_command("未完成任务",  :unfinished_task)
    add_command("已完成任务", :finished_task)
    add_command("取消", :cancel)
  end
end

class Window_TaskLeft < Window_Selectable
  attr_reader :finished
  def initialize
    super(0,48,160,Graphics.height - 48)
    create_contents
    @finished = false
    @index = 0
    refresh
    deactivate
  end
  def set_finish(finish)
    @finished = finish
    set_item_max
  end
  def item_max
    return @item_max != nil ? @item_max : 0
  end
  def set_item_max
    if @finished
      @item_max = $game_party.finished_tasks.size
    else
      @item_max = $game_party.unfinished_tasks.size
    end
  end

  def refresh
    set_item_max
    super
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    text = ""
    unless @finished
      if $game_party.unfinished_tasks[index] != nil
        text = $game_party.unfinished_tasks[index].name
      end
    else
      if $game_party.finished_tasks[index] != nil
        text = $game_party.finished_tasks[index].name  
      end
    end
    draw_text(item_rect_for_text(index), text)
  end

end

class Window_TaskRight < Window_Base
  attr_reader :left_index
  def initialize
    super(160,48,Graphics.width - 160,Graphics.height - 48)
    create_contents
    @left_index = 0
    @finished = false
    refresh
  end
  def set_index(i)
    @left_index = i
    refresh
  end
  def set_finish(i)
    @finished = i
  end
  
  def refresh
    contents.clear
    draw_desc
  end
  def draw_desc
    if @finished
      if $game_party.finished_tasks[@left_index] != nil
        draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
      end
    else
      if $game_party.unfinished_tasks[@left_index] != nil
        draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
      end
    end
  end
  
end

class Scene_Task < Scene_Base
  def start
    super
    create_task_type_window
    create_left_window
    create_right_window
  end
  def update
    super
    if @left_window.active
      if Input.trigger?(:B)
        @left_window.deactivate
        @task_type_window.activate
      end
      if Input.trigger?(:UP) || Input.trigger?(:DOWN)
        @right_window.set_finish(@left_window.finished)
        @right_window.set_index(@left_window.index)
      end
    end
  end
  
  def terminate
    super
  end
  def create_task_type_window
    @task_type_window = Window_Task_Type.new
    @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
    @task_type_window.set_handler(:finished_task,method(:view_finished_task))
    @task_type_window.set_handler(:cancel,method(:return_scene))
  end
  def create_left_window
    @left_window = Window_TaskLeft.new
    @left_window.set_finish(false)
    @left_window.refresh
  end
  def create_right_window
    @right_window = Window_TaskRight.new
    @right_window.refresh
  end
  def view_unfinished_task
    @left_window.set_finish(false)
    @left_window.refresh
    @left_window.activate
    @task_type_window.deactivate
    @right_window.set_finish(false)
    @right_window.set_index(@left_window.index)
  end
  def view_finished_task
    @left_window.set_finish(true)
    @left_window.refresh
    @left_window.activate
    @task_type_window.deactivate
    @right_window.set_finish(true)
    @right_window.set_index(@left_window.index)
  end
  
end[/pre]

点评

啥?没看懂...  发表于 2014-8-1 15:01
我忘了,我要怎么遗忘。
梦石
0
星屑
250
在线时间
233 小时
注册时间
2013-8-2
回帖
544
 楼主| 发表于 2014-8-1 15:11:26 | 显示全部楼层
就是这一段的指令对应的地方,领取任务不是要调$game什么的吗?把那个$game什么的改成大写a
完成任务不是那个$game什么的吗。。把它改成大写b
然后调任务的时候就不用总是输入那一串长长的$game什么的了。。
洋文不好的人好悲哀{:2_272:}
  1. # 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
  2. # 完成任务:$game_party.finish_task(领取任务时设定的数字)
  3. # 如:前面有事件$game_party.get_task(1,"测试","只是测试")
  4. # 后面完成任务的脚本就是$game_party.finish_task(1)
  5. # 召唤任务界面:SceneManager.call(Scene_Task)
复制代码

点评

。。。我的游戏都是任务主线的,这样的话好麻烦的  发表于 2014-8-1 15:24
別這樣懶啦!!!  发表于 2014-8-1 15:17
我忘了,我要怎么遗忘。
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10450
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-8-1 15:16:28 | 显示全部楼层
本帖最后由 VIPArcher 于 2014-8-1 15:38 编辑
千夙 发表于 2014-8-1 15:11
就是这一段的指令对应的地方,领取任务不是要调$game什么的吗?把那个$game什么的改成大写a
完成任务不是那 ...
  1. class Game_Interpreter
  2.   #领取任务:A(任意数字,任务名称,任务描述)
  3.   def A(i,name,desc)
  4.     $game_party.get_task(i,name,desc)
  5.   end
  6.   #完成任务:B(领取任务时设定的数字)
  7.   def B(i)
  8.     $game_party.finish_task(i)
  9.   end
  10.   #召唤界面 c (小写)
  11.   def c
  12.     SceneManager.call(Scene_Task)
  13.   end
  14. end
复制代码

点评

呃呃,好吧算了,我也不能那么懒a  发表于 2014-8-1 15:43
真是大胆的要求。→,→  发表于 2014-8-1 15:42
有一个大胆的要求。。。。可不可以帮我把引号也去了。。。。。。。  发表于 2014-8-1 15:41
我知道为什么不行了,我少了引号  发表于 2014-8-1 15:38
恩,不行。。  发表于 2014-8-1 15:30

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 楼主真作死

查看全部评分

回复

使用道具 举报

梦石
0
星屑
250
在线时间
233 小时
注册时间
2013-8-2
回帖
544
 楼主| 发表于 2014-8-1 15:29:36 | 显示全部楼层
有问题,,@VIPArcher
QQ图片20140801152857.jpg
我忘了,我要怎么遗忘。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部