collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: hellMinor's Simple Day and Night Script  (Gelesen 10152 mal)

Ly

  • Gast
hellMinor's Simple Day and Night Script
« Antwort #90 am: Juni 15, 2008, 00:04:06 »
Huhu erstmal danke für das tolle Skript!!!

Allerdings muss ich leider sagen dass mir ein Fehler aufgefallen ist. Er tritt auf wenn man statt des framebasierten Tag-/Nachtwechsel den mit den Schritten verwendet. Welchselt der Screen auf Tag, kommt er davon nicht mehr weg.^^ Ich glaube dafür den Grund gefunden zu haben:
def change?
    if $count >= $maxsteps
      if $day
        doDusk
      end
      if $dusk
        doNight
      end
      if $night
        doDawn
      end
      if $dawn
        doDay
      end
    end
  end
Der Fehler dürfte so Zustande kommen:
$day = true also wird doDusk ausgeführt, durch doDusk wird $dusk true gesetzt. Dann wird die nächste Bedingung überprüft: $dusk = true also wird doNight ausgeführt, wodurch $night = true gesetzt wird, etc. etc.

Im Grunde genommen fängt man bei Tag an und hört bei Tag auf, da jede Bedingung überprüft wird ohne abzubrechen. Der Effekt ist, dass bei jedem 200. Schritt bei Tag der Bildschirm zwar etwas ruckelt beim laufen aber an der Tageszeit ändert sich nichts. Mein Lösungsvorschlag wäre folgender:
def change?
    if $count >= $maxsteps
      if $day
        doDusk
      else if $dusk
        doNight
      else if $night
        doDawn
      else
        doDay
      end
   end
end
Ich muss aber leider sagen, dass ich seitdem ich das ausprobiert habe, immer einen merkwürdigen Syntaxfehler bekomme, in der Zeile in der module Cache steht. Erklären kann ich mir das nicht weil ich da absolut nichts verändert habe. O_O
Vielleicht weißt du ja eine Antwort^^ Ich kenn mich zwar ein wenig mit Ruby aus aber die Rubyskriptsprache ist ja dann doch noch etwas anders^^

hellMinor's Simple Day and Night Script

Ly

  • Gast
hellMinor's Simple Day and Night Script
« Antwort #91 am: Juni 15, 2008, 00:17:23 »
Ah ich hab's nun^^

  def change?
    if $count >= $maxsteps
      if $day
        doDusk
      else
        if $dusk
          doNight
        else
          if $night
            doDawn
          else
            doDay
          end
        end
      end
    end
  end

hellMinor's Simple Day and Night Script

chaosBlender

  • Gast
hellMinor's Simple Day and Night Script
« Antwort #92 am: Juni 15, 2008, 07:25:00 »
Hab jetz einfach mal den Code von oben bissi angenehmer für die Augen gemacht. ^^
@Ly: else if funktioniert bei Ruby nicht, dort heißt der Befehl "elsif". :)

  def change?
     if $count >= $maxsteps
       if $day
         doDusk
       elsif $dusk
         doNight
       elsif $night
         doDawn
       else
         doDay
       end
    end

hellMinor's Simple Day and Night Script

Ly

  • Gast
hellMinor's Simple Day and Night Script
« Antwort #93 am: Juni 15, 2008, 12:21:31 »
Thx, gut zu wissen^^

Naja nächstes Mal kann ich's schöner schreiben, meine Hässlich-Version tut's auch erstmal  :lol:

Oder ich änder das doch weil das mit den vielen Ends is doch etwas unübersichtlich  blink.gif\" style=\"vertical-align:middle\" emoid=\":blink:

Re: hellMinor's Simple Day and Night Script

Offline PD

  • Mr. MACK-Tile
  • ***
  • Beiträge: 277
    • Nocturn Offiziell (Youtube-Kanal)
Re: hellMinor's Simple Day and Night Script
« Antwort #94 am: Juli 04, 2008, 23:44:49 »
is n echt gutes script ;)
« Letzte Änderung: Juli 04, 2008, 23:46:29 von Nocturn »

Re: hellMinor's Simple Day and Night Script

