Project1

标题: 前辈的脚本我不会用 [打印本页]

作者: 1340124207    时间: 2014-1-18 12:35
标题: 前辈的脚本我不会用
  1. #===============================================================================
  2. #** VX Input Module#输入脚本,没有什么需要更改的地方,54
  3. #===============================================================================

  4. module Input
  5.     @keys = []
  6.     @pressed = []
  7.     Mouse_Left = 1
  8.     Mouse_Right = 2
  9.     Mouse_Middle = 4
  10.     Back= 8
  11.     Tab = 9
  12.     Enter = 13
  13.     Shift = 16
  14.     Ctrl = 17
  15.     Alt = 18
  16.     Esc = 0x1B
  17.     LT = 0x25
  18.     UPs = 0x26  
  19.     RT = 0x27
  20.     DN = 0x28
  21.     Space = 32
  22.     Numberkeys = {}
  23.     Numberkeys[0] = 48
  24.     Numberkeys[1] = 49
  25.     Numberkeys[2] = 50
  26.     Numberkeys[3] = 51
  27.     Numberkeys[4] = 52
  28.     Numberkeys[5] = 53
  29.     Numberkeys[6] = 54
  30.     Numberkeys[7] = 55
  31.     Numberkeys[8] = 56
  32.     Numberkeys[9] = 57
  33.     Numberpad = {}
  34.     Numberpad[0] = 45
  35.     Numberpad[1] = 35
  36.     Numberpad[2] = 40
  37.     Numberpad[3] = 34
  38.     Numberpad[4] = 37
  39.     Numberpad[5] = 12
  40.     Numberpad[6] = 39
  41.     Numberpad[7] = 36
  42.     Numberpad[8] = 38
  43.     Numberpad[9] = 33
  44.     Letters = {}
  45.     Letters["A"] = 65
  46.     Letters["B"] = 66
  47.     Letters["C"] = 67
  48.     Letters["D"] = 68
  49.     Letters["E"] = 69
  50.     Letters["F"] = 70
  51.     Letters["G"] = 71
  52.     Letters["H"] = 72
  53.     Letters["I"] = 73
  54.     Letters["J"] = 74
  55.     Letters["K"] = 75
  56.     Letters["L"] = 76
  57.     Letters["M"] = 77
  58.     Letters["N"] = 78
  59.     Letters["O"] = 79
  60.     Letters["P"] = 80
  61.     Letters["Q"] = 81
  62.     Letters["R"] = 82
  63.     Letters["S"] = 83
  64.     Letters["T"] = 84
  65.     Letters["U"] = 85
  66.     Letters["V"] = 86
  67.     Letters["W"] = 87
  68.     Letters["X"] = 88
  69.     Letters["Y"] = 89
  70.     Letters["Z"] = 90
  71.     Fkeys = {}
  72.     Fkeys[1] = 112
  73.     Fkeys[2] = 113
  74.     Fkeys[3] = 114
  75.     Fkeys[4] = 115
  76.     Fkeys[5] = 116
  77.     Fkeys[6] = 117
  78.     Fkeys[7] = 118
  79.     Fkeys[8] = 119
  80.     Fkeys[9] = 120
  81.     Fkeys[10] = 121
  82.     Fkeys[11] = 122
  83.     Fkeys[12] = 123
  84.     Collon = 186
  85.     Equal = 187
  86.     Comma = 188
  87.     Underscore = 189
  88.     Dot = 190
  89.     Backslash = 191
  90.     Lb = 219
  91.     Rb = 221
  92.     Quote = 222
  93.     State = Win32API.new('user32','GetKeyState',['i'],'i')
  94.     Key = Win32API.new('user32','GetAsyncKeyState',['i'],'i')
  95. #-------------------------------------------------------------------------------
  96.     USED_KEYS = [Mouse_Left, Mouse_Right, Mouse_Middle]
  97. #-------------------------------------------------------------------------------
  98.   module_function
  99.     #--------------------------------------------------------------------------  
  100.     def Input.getstate(key)
  101.       return true unless State.call(key).between?(0, 1)
  102.       return false
  103.     end
  104.     #--------------------------------------------------------------------------
  105.     def Input.testkey(key)
  106.       Key.call(key) & 0x01 == 1
  107.     end
  108.     #--------------------------------------------------------------------------
  109.     def Input.update
  110.       @keys = []
  111.       @keys.push(Input::Mouse_Left) if Input.testkey(Input::Mouse_Left)
  112.       @keys.push(Input::Mouse_Right) if Input.testkey(Input::Mouse_Right)
  113.       @keys.push(Input::Back) if Input.testkey(Input::Back)
  114.       @keys.push(Input::Tab) if Input.testkey(Input::Tab)
  115.       @keys.push(Input::Enter) if Input.testkey(Input::Enter)
  116.       @keys.push(Input::Shift) if Input.testkey(Input::Shift)
  117.       @keys.push(Input::Ctrl) if Input.testkey(Input::Ctrl)
  118.       @keys.push(Input::Alt) if Input.testkey(Input::Alt)
  119.       @keys.push(Input::Esc) if Input.testkey(Input::Esc)
  120.       for key in Input::Letters.values
  121.         @keys.push(key) if Input.testkey(key)
  122.       end
  123.       for key in Input::Numberkeys.values
  124.         @keys.push(key) if Input.testkey(key)
  125.       end
  126.       for key in Input::Numberpad.values
  127.         @keys.push(key) if Input.testkey(key)
  128.       end
  129.       for key in Input::Fkeys.values
  130.         @keys.push(key) if Input.testkey(key)
  131.       end
  132.       @keys.push(Input::Collon) if Input.testkey(Input::Collon)
  133.       @keys.push(Input::Equal) if Input.testkey(Input::Equal)
  134.       @keys.push(Input::Comma) if Input.testkey(Input::Comma)
  135.       @keys.push(Input::Underscore) if Input.testkey(Input::Underscore)
  136.       @keys.push(Input::Dot) if Input.testkey(Input::Dot)
  137.       @keys.push(Input::Backslash) if Input.testkey(Input::Backslash)
  138.       @keys.push(Input::Lb) if Input.testkey(Input::Lb)
  139.       @keys.push(Input::Rb) if Input.testkey(Input::Rb)
  140.       @keys.push(Input::Quote) if Input.testkey(Input::Quote)
  141.       @keys.push(Input::Space) if Input.testkey(Input::Space)
  142.       @keys.push(Input::LT) if Input.testkey(Input::LT)
  143.       @keys.push(Input::UPs) if Input.testkey(Input::UPs)
  144.       @keys.push(Input::RT) if Input.testkey(Input::RT)
  145.       @keys.push(Input::DN) if Input.testkey(Input::DN)
  146.       @pressed = []
  147.       @pressed.push(Input::Space) if Input.getstate(Input::Space)
  148.       @pressed.push(Input::Mouse_Left) if Input.getstate(Input::Mouse_Left)
  149.       @pressed.push(Input::Mouse_Right) if Input.getstate(Input::Mouse_Right)
  150.       @pressed.push(Input::Back) if Input.getstate(Input::Back)
  151.       @pressed.push(Input::Tab) if Input.getstate(Input::Tab)
  152.       @pressed.push(Input::Enter) if Input.getstate(Input::Enter)
  153.       @pressed.push(Input::Shift) if Input.getstate(Input::Shift)
  154.       @pressed.push(Input::Ctrl) if Input.getstate(Input::Ctrl)
  155.       @pressed.push(Input::Alt) if Input.getstate(Input::Alt)
  156.       @pressed.push(Input::Esc) if Input.getstate(Input::Esc)
  157.       @pressed.push(Input::LT) if Input.getstate(Input::LT)
  158.       @pressed.push(Input::UPs) if Input.getstate(Input::UPs)
  159.       @pressed.push(Input::RT) if Input.getstate(Input::RT)
  160.       @pressed.push(Input::DN) if Input.getstate(Input::DN)
  161.       for key in Input::Numberkeys.values
  162.         @pressed.push(key) if Input.getstate(key)
  163.       end
  164.       for key in Input::Numberpad.values
  165.         @pressed.push(key) if Input.getstate(key)
  166.       end
  167.       for key in Input::Letters.values
  168.         @pressed.push(key) if Input.getstate(key)
  169.       end
  170.       for key in Input::Fkeys.values
  171.         @pressed.push(key) if Input.getstate(key)
  172.       end
  173.       @pressed.push(Input::Collon) if Input.getstate(Input::Collon)
  174.       @pressed.push(Input::Equal) if Input.getstate(Input::Equal)
  175.       @pressed.push(Input::Comma) if Input.getstate(Input::Comma)
  176.       @pressed.push(Input::Underscore) if Input.getstate(Input::Underscore)
  177.       @pressed.push(Input::Dot) if Input.getstate(Input::Dot)
  178.       @pressed.push(Input::Backslash) if Input.getstate(Input::Backslash)
  179.       @pressed.push(Input::Lb) if Input.getstate(Input::Lb)
  180.       @pressed.push(Input::Rb) if Input.getstate(Input::Rb)
  181.       @pressed.push(Input::Quote) if Input.getstate(Input::Quote)  
  182.     end
  183.     #--------------------------------------------------------------------------
  184.     def Input.triggerd?(key)
  185.       return true if @keys.include?(key)
  186.       return false
  187.     end
  188.     #--------------------------------------------------------------------------
  189.     def Input.pressed?(key)
  190.       return true if @pressed.include?(key)
  191.       return false
  192.     end
  193.   #--------------------------------------------------------------------------
  194.   # * 4 Diraction
  195.   #--------------------------------------------------------------------------
  196.   def Input.dir4
  197.     return 2 if Input.pressed?(Input::DN)
  198.     return 4 if Input.pressed?(Input::LT)
  199.     return 6 if Input.pressed?(Input::RT)
  200.     return 8 if Input.pressed?(Input::UPs)
  201.     return 0
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # * Trigger (key)
  205.   #--------------------------------------------------------------------------
  206.   def trigger?(key)
  207.     keys = []
  208.     case key
  209.     when Input::DOWN
  210.       keys.push(Input::DN)
  211.     when Input::UP
  212.       keys.push(Input::UPs)
  213.     when Input::LEFT
  214.       keys.push(Input::LT)
  215.     when Input::RIGHT
  216.       keys.push(Input::RT)
  217.     when Input::A
  218.       keys.push(Input::Shift)
  219.     when Input::B
  220.       keys.push(Input::Esc, Input::Numberpad[0])
  221.     when Input::C
  222.       keys.push(Input::Space, Input::Enter)
  223.     when Input::L
  224.       keys.push(Input::Letters["Q"])
  225.     when Input::R
  226.       keys.push(Input::Letters["W"])
  227.     when Input::X
  228.       keys.push(Input::Letters["A"])
  229.     when Input::Y
  230.       keys.push(Input::Letters["S"])
  231.     when Input::Z
  232.       keys.push(Input::Letters["D"])
  233.     when Input::F5
  234.       keys.push(Input::Fkeys[5])
  235.     when Input::F6
  236.       keys.push(Input::Fkeys[6])
  237.     when Input::F7
  238.       keys.push(Input::Fkeys[7])
  239.     when Input::F8
  240.       keys.push(Input::Fkeys[8])
  241.     when Input::F9
  242.       keys.push(Input::Fkeys[9])
  243.     when Input::CTRL
  244.       keys.push(Input::Ctrl)
  245.     when Input::ALT
  246.       keys.push(Input::Alt)
  247.     else
  248.       keys.push(key)
  249.     end
  250.     for k in keys
  251.      if Input.triggerd?(k)
  252.        return true
  253.      end
  254.    end
  255.    return false
  256. end
  257.   #--------------------------------------------------------------------------
  258.   # * Repeat (key)
  259.   #--------------------------------------------------------------------------
  260.   def repeat?(key)
  261.     keys = []
  262.     case key
  263.     when Input::DOWN
  264.       keys.push(Input::DN)
  265.     when Input::UP
  266.       keys.push(Input::UPs)
  267.     when Input::LEFT
  268.       keys.push(Input::LT)
  269.     when Input::RIGHT
  270.       keys.push(Input::RT)
  271.     when Input::A
  272.       keys.push(Input::Shift)
  273.     when Input::B
  274.       keys.push(Input::Esc, Input::Numberpad[0])
  275.     when Input::C
  276.       keys.push(Input::Space, Input::Enter)
  277.     when Input::L
  278.       keys.push(Input::Letters["Q"])
  279.     when Input::R
  280.       keys.push(Input::Letters["W"])
  281.     when Input::X
  282.       keys.push(Input::Letters["A"])
  283.     when Input::Y
  284.       keys.push(Input::Letters["S"])
  285.     when Input::Z
  286.       keys.push(Input::Letters["D"])
  287.     when Input::F5
  288.       keys.push(Input::Fkeys[5])
  289.     when Input::F6
  290.       keys.push(Input::Fkeys[6])
  291.     when Input::F7
  292.       keys.push(Input::Fkeys[7])
  293.     when Input::F8
  294.       keys.push(Input::Fkeys[8])
  295.     when Input::F9
  296.       keys.push(Input::Fkeys[9])
  297.     when Input::CTRL
  298.       keys.push(Input::Ctrl)
  299.     when Input::ALT
  300.       keys.push(Input::Alt)
  301.     else
  302.       keys.push(key)
  303.     end
  304.     for k in keys
  305.      if Input.triggerd?(k)
  306.        return true
  307.      end
  308.    end
  309.    return false
  310.   end     
  311.   #--------------------------------------------------------------------------
  312.   # * Press (key)
  313.   #--------------------------------------------------------------------------
  314.   def press?(key)
  315.     keys = []
  316.     case key
  317.     when Input::DOWN
  318.       keys.push(Input::DN)
  319.     when Input::UP
  320.       keys.push(Input::UPs)
  321.     when Input::LEFT
  322.       keys.push(Input::LT)
  323.     when Input::RIGHT
  324.       keys.push(Input::RT)
  325.     when Input::A
  326.       keys.push(Input::Shift)
  327.     when Input::B
  328.       keys.push(Input::Esc, Input::Numberpad[0])
  329.     when Input::C
  330.       keys.push(Input::Space, Input::Enter)
  331.     when Input::L
  332.       keys.push(Input::Letters["Q"])
  333.     when Input::R
  334.       keys.push(Input::Letters["W"])
  335.     when Input::X
  336.       keys.push(Input::Letters["A"])
  337.     when Input::Y
  338.       keys.push(Input::Letters["S"])
  339.     when Input::Z
  340.       keys.push(Input::Letters["D"])  
  341.     when Input::F5
  342.       keys.push(Input::Fkeys[5])
  343.     when Input::F6
  344.       keys.push(Input::Fkeys[6])
  345.     when Input::F7
  346.       keys.push(Input::Fkeys[7])
  347.     when Input::F8
  348.       keys.push(Input::Fkeys[8])
  349.     when Input::F9
  350.       keys.push(Input::Fkeys[9])
  351.     when Input::CTRL
  352.       keys.push(Input::Ctrl)
  353.     when Input::ALT
  354.       keys.push(Input::Alt)
  355.     else
  356.       keys.push(key)
  357.     end
  358.     for k in keys
  359.      if Input.pressed?(k)
  360.        return true
  361.      end
  362.    end
  363.    return false
  364.   end     
  365.   #--------------------------------------------------------------------------
  366.   # * Check (key)
  367.   #--------------------------------------------------------------------------
  368.   def check(key)
  369.     Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 == 1  # key 0
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # * Mouse Update
  373.   #--------------------------------------------------------------------------
  374.   def mouse_update
  375.     @used_i = []
  376.     for i in USED_KEYS
  377.       x = check(i)
  378.       if x == true
  379.         @used_i.push(i)
  380.       end
  381.     end
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # * Short Write C
  385.   #--------------------------------------------------------------------------
  386.   def Input.C
  387.     Input.trigger?(C)
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # * Short Write B
  391.   #--------------------------------------------------------------------------
  392.   def Input.B
  393.     Input.trigger?(B)
  394.   end
  395.   #--------------------------------------------------------------------------
  396.   # * Short Write A
  397.   #--------------------------------------------------------------------------
  398.   def Input.A
  399.     Input.trigger?(A)
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # * Short Write Down
  403.   #--------------------------------------------------------------------------
  404.   def Input.Down
  405.     Input.trigger?(DOWN)
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # * Short Write Up
  409.   #--------------------------------------------------------------------------
  410.   def Input.Up
  411.     Input.trigger?(UP)
  412.   end
  413.   #--------------------------------------------------------------------------
  414.   # * Short Write Right
  415.   #--------------------------------------------------------------------------
  416.   def Input.Right
  417.     Input.trigger?(RIGHT)
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # * Short Write Left
  421.   #--------------------------------------------------------------------------
  422.   def Input.Left
  423.     Input.trigger?(LEFT)
  424.   end
  425.   #--------------------------------------------------------------------------
  426.   # * Anykey pressed?  ( A or B or C or Down or Up or Right or Left )
  427.   #--------------------------------------------------------------------------
  428.   def Input.Anykey
  429.     if A or B or C or Down or Up or Right or Left
  430.       return true
  431.     else
  432.       return false
  433.     end
  434.   end
  435.   def Input.name?(num)
  436.     return "MOUSE PRIMARY" if num==1
  437.     return "MOUSE SECONDARY" if num==2
  438.     return "MOUSE MIDDLE" if num==4
  439.     return "MOUSE 4TH" if num==5
  440.     return "MOUSE 5TH" if num==6
  441.     return "BACKSPACE" if num==8
  442.     return "TAB" if num==9
  443.     return "RETURN" if num==13
  444.     return "SHIFT" if num==16
  445.     return "CTLR" if num==17
  446.     return "ALT" if num==18
  447.     return "CAPS LOCK" if num==20
  448.     return "ESCAPE" if num==27
  449.     return "SPACE" if num==32
  450.     return "PGUP" if num==33
  451.     return "PGDN" if num==34
  452.     return "END" if num==35
  453.     return "HOME" if num==36
  454.     return "LEFT" if num==37
  455.     return "UP" if num==38
  456.     return "RIGHT" if num==39
  457.     return "DOWN" if num==40
  458.     return "SNAPSHOT" if num==44
  459.     return "INSERT" if num==45
  460.     return "DELETE" if num==46
  461.     return "0" if num==48
  462.     return "1" if num==49
  463.     return "2" if num==50
  464.     return "3" if num==51
  465.     return "4" if num==52
  466.     return "5" if num==53
  467.     return "6" if num==54
  468.     return "7" if num==55
  469.     return "8" if num==56
  470.     return "9" if num==57
  471.     return "A" if num==65
  472.     return "B" if num==66
  473.     return "C" if num==67
  474.     return "D" if num==68
  475.     return "E" if num==69
  476.     return "F" if num==70
  477.     return "G" if num==71
  478.     return "H" if num==72
  479.     return "I" if num==73
  480.     return "J" if num==74
  481.     return "K" if num==75
  482.     return "L" if num==76
  483.     return "M" if num==77
  484.     return "N" if num==78
  485.     return "O" if num==79
  486.     return "P" if num==80
  487.     return "Q" if num==81
  488.     return "R" if num==82
  489.     return "S" if num==83
  490.     return "T" if num==84
  491.     return "U" if num==85
  492.     return "V" if num==86
  493.     return "W" if num==87
  494.     return "X" if num==88
  495.     return "Y" if num==89
  496.     return "Z" if num==90
  497.     return "LWIN" if num==91
  498.     return "RWIN" if num==92
  499.     return "APPS" if num==93
  500.     return "0" if num==96
  501.     return "1" if num==97
  502.     return "2" if num==98
  503.     return "3" if num==99
  504.     return "4" if num==100
  505.     return "5" if num==101
  506.     return "6" if num==102
  507.     return "7" if num==103
  508.     return "8" if num==104
  509.     return "9" if num==105
  510.     return "*" if num==106
  511.     return "+" if num==107
  512.     return "-" if num==109
  513.     return "." if num==110
  514.     return "/" if num==111
  515.     return "F1" if num==112
  516.     return "F2" if num==113
  517.     return "F3" if num==114
  518.     return "F4" if num==115
  519.     return "F5" if num==116
  520.     return "F6" if num==117
  521.     return "F7" if num==118
  522.     return "F8" if num==119
  523.     return "F9" if num==120
  524.     return "F10" if num==121
  525.     return "F11" if num==122
  526.     return "F12" if num==123
  527.     return "NUM LOCK" if num==144
  528.     return "SCROLL LOCK" if num==145
  529.     return "LEFT SHIFT" if num==160
  530.     return "RIGHT SHIFT" if num==161
  531.     return "LEFT CTRL" if num==162
  532.     return "RIGHT CTRL" if num==163
  533.     return "LEFT ALT" if num==164
  534.     return "RIGHT ALT" if num==165
  535.     return ";" if num==186
  536.     return "=" if num==187
  537.     return "," if num==188
  538.     return "_" if num==189
  539.     return "." if num==190
  540.     return "/" if num==191
  541.     return "`" if num==192
  542.     return "[" if num==219
  543.     return " \\ " if num==220
  544.     return "]" if num==221
  545.     return "'" if num==222
  546.     return "??? - " + "#{num}"
  547.   end
  548. end

  549. #==============================================================================
  550. # Módulo AntiLag
  551. #==============================================================================
  552.     module AntiLag
  553.       SPC = Win32API.new("kernel32", "SetPriorityClass", "pi", "i")
  554.       @@high_priority = false
  555.       def self.high_priority ; @@high_priority; end
  556.       def self.high_priority?; @@high_priority; end
  557.       def self.high_priority=(valor)
  558.         return if @@high_priority == valor
  559.         @@high_priority = valor
  560.         if @@high_priority
  561.           SPC.call(-1, 0x80)
  562.           return
  563.         end
  564.         SPC.call(-1, 0x20)
  565.       end
  566.     end
  567.     AntiLag.high_priority = true
