UltimaForum

Wsparcie [VX] - Skrypt na strzelanie

Aesen - Wto 24 Kwi, 2012 13:40
Temat postu: Skrypt na strzelanie
Witam mam ten skrypt
Spoiler:

Kod:
#==================================================================#
#  #*****************#             Throw and Hit events 1.0        #
#  #*** By Falcao ***#             Allow you throw events objects  #
#  #*****************#             like arrows rocks etc.          #
#         RMVX                                                     #
# makerpalace.onlinegoo.com                                        #
#==================================================================#

module Falcao
 
# Game Variable that represent the Weapon ID in an event page
# Use it like a page condition variable
WeaponVariable = 50

end

#------------------------------------------------------------------------
#pliki * Instructios
#
# Umieść skrypt nad main. Następnie umieścić następujące słowa w    Miejsce imprezy komentarze poleceń.
#
# * Komendy narzędzi
#
# Weapon X zamiast X umieścić ID broni, który reprezentuje obiekt
# Jeśli X broń jest wyposażony jesteś w stanie rzucić wydarzenie
#
# Element X Opcional. Zamiast X umieścić identyfikator elementu, że broń będzie
# Wydać. (Idealny do skrzyni łuków) działają tylko z Weapon X
#
# MULTIHIT Opcional.Obiekt zdarzenia HIT cel więcej niż jeden raz
# Idealne do stworzenia narzędzia, takie jak bumerangi itp.
#
# * Docelowa comands
#
# START Ten komentarz uczynić każde zdarzenie rozpocząć, gdy styka się
# Obiekt zdarzenia
#
# Uwaga: Można utworzyć wiele obiektu zdarzenia można Nees więc użyć skryptu
# mądrze
#Miejsce Podziękowania dla Falcao (Sorry zły angielski im Salwadoru)
#-------------------------------------------------------------------------


class Game_Map
  attr_accessor :event_ref
  alias falcaosetupevent_set setup
  def setup(map_id)
    falcaosetupevent_set(map_id)
    @event_ref = false
    actor = $game_party.members[0]
    var = Falcao::WeaponVariable
    $game_variables[var] = actor.weapon_id
    falref_events
  end
 
  alias falcaosetupevent_update update
  def update
    if @event_ref
      falref_events
    end
    falcaosetupevent_update
  end
 
  def falref_events
    for event in @events.values
      event.refresh
      if event.weaponid != nil
        event.transparent = true
        event.through = true
      end
    end
    @event_ref = false
  end
end

class Game_Event < Game_Character
  attr_reader     :weaponid
  attr_reader     :blanco
  attr_reader     :itemid
  attr_reader     :multihit
  attr_accessor   :through
  attr_accessor   :page
 
  alias falcaoHIT_ref refresh
 
  def refresh
    crear_ini
    falcaoHIT_ref
    crear_comments
  end
 
  def crear_ini
    @weaponid = nil
    @itemid = nil
    @blanco = false
    @multihit = false
  end
 
  def crear_comments
    if @page != nil
      for i in @page.list
        if i.code == 108 or i.code == 408
          if i.parameters[0].upcase[/WEAPON/] != nil
            @weaponid = i.parameters[0].split[1].to_i
          end
          if i.parameters[0].upcase[/START/] != nil
            @blanco = true
          end
          if i.parameters[0].upcase[/ITEM/] != nil
            @itemid = i.parameters[0].split[1].to_i
          end
          if i.parameters[0].upcase[/MULTIHIT/] != nil
            @multihit = true
          end
        end
      end
    end
  end
 
  def activar
    return if @list.size <= 1                   
    @starting = true
    lock if @trigger < 3
    $game_map.interpreter.setup_starting_event
  end
end

class Game_Player < Game_Character
  def forzar_movimiento
    for event in $game_map.events.values
      if event.semueve == true
        lista = event.move_route.list.size - 1
        event.move_route.skippable = true
        if lista == event.move_route_index and lista != 0
          event.semueve = false
          event.transparent = true
          event.moveto(0, 0)
          $game_system.menu_disabled = false
        end
        return unless movable?
        case Input.dir4
        when 2;  move_down
        when 4;  move_left
        when 6;  move_right
        when 8;  move_up
        end
      end
    end
  end
end