Offline Evil95

  • Aktuelles Projekt: Demon - Beginning of Chaos VX
  • Mr. MACK-Tile
  • ***
  • Beiträge: 289
    • http://demonvx-online.de.vu
Re: hellMinor's Simple Day and Night Script
« Antwort #95 am: Juli 15, 2008, 19:51:48 »
ich hab nen prob. also das spiel startet nachts. wechselt dann zu morgen und danach zu tag. dann zu dämmerung und schließlich wieder zu nacht. aba ab dann bleibt es nacht. ich habe mal das "$dayandnight.getTime" benutzt und fest gestellt, dass es nach 4 min trotzdem weiter läuft. es müsste doch aber theoretisch bei mir wieder von null anfangen wenn es bei 4 angekommen ist oder?
hier das script so wie es bei mir derzeit drin is:
Spoiler for Hiden:
#==============================================================================
#  Simple Day and Night Script
#
#  Version : 1.12 - 15.05.08
#  Created by : hellMinor
#  Do NOT redistribute without my permission
#  Description : A simple script which tones the screen to emulate a day and
#                night system on the basis of your footsteps or a time system.
#
#==============================================================================
#===============================================================================
# Map-Detection F.A.Q.
#===============================================================================
# Wenn du auf einer interior/indoor karte bist, wo meistens keine tag und nacht
# effekte zu sehen sind packt einfach [int] vor den kartennamen.
# Das script sofort auf tag schalten wenn man eine solche karte betritt und alle
# screen tone effekte die dieses script verursachen würde werden ignoriert
#
# Während ihr auf einer interior karte seit wird die zeit weiterlaufen und sobald
# ihr die karte wieder verlasst wird auf die korrekte tageszeit umgeschaltet
#==============================================================================
# Nightslights F.A.Q.
#==============================================================================
# Erstellt ein Verzeichnis namens Nightlights in eurem Graphics - Verzeichnis und tut
# ein Bild mit dem selben namen und der selbe größe wie ihre Map hinein.
# Das Bild wird auf Exterior Maps eingeblended wenn es nacht wird und ausgeblended
# wenn es tag wird.
# Auf Interior und Dark-Interior Maps wird das Bild direkt angezeigt ohne Fader
#===============================================================================
# Get-Time F.A.Q.
#===============================================================================
# Wenn man die genaue Zeit braucht kann man dieses in ein Callscript packen
# um die genaue Uhrzeit zu bekommen :
# $game_variables[0001] = $dayandnight.getTime
# um die genaue Stunde zu bekommen :
# $game_variables[0001] = $dayandnight.getHour
# um die genaue Minute zu bekommen :
# $game_variables[0001] = $dayandnight.getMinute
#
# $game_variables[0001] entspricht der variable 0001 in eurer Datenbank.
# Wenn ihr eine andere variable benutzen wollt ändert das 0001 einfach in etwas >5000
#
#===============================================================================
# Main config
#------------------------------------------------------------------------------
  PIC_FORMAT = "png" # Format für die Nachtlichter
  $timesystem = 1       # Entscheidet welches System läuft
                        # 0 = Schritt-System
                        # 1 = Zeit-System
  $fadingtime = 4       # Entscheidet wie schnell der Screen-Tone einsetzt (in sekunden)
#------------------------------------------------------------------------------
  $dusktone = Tone.new(-68, -51, -9, 25)    # Dusk-Screen-Tone
  $nighttone = Tone.new(-136, -102, -17, 51)  # Night-Screen-Tone
  $dawntone = Tone.new(-20, -51, -68, 0)      # Dawn-Screen-Tone
  $daytone = Tone.new(0, 0, 0, 0)             # Day-Screen-Tone