复制代码
这是一个人的游戏中添加其中的一个脚本。
#============================================================================
# ** 任务系统
#    基本:
#      $scene = Scene_Task.new(返回的场景, 游标初始index)       召唤查看任务场景
#    说明:
#      $game_party.accept_task(id)                                  接受id号任务
#      $game_party.delete_task(Game_Task.new(id))             删除(放弃)id号任务
#      $game_party.completed_task(id)                               完成id号任务
#      $game_party.task_status(id)   获取任务状态,未接受返回nil;未完成返回false;
#                                                                 已完成返回true
#      $game_party.accepted_task?(id)                   判断角色是否接受了id号任务
#      $game_party.completed_task?(id)                判断角色是否完成了id号任务
#    快捷手段:
#      visible_ts(id, kind)
#                   在地图画面上显示id号任务的状态.kind:0为接受任务时显示的信息;
#                               1为完成任务时显示的信息;2为任务失败时显示的信息;
#                           3为放弃任务时显示的信息;4为无法放弃任务时显示的信息;
#                                                           5为已接此任务的提示.
#      accept_task(id, enforcement)
#               接受id号任务并在地图上显示接受任务时显示的信息,enforcement为是否
#                                           强制接受,true为是,可不填,默认为false
#      complete_task(id)          删除id号任务并在地图上显示完成任务时显示的信息
#      fail_task(id)              删除id号任务并在地图上显示任务失败时显示的信息
#      abandonment_task(id)       删除id号任务并在地图上显示放弃任务时显示的信息
#============================================================================

