Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Zamknięty przez: Nhadala
Wto 07 Sie, 2012 08:09
Skrypt dnia i nocy [Problem]
Autor Wiadomość
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Pią 27 Lip, 2012 20:41
Skrypt dnia i nocy [Problem]
Cześć posiadam skrypt dnia i nocy :
Kod:
# Dzień i Noc
# Autor KGC
# Edited by Lartarin the Super Pig ^@^ [www.ultimateam.pl]
#==============================================================================

module KGC
 
  DAYNIGHT_ENABLE_OLD_METHOD = false
#==============================================================================
# 0..Zależne od czasu.  1..Ilość kroków.  2..Czas Realny
  DAYNIGHT_METHOD = 2
#==============================================================================
 
  DAYNIGHT_EVENT_STOP = true
  DAYNIGHT_TONE_BACK_ONLY = true
  DAYNIGHT_PASS_PHASE = 3
  DAYNIGHT_DURATION = 40
  DAYNIGHT_WEEK_NAME = ["N", "Pn", "Wt", "Śr", "Cz", "Pi", "So"]
  DAYNIGHT_NAME = ["Południe", "Wieczór", "Noc", "Rano"]
  DAYNIGHT_TONE = [Tone.new(0, 0, 0),
    Tone.new(-32, -96, -96),
    Tone.new(-128, -128, -32),
    Tone.new(-48, -48, -16)]
 DAYNIGHT_TIME = [30, 10, 25, 10]
end



$imported = {} if $imported == nil
$imported["DayNight"] = true

module DayNight

  def self._init_var_
    $game_system.daynight_count = 0 if $game_system.daynight_count == nil
    $game_system.daynight_phase = 0 if $game_system.daynight_phase == nil
    $game_system.daynight_pass_days = 0 if $game_system.daynight_pass_days == nil
  end

  def self.now

    return $game_system.daynight_phase
  end

  def self.now_name

    return KGC::DAYNIGHT_NAME[self.now]
  end

 def self.change(phase, duration = KGC::DAYNIGHT_DURATION, pass_days = 0)

    $game_system.daynight_count = 0
 
    $game_system.daynight_phase = phase

    $game_temp.manual_daynight_change = duration

    $game_system.daynight_pass_days += pass_days
  end

  def self.change_next(duration = KGC::DAYNIGHT_DURATION)
    $game_screen.change_daynight_next(duration)
  end

  def self.now_week
    # Zwraca bieżący dzień
    if KGC::DAYNIGHT_METHOD == 2
      return Time.now.wday
    else
      return $game_system.daynight_pass_days % KGC::DAYNIGHT_WEEK_NAME.size
    end
  end

  def self.now_week_name
    # Zwraca nazwę bieżącego dnia
    return KGC::DAYNIGHT_WEEK_NAME[self.now_week]
  end

  def self.set_default(duration = KGC::DAYNIGHT_DURATION)
    $game_screen.set_daynight_default(duration)
  end

  def self.apply(duration = KGC::DAYNIGHT_DURATION)
    $game_screen.apply_daynight(duration)
  end
end


#==============================================================================
# Game_Temp
#==============================================================================

class Game_Temp
  attr_accessor :manual_daynight_change

  alias initialize_KGC_DayNight initialize
  def initialize   
    initialize_KGC_DayNight

    @manual_daynight_change = false
  end
end



#==============================================================================
# Game_System
#==============================================================================

class Game_System
  attr_accessor :daynight_count, :daynight_phase, :daynight_pass_days,
    :daynight_change, :daynight_change_battle

  alias initialize_KGC_DayNight initialize
  def initialize
    initialize_KGC_DayNight

    @daynight_count = @daynight_phase = @daynight_pass_days = 0
    @daynight_change = true
    @daynight_change_battle = true
  end
end



#==============================================================================
# Game_Screen
#==============================================================================