#------------------------------------------------------------------------------
# Timesystem config
#------------------------------------------------------------------------------
  $starting_time = "night"  # Bestimmt die Startphase
                          # "day" für tag ,"dusk" für dämmerung
                          # "dawn" für sonnenaufgang und "night" für nacht
                          # Anmerkung : Der standardwert ist "night";
                          # ALLE anderen berechnungen mit dem Graphics.frame_counter
                          # werden hier von beeinflusst.
                          # Für die Speicherzeit liegt bereits ein hotfix bei
  $divider = 1          # Entscheidet wie schnell das Zeit-System läuft
                        # z.b. 2 = 2 mal so schnell (30 sekunden = 1 stunde)
                        # z.b. 0,5 = 2 mal so langsam (2 minuten = 1 stunde)
  $dusktime =   1       # schaltet auf sonnenaufgang bei $dusktime
  $daytime =    2       # schaltet auf tag bei $daytime
  $dawntime =   3      # schaltet auf sonnenuntergang bei $dawntime
  $nighttime =  4      # schaltet auf nacht bei $nighttime
#------------------------------------------------------------------------------
# Footstep config
#------------------------------------------------------------------------------
  $count = 0            # Zähler der Schritte
  $maxsteps = 200       # Wieviele Schritte zwischen den Phasen sind
#------------------------------------------------------------------------------
# boolean checks
#------------------------------------------------------------------------------
  $day = false           # Checker if its day
  $dusk = false          # Checker if its dusk
  $dawn = false          # Checker if its dawn
  $night = true          # Checker if its night
#==============================================================================
class DayAndNight < Game_Screen
#==============================================================================
  def change?
    if $count >= $maxsteps
      if $day
        doDusk
      end
      if $dusk
        doNight
      end
      if $night
        doDawn
      end
      if $dawn
        doDay
      end
    end
  end
#------------------------------------------------------------------------------
  def doNight
    if $dayandnight.exterior?
      $game_map.screen.start_tone_change($nighttone,$fadingtime*60)
    end
    $count = 0
    $day = false
    $dusk = false
    $dawn = false
    $night = true
  end
#------------------------------------------------------------------------------
  def doDay
    if $dayandnight.exterior?
      $game_map.screen.start_tone_change($daytone,$fadingtime*60)
    end
    $count = 0
    $day = true
    $night = false
    $dawn = false
    $dusk = false
  end
#------------------------------------------------------------------------------
  def doDawn
    if $dayandnight.exterior?
      $game_map.screen.start_tone_change($dawntone,$fadingtime*60)
    end
    $count = 0
    $day = false
    $night = false
    $dusk = false
    $dawn = true
  end
#------------------------------------------------------------------------------
  def doDusk
    if $dayandnight.exterior?
      $game_map.screen.start_tone_change($dusktone,$fadingtime*60)
    end
    $count = 0
    $day = false
    $night = false
    $dusk = true
    $dawn = false
  end
#------------------------------------------------------------------------------
  def updateclock
    clocktime = Graphics.frame_count / (Graphics.frame_rate/$divider)
    hour = clocktime / 60 % 24
    minutes = clocktime % 60
    if hour == $dawntime && minutes == 0
      doDawn
    end
    if hour == $daytime && minutes == 0
      doDay
    end
    if hour == $dusktime && minutes == 0
      doDusk
    end
    if hour == $nighttime && minutes == 0
      doNight
    end
  end
#------------------------------------------------------------------------------
  def interior?
    if($game_map.name.index("[int]") != nil)
      return true
    end
  end
#------------------------------------------------------------------------------
  def exterior?
    if($game_map.name.index("[int]") == nil &&
      $game_map.name.index("[dint]") == nil)
      return true
    end
  end
#------------------------------------------------------------------------------
  def dark_interior?
    if($game_map.name.index("[dint]") != nil)
      return true
    end
  end
#------------------------------------------------------------------------------
  def get_state_tone
    if $dawn
      return $dawntone
    end
    if $day
      return $daytone
    end
    if $dusk
      return $dusktone
    end
    if $night
      return $nighttone
    end
  end
#------------------------------------------------------------------------------
  def getTime
    clocktime = Graphics.frame_count / (Graphics.frame_rate/$divider)
    hour = clocktime / 60 % 24
    minutes = clocktime % 60
    return hour.to_s+":"+minutes.to_s
  end
#------------------------------------------------------------------------------
  def getHour
    clocktime = Graphics.frame_count / (Graphics.frame_rate/$divider)
    hour = clocktime / 60 % 24
    return hour
  end