module DOS
#============================================================================
#-------------------------------任务设置-------------------------------------
#============================================================================

  Task_Abandonment_Task_Input = Input::Letters["E"] # 放弃任务按钮........[按键]
  Task_Left_Change_Page = Input::LEFT # 左翻页按键........................[按键]
  Task_Right_Change_Page = Input::RIGHT # 右翻页按键......................[按键]
  Task_Filament_Color = Color.new(0, 0, 0) # 描绘报酬表格时,线条的颜色....[颜色]
  # ▼ 绘制确定放弃任务时疑问的文字色.....................................[颜色]
  Task_Query_Word_Color = Color.new(255, 255, 0)
  Task_Gold_Icon_Index = 205 # 金钱的图标id...............................[数字]
  # 没有接受该任务,又调用该任务的complete_task/fail_task/abandonment_task方法时,
  # 该怎样处理.0为显示一个窗口, 1为无处理.................................[数字]
  Task_No_Accept = 0
  #--任务资料设置(此处省略分类)
  Task = []
  #--痴情的女鬼---------------------------------------------------
  Task[0] = { # 任务id
  "Icon" => 50, # 图标id
  "Name" => "痴情的女鬼",# 任务名称
  "Caption" => "   村子里有一间大屋子,里头住着一个叫高姗姗的女鬼,他一直在等他的哥哥高
文彦.这种痴情的确令人佩服,但她每天晚上都会发出鬼哭的声音,引得附近黑毛
狼咆哮,斯库拉唱歌,厄洛斯射箭,狄安娜砸盾等,严重地影响了附近村民的休息
.你能够帮村民解决这个痴情的女鬼吗?",
  "Reward" => {"Item" => [],           # 完成任务后奖励的物品
               "Weapon" => [],         # 完成任务后奖励的武器
               "Armor" => [],          # 完成任务后奖励的防具
               "Gold" => 0,            # 完成任务后奖励的金钱
               "Level_Plus" => [],     # 完成任务后奖励的等级
               "Exp_Plus" => []        # 完成任务后奖励的经验
               },
  "Can Abandonment?" => false, # 可否放弃此任务
  "Level" => 3  # 任务等级
  }
  #--遗失的手风琴-----------------------------------------------
  Task[1] = { # 任务id
  "Icon" => 100, # 图标id
  "Name" => "遗失的手风琴",# 任务名称
  "Caption" => "   村庄里有一个伟大的音乐家,应邀去参加一个音乐会,但是他的手风琴不见,
你能帮他找找吗?",
  "Reward" => {"Item" => [],           # 完成任务后奖励的物品
               "Weapon" => [],         # 完成任务后奖励的武器
               "Armor" => [],          # 完成任务后奖励的防具
               "Gold" => 0,            # 完成任务后奖励的金钱
               "Level_Plus" => [],     # 完成任务后奖励的等级
               "Exp_Plus" => []        # 完成任务后奖励的经验
               },
  "Can Abandonment?" => true, # 可否放弃此任务
  "Level" => 3  # 任务等级
  }
