UltimaForum

Wsparcie [XP] - Dobry i prosty ABS

wito35 - Sro 26 Maj, 2010 19:11
Temat postu: Dobry i prosty ABS
Bardzo chciał bym poprosić o dobrego a zarazem łatwego ABS, wystarczy że będzie tylko atak bronią i skillami, nie musi mieć żadnych dodatkowych ulepszeni chociaż trochę by ich nie zaszkodziło :-D .Od razu dziękuję za pomoc.
tobik312 - Sro 26 Maj, 2010 19:19

Ten jest bardzo prosty:
Spoiler:

Kod:
class ABS

  def setup
    @enemies = []
    for event in $game_map.events.values
      for monster in $data_enemies.compact
        if event.event.name == monster.name
          @enemies.push(ABS_Enemy.new(monster, event))
          break
        end
      end
    end
    @cooldown = 0
  end

  def update
    for enemy in @enemies
      if ($game_player.abs_in_range?(enemy.event, 1) and @cooldown <= 0 and
          $game_player.abs_facing?(enemy.event) and Input.trigger?(Input::C))
        enemy.attack_effect($game_party.actors[0])
        enemy.engage
        $game_player.animation_id = $game_party.actors[0].animation1_id
        enemy.event.animation_id = $game_party.actors[0].animation2_id
        @cooldown = 20
        if enemy.dead?
          @enemies.delete(enemy)
          enemy.event.erase
        end
      end
      enemy.update
    end
    @cooldown -= 1 if @cooldown > 0
  end
end

class ABS_Enemy < Game_Enemy

  attr_reader :event

  def initialize(monster, event)
    abs_initialize
    @enemy_id = monster.id
    @hp = maxhp
    @sp = maxsp
    @monster = monster
    @event = event
    @cooldown = 0
  end

  def update
    if @engaged
      if (@event.abs_in_range?($game_player, 1) and @cooldown <= 0 and
          @event.abs_facing?($game_player) and not @event.moving?)
        $game_party.actors[0].attack_effect(self)
        $game_temp.gameover = $game_party.actors[0].dead?
        $game_map.events[@event.id].animation_id = animation1_id
        $game_player.animation_id = animation2_id
        @cooldown = 75
      end
    elsif (@event.abs_in_range?($game_player) and
           @event.abs_facing?($game_player))
      engage
    end
    @cooldown -= 1 if @cooldown > 0
  end
 
  def engage
    @engaged = true
    @event.move_type = 2
  end
end

$abs = ABS.new

class Scene_Map
  alias abs_update update
  def update
    abs_update
    $abs.update
  end
end

class Game_Map
  alias abs_setup setup
  def setup(map_id)
    abs_setup(map_id)
    $abs.setup
  end
end

class Game_Battler
  alias abs_initialize initialize
  def initialize
    abs_initialize
  end
end

class Game_Character

  attr_accessor :move_type, :move_frequency, :move_speed, :character_name
  attr_reader :event

  def abs_facing?(event)
    case self.direction
    when 2
      return true if event.y > self.y
    when 4
      return true if event.x < self.x
    when 6
      return true if event.x > self.x
    when 8
      return true if event.y < self.y
    end
    return false
  end

  def abs_in_range?(event, range = 5)
    x = (self.x - event.x).abs
    y = (self.y - event.y).abs
    return x + y <= range
  end
end


i żeby go używać musisz jako nazwę zdarzenia dać
nazwe potworka

wito35 - Sro 26 Maj, 2010 19:43

Wszystko jest fajnie tylko że potworek coś mnie nie chce atakować, a gdy ja go zaatakuję i uderzę dwa do trzech razy to ucieka i znika, nie wiem o co chodzi pomożesz :-/ ?

[ Dodano: Sro 26 Maj, 2010 20:45 ]
Ach i jak się używa skilli ?

tobik312 - Czw 27 Maj, 2010 13:41

wito35,
Mi wszystko działa
Ale może masz za słabe potworki

wito35 - Czw 27 Maj, 2010 14:16

Oki już mi wszystko działa, miałeś racje to wina potworków, a czy dało by się zrobić tak aby po każdym ataku wyświetlało się ile ty mu zabrałeś a ile on tobie i jak walczy się skilami ?


PS: Czemu mi one nie dają Expa, i czy da się zrobić tak aby za jakieś 50s powracały ?

poko67 - Czw 24 Cze, 2010 19:17

eeee może ja nie obeznany..?
ale jak go się wywołuje czy coś :shock:

Yoroiookami - Czw 24 Cze, 2010 19:19

wito35 - expa ustawiasz w bazie danych (przynajmniej zwykle tak się robi...)
A co do drugiego pytania to niestety nie znam odpowiedzi :lartarin:

wito35 - Pią 25 Cze, 2010 22:42

Poko tego skryptu się nie wywołuje powinien sam od razu działać przy najmniej tak było u mnie, jak by co to atakujesz spacją.
Żeby potwór działał to musisz go odpowiednio nazwać, czyli jak maż jakiegoś potworka o nazwie misiek uchatek to musisz to wpisać jako nazwa zdarzenia. Pamiętaj żeby nie dawać komendy walcz z misiek uchatek bo wtedy ci nie pójdzie musi być tylko zdarzenie i jego nazwa. J tyle. :-D

poko67 - Sob 26 Cze, 2010 05:19

Sprubuję... :-?

Powered by phpBB modified by Przemo © 2003 phpBB Group