#------------------------------------------------------------------------------
  def getMinute
    clocktime = Graphics.frame_count / (Graphics.frame_rate/$divider)
    minutes = clocktime % 60
    return minutes
  end
#------------------------------------------------------------------------------
  def show_mapname
  end
 
end
#==============================================================================
module Cache
#==============================================================================
  def self.nightlights(filename)
    load_bitmap("graphics/nightlights/", filename)
  end
 
end
#==============================================================================
class Game_Character
#==============================================================================
  def increase_steps
    @stop_count = 0
    if $timesystem == 0
      $count += 1
      $dayandnight.change?
    end
    update_bush_depth
  end
 
end
#==============================================================================
class Game_Map
#==============================================================================
  alias initialize_dayandnnight_adds initialize
  def initialize
    initialize_dayandnnight_adds
    $dayandnight = DayAndNight.new
  end

  def setup(map_id)
    @map_id = map_id
    @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
    @display_x = 0
    @display_y = 0
    @passages = $data_system.passages
    referesh_vehicles
    setup_events
    setup_scroll
    setup_parallax
    setup_nightlights
    @need_refresh = false
  end
#------------------------------------------------------------------------------
  def setup_nightlights
    @nightlights_mapname = $game_map.name
    @nightlights_loop_x = 0
    @nightlights_loop_y = 0
    @nightlights_sx = 0
    @nightlights_sy = 0
    @nightlights_x = 0
    @nightlights_y = 0
  end
#------------------------------------------------------------------------------
  def update
    refresh if $game_map.need_refresh
    update_scroll
    update_events
    update_vehicles
    update_parallax
    if $timesystem == 1
      update_nightlights
      $dayandnight.updateclock
    end
    @screen.update
  end
#------------------------------------------------------------------------------
  def update_nightlights
    @nightlights_x += @nightlights_sx * 4 if @nightlights_loop_x
    @nightlights_y += @nightlights_sy * 4 if @nightlights_loop_y
  end
#------------------------------------------------------------------------------
  alias set_display_pos_adds set_display_pos
  def set_display_pos(x, y)
    set_display_pos_adds(x,y)
    @nightlights_x = x
    @nightlights_y = y
  end
#------------------------------------------------------------------------------
  def calc_nightlights_x(bitmap)
    if bitmap == nil
      return 0
    else
      w1 = bitmap.width - 544
      w2 = @map.width * 32 - 544
      if w1 <= 0 or w2 <= 0
        return 0
      else
        return @nightlights_x * w1 / w2 / 8
      end
    end
  end
#------------------------------------------------------------------------------
  def calc_nightlights_y(bitmap)
    if bitmap == nil
      return 0
    else
      h1 = bitmap.height - 416
      h2 = @map.height * 32 - 416
      if h1 <= 0 or h2 <= 0
        return 0
      else
        return @nightlights_y * h1 / h2 / 8
      end
    end
  end
#------------------------------------------------------------------------------
  def scroll_down(distance)
    if loop_vertical?
      @display_y += distance
      @display_y %= @map.height * 256
      @parallax_y += distance
      @nightlights_y += distance
    else
      last_y = @display_y
      @display_y = [@display_y + distance, (height - 13) * 256].min
      @parallax_y += @display_y - last_y
      @nightlights_y += @display_y - last_y
    end
  end
#------------------------------------------------------------------------------
  def scroll_left(distance)
    if loop_horizontal?
      @display_x += @map.width * 256 - distance
      @display_x %= @map.width * 256
      @parallax_x -= distance
      @nightlights_x -= distance
    else
      last_x = @display_x
      @display_x = [@display_x - distance, 0].max
      @parallax_x += @display_x - last_x
      @nightlights_x += @display_x - last_x
    end
  end
#------------------------------------------------------------------------------
  def scroll_right(distance)
    if loop_horizontal?
      @display_x += distance
      @display_x %= @map.width * 256
      @parallax_x += distance
      @nightlights_x += distance
    else
      last_x = @display_x
      @display_x = [@display_x + distance, (width - 17) * 256].min
      @parallax_x += @display_x - last_x
      @nightlights_x += @display_x - last_x
    end
  end