end

module Vocab
#============================================================================
#---------------------------任务用语设置-------------------------------------
#============================================================================

  Task_Accept = "接受了任务[%s]"
  Task_Complete = "任务[%s]被完成!"
  Task_Fail = "任务[%s]已失败"
  Task_Abandonment = "放弃任务[%s]"
  Task_Can_Not_Abandonment = "无法放弃任务[%s]"
  Task_Adandonment_Query = "你确定要放弃[%s]这个任务吗?"
  Task_Accepted = "已接受任务[%s]"
  Task_No_Accept = "你还没接受任务[%s]!"
  Task_Difficulty = "任务难度:"
  Task_Level_Word = ["简单", "容易", "中等", "困难"]
  Task_Can_Abandonment_Word = ["可放弃", "不可放弃"]
  Task_Change_Page = ["按下右键翻到下一页 >", "< 按下左键翻到上一页"]
end

#============================================================================
# ** Game_Task
#============================================================================
class Game_Task
  #----------------------------------------------------------------------
  # * 初始化
  #----------------------------------------------------------------------
  def initialize(id)
    @id = id
    @task = DOS::Task[id]
  end
  #----------------------------------------------------------------------
  # * 获取任务id
  #----------------------------------------------------------------------
  def id
    return @id
  end
  #----------------------------------------------------------------------
  # * 获取任务图标索引
  #----------------------------------------------------------------------
  def icon_index
    return @task["Icon"]
  end
  #----------------------------------------------------------------------
  # * 获取任务名
  #----------------------------------------------------------------------
  def name
    return @task["Name"]
  end
  #----------------------------------------------------------------------
  # * 获取任务说明
  #----------------------------------------------------------------------
  def caption
    return @task["Caption"]
  end
  #----------------------------------------------------------------------
  # * 获取任务奖赏资料(不包括物品/武器/防具数量)
  #     kind:0为道具;1为武器;2为防具;3为金钱;4为lv;5为exp.
  #----------------------------------------------------------------------
  def reward(kind, index=0)
    case kind
    when 0
      return $data_items[@task["Reward"]["Item"][index][0]]
    when 1
        return $data_weapons[@task["Reward"]["Weapon"][index][0]]
    when 2
        return $data_armors[@task["Reward"]["Armor"][index][0]]
    when 3
      return @task["Reward"]["Gold"]
    when 4
      if @task["Reward"]["Level_Plus"][index] != nil
        return @task["Reward"]["Level_Plus"][index][1]
      else return nil
      end
    when 5
      if @task["Reward"]["Exp_Plus"][index] != nil
        return @task["Reward"]["Exp_Plus"][index][1]
      else return nil
      end
    end
  end
  #----------------------------------------------------------------------
  # * 获取任务奖赏多少种道具
  #     kind:0为道具;1为武器;2为防具.
  #----------------------------------------------------------------------
  def reward_size(kind)
    case kind
    when 0
      return @task["Reward"]["Item"].size
    when 1
      return @task["Reward"]["Weapon"].size
    when 2
      return @task["Reward"]["Armor"].size
    end
  end
  #----------------------------------------------------------------------
  # * 获取任务奖赏等级/经验的受益人(le = level & exp)
  #     kind:0为level;1为exp.
  #----------------------------------------------------------------------
  def reward_le_actor(kind, index)
    case kind
    when 0
      if $game_party.members[@task["Reward"]["Level_Plus"][index][0]] != nil
        return $game_party.members[@task["Reward"]["Level_Plus"][index][0]]
      else return nil
      end
    when 1
      if $game_party.members[@task["Reward"]["Exp_Plus"][index][0]] != nil
        return $game_party.members[@task["Reward"]["Exp_Plus"][index][0]]
      else return nil
      end
    end
  end
  #----------------------------------------------------------------------
  # * 获取任务奖赏等级/经验的受益人总数(le = level & exp)
  #     kind:0为level;1为exp.
  #----------------------------------------------------------------------
  def reward_le_actor_size(kind)
    case kind
    when 0
      return @task["Reward"]["Level_Plus"].size
    when 1
      return @task["Reward"]["Exp_Plus"].size
    end
  end
  #----------------------------------------------------------------------
  # * 获取任务奖赏道具数量
  #     kind:0为道具;1为武器;2为防具.
  #----------------------------------------------------------------------
  def reward_item_amount(kind,index)
    case kind
    when 0
      return @task["Reward"]["Item"][index][1]
    when 1
      return @task["Reward"]["Weapon"][index][1]
    when 2
      return @task["Reward"]["Armor"][index][1]
    end
  end
  #----------------------------------------------------------------------
  # * 获取任务等级
  #----------------------------------------------------------------------
  def level
    return @task["Level"]
  end
  #----------------------------------------------------------------------
  # * 获取描述任务等级用语
  #----------------------------------------------------------------------
  def level_word
    return Vocab::Task_Level_Word[@task["Level"]]
  end
  #----------------------------------------------------------------------
  # * 获取可否放弃标识
  #----------------------------------------------------------------------
  def can_abandonment?
    return @task["Can Abandonment?"]
  end
  #----------------------------------------------------------------------
  # * 获取可否放弃文字
  #----------------------------------------------------------------------
  def can_abandonment_word
    if @task["Can Abandonment?"] == true
      return Vocab::Task_Can_Abandonment_Word[0]
    else return Vocab::Task_Can_Abandonment_Word[1]
    end
  end
