collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: hellMinors Anti-Lag; Update nur pro Eventpage  (Gelesen 836 mal)

Offline Franky

  • Blutiger Fortgeschrittener
  • Eventmeister
  • ***
  • Beiträge: 390
hellMinors Anti-Lag; Update nur pro Eventpage
« am: November 19, 2011, 21:49:33 »
Hey, ich brauche dringend ein kleines Update für das Anti-Lag-Script:
Bisher wird das gesamte Event, welches "update" genannt wurde, dauerhaft geupdatet.
Was ich benötige ist: Ein update, welches sich z.B. nur auf Eventpage 3 bezieht. Sobald Seite 3 aktiv ist, wird diese geupdatet, ist nun Seite 4 aktiv, wird diese nicht geupdatet, bzw. nur in der Nähe.

Ich kann leider kein anderes Script verwenden, da es sonst zu massig Fehlern kommen wird.

Alles was ich brauche ist also lediglich die Option, nur eine einzige Seite zu aktualisieren.
Dies kann z.B. über die Comment-Funktion erfolgen mittels "update page" (dies wird auf die zu updatende Seite gestellt), oder vlt. ist es auch möglich dies in den Eventnamen zu integrieren, indem man schreibt: "update(1,5,7)" (was bedeutet: Seite 1, 5 und 7 werden geupdatet, sobald sie aktiv sind, der Rest nicht).

Hier ist das Script, welches ich nutze (ein wenig modifiziert):

#==============================================================================
#  hellMinor's "Just Anti-Lag"
#  Version : beta v0.6
#  Created by : hellMinor
#  Do NOT redistribute without my permission
#==============================================================================
# Um ein Event immer zu updaten, nenn es einfach - update - und schon wird
# es permanent geupdatet
#==============================================================================
 ADJUST = 10    # Bestimmt wieviele Felder außerhalb des Bildes geupdatet werden
 FRAMESKIP = 2 # Wieviele Frames sollen vor dem neu zeichnen übergangen werden
 ALLOW_SCROLL_UPDATE_SWITCH_ID = 20# Switch, bei dem der Scroll jedes mal
                                   # geupdatet wird.
#==============================================================================
class Game_Map
#==============================================================================
  def update_events
    obere_schranke = @display_y/256 - $game_system.adjust
    untere_schranke = @display_y/256 + 13 + $game_system.adjust
    linke_schranke = @display_x/256 - $game_system.adjust
    rechte_schranke = @display_x/256 + 17 + $game_system.adjust
    for event in @events.values
      event_x = event.x
      event_y = event.y
      if event.name == "update"
        event.update
        next
      end
      event.update if event_x >= linke_schranke and event_x <= rechte_schranke and event_y >= obere_schranke and event_y <= untere_schranke
    end
    for common_event in @common_events.values
      common_event.update
    end
  end 