#------------------------------------------------------------------------------
  def scroll_up(distance)
    if loop_vertical?
      @display_y += @map.height * 256 - distance
      @display_y %= @map.height * 256
      @parallax_y -= distance
      @nightlights_y -= distance
    else
      last_y = @display_y
      @display_y = [@display_y - distance, 0].max
      @parallax_y += @display_y - last_y
      @nightlights_y += @display_y - last_y
    end
  end
#------------------------------------------------------------------------------
  def name
    $data_mapinfos[@map_id]
  end
   
end
#==============================================================================
class Scene_Map
#==============================================================================
  alias start_dayandnight_adds start
  def start
    start_dayandnight_adds
    nightlights?
  end

  def fadein(duration)
    Graphics.transition(0)
    if $dayandnight.interior?
      $game_map.screen.start_tone_change($daytone,1)
      $nightlights.opacity = 255
    else if $dayandnight.dark_interior?
      $game_map.screen.start_tone_change($nighttone,1)
      $nightlights.opacity = 255
    else if $dayandnight.exterior?
        $game_map.screen.start_tone_change($dayandnight.get_state_tone,1)
        nightlights?
      end
      end
    end
    for i in 0..duration-1
      Graphics.brightness = 255 * i / duration
      update_basic
    end
    Graphics.brightness = 255
  end
 
  def nightlights?
    $nightlights.opacity = 0 if $day
    $nightlights.opacity = 255 if $night
    $nightlights.opacity = 125 if $dawn or $dusk
  end
 
end
#==============================================================================
class Scene_Title
#==============================================================================
  alias load_database_additions load_database
  def load_database
    load_database_additions
    $data_mapinfos      = load_data("Data/MapInfos.rvdata")
    for key in $data_mapinfos.keys
      $data_mapinfos[key] = $data_mapinfos[key].name
    end
  end
 
  alias command_new_game_additions command_new_game
  def command_new_game
    command_new_game_additions
    $dayandnight = DayAndNight.new
    Graphics.frame_count += 25200/$divider if $starting_time == "dawn"
    Graphics.frame_count += 28800/$divider if $starting_time == "day"
    Graphics.frame_count += 68400/$divider if $starting_time == "dusk"   
  end
 
end
#==============================================================================
class Spriteset_Map
#==============================================================================
  def initialize
    create_viewports
    create_tilemap
    create_parallax
    create_characters
    create_shadow
    create_weather
    create_pictures
    create_timer
    create_nightlights
    update
  end
#-------------------------------------------------------------------------------
  def create_nightlights
    $nightlights = Plane.new(@viewport3)
    $nightlights.opacity = 0
  end
#-------------------------------------------------------------------------------
  alias dispose_addition dispose
  def dispose
    dispose_addition
    dispose_nightlights
  end
#-------------------------------------------------------------------------------
  def dispose_nightlights
    $nightlights.dispose
  end
#-------------------------------------------------------------------------------
  alias update_additions update
  def update
    update_additions
    update_nightlights
  end
#-------------------------------------------------------------------------------
  def update_fading
    if $dayandnight.exterior?
      $nightlights.opacity += 1 if $night and $nightlights.opacity <= 255
      $nightlights.opacity += 1 if $dusk and $nightlights.opacity <= 150
      $nightlights.opacity -= 1 if $dawn and $nightlights.opacity >= 100
      $nightlights.opacity -= 1 if $day and $nightlights.opacity >= 0
    else
      $nightlights.opacity = 255
    end
  end
#------------------------------------------------------------------------------- 
  def update_nightlights
    if @nightlights_mapname != $game_map.name
      @nightlights_mapname = $game_map.name
      if $nightlights.bitmap != nil
        $nightlights.bitmap.dispose
        $nightlights.bitmap = nil
      end
      if @nightlights_mapname != ""
        if File.exist?("Graphics/Nightlights/"+@nightlights_mapname+"."+PIC_FORMAT)
          $nightlights.bitmap = Cache.nightlights(@nightlights_mapname)
        end
      end
      Graphics.frame_reset
    end
    $nightlights.ox = $game_map.calc_nightlights_x($nightlights.bitmap)
    $nightlights.oy = $game_map.calc_nightlights_y($nightlights.bitmap)
    update_fading
  end
 