end

#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  這個類用來操控主角隊伍,包含了隊伍所攜資金和物品等資訊。
#  這個類的實例被全域變數 $game_party 所引用。
#==============================================================================

class Game_Party < Game_Unit
  attr_reader  :accepted_task
  def initialize
    super
    @gold = 100
    @steps = 0
    @last_item_id = 0
    @last_actor_index = 0
    @last_target_index = 0
    @actors = []      # 隊員類型 (主角編號)
    @items = {}       # 所攜物品 HASH 表 (物品編號)
    @weapons = {}     # 所攜武器 HASH 表 (武器編號)
    @armors = {}      # 所攜護具 HASH 表 (護具編號)
    @accepted_task = []
    @task_status = []
  end
  def accept_task(id)
    @accepted_task.push(Game_Task.new(id))
    @task_status[id] = false
  end
  def delete_task(task)
    @accepted_task.delete(task)
    @task_status[id] = nil
  end
  def completed_task(id)
    delete_task(Game_Task.new(id))
    for item in 0...@accepted_task[id].reward_size(0)
      gain_item(@accepted_task[id].reward(0, item),@accepted_task[id].reward_item_amount(0,item))
    end
    for item in 0...@accepted_task[id].reward_size(1)
      gain_item(@accepted_task[id].reward(1, item),@accepted_task[id].reward_item_amount(1,item))
    end
    for item in 0...@accepted_task[id].reward_size(2)
      gain_item(@accepted_task[id].reward(2, item),@accepted_task[id].reward_item_amount(2,item))
    end
    for index in 0...@accepted_task[id].reward_le_actor_size(0)
      if @accepted_task[id].reward_le_actor(0, index) == nil
        next
      end
      @accepted_task[id].reward_le_actor(0, index).change_level(@accepted_task[id].reward(5, index), true)
    end
    for index in 0...@accepted_task[id].reward_le_actor_size(1)
      if @accepted_task[id].reward_le_actor(1, index) == nil
        next
      end
      @accepted_task[id].reward_le_actor(1, index).change_exp(@accepted_task[id].reward(4, index), true)
    end
    gain_gold(@accepted_task[id].reward(3))
    @task_status[id] = true
  end
  def task_status(id)
    return @task_status[id]
  end
  def accepted_task?(id)
    if @task_status[id] == true or @task_status[id] == false
      return true
    else return false
    end
  end
  def completed_task?(id)
    if @task_stutas[id] == true
      return true
    else return false
    end
  end