end
#==============================================================================
class Spriteset_Map
#==============================================================================
  alias create_viewports_just_antilag create_viewports
  alias update_old_update update unless $@
  def create_viewports
    @skip = 0
    create_viewports_just_antilag
  end
 
  def update
    if @skip <= 0
      @skip = FRAMESKIP
      update_old_update
    else
      if $game_switches[ALLOW_SCROLL_UPDATE_SWITCH_ID]
        update_tilemap
      end
      screen_x = $game_map.display_x/256
      screen_y = $game_map.display_y/256
      for sprite in @character_sprites
        sprite_x = sprite.character.x
        sprite_y = sprite.character.y
        if sprite_x > (screen_x - $game_system.adjust) and sprite_x < (screen_x + 17 + $game_system.adjust) and sprite_y > (screen_y - $game_system.adjust) and sprite_y < (screen_y + 13 + $game_system.adjust) && sprite.animation?
          sprite.update
        end
      end
    end
    @skip -= 1
  end
 
  def update_characters
    screen_x = $game_map.display_x/256
    screen_y = $game_map.display_y/256
    for sprite in @character_sprites
      sprite_x = sprite.character.x
      sprite_y = sprite.character.y
      if sprite_x > (screen_x - $game_system.adjust) and sprite_x < (screen_x + 17 + $game_system.adjust) and sprite_y > (screen_y - $game_system.adjust) and sprite_y < (screen_y + 13 + $game_system.adjust)
        sprite.update
      end
    end
    for ally in @allies_sprites.compact
      if ally.character.destroy and !ally.disposed?
        ally.dispose
        $game_allies.delete(ally.character)
        @allies_sprites.delete(ally)
      elsif !ally.disposed?
        ally.update if $game_map.in_range?(ally.character)
      end
    end
    for monster in @monsters_sprites.compact
      if monster.character.destroy and !monster.character.respawn and !monster.disposed?
        monster.dispose
        $game_monsters.delete(monster.character)
        @monsters_sprites.delete(monster)
      elsif !monster.disposed?
        monster.update if $game_map.in_range?(monster.character)
      end
    end
    for range in @range_sprites.compact
      if range.character.destroy and !range.disposed?
        range.dispose
        $game_range.delete(range.character)
        @range_sprites.delete(range)
      elsif !range.disposed?
        range.update if $game_map.in_range?(range.character)
      end
    end
    for drop in @drop_sprites.compact
      if drop.character.destroy and !drop.disposed?
        drop.update
        drop.character.character_name = ""
        unless drop.animation?
          drop.dispose
          $game_drop.delete(drop.character)
          $game_bomb.delete(drop.character)
          @drop_sprites.delete(drop)
        end
      elsif !drop.disposed?
        drop.update if $game_map.in_range?(drop.character)
      end
    end
    for ally in $game_allies.compact
      next if ally.draw
      @allies_sprites.push(Sprite_Character.new(@viewport1, ally))
      @weapon_sprites.push(Sprite_Weapon.new(@viewport1, ally))
      @shield_sprites.push(Sprite_Shield.new(@viewport1 ,ally))
      ally.draw = true
    end
    for range in $game_range.compact
      next unless $game_map.in_range?(range)
      next if range.draw
      @range_sprites.push(Sprite_Character.new(@viewport1, range))
      range.draw = true
    end
    for drop in $game_drop.compact
      next unless $game_map.in_range?(drop)
      next if drop.draw
      @drop_sprites.push(Sprite_Drop.new(@viewport1, drop))
      drop.draw = true
    end
    for bomb in $game_bomb.compact
      next unless $game_map.in_range?(bomb)
      next if bomb.draw
      @drop_sprites.push(Sprite_Drop.new(@viewport1, bomb))
      bomb.draw = true
    end
    for weapon in @weapon_sprites.compact
      next unless $game_map.in_range?(weapon.character)
      weapon.update
    end
    for shield in @shield_sprites.compact
      next unless $game_map.in_range?(shield.character)
      shield.update
    end
    for shadow in @shadow_floor.compact
      next unless $game_map.in_range?(shadow.character)
      shadow.update
    end
  end
 
end
#==============================================================================
class Game_Event < Game_Character
  attr_reader   :name
  alias initialize_just_antilag initialize
  def initialize(map_id, event)
    initialize_just_antilag(map_id, event)
    @name = @event.name
  end
end
#============================================
class Game_System
attr_accessor :adjust
alias initialize_adjust initialize unless $@
 def initialize
  initialize_adjust
  @adjust = ADJUST
 end
end

Ich freue mich über jede Hilfe!

Re: hellMinors Anti-Lag; Update nur pro Eventpage

Offline Franky

  • Blutiger Fortgeschrittener
  • Eventmeister
  • ***
  • Beiträge: 390
Re: hellMinors Anti-Lag; Update nur pro Eventpage
« Antwort #1 am: Dezember 08, 2011, 13:48:22 »
Keiner, niemand...? Da ist doch jemand!

Re: hellMinors Anti-Lag; Update nur pro Eventpage

Offline Colonios

  • Maker Nerd
  • VX-Kenner
  • ****
  • Beiträge: 596
  • Events <3
Re: hellMinors Anti-Lag; Update nur pro Eventpage
« Antwort #2 am: Dezember 14, 2011, 11:15:42 »
Scriptbefehl:
event.update
Das müsste klappen, wenn du das ins Event als Scriptbefehl einfügst.

Edit: und einen Loop bzw. PP machen, sonst gehts auch nicht (glaub ich...).
« Letzte Änderung: Dezember 14, 2011, 11:18:22 von Colonios »

Re: hellMinors Anti-Lag; Update nur pro Eventpage

