Project1

标题: VX有ARPG战斗系统吗?? [打印本页]

作者: denitk    时间: 2013-1-31 12:11
标题: VX有ARPG战斗系统吗??
我弄到一个VX的ARPG战斗系统,但是我不知道怎么攻击怪,怪也不会攻击我
万分蛋疼哇
我吧那个系统的脚本发出来

第一段
RUBY 代码复制
  1. #===================================
  2.  
  3. # Vlad ABS
  4.  
  5. #===================================
  6.  
  7. #--------------------------------------------------------------
  8.  
  9. # Credits to Vlad
  10.  
  11. #--------------------------------------------------------------
  12.  
  13. # 創造一個敵人(事件),在事件中加上這些註釋:
  14.  
  15. # Enemy ID - 在數據庫中敵人的ID
  16.  
  17. # Die X - X為 1 / 2 ( 1:死後删除敵人   2:不死之身 )
  18.  
  19. # Follow - 設定是否跟隨敵人
  20.  
  21. #--------------------------------------------------------------
  22.  
  23. # 自定義項目
  24.  
  25. #--------------------------------------------------------------
  26.  
  27. #--------------------------------------------------------------
  28.  
  29. # 武器攻撃鍵, 不要改變 [正常對應鍵: A]
  30.  
  31. Attack_Button = Input::X
  32.  
  33. #--------------------------------------------------------------
  34.  
  35. # 技能攻撃鍵, 不要改變 [正常對應鍵: S]  <--也是技能畫面的技能記憶鍵
  36.  
  37. Skill_Button = {Input::Y => 0}
  38.  
  39. #--------------------------------------------------------------
  40.  
  41. # 升級動畫ID (對應數據庫) :
  42.  
  43. LevelUp_Ani = 40
  44.  
  45. #--------------------------------------------------------------
  46.  
  47. # 攻擊動畫, 複製 Enemy_atk_ani[2] = 13
  48.  
  49. # 修改敵人ID 2 , 還有動畫ID 13
  50.  
  51. # 範例:25敵人使用24動畫作攻擊動畫 Enemy_atk_ani[25] = 24
  52.  
  53. Enemy_atk_ani = {}
  54.  
  55. Enemy_atk_ani[2] = 8
  56.  
  57. #--------------------------------------------------------------
  58.  
  59.  
  60. #--------------------------------------------------------------
  61.  
  62. # Game Character
  63.  
  64. #--------------------------------------------------------------
  65.  
  66. class Game_Character
  67.  
  68.   attr_accessor :hp
  69.  
  70.   attr_accessor :mp
  71.  
  72.   attr_accessor :damage
  73.  
  74.   attr_accessor :critical
  75.  
  76.   attr_accessor :wait_ataque
  77.  
  78.   attr_accessor :die
  79.  
  80.   alias vlad_abs_gchar_initialize initialize
  81.  
  82.   def initialize
  83.  
  84.     @hp = 0
  85.  
  86.     @mp = 0
  87.  
  88.     @die = 0
  89.  
  90.     $skill_for_use = 0
  91.  
  92.     @wait_ataque = 0
  93.  
  94.     @damage = nil
  95.  
  96.     @critical = false
  97.  
  98.     vlad_abs_gchar_initialize
  99.  
  100.   end  
  101.  
  102.   def recebe_atk(attacker)
  103.  
  104.     attacker_status = (attacker.is_a?(Game_Event) ? attacker.enemy_status : $game_actors[1])
  105.  
  106.     receptor_status = (self.is_a?(Game_Event) ? self.enemy_status : $game_actors[1])
  107.  
  108.     self.damage = attacker_status.atk - receptor_status.def
  109.  
  110.     self.damage *= attacker_status.elements_max_rate(attacker_status.element_set)
  111.  
  112.     self.damage /= 100
  113.  
  114.     self.damage = 0 if self.damage < 0
  115.  
  116.     self.critical = (rand(100) < 4)
  117.  
  118.     self.damage *= 2 if self.critical
  119.  
  120.     if self.is_a?(Game_Player)
  121.  
  122.     $game_actors[1].hp -= self.damage
  123.  
  124.     if $game_actors[1].hp <= 0
  125.  
  126.       $scene = Scene_Gameover.new
  127.  
  128.     end
  129.  
  130.     elsif self.is_a?(Game_Event)
  131.  
  132.       self.hp -= self.damage
  133.  
  134.       if self.hp <= 0
  135.  
  136.         self.animation_id = 88
  137.  
  138.           $game_actors[1].gain_exp(enemy_status.exp, 1)
  139.  
  140.           if @die == 1
  141.  
  142.           self.erase
  143.  
  144.         elsif @die == 2
  145.  
  146.           key = [$game_map.map_id, self.id, "A"]
  147.  
  148.           $game_self_switches[key] = true
  149.  
  150.           end
  151.  
  152.           refresh
  153.  
  154.         end
  155.  
  156.     end
  157.  
  158.   end
  159.  
  160.    def recebe_skl(attacker)
  161.  
  162.      for key in Skill_Button.keys
  163.  
  164.     sklid = Skill_Button[key]
  165.  
  166.     attacker_status = (attacker.is_a?(Game_Event) ? attacker.enemy_status : $game_actors[1])
  167.  
  168.     receptor_status = (self.is_a?(Game_Event) ? self.enemy_status : $game_actors[1])
  169.  
  170.     self.damage = $data_skills[sklid].atk_f - receptor_status.def
  171.  
  172.     self.damage *= attacker_status.elements_max_rate(attacker_status.element_set)
  173.  
  174.     self.damage /= 100
  175.  
  176.     self.damage = 0 if self.damage < 0
  177.  
  178.     self.critical = (rand(100) < 4)
  179.  
  180.     self.damage *= 2 if self.critical
  181.  
  182.     attacker_status.mp -= $data_skills[sklid].mp_cost
  183.  
  184.     if self.is_a?(Game_Player)
  185.  
  186.     $game_actors[1].hp -= self.damage
  187.  
  188.     $scene = Scene_Gameover.new if $game_actors[1].hp <= 0
  189.  
  190.     elsif self.is_a?(Game_Event)
  191.  
  192.       self.hp -= self.damage
  193.  
  194.       if self.hp <= 0
  195.  
  196.           $game_actors[1].gain_exp(enemy_status.exp, 1)
  197.  
  198.           if @die == 1
  199.  
  200.           self.erase
  201.  
  202.         elsif @die == 2
  203.  
  204.           key = [$game_map.map_id, self.id, "A"]
  205.  
  206.           $game_self_switches[key] = true
  207.  
  208.           end
  209.  
  210.           refresh
  211.  
  212.         end
  213.  
  214.     end
  215.  
  216.   end
  217.  
  218. end
  219.  
  220.   def follow_hero(dx, dy)
  221.  
  222.         sx = @x - dx
  223.  
  224.         sy = @y - dy
  225.  
  226.         if sx == 0 and sy == 0
  227.  
  228.           return
  229.  
  230.         end
  231.  
  232.         abs_sx = sx.abs
  233.  
  234.         abs_sy = sy.abs
  235.  
  236.         if abs_sx == 0
  237.  
  238.           sy > 0 ? move_up : move_down
  239.  
  240.           if not moving? and sx != 0
  241.  
  242.             sx > 0 ? move_left : move_right
  243.  
  244.           end
  245.  
  246.           return
  247.  
  248.         elsif abs_sy == 0
  249.  
  250.           sx > 0 ? move_left : move_right
  251.  
  252.           if not moving? and sy != 0
  253.  
  254.             sy > 0 ? move_up : move_down
  255.  
  256.           end
  257.  
  258.           return
  259.  
  260.         end
  261.  
  262.         if abs_sx == abs_sy
  263.  
  264.           rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  265.  
  266.         end
  267.  
  268.         if abs_sx > abs_sy
  269.  
  270.           sx > 0 ? move_left : move_right
  271.  
  272.           if not moving? and sy != 0
  273.  
  274.             sy > 0 ? move_up : move_down
  275.  
  276.           end
  277.  
  278.         else
  279.  
  280.           sy > 0 ? move_up : move_down
  281.  
  282.           if not moving? and sx != 0
  283.  
  284.             sx > 0 ? move_left : move_right
  285.  
  286.           end
  287.  
  288.         end
  289.  
  290.       end
  291.  
  292.       def raio(dx, dy)
  293.  
  294.         ax = (@x - dx) ** 2
  295.  
  296.         ay = (@y - dy) ** 2
  297.  
  298.         return Math.sqrt(ax + ay)
  299.  
  300.       end
  301.  
  302. end
  303.  
  304.  
  305. #--------------------------------------------------------------
  306.  
  307. # Game Event
  308.  
  309. #--------------------------------------------------------------
  310.  
  311. class Game_Event < Game_Character
  312.  
  313.   attr_reader :inimigo
  314.  
  315.   attr_reader :enemy_status
  316.  
  317.   alias vlad_abs_gevent_initialize initialize
  318.  
  319.   alias vlad_abs_gevent_update update
  320.  
  321.   alias vlad_abs_gevent_refresh refresh
  322.  
  323.   def initialize(map_id, event)
  324.  
  325.     @inimigo = false
  326.  
  327.     @automove = false
  328.  
  329.     vlad_abs_gevent_initialize(map_id, event)
  330.  
  331.   end
  332.  
  333.   def check_com(comentario)
  334.  
  335.     return false if @list.nil? or @list.size <= 0
  336.     for item in @list
  337.  
  338.       if item.code == 108 or item.code == 408
  339.  
  340.         if item.parameters[0].downcase.include?(comentario.downcase)
  341.  
  342.           return true
  343.  
  344.         end
  345.  
  346.       end
  347.  
  348.     end
  349.  
  350.   end
  351.  
  352.   def check_comment(comentario)
  353.  
  354.     com = comentario.downcase
  355.  
  356.     return 0 if @list.nil? or @list.size <= 0
  357.     for item in @list
  358.  
  359.       if item.code == 108 or item.code == 408
  360.  
  361.         if item.parameters[0].downcase =~ /#{com}[ ]?(\d+)?/
  362.  
  363.           return $1.to_i
  364.  
  365.         end
  366.  
  367.       end
  368.  
  369.     end
  370.  
  371.     return 0
  372.  
  373.   end
  374.  
  375.   def update
  376.  
  377.     vlad_abs_gevent_update
  378.  
  379.     if @inimigo
  380.  
  381.       new_x = (@x + (@direction == 4 ? -1 : @direction == 6 ? 1 : 0))
  382.  
  383.       new_y = (@y + (@direction == 8 ? -1 : @direction == 2 ? 1 : 0))
  384.  
  385.       if self.wait_ataque > 0
  386.  
  387.         self.wait_ataque -= 1
  388.  
  389.       elsif $game_player.x == new_x and $game_player.y == new_y
  390.  
  391.          $game_player.recebe_atk(self)
  392.  
  393.          $game_player.animation_id = self.enemy_atk_animation_id
  394.  
  395.          $game_player.jump(0,0)
  396.  
  397.         self.wait_ataque = 60
  398.  
  399.       end
  400.  
  401.     end
  402.  
  403.      if @automove
  404.  
  405.           unless moving?
  406.  
  407.             self.follow_hero($game_player.x, $game_player.y)
  408.  
  409.           end
  410.  
  411.         end
  412.  
  413.   end
  414.  
  415.   def refresh
  416.  
  417.     vlad_abs_gevent_refresh
  418.  
  419.     @inimigo = false
  420.  
  421.     @enemy_id = check_comment("Enemy")
  422.  
  423.     @automove = true if check_com("Follow") == true
  424.  
  425.     @die = check_comment("Die")
  426.  
  427.     if @enemy_id > 0
  428.  
  429.       @inimigo = true
  430.  
  431.       @enemy_status = Game_Enemy.new(@enemy_id, @enemy_id)
  432.  
  433.             self.hp = @enemy_status.maxhp
  434.  
  435.             self.mp = @enemy_status.maxmp
  436.  
  437.     end
  438.  
  439.   end
  440.  
  441.   def enemy_atk_animation_id
  442.  
  443.     if Enemy_atk_ani[@enemy_id]
  444.  
  445.     return (@enemy_status.nil? ? 0 : Enemy_atk_ani[@enemy_id])
  446.  
  447.   else
  448.  
  449.     return (@enemy_status.nil? ? 0 : 1)
  450.  
  451.   end
  452.  
  453.   end
  454.  
  455.   def Enemy_atk_ani
  456.  
  457.     return Enemy_atk_ani
  458.  
  459.   end
  460.  
  461. end
  462.  
  463.  
  464. #--------------------------------------------------------------
  465.  
  466. # Game Player
  467.  
  468. #--------------------------------------------------------------
  469.  
  470. class Game_Player < Game_Character
  471.  
  472.   alias vlad_abs_gplayer_update update
  473.  
  474.   alias vlad_abs_gplayer_refresh refresh
  475.  
  476.   def update
  477.  
  478.     vlad_abs_gplayer_update
  479.  
  480.     if self.wait_ataque > 0
  481.  
  482.       self.wait_ataque -= 1
  483.  
  484.     end
  485.  
  486.   def refresh
  487.  
  488.     vlad_abs_gplayer_refresh
  489.  
  490.     self.hp = $game_actors[1].hp
  491.  
  492.     self.mp = $game_actors[1].mp
  493.  
  494.   end
  495.  
  496.     if Input.trigger?(Attack_Button) and self.wait_ataque <= 0
  497.  
  498.       new_x = (@x + ($game_player.direction == 4 ? -1 : $game_player.direction == 6 ? 1 : 0))
  499.  
  500.       new_y = (@y + ($game_player.direction == 8 ? -1 : $game_player.direction == 2 ? 1 : 0))
  501.  
  502.       for event in $game_map.events.values
  503.  
  504.         if event.inimigo
  505.  
  506.           if event.x == new_x and event.y == new_y
  507.  
  508.             event.recebe_atk(self)
  509.  
  510.             event.animation_id = self.player_atk_animation_id
  511.  
  512.             event.jump(0,0)
  513.  
  514.             self.wait_ataque = 30
  515.  
  516.             break
  517.  
  518.           end
  519.  
  520.         end
  521.  
  522.       end
  523.  
  524.     end
  525.  
  526.     for key in Skill_Button.keys
  527.  
  528.     if Input.trigger?(key) and Skill_Button[key] != nil and Skill_Button[key] != 0 and $game_actors[1].mp >= $data_skills[Skill_Button[key]].mp_cost and self.wait_ataque <= 0
  529.  
  530.       new_x = (@x + ($game_player.direction == 4 ? -1 : $game_player.direction == 6 ? 1 : 0))
  531.  
  532.       new_y = (@y + ($game_player.direction == 8 ? -1 : $game_player.direction == 2 ? 1 : 0))
  533.  
  534.       for event in $game_map.events.values
  535.  
  536.         if event.inimigo
  537.  
  538.           if event.x == new_x and event.y == new_y
  539.  
  540.             event.recebe_skl(self)
  541.  
  542.             event.animation_id = self.player_skl_animation_id
  543.  
  544.             event.jump(0,0)
  545.  
  546.             self.wait_ataque = 60
  547.  
  548.             break
  549.  
  550.           end
  551.  
  552.         end
  553.  
  554.       end
  555.  
  556.     end
  557.  
  558.     end
  559.  
  560.     def player_atk_animation_id
  561.  
  562.     return ($game_actors[1].nil? ? 0 : $game_actors[1].atk_animation_id)
  563.  
  564.   end
  565.  
  566.   def player_skl_animation_id
  567.  
  568.     for key in Skill_Button.keys
  569.  
  570.       sklid = Skill_Button[key]
  571.  
  572.     return ($game_actors[1].nil? ? 0 : $data_skills[sklid].animation_id)
  573.  
  574.     end
  575.  
  576.   end
  577.  
  578.     def Attack_Button
  579.  
  580.     return Attack_Button
  581.  
  582.   end
  583.  
  584.   def Skill_Button
  585.  
  586.     return Skill_Button
  587.  
  588.   end
  589.  
  590.   end
  591.  
  592. end
  593.  
  594.  
  595. #--------------------------------------------------------------
  596.  
  597. # Game Actor
  598.  
  599. #--------------------------------------------------------------
  600.  
  601. class Game_Actor
  602.  
  603.   alias vlad_abs_change_exp change_exp
  604.  
  605.   def change_exp(exp, show)
  606.  
  607.     last_level = @level
  608.  
  609.     last_skills = skills
  610.  
  611.     [url=home.php?mod=space&uid=13302]@exp[/url] = [[exp, 9999999].min, 0].max
  612.  
  613.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  614.  
  615.       level_up
  616.  
  617.     end
  618.  
  619.     while @exp < @exp_list[@level]
  620.  
  621.       level_down
  622.  
  623.     end
  624.  
  625.     @hp = [@hp, maxhp].min
  626.  
  627.     @mp = [@mp, maxmp].min
  628.  
  629.     if show and [url=home.php?mod=space&uid=22147]@level[/url] > last_level
  630.  
  631.       show_level_up
  632.  
  633.     end
  634.  
  635.     vlad_abs_change_exp(exp,show)
  636.  
  637.   end
  638.  
  639.   def show_level_up
  640.  
  641.     $game_player.animation_id = LevelUp_Ani
  642.  
  643.     $game_actors[1].hp = $game_actors[1].maxhp
  644.  
  645.     $game_actors[1].mp = $game_actors[1].maxmp
  646.  
  647.   end
  648.  
  649.   def LevelUp_Ani
  650.  
  651.     return LevelUp_Ani
  652.  
  653.   end
  654.  
  655. end
  656.  
  657.  
  658. #--------------------------------------------------------------
  659.  
  660. # Sprite Base
  661.  
  662. #--------------------------------------------------------------
  663.  
  664.   class Sprite_Base
  665.   alias animation animation_set_sprites
  666.  
  667. def animation_set_sprites(frame)
  668.  
  669.     cell_data = frame.cell_data
  670.  
  671.     for i in 0..15
  672.  
  673.       sprite = @animation_sprites[i]
  674.  
  675.       next if sprite == nil
  676.  
  677.       pattern = cell_data[i, 0]
  678.  
  679.       if pattern == nil or pattern == -1
  680.  
  681.         sprite.visible = false
  682.  
  683.         next
  684.  
  685.       end
  686.  
  687.       if pattern < 100
  688.  
  689.         sprite.bitmap = @animation_bitmap1
  690.  
  691.       else
  692.  
  693.         sprite.bitmap = @animation_bitmap2
  694.  
  695.       end
  696.  
  697.       sprite.visible = true
  698.  
  699.       sprite.src_rect.set(pattern % 5 * 192,
  700.  
  701.         pattern % 100 / 5 * 192, 192, 192)
  702.  
  703.       if @animation_mirror
  704.  
  705.         sprite.x = @animation_ox - cell_data[i, 1] / 2
  706.  
  707.         sprite.y = @animation_oy - cell_data[i, 2] / 2
  708.  
  709.         sprite.angle = (360 - cell_data[i, 4])
  710.  
  711.         sprite.mirror = (cell_data[i, 5] == 0)
  712.  
  713.       else
  714.  
  715.         sprite.x = @animation_ox + cell_data[i, 1] / 2
  716.  
  717.         sprite.y = @animation_oy + cell_data[i, 2] / 2
  718.  
  719.         sprite.angle = cell_data[i, 4]
  720.  
  721.         sprite.mirror = (cell_data[i, 5] == 1)
  722.  
  723.       end
  724.  
  725.       sprite.z = self.z + 300
  726.  
  727.       sprite.ox = 96
  728.  
  729.       sprite.oy = 96
  730.  
  731.       sprite.zoom_x = cell_data[i, 3] / 200.0
  732.  
  733.       sprite.zoom_y = cell_data[i, 3] / 200.0
  734.  
  735.       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  736.  
  737.       sprite.blend_type = cell_data[i, 7]
  738.  
  739.     end
  740.  
  741.   end
  742.  
  743. end
  744.  
  745. #--------------------------------------------------------------
  746.  
  747. # Sprite Character
  748.  
  749. #--------------------------------------------------------------
  750.  
  751. class Sprite_Character < Sprite_Base
  752.  
  753.   alias vlad_abs_spchar_update update
  754.  
  755.   def initialize(viewport, character = nil)
  756.  
  757.     super(viewport)
  758.  
  759.     @character = character
  760.  
  761.     @balloon_duration = 0
  762.  
  763.     @_damage_duration = 0
  764.  
  765.     update
  766.  
  767.   end
  768.  
  769.   def update
  770.  
  771.     super
  772.  
  773.     if @_damage_duration > 0
  774.  
  775.       @_damage_duration -=1
  776.  
  777.         @_damage_sprite.x = self.x
  778.  
  779.         if @_damage_duration <= 0
  780.  
  781.           dispose_damage
  782.  
  783.         end
  784.  
  785.       end
  786.  
  787.       if @character != nil and @character.damage != nil
  788.  
  789.       damage(@character.damage, @character.critical)
  790.  
  791.       @character.damage = nil
  792.  
  793.       @character.critical = false
  794.  
  795.     end
  796.  
  797.     vlad_abs_spchar_update
  798.  
  799.   end
  800.  
  801. def damage(value, critical)
  802.  
  803.       dispose_damage
  804.  
  805.       if value.is_a?(Numeric)
  806.  
  807.         damage_string = value.abs.to_s
  808.  
  809.       else
  810.  
  811.         damage_string = value.to_s
  812.  
  813.       end
  814.  
  815.       bitmap = Bitmap.new(160, 48)
  816.  
  817.       bitmap.font.name = "Georgia"
  818.  
  819.       bitmap.font.size = 20
  820.  
  821.       bitmap.font.italic = true
  822.  
  823.       if value.is_a?(Numeric) and value <= 0
  824.  
  825.         bitmap.font.color.set(0, 0, 0)
  826.  
  827.         bitmap.draw_text(1, 13, 160, 36, "Fallo", 1)
  828.  
  829.         bitmap.font.color.set(255, 245, 155)
  830.  
  831.         bitmap.draw_text(0, 12, 160, 36, "Fallo", 1)
  832.  
  833.       else
  834.  
  835.         bitmap.font.color.set(0, 0, 0)
  836.  
  837.         bitmap.draw_text(1, 13, 160, 36, damage_string, 1)
  838.  
  839.         bitmap.font.color.set(255, 255, 255)
  840.  
  841.         bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  842.  
  843.       end
  844.  
  845.       if critical
  846.  
  847.         bitmap.font.color.set(0, 0, 0)
  848.  
  849.         bitmap.draw_text(1, 6, 160, 20, "Critical", 1)
  850.  
  851.         bitmap.font.color.set(255, 245, 155)
  852.  
  853.         bitmap.draw_text(0, 5, 160, 20, "Critical", 1)
  854.  
  855.       end
  856.  
  857.       @_damage_sprite = ::Sprite.new(self.viewport)
  858.  
  859.       @_damage_sprite.bitmap = bitmap
  860.  
  861.       @_damage_sprite.ox = 80
  862.  
  863.       @_damage_sprite.oy = 20
  864.  
  865.       @_damage_sprite.x = self.x
  866.  
  867.       @_damage_sprite.y = self.y - self.oy / 2 - 40
  868.  
  869.       @_damage_sprite.z += 99999
  870.  
  871.       @_damage_duration = 30
  872.  
  873.     end
  874.  
  875.     def show_text(string, size=16, color=0)
  876.  
  877.       dispose_damage
  878.  
  879.       damage_string = string
  880.  
  881.       if string.is_a?(Array)
  882.  
  883.         array = true
  884.  
  885.       else
  886.  
  887.         array = false
  888.  
  889.       end
  890.  
  891.       bitmap = Bitmap.new(160, 48)
  892.  
  893.       bitmap.font.name = "Georgia"
  894.  
  895.       bitmap.font.size = size
  896.  
  897.       bitmap.font.italic = true
  898.  
  899.       if array
  900.  
  901.         for i in 0..string.size
  902.  
  903.           next if damage_string[i] == nil
  904.  
  905.           bitmap.font.color.set(96, 96-20, 0) if color == 0
  906.  
  907.           bitmap.font.color.set(0, 0, 0) if color != 0
  908.           bitmap.draw_text(-1, (12+(16*i)-1)-16, 160, 36, damage_string[i], 1)
  909.  
  910.           bitmap.draw_text(+1, (12+(16*i)-1)-16, 160, 36, damage_string[i], 1)
  911.  
  912.           bitmap.draw_text(-1, (12+(16*i)+1)-16, 160, 36, damage_string[i], 1)
  913.  
  914.           bitmap.draw_text(+1, (12+(16*i)+1)-16, 160, 36, damage_string[i], 1)
  915.  
  916.           bitmap.font.color.set(255, 245, 155) if color == 0
  917.  
  918.           bitmap.font.color.set(144, 199, 150) if color == 1
  919.  
  920.           bitmap.font.color.set(197, 147, 190)if color == 2
  921.  
  922.           bitmap.font.color.set(138, 204, 198)if color == 3
  923.  
  924.           bitmap.draw_text(0, (12+(16*i))-16, 160, 36, damage_string[i], 1)
  925.  
  926.         end
  927.  
  928.       else
  929.  
  930.         bitmap.font.color.set(96, 96-20, 0) if color == 0
  931.  
  932.         bitmap.font.color.set(0, 0, 0) if color != 0
  933.         bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  934.  
  935.         bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  936.  
  937.         bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  938.  
  939.         bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  940.  
  941.         bitmap.font.color.set(255, 245, 155) if color == 0
  942.  
  943.         bitmap.font.color.set(144, 199, 150) if color == 1
  944.  
  945.         bitmap.font.color.set(197, 147, 190)if color == 2
  946.  
  947.         bitmap.font.color.set(138, 204, 198)if color == 3
  948.  
  949.         bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  950.  
  951.       end
  952.  
  953.       @_damage_sprite = ::Sprite.new(self.viewport)
  954.  
  955.       @_damage_sprite.bitmap = bitmap
  956.  
  957.       @_damage_sprite.ox = 80
  958.  
  959.       @_damage_sprite.oy = 20
  960.  
  961.       @_damage_sprite.x = self.x
  962.  
  963.       @_damage_sprite.y = self.y - self.oy / 2
  964.  
  965.       @_damage_sprite.z = 3000
  966.  
  967.       @_damage_duration = 30
  968.  
  969.     end
  970.     def dispose_damage
  971.  
  972.     if @_damage_sprite != nil
  973.  
  974.       @_damage_sprite.dispose
  975.  
  976.       @_damage_sprite = nil
  977.  
  978.     end
  979.  
  980.   end
  981.  
  982. end
  983.  
  984.  
  985.  
  986. #--------------------------------------------------------------
  987.  
  988. # Window Skill
  989.  
  990. #--------------------------------------------------------------
  991.  
  992. class Scene_Skill
  993.  
  994.   alias vlad_abs_sskill_initialize initialize
  995.  
  996.   alias vlad_abs_sskill_update update
  997.  
  998.   def initialize(actor_index = 0, equip_index = 0)
  999.  
  1000.     [url=home.php?mod=space&uid=25505]@memory[/url] = Window_Command.new(150, ["確 定 S 鍵 技 能"])
  1001.  
  1002.     @memory.active = false
  1003.  
  1004.     @memory.visible = false
  1005.  
  1006.     @memory.x = (544 - @memory.width) / 2
  1007.  
  1008.     @memory.y = (416 - @memory.height) / 2
  1009.  
  1010.     @memory.z = 1500
  1011.  
  1012.     vlad_abs_sskill_initialize
  1013.  
  1014.   end
  1015.  
  1016. def update
  1017.  
  1018.   update_skill
  1019.  
  1020.   @memory.update if @memory.active
  1021.  
  1022.   return update_memory if @memory.active
  1023.  
  1024.   vlad_abs_sskill_update
  1025.  
  1026. end
  1027.  
  1028. def update_skill
  1029.  
  1030.   for key in Skill_Button.keys
  1031.  
  1032.   if Input.trigger?(key)
  1033.  
  1034.   Sound.play_decision
  1035.  
  1036.   Skill_Button[key] = @skill_window.skill.id
  1037.  
  1038.   @memory.active = @memory.visible = true
  1039.  
  1040.   @skill_window.active = false
  1041.  
  1042. end
  1043.  
  1044. end
  1045.  
  1046. end
  1047.  
  1048.   def update_memory
  1049.  
  1050. if Input.trigger?(Input::C)
  1051.  
  1052.   Sound.play_decision
  1053.  
  1054.   @memory.active = @memory.visible = false
  1055.  
  1056.   @skill_window.active = true
  1057.  
  1058. end
  1059.  
  1060. end
  1061.  
  1062.   def Skill_Button
  1063.  
  1064.     return Skill_Button
  1065.  
  1066.   end
  1067.  
  1068. end
  1069.  
  1070.  
  1071. #--------------------------------------------------------------
  1072.  
  1073. # FINISH
  1074.  
  1075. #--------------------------------------------------------------