end

#============================================================================
# ** Window_TaskHelp
#============================================================================
class Window_TaskHelp < Window_Base
  attr_accessor :paga
  def initialize(id, paga=0)
    super(160, 20, 384, 376)
    @paga = paga
    refresh(id)
  end
  def refresh(id)
    dw = self.width - 32
    dh = self.height - 32
    task = Game_Task.new(id)
    self.contents.clear
    if @paga == 0 # 描绘第一页
      draw_icon(task.icon_index, 0, 0)
      self.contents.draw_text(28, 0, dw, 24, task.name)
      self.contents.draw_text(0, 24, dw, 24, Vocab::Task_Difficulty)
      w = self.contents.text_size(Vocab::Task_Difficulty).width
      self.contents.draw_text(w, 24, dw, 24, task.level_word)
      self.contents.draw_text(28, 0, dw-28, 24, task.can_abandonment_word, 2)
      chenge_special_character(task.caption.clone, 0, 48)
    elsif @paga == 1 # 描绘第二页
      #-描绘表格-------------------------------------------------------------
      # 边框
      draw_straight_filament(0, 0, dw, 0, 1, DOS::Task_Filament_Color)
      draw_straight_filament(0, 0, 0, dh, 1, DOS::Task_Filament_Color)
      draw_straight_filament(0, 27, dw, 27, 1, DOS::Task_Filament_Color)
      draw_straight_filament(0, dh-1, dw/2, dh-1, 1, DOS::Task_Filament_Color)
      draw_straight_filament(dw/2+2, dh-5, dw-1, dh-5, 1, DOS::Task_Filament_Color)
      draw_straight_filament(dw-1, 0, dw-1, dh-4, 1, DOS::Task_Filament_Color)
      # 中线
      draw_straight_filament(dw/2-1, 27, dw/2-1, dh, 1, DOS::Task_Filament_Color)
      draw_straight_filament(dw/2+1, 27, dw/2+1, dh-4, 1, DOS::Task_Filament_Color)
      # 队伍成员分割线
      h = (dh-27-1)/4
      draw_straight_filament(0, h*1+27, dw/2-1, h*1+27, 1, DOS::Task_Filament_Color)
      draw_straight_filament(0, h*2+27, dw/2-1, h*2+27, 1, DOS::Task_Filament_Color)
      draw_straight_filament(0, h*3+27, dw/2-1, h*3+27, 1, DOS::Task_Filament_Color)
      draw_straight_filament(0, h*4+27, dw/2-1, h*4+27, 1, DOS::Task_Filament_Color)
      # 头像分割线
      draw_straight_filament(79, 27, 79, dh, 1, DOS::Task_Filament_Color)
      # 描绘成员奖励分割线
      draw_straight_filament(79, (h-h/2)*1+27, dw/2-1, (h-h/2)*1+27, 1, DOS::Task_Filament_Color)
      draw_straight_filament(79, (h-h/2)+h+27, dw/2-1, (h-h/2)+h+27, 1, DOS::Task_Filament_Color)
      draw_straight_filament(79, (h-h/2)+h*2+27, dw/2-1, (h-h/2)+h*2+27, 1, DOS::Task_Filament_Color)
      draw_straight_filament(79, (h-h/2)+h*3+27, dw/2-1, (h-h/2)+h*3+27, 1, DOS::Task_Filament_Color)
      # 描绘奖励分割线
      a = (dw-28)/24
      for i in 0...a
        draw_straight_filament(dw/2+2, 24*i+27, dw-1, 24*i+27, 1, DOS::Task_Filament_Color)
      end
      #-结束描绘-------------------------------------------------------------
      #-描绘内容-------------------------------------------------------------
      # 描绘标题
      self.contents.draw_text(1, 1, dw-1, 24, "奖赏表", 1)
      # 描绘头像等
      for i in 0...$game_party.members.size
        draw_actor_face($game_party.members, 1, h*i+28, h-1)
        self.contents.font.size = 20
        self.contents.draw_text(1, 1+h*i+27, 96, 24, $game_party.members.name)
        self.contents.font.size = 18
        self.contents.draw_text(81,1+h*i+27, dw/2-81, 24,"奖励#{Vocab.level}:")
        self.contents.draw_text(81,1+h*i+27+h/2, dw/2-81, 24,"奖励经验:")
        if task.reward(4, i) != nil
          self.contents.draw_text(81,1+h*i+27+h/4, dw/2-82, 24, task.reward(4, i), 2)
          else self.contents.draw_text(81,1+h*i+27+h/4, dw/2-82, 24, "无", 2)
        end
        if task.reward(5, i) != nil
          self.contents.draw_text(81,1+h*i+27+h/4+h/2, dw/2-82, 24, task.reward(5, i), 2)
          else self.contents.draw_text(81,1+h*i+27+h/4+h/2, dw/2-82, 24, "无", 2)
        end
      end
      self.contents.font.size = 20
      x = dw/2+1
      # 描绘金钱奖励
      draw_icon(DOS::Task_Gold_Icon_Index, x, 26)
      self.contents.draw_text(x+25, 26, dw/2-1, 24,"金币:#{task.reward(3, 0)}#{Vocab.gold}")
      y = 26+24
      # 描绘道具奖励
      for i in 0...task.reward_size(0)
        draw_icon(task.reward(0, i).icon_index, x, y+i*24)
        self.contents.draw_text(x+25, y+i*24, dw/2-1, 24,"#{task.reward(0, i).name}*#{task.reward_item_amount(0, i)}")
      end
      y = 26 + 24 + task.reward_size(0)*24
      # 描绘武器奖励
      for i in 0...task.reward_size(1)
        draw_icon(task.reward(1, i).icon_index, x, y+i*24)
        self.contents.draw_text(x+25, y+i*24, dw/2-1, 24,"#{task.reward(1, i).name}*#{task.reward_item_amount(1, i)}")
      end
      y = 26 + 24 + task.reward_size(0)*24 + task.reward_size(1)*24
      # 描绘防具奖励
      for i in 0...task.reward_size(2)
        draw_icon(task.reward(2, i).icon_index, x, y+i*24)
        self.contents.draw_text(x+25, y+i*24, dw/2-1, 24,"#{task.reward(2, i).name}*#{task.reward_item_amount(2, i)}")
      end
      #-结束描绘-------------------------------------------------------------
    end
  end