Offline Franky

  • Blutiger Fortgeschrittener
  • Eventmeister
  • ***
  • Beiträge: 390
Re: hellMinors Anti-Lag; Update nur pro Eventpage
« Antwort #3 am: Dezember 14, 2011, 12:03:47 »
Nun ja, er gibt den Fehler aus: undefined method for update.
Also wurde das noch gar nicht definiert.
Ich habe es als PP gemacht.

Ist es denn nicht leichter einen Comment dafür zu schreiben? (dasselbe gibt es auch im Vampyr SBABS, als Referenz)
Oder vielleicht ist auch die Methode möglich, im Eventnamen folgendes zu schreiben: update(1,3,5); also werden Seite 1, 3 und 5 geupdatet.

Ich bin da etwas skeptisch, was einen normalen Script-Befehl angeht, da dadurch nur einmalig das Anti-Lag-Script aufgerufen wird, oder nicht?

Aber ich kenne mich mit den Möglichkeiten nicht so aus, also nehme ich das, was mir angeboten wird! :grimace:

Re: hellMinors Anti-Lag; Update nur pro Eventpage

Offline Colonios

  • Maker Nerd
  • VX-Kenner
  • ****
  • Beiträge: 596
  • Events <3
Re: hellMinors Anti-Lag; Update nur pro Eventpage
« Antwort #4 am: Dezember 14, 2011, 13:04:44 »
Ah, schade, ich dachte es würde klappen...

Ich kann mal nach der Uni schaun, was ich machenn kann. Aber ich bin eigentlich genau so sein Script-Noob wie du ;)

Re: hellMinors Anti-Lag; Update nur pro Eventpage

Offline Franky

  • Blutiger Fortgeschrittener
  • Eventmeister
  • ***
  • Beiträge: 390
Re: hellMinors Anti-Lag; Update nur pro Eventpage
« Antwort #5 am: Dezember 14, 2011, 14:15:16 »
Danke xD!
Soll mich das aufheitern? :haha_zwinker:

Dann wünsche ich dir mal viel Glück!
Vielleicht komme ich ja auch noch auf ein paar Noob-Alternativen xD!

Re: hellMinors Anti-Lag; Update nur pro Eventpage

Offline Franky

  • Blutiger Fortgeschrittener
  • Eventmeister
  • ***
  • Beiträge: 390
Re: hellMinors Anti-Lag; Update nur pro Eventpage
« Antwort #6 am: Dezember 17, 2011, 10:22:26 »
Alles so weit gelöst: :haha_zwinker:
class Game_Event < Game_Character
 
  attr_reader  :always_update
 
  unless method_defined?(:refresh_ILC_alwaysUpdateSetPerEventPage)
    alias_method(:refresh_ILC_alwaysUpdateSetPerEventPage, :refresh)
  end
  def refresh
    last_page = @page
    refresh_ILC_alwaysUpdateSetPerEventPage
    if @page != last_page
      @always_update = @event.name == "update" ? true : (@list == nil) ? false :
            @list.any?{ |c| c.code == 108 and c.parameters[0] == "update page" }
    end
  end
end
 
#==============================================================================
class Game_Map
#==============================================================================
  def update_events
    s_oben = (@display_y >> 8) - $game_system.adjust
    s_unten = (@display_y >> 8) + (Graphics.height >> 5) + $game_system.adjust
    s_links = (@display_x >> 8) - $game_system.adjust
    s_rechts = (@display_x >> 8) + (Graphics.width >> 5) + $game_system.adjust
    @events.each_value do |event|
      if event.always_update or (event.x.between?(s_links, s_rechts) and
                                 event.y.between?(s_oben, s_unten))
        event.update
      end
    end
    @common_events.each_value do |common_event|
      common_event.update
    end
  end 
end

 


 Bild des Monats

rooftop party

Views: 3581
By: papilion

 Umfrage

  • Wer soll das BdM gewinnen?
  • Dot Kandidat 1
  • 3 (25%)
  • Dot Kandidat 2
  • 1 (8%)
  • Dot Kandidat 3
  • 2 (16%)
  • Dot Kandidat 4
  • 0 (0%)
  • Dot Kandidat 5
  • 6 (50%)
  • Stimmen insgesamt: 12
  • View Topic

 Schnellsuche





SimplePortal 2.3.3 © 2008-2010, SimplePortal