end
#===============================================================================
class Scene_File
#=============================================================================== 
  alias write_save_data_dn_adds write_save_data
  def write_save_data(file)
    write_save_data_dn_adds(file)
    Marshal.dump($day,         file)
    Marshal.dump($dusk,        file)
    Marshal.dump($dawn,        file)
    Marshal.dump($night,       file)
  end
#------------------------------------------------------------------------------- 
  alias read_save_data_dn_adds read_save_data
  def read_save_data(file)
    read_save_data_dn_adds(file)
    $day         = Marshal.load(file)
    $dusk        = Marshal.load(file)
    $dawn        = Marshal.load(file)
    $night       = Marshal.load(file)
  end
 
end

#===============================================================================
# Game-Time-Hotfix
#===============================================================================
#===============================================================================
class Window_SaveFile < Window_Base
#===============================================================================
  def load_gamedata
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      begin
        @characters     = Marshal.load(file)
        @frame_count    = Marshal.load(file)
        @last_bgm       = Marshal.load(file)
        @last_bgs       = Marshal.load(file)
        @game_system    = Marshal.load(file)
        @game_message   = Marshal.load(file)
        @game_switches  = Marshal.load(file)
        @game_variables = Marshal.load(file)
        case $starting_time
          when "night"
            @total_sec = @frame_count / Graphics.frame_rate
          when "dawn"
            @total_sec = (@frame_count-(25200/$divider)) / Graphics.frame_rate
          when "day"
            @total_sec = (@frame_count-(28800/$divider)) / Graphics.frame_rate
          when "dusk"
            @total_sec = (@frame_count-(68400/$divider)) / Graphics.frame_rate
        end
      rescue
        @file_exist = false
      ensure
        file.close
      end
    end
  end
 
end
und ist mir nochwas aufgefallen. das script läuft wie foglt ab: night -> dusk -> day -> dawn -> night...usw. müsste es aber eig nicht so sein: night -> dawn -> day -> dusk -> night usw?
weil dawn is die morgendämmerung und dusk die abenddämmerung. aber im script ist beides quasi vertauscht...oder irre ich mich da?
« Letzte Änderung: Juli 15, 2008, 19:56:59 von Evil95 »

Re: hellMinor's Simple Day and Night Script

Offline Kyoshiro

  • Global Mod
  • RPGVX-Forengott
  • ****
  • Beiträge: 1623
  • Stand up and fight!
    • Mein Blog
Re: hellMinor's Simple Day and Night Script
« Antwort #96 am: Juli 16, 2008, 18:33:23 »
Gibt es eine Möglichkeit über ein Event die Tageszeit zu bestimmen.
Also ich will jetzt, dass es morgens ist, würde es dann gehen, dass ich über ein Event mit der Script-Funktion das einstelle?

Re: hellMinor's Simple Day and Night Script

armin

  • Gast
Re: hellMinor's Simple Day and Night Script
« Antwort #97 am: Oktober 02, 2008, 13:26:36 »
Hallo,

Wollte nur kurz sagen das das Script absolut Klasse ist.

Mir ist jedoch aufgefallen das es mit dem Script (Mini-Map) von Woratana nicht 100% Funktioniert.
Er Ignoriert in diesem Fall wohl das [int].
Bei mir ist es auf jeden Fall so.
Gibt es dafür evl. noch eine Lösung ??

Danke für's absolute Super Script

Gruß Armin

Re: hellMinor's Simple Day and Night Script

Offline eugene222

  • König der Lügner
  • VX-Meister
  • ****
  • Beiträge: 675
Re: hellMinor's Simple Day and Night Script
« Antwort #98 am: Dezember 17, 2008, 20:15:40 »
@Kyo
Mach das so:
Du wählst Conditional Branch aus und dann Skript. Dann schreibse ins Skript einfach $Day für tag, $Night für nacht usw. Dann kannse das alles einstellen. Hoffe du hast es verstanden. Wenn nicht meld dich bei mir.

mfg. eugene

 


 Bild des Monats

rooftop party

Views: 3583
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