end

#=============================================================================
# ** Scene_Task
#=============================================================================
class Scene_Task < Scene_Base
  #---------------------------------------------------------------------------
  # * 初始化变量
  #---------------------------------------------------------------------------
  def initialize(return_scene, index=0)
    @index = index
    @return_scene = return_scene
  end
  #---------------------------------------------------------------------------
  # * 开始处理
  #---------------------------------------------------------------------------
  def start
    create_menu_background
    @th = Window_TaskHelp.new($game_party.accepted_task[0].id)
    @paga = @th.paga
    tn = []
    for i in 0...$game_party.accepted_task.size
      tn = $game_party.accepted_task.name
    end
    @hc = Window_Command.new(160, tn)
    @hc.y = 20
    @hc.height = 376
    @hc.index = @index
    @query = Window_Base.new(40, 152, 464, 56)
    a = sprintf(Vocab::Task_Adandonment_Query, $game_party.accepted_task[0].name)
    @query.contents.font.color = DOS::Task_Query_Word_Color
    @query.contents.draw_text(0, 0, 432, 24, a, 1)
    @query.contents.font.color = Color.new(0, 0, 0)
    @qc = Window_Command.new(160, ["          是", "          否"])
    @qc.x = 192
    @qc.y = 208
    @query.visible = false
    @qc.visible = false
    @qc.active = false
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(384, 24)
    @sprite.bitmap.draw_text(0, 0, 384, 24, Vocab::Task_Change_Page[@paga], 1)
    @sprite.x = 0
    @sprite.y = 416-24
  end
  #--------------------------------------------------------------------------
  # * 结束处理
  #--------------------------------------------------------------------------
  def terminate
    dispose_menu_background
    @hc.dispose
    @th.dispose
    @query.dispose
    @qc.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # * 更新帧
  #--------------------------------------------------------------------------
  def update
    @sprite.update
    @sprite.x + 10 if @sprite.x != 160
    @hc.update
    @th.update
    update_input
    if @hc.index != @index
      @th.refresh($game_party.accepted_task[@hc.index].id)
      @index = @hc.index
    end
    @query.update
    if @query.active == true
      @qc.update
    end
    if @paga != @th.paga
      @sprite.bitmap.clear
      @sprite.bitmap.draw_text(0, 0, 384, 24, Vocab::Task_Change_Page[@th.paga], 1)
      @sprite.x = 0
      @paga = @th.paga
    end
  end
  #--------------------------------------------------------------------------
  # * 刷新按键
  #--------------------------------------------------------------------------
  def update_input
    if Input.trigger?(Input::B)
      if @hc.active == true
        Sound.play_cancel
        $scene = @return_scene
      elsif @query.visible == true
        Sound.play_cancel
        @hc.active = true
        @query.visible = false
        @qc.visible = false
        @qc.active = false
      end
    elsif Input.trigger?(DOS::Task_Abandonment_Task_Input)
      if @hc.active == true
        if $game_party.accepted_task[@hc.index].can_abandonment? == true
          Sound.play_decision
          a = sprintf(Vocab::Task_Adandonment_Query, $game_party.accepted_task[@hc.index].name)
          @query.contents.clear
          @query.contents.font.color = DOS::Task_Query_Word_Color
          @query.contents.draw_text(0, 0, 432, 24, a, 1)
          @query.contents.font.color = Color.new(0, 0, 0)
          @query.visible = true
          @qc.visible = true
          @qc.active = true
          @hc.active = false
        else Sound.play_buzzer
          @query.contents.clear
          a = sprintf(Vocab::Task_Can_Not_Abandonment, $game_party.accepted_task[@hc.index].name)
          @query.contents.font.color = DOS::Task_Query_Word_Color
          @query.contents.draw_text(0, 0, 432, 24, a, 1)
          @query.contents.font.color = Color.new(0, 0, 0)
          @query.visible = true
          @hc.active = false
        end
      end
    elsif Input.trigger?(Input::C)
      if @qc.visible == true
        if @qc.index == 0
          Sound.play_decision
          @query.contents.clear
          a = sprintf(Vocab::Task_Abandonment, $game_party.accepted_task[@hc.index].name)
          @query.contents.font.color = DOS::Task_Query_Word_Color
          @query.contents.draw_text(0, 0, 432, 24, a, 1)
          @query.contents.font.color = Color.new(0, 0, 0)
          @qc.visible = false
          @query.visible = true
          $game_party.delete_task($game_party.accepted_task[@hc.index])
          Graphics.wait(40)
          $scene = Scene_Task.new(@return_scene)
        else @hc.active = true
          Sound.play_cancel
          @query.visible = false
          @qc.visible = false
          @qc.active = false
        end
      end
    elsif Input.trigger?(DOS::Task_Left_Change_Page)
      if @th.paga == 1
        @th.paga = 0
        @th.refresh($game_party.accepted_task[@hc.index].id)
      end
    elsif Input.trigger?(DOS::Task_Right_Change_Page)
      if @th.paga == 0
        @th.paga = 1
        @th.refresh($game_party.accepted_task[@hc.index].id)
      end
    end
  end