class Game_Screen
  attr_reader :daynight_tone

  alias initialize_KGC_DayNight initialize
  def initialize

    initialize_KGC_DayNight


    @default_tone = Tone.new(0, 0, 0)
    @tone = KGC::DAYNIGHT_TONE[$game_system.daynight_phase].clone
    @daynight_tone = @tone.clone
 
    @x = @y = 0

    @frame_count = Graphics.frame_count
    @daynight_tone_duration = 0
  end

  def tone
    if $game_temp.in_battle && KGC::DAYNIGHT_TONE_BACK_ONLY
      return @default_tone
    else
      return @tone
    end
  end

  alias start_tone_change_KGC_DayNight start_tone_change
  def start_tone_change(tone, duration)
    start_tone_change_KGC_DayNight(tone, duration)

    @daynight_tone_target = tone.clone
    @daynight_tone_duration = duration
    if @daynight_tone_duration == 0
      @daynight_tone = @daynight_tone_target.clone
    end
  end

  alias update_KGC_DayNight update
  def update
    update_KGC_DayNight

    if @daynight_tone_duration >= 1
      d = @daynight_tone_duration
      @daynight_tone.red =
        (@daynight_tone.red * (d - 1) + @daynight_tone_target.red) / d
      @daynight_tone.green =
        (@daynight_tone.green * (d - 1) + @daynight_tone_target.green) / d
      @daynight_tone.blue =
        (@daynight_tone.blue * (d - 1) + @daynight_tone_target.blue) / d
      @daynight_tone.gray =
        (@daynight_tone.gray * (d - 1) + @daynight_tone_target.gray) / d
      @daynight_tone_duration -= 1
    end

    if (!$game_temp.in_battle && $game_system.daynight_change) ||
        ($game_temp.in_battle && $game_system.daynight_change &&
        $game_system.daynight_change_battle)
      case KGC::DAYNIGHT_METHOD
      when 0
        update_daynight_pass_time
      when 1
        update_daynight_step
      when 2
        update_daynight_real_time
      end
    end
 
    if $game_temp.manual_daynight_change != nil
   
      start_tone_change(KGC::DAYNIGHT_TONE[$game_system.daynight_phase],
        KGC::DAYNIGHT_DURATION)
     
      $game_temp.manual_daynight_change = nil
    end
  end

  def update_daynight_pass_time

    inc_count = Graphics.frame_count - @frame_count

    if inc_count >= 100
      @frame_count = Graphics.frame_count
      return
    end

    if KGC::DAYNIGHT_EVENT_STOP && $game_system.map_interpreter.running?
      @frame_count = Graphics.frame_count
      return
    end
 
    if $game_temp.in_battle
      inc_count /= 10.0
      $game_system.daynight_count += inc_count
    else
      $game_system.daynight_count += inc_count
    end

    @frame_count = Graphics.frame_count

    count = $game_system.daynight_count / Graphics.frame_rate
    if count >= KGC::DAYNIGHT_TIME[$game_system.daynight_phase]

      change_daynight_next
    end
  end
  private :update_daynight_pass_time

  def update_daynight_step

    if @x != $game_player.x || @y != $game_player.y

      @x = $game_player.x
      @y = $game_player.y

      $game_system.daynight_count += 1

      count = $game_system.daynight_count
      if count >= KGC::DAYNIGHT_TIME[$game_system.daynight_phase]
   
        change_daynight_next
      end
    end
  end
  private :update_daynight_step

  def update_daynight_real_time

    time = Time.now

    time1 = KGC::DAYNIGHT_TIME[$game_system.daynight_phase]
    time2 = KGC::DAYNIGHT_TIME[$game_system.daynight_phase - 1]
    if time2 != nil && time1 < time2
      change = time.hour < time2 && time1 <= time.hour
    else
      change = time1 <= time.hour
    end
    if change

      change_daynight_next
    end
  end
  private :update_daynight_real_time

  def change_daynight_next(duration = KGC::DAYNIGHT_DURATION)
    $game_system.daynight_count = 0
    $game_system.daynight_phase += 1

    if $game_system.daynight_phase >= KGC::DAYNIGHT_TONE.size
 
      $game_system.daynight_phase = 0
    end

    if $game_system.daynight_phase == KGC::DAYNIGHT_PASS_PHASE
      $game_system.daynight_pass_days += 1
    end
 
    start_tone_change(KGC::DAYNIGHT_TONE[$game_system.daynight_phase],
      duration)
  end

  def set_daynight_default(duration)
    start_tone_change(Tone.new(0, 0, 0), duration)
  end

  def apply_daynight(duration)
    start_tone_change(KGC::DAYNIGHT_TONE[$game_system.daynight_phase], duration)
  end
  if KGC::DAYNIGHT_ENABLE_OLD_METHOD

  def daynight_default(duration = KGC::DAYNIGHT_DURATION)
    start_tone_change(Tone.new(0, 0, 0), duration)
  end

  def daynight_apply(duration = KGC::DAYNIGHT_DURATION)
    start_tone_change(KGC::DAYNIGHT_TONE[$game_system.daynight_phase], duration)
  end
  end
end



#==============================================================================
# Game_Map
#==============================================================================