class Game_Character
  attr_accessor :direction
  attr_accessor :semueve
  attr_accessor :move_route_index
  attr_accessor :move_route
  attr_accessor :move_failed
  alias falcaopegatinas_ini initialize
  def initialize
    falcaopegatinas_ini
    @objeto_x = 0
    @objeto_y = 0
    @semueve = false
  end
 
  alias falcaopegatinas_update update
  def update
    falcaopegatinas_update
    update_objects
    update_fevents
    $game_player.forzar_movimiento
  end
   
  def update_objects
    for event in $game_map.events.values
      if event.weaponid != nil and event.semueve == true
        @objeto_x = event.x
        @objeto_y = event.y
      end
     
      if event.blanco == true
        if event.x == @objeto_x and event.y == @objeto_y
          event.activar
          clear_hit
        end
      end
    end
  end
 
  def clear_hit
    for event in $game_map.events.values
      if event.semueve == true
        return if event.multihit
        event.move_failed = true
        event.transparent = true
        event.moveto(0, 0)
      end
    end
  end
  #----
  def update_fevents
    for event in $game_map.events.values
      return if event.semueve == true
      if Input.trigger?(Input::X)
        actor = $game_party.members[0]
        if event.weaponid != nil
          if actor.weapons.include?($data_weapons[event.weaponid])
            if event.itemid != nil
              item = $data_items[event.itemid]
              if $game_party.item_quantity(item.id) > 0
                set_event(event.id)
                $game_party.lose_item($data_items[item.id], 1)
              else
                return
              end
            else
              set_event(event.id)
            end
          end
        end
      end
    end
  end
  #----------------
  def set_event(id)
    event = $game_map.events[id]
    event.transparent = false
    cx = $game_player.x
    cy = $game_player.y
    event.moveto(cx, cy)
    event.direction = $game_player.direction
    $game_system.menu_disabled = true
    for i in event.page.list
      if i.code == 205
        event.start
        event.semueve = true
      end
    end
  end
end

class Scene_Equip
  alias falcao_set_update update
  def update
    actor = $game_party.members[0]
    var = Falcao::WeaponVariable
    $game_variables[var] = actor.weapon_id
    if Input.trigger?(Input::B)
      $game_map.event_ref = true
    end
    falcao_set_update
  end
end

class Game_Party < Game_Unit
  def item_quantity(item_id)
    return @items.include?(item_id) ? @items[item_id] : 0
  end
end

class Weaponsadd < Window_Base
  def initialize(x,y)
    super(x, y, 70, 66)
    self.opacity = 150
    self.visible = false
    refresh
  end

  def refresh
    self.contents.clear
    self.contents.font.name = "Times New Roman"
    self.contents.font.size = 16
    self.contents.font.bold = true
    draw_weapons
  end
  def draw_weapons
    for event in $game_map.events.values
      actor = $game_party.members[0]
      if actor.weapon_id == event.weaponid
        weapon = $data_weapons[event.weaponid]
        draw_icon(weapon.icon_index,5, 0)
        if event.itemid != nil
          item = $data_items[event.itemid]
          number = $game_party.item_quantity(item.id)
          self.contents.draw_text(10, 4, 50, 50, number.to_s)
        end
      end
    end
  end
end

class Scene_Map
  alias falcaoadd_weapons_main main
  def main
    crear_ventana
    falcaoadd_weapons_main
    borrar_ventana
  end
  def crear_ventana
    @fweapons = Weaponsadd.new(475,0)
  end
  def borrar_ventana
    @fweapons.dispose
  end
  alias falcaoadd_weapons_update update
  def update
    for event in $game_map.events.values
      if event.itemid != nil
        actor = $game_party.members[0]
        if actor.weapon_id == event.weaponid
          @fweapons.visible = true
          @fweapons.refresh
        else
          @fweapons.visible = false
        end
      end
    end
    falcaoadd_weapons_update
  end
end
   


I chciałbym by ktoś mi pomógł zrobić potwora , który będzie mnie atakować a jak w niego strzele to żeby giną.



Tu link do oryginału : http://rmrk.net/index.php/topic,35287.0.html

MrCorniszon - Wto 24 Kwi, 2012 14:42

Może lepiej walkę w czasie rzeczywistym ? Wszystko już tam jest opisane :-P
Aesen - Czw 26 Kwi, 2012 21:12

Temat do zamknięcia. :-D
Abercjusz - Wto 01 Maj, 2012 10:49

MrCorniszon, walka w czasie rzeczyistym jest okropnie zbugowana.

Powered by phpBB modified by Przemo © 2003 phpBB Group