end

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  這個類用來操控地圖,包含了地圖滾動設置和通行度判定等資訊。
#  這個類的實例被全域變數 $game_map 所引用。
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # * 宣告執行個體變數
  #--------------------------------------------------------------------------
  attr_accessor :task_id
  attr_reader :ts_visible
  attr_reader :task_word
  alias old_ini initialize
  def initialize
    old_ini
    @task_word = ""
    @ts_visible = false
    @task_id = 0
  end
  def visible_task_status
    if @ts_visible == false
      @ts_visible = true
    else @ts_visible = false
    end
  end
  def set_task_word(kind)
    case kind
    when 0               # 接受了任务
      @task_word = Vocab::Task_Accept
    when 1               # 完成了任务
      @task_word = Vocab::Task_Complete
    when 2               # 任务失败了
      @task_word = Vocab::Task_Fail
    when 3               # 放弃了任务
      @task_word = Vocab::Task_Abandonment
    when 4               # 无法放弃任务
      @task_word = Vocab::Task_Can_Not_Abandonment
    when 5               # 已接受了任务
      @task_word = Vocab::Task_Accepted
    when 6               # 未接受任务
      @task_word = Vocab::Task_No_Accept
    when nil
      @task_word = nil
    end
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  這個類用來執行顯示地圖場景畫面的程式。
#==============================================================================

class Scene_Map < Scene_Base
  alias old_sta start
  alias old_upd update
  alias old_ter terminate
  def start
    old_sta
    @ts = Window_Base.new(40, 152, 464, 56)
    @ts.visible = false
  end
  def terminate
    old_ter
    @ts.dispose
  end
  def update
    old_upd
    if $game_map.ts_visible == true
      @ts.contents.clear
      tw = sprintf($game_map.task_word, Game_Task.new($game_map.task_id).name)
      @ts.contents.draw_text(28, 0, 408, 24, tw)
      @ts.draw_icon(Game_Task.new($game_map.task_id).icon_index, 0, 0)
      @ts.visible = true
      Graphics.wait(40)
      $game_map.visible_task_status
      @ts.visible = false
    end
  end
end

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  這個類是用來執行事件指令的直譯器。
#  這個類作為 Game_Map、Game_Troop 和 Game_Event 的內部類使用。
#==============================================================================

class Game_Interpreter
  def accept_task(id, enforcement=false)
    if $game_party.accepted_task?(id) == false or enforcement == true
      $game_party.accept_task(id)
      visible_ts(id, 0)
    else
      visible_ts(id, 5)
    end
  end
  def complete_task(id)
    if $game_party.accepted_task?(id) == false
      $game_party.completed_task(id)
      visible_ts(id, 1)
    elsif $game_party.accepted_task?(id) == nil
      visible_ts(id, 6) if DOS::Task_No_Accept == 0
    end
  end
  def fail_task(id)
    if $game_party.accepted_task?(id) == false
      $game_party.delete_task(Game_Task.new(id))
      visible_ts(id, 2)
    elsif $game_party.accepted_task?(id) == nil
      visible_ts(id, 6) if DOS::Task_No_Accept == 0
    end
  end
  def abandonment_task(id)
    if $game_party.accepted_task?(id) == false
      $game_party.delete_task(Game_Task.new(id))
      visible_ts(id, 3)
    elsif $game_party.accepted_task?(id) == nil
      visible_ts(id, 6) if DOS::Task_No_Accept == 0
    end
  end
  def visible_ts(id, kind)
    $game_map.task_id = id
    $game_map.set_task_word(kind)
    $game_map.visible_task_status
  end
end

class Window_Base < Window
  #--------------------------------------------------------------------------
  # * 描绘直线 by 945127391
  # begin_x : 直线开始的x坐标
  # begin_y : 直线开始的y坐标
  # end_x   : 直线结束的x坐标
  # end_y   : 直线结束的y坐标
  # color   : 直线的颜色
  # width   : 直线的宽度(厚度)
  #--------------------------------------------------------------------------
  def draw_straight_filament(begin_x, begin_y, end_x, end_y, width, color)
    if begin_x == end_x
      bitmap = Bitmap.new(width, end_y-begin_y)
    elsif begin_y == end_y
      bitmap = Bitmap.new(end_x-begin_x, width)
    else return
    end
    bitmap.fill_rect(0, 0, bitmap.width, bitmap.height, color)
    rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.contents.blt(begin_x, begin_y, bitmap, rect)
    bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # * 描绘自动换行文字 by 叶子
  #                    修改 945127391
  #--------------------------------------------------------------------------
   def chenge_special_character(text, x=0, y=0)
    # 记录换行时y坐标最小加值
    min_y = 0
    while ((c = text.slice!(/./m)) != nil)
      # 另起一行文字的情况下
      if c == "\n"
        y += [WLH, min_y].max
        min_y = 0
        x = 0
        # 下面的文字
        next
      end
      # 自动换行处理
      if x + self.contents.text_size(c).width > self.contents.width
        y += [WLH, min_y].max
        min_y = 0
        x = 0
      end
      # 描绘文字
      self.contents.draw_text(4 + x, y, 40, WLH, c)
      # x 为要描绘文字的加法运算
      x += self.contents.text_size(c).width
    end
  end
end
这是另一个,第二个是任务脚本吧...第一个就不知道有没有什么关联,我想问下各路神仙知不知道这2个脚本怎样用,最好有截图教我下,谢谢。




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