Zamknięty przez: Nhadala Wto 07 Sie, 2012 08:09 |
Skrypt dnia i nocy [Problem] |
Autor |
Wiadomość |
Tomson1120
Preferowany:
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:
Ranga RM:
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:
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:
Ranga RM:
Pomógł: 62 razy Dołączył: 04 Wrz 2010 Posty: 511
|
|
|
|
Tomson1120
Preferowany:
Pomógł: 1 raz Dołączył: 06 Sie 2010 Posty: 84 Skąd: Kraków
|
|
|
|
Feniks
Preferowany:
Ranga RM:
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:
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:
Ranga RM:
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 |
________________________
|
|
|
|
Tomson1120
Preferowany:
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:
Ranga RM:
Pomógł: 62 razy Dołączył: 04 Wrz 2010 Posty: 511
|
|
|
|
Tomson1120
Preferowany:
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 |
________________________
|
|
|
|
|