class Game_Map

  alias encounter_list_KGC_DayNight encounter_list
  def encounter_list

    list = encounter_list_KGC_DayNight.dup

 
    list.each_index { |i|
      appear = false
      troop = $data_troops[list[i]]

      next unless troop.name =~ /\[DN((?:[ ]*[\-]?\d+(?:,[ ]*)?)+)\]/i

      $1.split(/,/).each { |dn|
        dn.gsub!(/[ ]/) {""}
        appear |= dn[0, 1] == "-" ?
          $game_system.daynight_phase != dn.to_i.abs :
          $game_system.daynight_phase == dn.to_i
      }
      list[i] = nil unless appear
    }
    return list.compact
  end
end


#==============================================================================
# Spriteset_Battle
#==============================================================================

if KGC::DAYNIGHT_TONE_BACK_ONLY
class Spriteset_Battle

  alias update_KGC_DayNight update
  def update
    update_KGC_DayNight

    @battleback_sprite.tone = $game_screen.daynight_tone
  end
end
end



#==============================================================================
# Scene_Map
#==============================================================================

class Scene_Map

  alias main_KGC_DayNight main
  def main
    DayNight._init_var_

    main_KGC_DayNight
  end
end

Nie wiem czy dobrze zrozumiałem ale gdy ustawię czas realny (nr 2) to zmiana pory dnia będzie względem prawdziwego czasu (w sensie tego na zegarku na kompie) a jeśli to nie tak to proszę mnie oświecić. I teraz moje pytanie czy to się ustawia w skrypcie o której godzinie jaka pora ma być ? Bo teraz mamy 21.38 a w grze jak widno tak widno ;D

Proszę o pomoc i ewentualne wyprowadzenie z błędu ;)
________________________

 
 
 
Feniks 




Preferowany:
RPG Maker XP

Ranga RM:
2 gry

Pomógł: 62 razy
Dołączył: 04 Wrz 2010
Posty: 511
Wysłany: Pią 27 Lip, 2012 20:55
Wątpię, żeby współgrał z światem zewnętrznym, czas realny w tym wypadku oznacza 24 godzinny system dnia i nocy, aczkolwiek czas liczony jest w grze przez 24h. Sam używałem tego skryptu w moich początkach z klimatem, ale jak wspomniałem to czas realny gry, a nie rzeczywistości. Pozdrawiam.
________________________

 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Sob 28 Lip, 2012 18:28
ehh szkoda .. a nie ma a ktos takiego skryptu ?
________________________

 
 
 
Feniks 




Preferowany:
RPG Maker XP

Ranga RM:
2 gry

Pomógł: 62 razy
Dołączył: 04 Wrz 2010
Posty: 511
Wysłany: Sob 28 Lip, 2012 20:01
Wystarczy dać opcje 0, ale jeszcze jest inny skrypt:
http://www.rmxpunlimited....h__1#entry60547
________________________

 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Nie 29 Lip, 2012 13:19
znalazłem tutaj skrypt http://www.ultimateam.pl/viewtopic.php?p=43250 ... Chodzi o to czy da radę aby np jakoś na danej mapce pogoda była wybierana losowo ?
________________________

 
 
 
Feniks 




Preferowany:
RPG Maker XP

Ranga RM:
2 gry

Pomógł: 62 razy
Dołączył: 04 Wrz 2010
Posty: 511
Wysłany: Nie 29 Lip, 2012 13:39
Tak, na zdarzeniach za pomocą variable i conditional branch.
________________________

 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Nie 29 Lip, 2012 14:36
mógłbyś machnąć jakieś demko czy coś bo nie za bardzo wiem o co ci chodzi ;D A konkretnie z tym Variable xd bo warunki w miare ogarniam xd
________________________

 
 
 
Feniks 




Preferowany:
RPG Maker XP

Ranga RM:
2 gry

Pomógł: 62 razy
Dołączył: 04 Wrz 2010
Posty: 511
Wysłany: Nie 29 Lip, 2012 15:08
Nie ma problemu, w wolnej chwili się za to zabiorę.

Edit: W przeciągu tego tygodnia zrobię ci demo, po prostu dużo rzeczy mam na głowie, ale nie masz się co martwić, do niedzieli będzie dokładne demo :-P
________________________

 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Sro 01 Sie, 2012 10:41
Nie ma problemu dzięki wielkie mistrzu ;)
________________________

 
 
 
Feniks 




Preferowany:
RPG Maker XP

Ranga RM:
2 gry

Pomógł: 62 razy
Dołączył: 04 Wrz 2010
Posty: 511
Wysłany: Sob 04 Sie, 2012 21:06
Ok, gotowe. Trzymaj :mrgreen:
http://www.mediafire.com/?663kdp53alnt1ze
________________________

 
 
Tomson1120 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 06 Sie 2010
Posty: 84
Skąd: Kraków
Wysłany: Pon 06 Sie, 2012 16:14
Dzięki wielkie :papa:
________________________

 
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene