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

Project1

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

[已经过期] 脚本问题(2个问题)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
39
在线时间
115 小时
注册时间
2012-1-23
帖子
103
跳转到指定楼层
1
发表于 2012-4-8 08:43:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 iisnow 于 2012-4-8 10:22 编辑

1.
  1. #==============================================================================
  2. # ■  WndProc
  3. #==============================================================================

  4. module WndProc

  5.   Graphics.resize_screen(554, 416)
  6.   #  Graphics.frame_rate = 120
  7.   #--------------------------------------------------------------------------
  8.   # ● 常量
  9.   #--------------------------------------------------------------------------
  10.   Enter = 0x0D
  11.   Alt = 0x12
  12.   F1  = 0x70
  13.   F2  = 0x71
  14.   F4  = 0x73
  15.   F12 = 0x7B

  16.   KeyCode = [
  17. #    Enter,
  18. #    Alt,
  19. #    F2,
  20. #    F1,
  21. #    F12
  22.   ]

  23.   @@FindWindowEx = Win32API.new("user32","FindWindowEx","llpp","l")
  24.   @@ShowWindow   = Win32API.new("user32", "ShowWindow", "li", "i")
  25.   @@FindWindow   = Win32API.new("user32", "FindWindow", "pp", "l")

  26.   @@ReSetProc    = Win32API.new("WndProc", "ReSetProc", "l", "l")
  27.   @@SetDLL       = Win32API.new("WndProc", "SetDLL", "p", "v")
  28.   @@OldProc      = Win32API.new("WndProc", "OldProc", "llll", "l")
  29.   @@UseRMWndProc = Win32API.new("WndProc", "UseRMWndProc", "", "v")

  30.   @@GetPriProStr = Win32API.new("kernel32", "GetPrivateProfileString", "pppplp", "l")
  31.   @@SendMessage  = Win32API.new("user32", "SendMessage", "llll", "l")

  32.   @@Start        = Win32API.new("RGSSEx1", "Start",   'V', 'L')
  33.   @@Stop         = Win32API.new("RGSSEx1", "Stop",    'V', 'L')
  34.   @@OnFocus      = Win32API.new("RGSSEx1", "OnFocus", 'V', 'L')

  35.   WM_PAINT                      = 0x000f
  36.   WM_HELP                       = 0x0053
  37.   WM_CLOSE                      = 0x0010
  38.   WM_CHAR                       = 0x0102
  39.   WM_ACTIVATEAPP                = 0x001C
  40.   WM_WINDOWPOSCHANGED           = 0x0047
  41.   WM_SETCURSOR                  = 0x0020
  42.   WM_COMMAND                    = 0x0111
  43.   WM_SYSCOMMAND                 = 0x0112

  44.   # 是否初始化过
  45.   @@inid ||= false
  46.   # 函数
  47.   module_function
  48.   #--------------------------------------------------------------------------
  49.   # ● 初始化
  50.   #--------------------------------------------------------------------------
  51.   def init
  52.     return if @@inid      # 防止重复
  53.     @@inid = true
  54.     self.re_set_proc      # 重置窗口过程
  55.     @@reg_back_proc = {}  # 注册的消息响应
  56.   end
  57.   #-------------------------------------------------------------------------
  58.   # ● 注册消息响应
  59.   #--------------------------------------------------------------------------
  60.   def reg_back_msg(message, proc)
  61.     @@reg_back_proc[message] ||= []
  62.     @@reg_back_proc[message] << proc
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 注销消息响应
  66.   #--------------------------------------------------------------------------
  67.   def unreg_back_msg(message, proc)
  68.     @@reg_back_proc[message] ||= []
  69.     @@reg_back_proc[message].delete(proc)
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 窗口句柄
  73.   #--------------------------------------------------------------------------
  74.   def launcher_hwnd
  75.     hwnd = @@FindWindowEx.call(0, 0, nil, "6R_City_Launcher".u2s)
  76.     return hwnd
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 窗口句柄
  80.   #--------------------------------------------------------------------------
  81.   def hwnd
  82.     buffer = "\000"*256
  83.     @@GetPriProStr.call("Game", "Title", "", buffer, 256, "./Game.ini")
  84.     buffer.delete!("\000")
  85.     hwnd = @@FindWindow.call("RGSS Player", buffer)
  86.     return hwnd
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 设置连接库
  90.   #--------------------------------------------------------------------------
  91.   def set_dll
  92.     libname = "\000" * 256
  93.     @@GetPriProStr.call("Game", "Library", "", buffer, 256, "./Game.ini")
  94.     libname.delete!("\000")
  95.     @@SetDLL.call(libname)
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 重置
  99.   #--------------------------------------------------------------------------
  100.   def re_set_proc
  101.     @@ReSetProc.call(self.hwnd)
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 新的回调函数
  105.   #--------------------------------------------------------------------------
  106.   def proc(hwnd, message, wParam, lParam)
  107.     # 处理消息
  108.     case message
  109.     when WM_CLOSE           
  110.       use_rm_proc
  111.     when WM_CHAR
  112.       use_rm_proc
  113.     when WM_ACTIVATEAPP
  114.       use_rm_proc
  115.     when WM_WINDOWPOSCHANGED
  116.       use_rm_proc
  117.     when WM_COMMAND     
  118.       use_rm_proc
  119.     when WM_SYSCOMMAND
  120.       use_rm_proc
  121.     when WM_PAINT
  122.       #ShowCursor.call(0)
  123.     when WM_HELP
  124.       #ShowCursor.call(1)
  125.     end
  126.     unless @@reg_back_proc[message].nil?
  127.       @@reg_back_proc[message].each do |back_proc|
  128.         back_proc.call(hwnd, message, wParam, lParam)
  129.       end
  130.     end
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 本消息调用RM的过程
  134.   #--------------------------------------------------------------------------
  135.   def use_rm_proc
  136.     @@UseRMWndProc.call()
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 关闭启动程序
  140.   #--------------------------------------------------------------------------
  141.   def close_launcher
  142.     exit if self.launcher_hwnd == 0
  143.     @@SendMessage.call(self.launcher_hwnd, WM_CLOSE, 0, 0)
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 显示游戏窗口
  147.   #--------------------------------------------------------------------------
  148.   def show_window
  149.     @@ShowWindow.call(self.hwnd, 5)
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 开始后台运行
  153.   #--------------------------------------------------------------------------
  154.   def start_bg
  155.     @@Start.call
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 停止后台运行
  159.   #--------------------------------------------------------------------------
  160.   def stop_bg
  161.     @@Stop.call
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 设置焦点
  165.   #--------------------------------------------------------------------------
  166.   def bg_on_focus
  167.     @@OnFocus.call
  168.   end
  169. end

  170. begin
  171.   WndProc.close_launcher
  172.   WndProc.show_window
  173.   WndProc.start_bg
  174. #~ #  WndProc.init
  175. rescue
  176.   p $!
  177. end

  178. module Input
  179.   InputUpdate  = method :update
  180.   InputTrigger = method :trigger?
  181.   InputPress   = method :press?
  182.   InputRepeat  = method :repeat?
  183.   InputDir4    = method :dir4
  184.   InputDir8    = method :dir8
  185.   def self.update
  186.     InputUpdate.call if WndProc.bg_on_focus != 0
  187.   end
  188.   def self.trigger?(num)
  189.     return WndProc.bg_on_focus != 0 ? InputTrigger.call(num) : false
  190.   end
  191.   def self.press?(num)
  192.     return WndProc.bg_on_focus != 0 ? InputPress.call(num) : false
  193.   end
  194.   def self.repeat?(num)
  195.     return WndProc.bg_on_focus != 0 ? InputRepeat.call(num) : false
  196.   end
  197.   def self.dir4
  198.     return WndProc.bg_on_focus != 0 ? InputDir4.call : 0
  199.   end
  200.   def self.dir8
  201.     return WndProc.bg_on_focus != 0 ? InputDir8.call : 0
  202.   end
  203. end

  204. #==============================================================================
  205. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  206. #==============================================================================
复制代码
怎样后台运行?
2.
  1. =begin
  2. --------------------------------------------------------------------------
  3. 详尽任务显示界面 v2.1
  4. --------------------------------------------------------------------------
  5. By 叶子

  6. 日期与更新
  7. 3-29-2006 -v1.0
  8. 4-3-2006  -v2.0
  9. -可以改变文字颜色,显示变量,显示图标,显示图片
  10. -大幅简化了编写任务内容的过程,加入自动换行功能
  11. -精简了窗口,使其还可以用作图鉴系统、日记系统等等
  12. 4-6-2006  -v2.1
  13. -增加了获得全部任务与删除全部任务命令
  14. -改正通假字,修改了示例任务3
  15. --------------------------------------------------------------------------
  16. 改版 by snstar2006

  17. 修改部分:
  18. - 将XP的一些脚本改成VX版的
  19. - 将窗口大小缩放成VX的大小(依照比例)
  20. - 将一些会变成很长的脚本精简
  21.    (如:用$game_pary.item_no(物品编号)
  22.         代替原来的$game_party.item_number($data_items[物品编号]) = ="好长)
  23. - 精简一些代码,将 Window_Task_Name 和Window_Task 重合部分用继承方式精简
  24. - 依照VX的 RGSS2 规范编写 Scene_Task
  25. - 增加使用16进位颜色代码变换字体颜色功能
  26. - 修改Scene_Menu的召唤方式,使脚本新手使用起来更容易

  27. --------------------------------------------------------------------------
  28. 顾名思义,就是显示任务数据的界面
  29. 任务数据要预先在这里设定好
  30. 下载范例工程,能帮助你更快更好地掌握使用方法
  31. --------------------------------------------------------------------------
  32. 使用方法:

  33. 1、召唤任务显示界面:$scene = Scene_Task.new

  34. 可以在事件中的「脚本」指令加入这段东西,
  35. 又或者修改 Scene_Menu 来增加一个显示任务的选项。
  36. 如果是修改 Scene_Menu 增加選項的話,请使用

  37.     $scene = Scene_Task.new(任务在菜单的index)

  38. 例如:$scene = Scene_Task.new(7)

  39. 2、设置任务数据

  40.   2.1、相关内容解析
  41.   
  42.   所有内容文字必须用双引号括住
  43.   
  44.   名称:任务的名字(显示在左边窗口中),大小为172×32,如果全部为文字的话,
  45.         够放九个全角字符
  46.         
  47.   简介:任务的介绍(显示在右边窗口中),宽308,高不限
  48.   
  49.         文字可以自动换行
  50.   
  51.    2.1.1、控制码解析
  52.    
  53.    名称和内容均可用控制码,注意两条反斜杠都要打!
  54.    
  55.    \\v[n] 显示n号变量
  56.    \\c[n] 改变字体颜色。n 为窗口外观图片中所设定的颜色,可为0-31

  57.    \\c[HRRGGBB]设定字体颜色为RRGGBB色, RRGGBB 为16进位颜色代码
  58.    \\n[i] 显示i号角色名字
  59.    \\i[图标编号] 显示图标    # 图标编号为图标在IconSet里的顺序
  60.    \\p[文件名] 显示图片
  61.    
  62.    2.1.2、高级:内嵌表达式
  63.         
  64.    请参考帮助-脚本入门-字符串-内嵌表达式相关内容。
  65.    它可以用来在任务的名称和简介那里显示变量。
  66.    常用的表达式(注意不要漏了井号和大括号):
  67.    #{$game_variables[n]}       ——插入n号变量的值
  68.    #{$game_party.item_no(n)}  —— 插入持有n号物品数量
  69.                                   同理还有 weapon_no,armor_no

  70.    还可以预先定义一个变量,再插入(例子见示例任务3-灵魂线)
  71.    
  72.   2.2、注意事项
  73.   
  74.    2.2.1、括号、逗号和双引号 [ ] , " 必须使用半角符号(英文输入),
  75.           引号内的内容则没有关系
  76.          
  77.    2.2.2、单引号 ' 和双引号 " 的区别:
  78.           为了不出错误,全部用双引号吧!当然如果你对Ruby很熟悉,那就没所谓了
  79.   
  80.   2.3、开始设置吧!
  81.   从107行开始设置任务数据,可以参考示例任务来设置,请仔细阅读附加讲解
  82.   
  83. 3、接受任务

  84. 事件里的「脚本」指令输入:get_task(任务ID)
  85. 例如 get_task(1) 就是接受1号任务

  86.   3.1、获得全部任务
  87.   
  88.   事件里的「脚本」指令输入:get_all_task
  89.   这个功能基本上是用来在编写好所有任务数据后测试排版的
  90.   

  91. 4、完成/删除任务

  92. 事件里的「脚本」指令输入:finish_task(任务ID)
  93. 例如 finish_task(1) 就是完成1号任务

  94. 注意:本脚本不负责完成任务后的奖励之类的东西,请自行在事件中判断,
  95.        这里的完成任务指的是从任务列表中删去此任务

  96.   4.1、删除全部任务
  97.   
  98.   事件里的「脚本」指令输入:finish_all_task
  99.   作为获得全部任务的对应功能存在,似乎不会怎么用到
  100. =end

  101. class Scene_Task
  102.   # 这里设置任务内容翻页音效
  103.   CHANGE_PAGE_SE = "Audio/SE/046-Book01"
  104. end

  105. class Game_Party
  106.   #--------------------------------------------------------------------------
  107.   # ● 设置任务资料
  108.   #--------------------------------------------------------------------------
  109.   def get_tasks_info
  110.     @tasks_info = []

  111.     名称 = "\\c[6]逃"

  112.     简介 = "\\c[6]快跑

  113.     任务目标:

  114. \\c[9]别管那么多了,快逃吧!'


  115.   end
  116. end
  117. #==============================================================================
  118. # ■ Interpreter
  119. #------------------------------------------------------------------------------
  120. #  执行事件命令的解释器。本类在 Game_System 类
  121. # 与 Game_Event 类的内部使用。
  122. #==============================================================================

  123. class Game_Interpreter
  124.   #--------------------------------------------------------------------------
  125.   # ● 接受任务
  126.   #--------------------------------------------------------------------------
  127.   def get_task(id)
  128.     task = $game_party.tasks_info[id]
  129.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))
  130.     $game_party.current_tasks.unshift(task.id)
  131.     return true
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 获得全部任务
  135.   #--------------------------------------------------------------------------
  136.   def get_all_task
  137.     # 清空当前任务
  138.     $game_party.current_tasks.clear
  139.     for task in $game_party.tasks_info
  140.       next if task.nil?
  141.       $game_party.current_tasks.unshift(task.id)
  142.     end
  143.     return true
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 完成/放弃任务
  147.   #--------------------------------------------------------------------------
  148.   def finish_task(id)
  149.     task = $game_party.tasks_info[id]
  150.     return true if task.nil?
  151.     $game_party.current_tasks.delete(task.id)
  152.     return true
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 删除全部任务
  156.   #--------------------------------------------------------------------------
  157.   def finish_all_task
  158.     $game_party.current_tasks.clear
  159.     return true
  160.   end
  161. end

  162. #==============================================================================
  163. # ■ Game_Party
  164. #------------------------------------------------------------------------------
  165. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  166. # 请参考 $game_party。
  167. #==============================================================================

  168. class Game_Party
  169.   #--------------------------------------------------------------------------
  170.   # ● 定义实例变量
  171.   #--------------------------------------------------------------------------
  172.   attr_writer     :latest_task                  # 上次查看的任务
  173.   #--------------------------------------------------------------------------
  174.   # ● 取得任务资料
  175.   #--------------------------------------------------------------------------
  176.   def tasks_info
  177.     if @tasks_info.nil?
  178.       get_tasks_info
  179.     end
  180.     return @tasks_info
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● 取得当前任务
  184.   #--------------------------------------------------------------------------
  185.   def current_tasks
  186.     if @current_tasks.nil?
  187.       @current_tasks = []
  188.     end
  189.     return @current_tasks
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● 上次查看的任务
  193.   #--------------------------------------------------------------------------
  194.   def latest_task
  195.     if !current_tasks.include?(@latest_task)
  196.       @latest_task = current_tasks[0]
  197.     end
  198.     return @latest_task
  199.   end
  200. end

  201. #==============================================================================
  202. # ■ Game_Task
  203. #------------------------------------------------------------------------------
  204. #  处理任务的类。包含任务的信息。
  205. #==============================================================================

  206. class Game_Task
  207.   attr_accessor   :name                   # 名称
  208.   attr_accessor   :briefing               # 简介
  209.   def initialize(name, briefing)
  210.     @name = name
  211.     @briefing = briefing
  212.   end
  213.   def height
  214.     text = @briefing.clone
  215.     x = 0
  216.     y = 64
  217.     min_y = 0
  218.     # 限制文字处理
  219.     begin
  220.       last_text = text.clone
  221.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  222.     end until text == last_text
  223.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  224.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  225.     end
  226.     # 为了方便、将 "\\\\" 变换为 "\000"
  227.     text.gsub!(/\\\\/) { "\000" }
  228.     # "\C" 变为 "\001"
  229.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  230.     # "\I" 变为 "\002"
  231.     text.gsub!(/\\[Ii]/) { "\002" }
  232.     # "\P" 变为 "\003"
  233.     text.gsub!(/\\[Pp]/) { "\003" }
  234.     # c 获取 1 个字 (如果不能取得文字就循环)
  235.     while ((c = text.slice!(/./m)) != nil)
  236.       # \\ 的情况下
  237.       if c == "\000"
  238.         # 还原为本来的文字
  239.         c = "\\"
  240.       end
  241.       # \C[n] 的情况下
  242.       if c == "\001"
  243.         # 更改文字色
  244.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  245.         # 下面的文字
  246.         next
  247.       end
  248.       # 图标的情况下
  249.       if c == "\002"
  250.         icon_name = ''
  251.         while ((cha = text.slice!(/./m)) != ']')
  252.           next if cha == '['
  253.           icon_name += cha
  254.         end
  255.         if x + 24 > 368
  256.           x = 0
  257.           y += [24, min_y].max
  258.           min_y = 0
  259.         end
  260.         x += 28
  261.         next
  262.       end
  263.       # 图片的情况下
  264.       if c == "\003"
  265.         pic_name = ''
  266.         while ((cha = text.slice!(/./m)) != ']')
  267.           next if cha == '['
  268.           pic_name += cha
  269.         end
  270.         pic = Cache.picture(pic_name)
  271.         if x + pic.width > 368
  272.           x = 0
  273.           y += [24, min_y].max
  274.           min_y = 0
  275.         end
  276.         x += pic.width
  277.         min_y = [pic.height, 24].max
  278.         next
  279.       end
  280.       # 另起一行文字的情况下
  281.       if c == "\n"
  282.         y += [24, min_y].max
  283.         min_y = 0
  284.         x = 0
  285.         # 下面的文字
  286.         next
  287.       end
  288.       # 自动换行处理
  289.       if x + 22 > 368
  290.         y += [24, min_y].max
  291.         min_y = 0
  292.         x = 0
  293.       end
  294.       # x 为要描绘文字的加法运算
  295.       x += 22
  296.     end
  297.     return (y + [24, min_y].max)
  298.   end
  299.   def id
  300.     return $game_party.tasks_info.index(self)
  301.   end
  302. end

  303. #==============================================================================
  304. # ■ Window_Task_Name
  305. #------------------------------------------------------------------------------
  306. #  任务名称显示窗口。
  307. #==============================================================================

  308. class Window_Task_Name < Window_Selectable
  309.   #--------------------------------------------------------------------------
  310.   # ● 初始化对像
  311.   #--------------------------------------------------------------------------
  312.   def initialize(tasks)
  313.     super(0, 0, 204, 416)
  314.     @tasks = []
  315.     for id in tasks
  316.       @tasks.push($game_party.tasks_info[id])
  317.     end
  318.     @item_max = tasks.size
  319.     self.contents = Bitmap.new(
  320.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
  321.     refresh
  322.     self.index = 0
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● 刷新
  326.   #--------------------------------------------------------------------------
  327.   def refresh
  328.     self.contents.clear
  329.     if @tasks != []
  330.       for task in @tasks
  331.         draw_item(task)
  332.       end
  333.     else
  334.       draw_blank
  335.     end
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ● 描绘项目
  339.   #--------------------------------------------------------------------------
  340.   def draw_item(task)
  341.     text = task.name.clone
  342.     y = @tasks.index(task) * WLH
  343.     chenge_special_character(text, 0, y)
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ● 描绘空行
  347.   #--------------------------------------------------------------------------
  348.   def draw_blank
  349.     self.contents.font.color = Color.new(255, 255, 255, 128)
  350.     rect = Rect.new(4, 0, self.contents.width - 8, 32)
  351.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  352.     self.contents.draw_text(rect, '当前没有任何任务')
  353.   end
  354.   #--------------------------------------------------------------------------
  355.   # ● 获取任务
  356.   #--------------------------------------------------------------------------
  357.   def task
  358.     return @tasks[self.index]
  359.   end
  360. end
  361.   
  362. #==============================================================================
  363. # ■ Window_Task
  364. #------------------------------------------------------------------------------
  365. #  任务内容显示窗口。
  366. #==============================================================================

  367. class Window_Task < Window_Base
  368.   #--------------------------------------------------------------------------
  369.   # ● 初始化对像
  370.   #--------------------------------------------------------------------------
  371.   def initialize(task_id)
  372.     super(204, 0, 340, 416)
  373.     refresh(task_id)
  374.   end
  375.   #--------------------------------------------------------------------------
  376.   # ● 刷新内容
  377.   #--------------------------------------------------------------------------
  378.   def refresh(task_id)
  379.     self.oy = 0
  380.     self.visible = true
  381.     return if task_id.nil?
  382.     task = $game_party.tasks_info[task_id]
  383.     if !task.nil?
  384.       self.contents = Bitmap.new(self.width - 32, task.height)
  385.     else
  386.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  387.       return
  388.     end
  389.     self.contents.font.color = normal_color
  390.     # 描绘任务内容
  391.     draw_task_info(task)
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ● 描绘任务内容
  395.   #--------------------------------------------------------------------------
  396.   def draw_task_info(task)
  397.     self.contents.font.color = normal_color
  398.     # 描绘任务简介
  399.     chenge_special_character(task.briefing.clone)
  400.   end
  401. end

  402. class Window_Base < Window
  403.   def chenge_special_character(text, x=0, y=0)
  404.     # 记录换行时y坐标最小加值
  405.     min_y = 0
  406.     # 限制文字处理
  407.     begin
  408.       last_text = text.clone
  409.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  410.     end until text == last_text
  411.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  412.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  413.     end
  414.     # 为了方便、将 "\\\\" 变换为 "\000"
  415.     text.gsub!(/\\\\/) { "\000" }
  416.     # "\C" 变为 "\001"
  417.     text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/)  { "\001[#{$1}]" }
  418.     # "\I" 变为 "\002"
  419.     text.gsub!(/\\[Ii]/) { "\002" }
  420.     # "\P" 变为 "\003"
  421.     text.gsub!(/\\[Pp]/) { "\003" }
  422.     # c 获取 1 个字 (如果不能取得文字就循环)
  423.     while ((c = text.slice!(/./m)) != nil)
  424.       # \\ 的情况下
  425.       if c == "\000"
  426.         # 还原为本来的文字
  427.         c = "\\"
  428.       end
  429.       # \C[n] 的情況下
  430.       if c == "\001"
  431.         # 更改文字色
  432.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  433.         # 如果是设定RGB颜色
  434.         if $1[0,1]=="H"
  435.           # 先拷贝一下文字
  436.           c=$1.dup
  437.           # 分3段分别取出R,G,B颜色
  438.           c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
  439.           # 设定文字颜色
  440.           self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
  441.         else
  442.           color = $1.to_i
  443.           if color >= 0 and color <= 31
  444.             self.contents.font.color = text_color(color)
  445.           elsif color == 32
  446.             self.contents.font.color = disabled_color
  447.           elsif color == 33
  448.             self.contents.font.color = system_color
  449.           end
  450.         end
  451.         # 下面的文字
  452.         next
  453.       end
  454.       # 图标的情况下
  455.       if c == "\002"
  456.         icon_name = ''
  457.         while ((cha = text.slice!(/./m)) != ']')
  458.           next if cha == '['
  459.           icon_name += cha
  460.         end
  461.         if x + 24 > self.contents.width
  462.           x = 0
  463.           y += [WLH, min_y].max
  464.           min_y = 0
  465.         end
  466.         draw_icon(icon_name.to_i, x+4, y+4, true)
  467.         x += 28
  468.         next
  469.       end
  470.       # 图片的情况下
  471.       if c == "\003"
  472.         pic_name = ''
  473.         while ((cha = text.slice!(/./m)) != ']')
  474.           next if cha == '['
  475.           pic_name += cha
  476.         end
  477.         pic = Cache.picture(pic_name)
  478.         if x + pic.width > self.contents.width
  479.           x = 0
  480.           y += [WLH, min_y].max
  481.           min_y = 0
  482.         end
  483.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  484.         x += pic.width
  485.         min_y = [pic.height, WLH].max
  486.         next
  487.       end
  488.       # 另起一行文字的情况下
  489.       if c == "\n"
  490.         y += [WLH, min_y].max
  491.         min_y = 0
  492.         x = 0
  493.         # 下面的文字
  494.         next
  495.       end
  496.       # 自动换行处理
  497.       if x + self.contents.text_size(c).width > self.contents.width
  498.         y += [WLH, min_y].max
  499.         min_y = 0
  500.         x = 0
  501.       end
  502.       # 描绘文字
  503.       self.contents.draw_text(4 + x, y, 40, WLH, c)
  504.       # x 为要描绘文字的加法运算
  505.       x += self.contents.text_size(c).width
  506.     end
  507.   end
  508. end

  509. class Game_Party < Game_Unit
  510.   def item_no(n)
  511.     return item_number($data_items[n])
  512.   end
  513.   def weapon_no(n)
  514.     return item_number($data_weapons[n])
  515.   end
  516.   def armor_no(n)
  517.     return item_number($data_armors[n])
  518.   end
  519. end

  520. #==============================================================================
  521. # ■ Scene_Task
  522. #------------------------------------------------------------------------------
  523. #  处理任务画面的类。
  524. #==============================================================================

  525. class Scene_Task < Scene_Base
  526.   def initialize(index=nil)
  527.     @menu_index = index
  528.   end
  529.   #--------------------------------------------------------------------------
  530.   # ● 主处理
  531.   #--------------------------------------------------------------------------
  532.   def start
  533.     # 刷新任务资料
  534.     $game_party.get_tasks_info
  535.     # 生成任务名称窗口
  536.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)
  537.     @task_names_window.active = true
  538.     if $game_party.current_tasks != []
  539.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
  540.     end
  541.     # 生成任务内容窗口
  542.     @task_info_window = Window_Task.new($game_party.latest_task)
  543.     @task_info_window.active = true
  544.   end

  545.   def terminate
  546.     # 释放窗口
  547.     @task_names_window.dispose
  548.     @task_info_window.dispose
  549.   end
  550.   #--------------------------------------------------------------------------
  551.   # ● 刷新画面
  552.   #--------------------------------------------------------------------------
  553.   def update
  554.     # 刷新窗口
  555.     @task_names_window.update
  556.     @task_info_window.update
  557.     update_task_names_window
  558.   end
  559.   #--------------------------------------------------------------------------
  560.   # ● 刷新任务名称窗口
  561.   #--------------------------------------------------------------------------
  562.   def update_task_names_window
  563.     # 按下 B 键的情况下
  564.     if Input.trigger?(Input::B)
  565.       # 演奏取消 SE
  566.       Sound.play_cancel
  567.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)
  568.       if @menu_index == nil
  569.         $scene = Scene_Menu.new
  570.       else
  571.         $scene = Scene_Menu.new(@menu_index)
  572.       end
  573.       return
  574.     end
  575.     # 按下 C 键的情况下
  576.     if Input.trigger?(Input::C)
  577.       # 无任务可显示的话
  578.       if @task_names_window.task == nil
  579.         # 演奏冻结 SE
  580.         Sound.play_buzzer
  581.         return
  582.       end
  583.       # 如果光标没有移动的话,翻页
  584.       if $game_party.latest_task == @task_names_window.task.id
  585.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height
  586.           @task_info_window.oy = 0
  587.         else
  588.           @task_info_window.oy += 480-32
  589.         end
  590.         if @task_info_window.contents.height > @task_info_window.height - 32
  591.           # 演奏翻页 SE
  592.           Sound.se_play(CHANGE_PAGE_SE)
  593.         end
  594.       else
  595.         @task_info_window.refresh(@task_names_window.task.id)
  596.         $game_party.latest_task = @task_names_window.task.id
  597.         # 演奏确定 SE
  598.         Sound.play_decision
  599.       end
  600.     end
  601.   end
  602. end




  603. #==============================================================================
  604. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  605. #==============================================================================
  606. #  def get_tasks_info
  607. #    @tasks_info = []
  608.    
  609.     #-讲解-
  610.     # 三个示例任务由浅入深,其实只要看懂第一个就可以使用了。
  611.     # 任务的写法多种多样,不限于这三个任务的方法
  612.     #----
  613.     #-----------------------------
  614.     # 示例任务1:沙漠中的五叶花
  615.     #-----------------------------
  616. #    名称 = "\\c[6]帮忙拿5瓶药水"
  617.     #-讲解-
  618.     # 注意!脚本编辑器的变色功能并不是非常完善,所以换行后字变黑了,但仍然是字符
  619.     # 串的一部分,所以不要忘记在内容最后打一个双引号
  620.     # 按回车是强制换行
  621.     #----
  622. #    简介 = "\\c[6]帮忙拿5瓶药水

  623. #\\c[9]任务目标:
  624. #获得5瓶药水,交给任务测试人员

  625. #\\c[0]药水数目:\\v[1]/5

  626. #任务测试人员:
  627. #\\c[Hff0000]快点!我等着你的好消息"
  628.     #-讲解-
  629.     # 每个任务最后一定要加上:
  630.     # @tasks_info[任务ID] = Game_Task.new(名称, 简介)
  631.     # 接受任务和完成任务都是用这个任务ID来索引
  632.     #----
  633. #    @tasks_info[1] = Game_Task.new(名称, 简介)
  634.    
  635.     #-----------------------------
  636.     # 示例任务2:克萝莉亚的药瓶
  637.     #-----------------------------
  638. #    名称 = "\\c[6]克萝莉亚的药瓶"
  639.     #-讲解-
  640.     # 这里使用了字符串相加,例如 s = "a" + "b" ,s 就是 "ab"
  641.     # 还用了内嵌表达式,$game_party.item_number(38) 就是38号物品的数量
  642.     #----
  643. #    简介 = 名称 + "
  644.    
  645. #\\c[9]任务目标:
  646. #问克萝莉亚要一个药瓶,交给西露达

  647. #\\c[0]药瓶:#{$game_party.item_no(1)}/1

  648. #西露达:
  649. #克萝莉亚就在西边的屋子里"
  650. #    @tasks_info[2] = Game_Task.new(名称, 简介)
  651.    
  652.     #-----------------------------
  653.     # 示例任务3:灵魂线
  654.     #-----------------------------
  655.     #-讲解-
  656.     # 这里用了条件判断,当3号变量大于等于1时,加上“完成”字样,同时变色
  657.     #----
  658. #    if $game_variables[3] >= 1
  659. #      名称 = "\\c[8]灵魂线(完成)"
  660. #      item = "\\c[8]灵魂线:#{$game_variables[3]}/1 (完成)"
  661. #    else
  662. #      名称 = "\\c[2]灵魂线"
  663. #      item = "\\c[0]灵魂线:#{$game_variables[3]}/1"
  664. #    end
  665.     #-讲解-
  666.     # 预先定义变量,用内嵌表达式插入
  667.     # 最后用了显示图标
  668.     #----
  669. #    简介 = "#{名称}
  670.    
  671. #\\c[9]任务目标:
  672. #找到埋起来的灵魂线,交给克萝莉亚

  673. #{item}

  674. #\\c[0]克萝莉亚:
  675. #灵魂线就埋在其中一棵树下,给我好好找\\i[157]"
  676. #    @tasks_info[3] = Game_Task.new(名称, 简介)
  677.    
  678. #  end
  679. #end


  680. #==============================================================================
  681. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  682. #==============================================================================

  683. module RPG
  684.   class Weapon
  685.     def description
  686.       description = @description.split(/@/)[0]
  687.       return description != nil ? description : ''
  688.     end
  689.     def desc
  690.       desc = @description.split(/@/)[1]
  691.       return desc != nil ? desc : "普通物品"
  692.     end
  693.   end
  694.   class Item
  695.     def description
  696.       description = @description.split(/@/)[0]
  697.       return description != nil ? description : ''
  698.     end
  699.     def desc
  700.       desc = @description.split(/@/)[1]
  701.       return desc != nil ? desc : "普通物品"
  702.     end
  703.   end
  704.   class Armor
  705.     def description
  706.       description = @description.split(/@/)[0]
  707.       return description != nil ? description : ''
  708.     end
  709.     def desc
  710.       desc = @description.split(/@/)[1]
  711.       return desc != nil ? desc : "普通物品"
  712.     end
  713.   end
  714. end

  715. class Harts_Window_ItemTitle < Window_Base
  716.   def initialize
  717.     super(0, 0, 160, 64)
  718.     self.contents = Bitmap.new(width - 32, height - 32)
  719.     self.contents.clear
  720.     self.contents.font.color = normal_color
  721.     self.contents.draw_text(4, 0, 120, 32, Vocab::item, 1)
  722.   end
  723. end

  724. class Harts_Window_ItemCommand < Window_Selectable
  725.   attr_accessor :commands
  726.   def initialize
  727.     super(0, 64, 160, 296)
  728.     self.index = 0
  729.     refresh
  730.   end
  731.   
  732. def addcommand
  733.    @commands = []
  734.    for i in 1...$data_items.size
  735.      if $game_party.item_number($data_items[i]) > 0
  736.        push = true
  737.        for com in @commands
  738.          if com == $data_items[i].desc
  739.            push = false
  740.          end
  741.        end
  742.        if push == true
  743.          @commands.push($data_items[i].desc)
  744.        end
  745.      end
  746.    end
  747.    for i in 1...$data_weapons.size
  748.      if $game_party.item_number($data_weapons[i]) > 0
  749.        push = true
  750.        for com in @commands
  751.          if com == $data_weapons[i].desc
  752.            push = false
  753.            end
  754.          end
  755.          if push == true
  756.            @commands.push($data_weapons[i].desc)
  757.          end
  758.        end
  759.      end
  760.      for i in 1...$data_armors.size
  761.        if $game_party.item_number($data_armors[i]) > 0
  762.          push = true
  763.          for com in @commands
  764.            if com == $data_armors[i].desc
  765.              push = false
  766.            end
  767.          end
  768.          if push == true
  769.            @commands.push($data_armors[i].desc)
  770.          end
  771.        end
  772.      end
  773.      if @commands == []
  774.        @commands.push("其他物品")
  775.      end      
  776.      @item_max = @commands.size
  777.   end
  778.   
  779. def refresh
  780.     addcommand
  781.     create_contents
  782.     for i in 0...@item_max
  783.       draw_item(i, normal_color)
  784.     end
  785.   end
  786.   
  787.   def draw_item(index, color)
  788.     y = index * WLH
  789.     self.contents.font.color = color
  790.     if @commands[index] != nil
  791.       self.contents.draw_text(4,y, 172, WLH, @commands[index])
  792.     end
  793.   end

  794.   def update_help
  795.     @help_window.set_text(@commands[self.index])
  796.   end
  797. end

  798. class Harts_Window_ItemList < Window_Selectable
  799.   
  800.   def initialize
  801.     super(160, 0, 384, 360)
  802.     self.index = 0
  803.     refresh
  804.   end
  805.   
  806.   def item
  807.     return @data[self.index]
  808.   end
  809.   
  810.   def refresh
  811.     @data = []
  812.   end
  813.   
  814.   def set_item(command)
  815.     refresh
  816.     for i in 1...$data_items.size
  817.       if $game_party.item_number($data_items[i]) > 0  and $data_items[i].desc == command
  818.         @data.push($data_items[i])
  819.       end
  820.     end
  821.     for i in 1...$data_weapons.size
  822.       if $game_party.item_number($data_weapons[i]) > 0  and $data_weapons[i].desc == command
  823.         @data.push($data_weapons[i])
  824.       end
  825.     end
  826.     for i in 1...$data_armors.size
  827.       if $game_party.item_number($data_armors[i]) > 0  and $data_armors[i].desc == command
  828.         @data.push($data_armors[i])
  829.       end
  830.     end
  831.     @item_max = @data.size
  832.     if @item_max > 0
  833.       self.contents = Bitmap.new(width - 32, row_max * 32)
  834.       self.contents.clear
  835.       for i in 0...@item_max
  836.         draw_item(i)
  837.       end
  838.     end
  839.   end
  840.   
  841.   def item_number
  842.     return @item_max
  843.   end
  844.   
  845.   def draw_item(index)
  846.     rect = item_rect(index)
  847.     self.contents.clear_rect(rect)
  848.     item = @data[index]
  849.     if item != nil
  850.       number = $game_party.item_number(item)
  851.       enabled = $game_party.item_can_use?(item)
  852.       rect.width -= 4
  853.       draw_item_name(item, rect.x, rect.y, enabled)
  854.       self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  855.     end
  856.   end
  857.   
  858.   def update_help
  859.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  860.   end
  861. end
  862. class Harts_Window_Help < Window_Base
  863.   
  864.   def initialize
  865.     super(0, 360, 544, WLH + 32)
  866.   end

  867.   def set_text(text, align = 0)
  868.     if text != @text or align != @align
  869.       self.contents.clear
  870.       self.contents.font.color = normal_color
  871.       self.contents.draw_text(4, 0, self.width - 40, WLH , text, align)
  872.       @text = text
  873.       @align = align
  874.     end
  875.   end
  876. end

  877. class Harts_Window_MenuStatus < Window_Selectable

  878.   def initialize(x, y)
  879.     super(x, y, 288, 416)
  880.     refresh
  881.     self.active = false
  882.     self.index = -1
  883.   end

  884.   def refresh
  885.     self.contents.clear
  886.     @item_max = $game_party.members.size
  887.     for actor in $game_party.members
  888.       x = 8
  889.       y = actor.index * 96 + WLH / 2
  890.       draw_actor_name(actor, x, y)
  891.       draw_actor_class(actor, x + 120, y)
  892.       draw_actor_level(actor, x, y + WLH * 1)
  893.       draw_actor_state(actor, x, y + WLH * 2)
  894.       draw_actor_hp(actor, x + 120, y + WLH * 1)
  895.       draw_actor_mp(actor, x + 120, y + WLH * 2)
  896.     end
  897.   end

  898.   def update_cursor
  899.     if @index < 0               
  900.       self.cursor_rect.empty
  901.     elsif @index < @item_max  
  902.       self.cursor_rect.set(0, @index * 96, contents.width, 96)
  903.     elsif @index >= 100        
  904.       self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
  905.     else                       
  906.       self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
  907.     end
  908.   end
  909. end

  910. class Scene_Item < Scene_Base
  911.   def start
  912.     super
  913.     create_menu_background
  914.     @viewport = Viewport.new(0, 0, 544, 416)
  915.     @itemtitle_window = Harts_Window_ItemTitle.new
  916.     @itemcommand_window = Harts_Window_ItemCommand.new
  917.     @command_index = @itemcommand_window.index
  918.     @itemcommand_window.refresh
  919.     @itemlist_window = Harts_Window_ItemList.new
  920.     @itemlist_window.active = false
  921.     @help_window = Harts_Window_Help.new
  922.     @help_window.viewport = @viewport
  923.     @target_window = Harts_Window_MenuStatus.new(96, 0)
  924.     @itemcommand_window.help_window = @help_window
  925.     @itemlist_window.help_window = @help_window
  926.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  927.     hide_target_window
  928.   end

  929.   def terminate
  930.     super
  931.     dispose_menu_background
  932.     @viewport.dispose
  933.     @itemtitle_window.dispose
  934.     @itemcommand_window.dispose
  935.     @itemlist_window.dispose
  936.     @help_window.dispose
  937.     @target_window.dispose
  938.   end

  939.   def return_scene
  940.     $scene = Scene_Menu.new(0)
  941.   end

  942.   def update
  943.     super
  944.     update_menu_background
  945.     @help_window.update
  946.     @itemlist_window.update
  947.     @itemcommand_window.update
  948.     @target_window.update
  949.     @itemcommand_window.refresh
  950.     if @command_index != @itemcommand_window.index
  951.       @itemlist_window.index = 0
  952.       @command_index = @itemcommand_window.index
  953.       @itemcommand_window.update_help
  954.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  955.     end
  956.     if @itemcommand_window.active
  957.       @itemcommand_window.update_help
  958.       update_itemcommand
  959.     elsif @itemlist_window.active
  960.       update_itemlist
  961.     elsif @target_window.active
  962.       update_target_selection
  963.     end
  964.   end

  965.   def update_itemcommand
  966.     if Input.trigger?(Input::B)
  967.       Sound.play_cancel
  968.       return_scene
  969.       return
  970.     end
  971.     if Input.trigger?(Input::C)
  972.       if @itemlist_window.item_number == 0
  973.         Sound.play_buzzer
  974.         return
  975.       end
  976.       Sound.play_decision
  977.       @itemcommand_window.active = false
  978.       @itemlist_window.index = 0
  979.       @itemlist_window.active = true
  980.       return
  981.     end
  982.   end

  983.   def update_itemlist
  984.     if Input.trigger?(Input::B)
  985.       Sound.play_cancel
  986.       @itemcommand_window.active = true
  987.       @itemlist_window.active = false
  988.       @itemcommand_window.index = @command_index
  989.     elsif Input.trigger?(Input::C)
  990.       @item = @itemlist_window.item
  991.       if @item != nil
  992.         $game_party.last_item_id = @item.id
  993.       end
  994.       if $game_party.item_can_use?(@item)
  995.         Sound.play_decision
  996.         determine_item
  997.       else
  998.         Sound.play_buzzer
  999.       end
  1000.     end
  1001.   end

  1002.   def determine_item
  1003.     if @item.for_friend?
  1004.       show_target_window(@itemlist_window.index % 2 == 0)
  1005.       if @item.for_all?
  1006.         @target_window.index = 99
  1007.       else
  1008.         if $game_party.last_target_index < @target_window.item_max
  1009.           @target_window.index = $game_party.last_target_index
  1010.         else
  1011.           @target_window.index = 0
  1012.         end
  1013.       end
  1014.     else
  1015.       use_item_nontarget
  1016.     end
  1017.   end

  1018.   def update_target_selection
  1019.     if Input.trigger?(Input::B)
  1020.       Sound.play_cancel
  1021.       if $game_party.item_number(@item) == 0
  1022.         @itemlist_window.refresh                 
  1023.       end
  1024.       @itemlist_window.active = true
  1025.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  1026.       hide_target_window
  1027.       @itemlist_window.active = true
  1028.     elsif Input.trigger?(Input::C)
  1029.       if not $game_party.item_can_use?(@item)
  1030.         Sound.play_buzzer
  1031.       else
  1032.         determine_target
  1033.       end
  1034.     end
  1035.   end

  1036.   def determine_target
  1037.     used = false
  1038.     if @item.for_all?
  1039.       for target in $game_party.members
  1040.         target.item_effect(target, @item)
  1041.         used = true unless target.skipped
  1042.       end
  1043.     else
  1044.       $game_party.last_target_index = @target_window.index
  1045.       target = $game_party.members[@target_window.index]
  1046.       target.item_effect(target, @item)
  1047.       used = true unless target.skipped
  1048.     end
  1049.     if used
  1050.       use_item_nontarget
  1051.     else
  1052.       Sound.play_buzzer
  1053.     end
  1054.   end

  1055.   def show_target_window(right)
  1056.     @itemlist_window.active = false
  1057.     width_remain = 544 - @target_window.width
  1058.     @target_window.x = right ? width_remain : 0
  1059.     @target_window.visible = true
  1060.     @target_window.active = true
  1061.     if right
  1062.       @viewport.rect.set(0, 0, width_remain, 416)
  1063.       @viewport.ox = 0
  1064.     else
  1065.       @viewport.rect.set(@target_window.width, 0, width_remain, 416)
  1066.       @viewport.ox = @target_window.width
  1067.     end
  1068.   end

  1069.   def hide_target_window
  1070.     @target_window.visible = false
  1071.     @target_window.active = false
  1072.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  1073.     @viewport.rect.set(0, 0, 544, 416)
  1074.     @viewport.ox = 0
  1075.   end

  1076.   def use_item_nontarget
  1077.     Sound.play_use_item
  1078.     $game_party.consume_item(@item)
  1079.     @itemlist_window.draw_item(@itemlist_window.index)
  1080.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  1081.     @target_window.refresh
  1082.     if $game_party.all_dead?
  1083.       $scene = Scene_Gameover.new
  1084.     elsif @item.common_event_id > 0
  1085.       $game_temp.common_event_id = @item.common_event_id
  1086.       $scene = Scene_Map.new
  1087.     end
  1088.   end
  1089. end
复制代码
怎样改成640,480屏幕适应?

点评

LZ建议将两个问题拆开吧~这样的话代码也好认一些=。=  发表于 2012-4-8 10:24
标题写明确一点吧,比如:“关于任务系统的屏幕分辨率适应”  发表于 2012-4-8 09:30

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60819
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

2
发表于 2012-4-8 10:08:40 | 只看该作者
本帖最后由 orzfly 于 2012-4-8 13:22 编辑

@iisnow看第一个脚本尾部 “如何后台运行”
一题多问 脚本来源估计是6r世界的那个水区活动

@八宝粥先生 喜羊羊大灰狼 what is that?

点评

恩,估计这家伙又要做喜羊羊大灰狼v0.5了  发表于 2012-4-8 13:08
啊~~代码太长了……看漏了=。=  发表于 2012-4-8 10:21
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-26 11:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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