这个是HUD的
RUBY 代码复制
  1. #=============================================================================
  2.  
  3. # Window Hud
  4.  
  5. #=============================================================================
  6.  
  7.  
  8. class Window_Hud < Window_Base
  9.  
  10.   def initialize
  11.  
  12.     super(0,0,128,96)
  13.  
  14.     self.opacity = 0
  15.  
  16. #    self.visible = false
  17.  
  18.     refresh
  19.  
  20.   end
  21.  
  22.   def refresh
  23.  
  24.     self.contents.clear
  25.  
  26.       actor = $game_actors[1]
  27.  
  28.       draw_actor_hp(actor, 0, 0, 96)
  29.  
  30.       draw_actor_mp(actor, 0, 32, 96)
  31.  
  32.    end
  33.  
  34.    def update
  35.  
  36. #     self.visible = true if $game_switches[1] == true # 1=interruptor que activa y desactiva el HUD
  37.  
  38.      refresh
  39.  
  40.    end
  41.  
  42. end
  43.  
  44.  
  45. class Scene_Map
  46.  
  47.   alias hud_main main
  48.  
  49.   alias hud_update update
  50.  
  51.   alias hud_terminate terminate
  52.  
  53.   def main
  54.  
  55.     @hud = Window_Hud.new
  56.  
  57.     hud_main
  58.  
  59.   end
  60.  
  61.   def update
  62.  
  63.     @hud.update
  64.  
  65.     hud_update
  66.  
  67.   end
  68.  
  69.   def terminate
  70.  
  71.     @hud.dispose
  72.  
  73.   end
  74.  
  75. end

作者: 945127391    时间: 2013-1-31 15:49
乃不如找XAS= =
作者: qqlayueyu    时间: 2013-1-31 18:39
XAS中文站里面...
XAS要比这灵活多了-c-
作者: denitk    时间: 2013-1-31 19:08
XAS又是神马东西
作者: qqlayueyu    时间: 2013-2-1 10:35
恢复楼上
按我们ra2mod制作者来说
XAS无疑是rpg制作大师系列的一个MOD(模型.拓展版.番外版)
挺适合做-x-   ARPG的,,,
而且里面脚本都是自带的     
有XAS中文站的-x-   
不过技能稍微难点吧0x0
倒是用过XP版的
看了下VX版本,发现更加灵活-x-




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