Ogłoszenie
Administracja Forum
DzieĹ i Noc
Autor
Wiadomość
Lartarin
Ranga RM:
Pomogła: 3 razy Dołączyła: 20 Wrz 2007 Posty: 233 Skąd: Ergard
Wysłany: Pią 23 Paź, 2009 07:40
DzieĹ i Noc
Aloha!
Dzisiaj dodam skrypcik ktĂłry w zaleĹźnoĹci od ustawieĹ zmienia odcieĹ ekranu.
DzieĹ przeplata nam siÄ z nocÄ
Skrypt do RPG Makera XP dodajemy nad Main, jak zwykle zresztÄ
^@^
Spoiler:
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 = 0
#==============================================================================
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
________________________
kerpl
Preferowany:
Dołączył: 13 Gru 2009 Posty: 32 Skąd: CzĹuchĂłw
Wysłany: Pią 18 Gru, 2009 14:29
dobra a jak go wywoĹaÄ??
Unnamed
Preferowany:
Dołączył: 29 Lip 2009 Posty: 59 Skąd: from Hell
Wysłany: Pon 21 Gru, 2009 00:22
Tego skryptu nie wywolujesz. Konfigurujesz go tylko w linii Kod: #==============================================================================
# 0..ZaleĹźne od czasu. 1..IloĹÄ krokĂłw. 2..Czas Realny
DAYNIGHT_METHOD = 0
#==============================================================================
Pory dnia beda sie zmienialy albo po jakiejs ilosci krokow albo tak jak w realu etc.
________________________ Time to Play
alintes
Preferowany:
Dołączył: 20 Gru 2009 Posty: 41 Skąd: Strzelin
spino333
Preferowany:
Pomógł: 1 raz Dołączył: 21 Gru 2009 Posty: 85 Skąd: Nie pamiÄtam
Wysłany: Czw 21 Sty, 2010 01:10
mam problem bo jak jestem w domku to np. tez mam noc help
________________________ _________________
_________________
Jak kraĹÄ to milinony...
Jak ruchaÄ to ksiÄĹźniczki...
_________________
_________________
_________________
Ayene
Ranga RM:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Czw 21 Sty, 2010 09:56
Bo uĹźywajÄ
c skryptĂłw tego typu (ktĂłre zmieniajÄ
odcieĹ ekranu), w kaĹźdym pomieszczeniu naleĹźaĹoby wstawiÄ zdarzenie rĂłwnolegĹe (parallel process), ktĂłre zmieniaĹoby odcieĹ na 0,0,0,0 w ciÄ
gu 1 sekundy. Do tego sĹuĹźy polecenie Tint Screen / OdcieĹ Ekranu (albo coĹ podobnego. Nie mam teraz zainstalowanego XP).
________________________
Yoroiookami
Omnomnomnom
Preferowany:
Ranga RM:
Pomógł: 57 razy Dołączył: 24 Lut 2010 Posty: 751
Wysłany: Sro 24 Lut, 2010 00:41
Czy skrypt trzeba w jakiĹ sposĂłb uruchomiÄ? ZmieniÄ coĹ oprĂłcz "Daynight method"?
Ayene
Ranga RM:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Sro 24 Lut, 2010 07:50
Nie trzeba, skrypt powoduje zmianÄ pory dnia automatycznie.
________________________
pw115
Preferowany:
Pomógł: 10 razy Dołączył: 19 Lut 2010 Posty: 235 Skąd: Katowice
Wysłany: Sro 24 Lut, 2010 09:23
Mam pytanko: Czy ten skrypt jest przyporzÄ
dkowany do jakiejĹ zmiennej ?
ChciaĹem zrobiÄ w grze takie coĹ Ĺźe bÄdzie moĹźna siÄ przespaÄ i Ĺźeby w trakcie spania byĹa zmiana godzin np +4 albo Ĺźeby skakaĹo do konkretnej pory dnia np wieczĂłr
________________________ Pomocy:
http://pw115.myminicity.com/
Yoroiookami
Omnomnomnom
Preferowany:
Ranga RM:
Pomógł: 57 razy Dołączył: 24 Lut 2010 Posty: 751
Wysłany: Sro 24 Lut, 2010 13:03
A w jaki sposĂłb ustaliÄ "liczbÄ krokĂłw"? Chyba Ĺźe to jakaĹ konkretna liczba?
Ayene
Ranga RM:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Sro 24 Lut, 2010 13:39
pw115 , uĹźyj polecenia Skrypt/Script w zdarzeniu i wpisz:
Kod: $game_screen.change_daynight_next(40)
Yoroiookami , po ustawieniu:
wystarczy edytowaÄ linijkÄ:
Kod: DAYNIGHT_TIME = [30, 10, 25, 10]
30, 10, 25 i 10 to kolejno liczba krokĂłw.
________________________
Agumon
Preferowany:
Ranga RM:
Pomógł: 53 razy Dołączył: 30 Gru 2009 Posty: 515 Skąd: Ruda ĹlÄ
ska
Wysłany: Nie 07 Mar, 2010 20:05
A da siÄ Ĺźeby w menu pisaĹo Ĺźe jest np. Wtorek - Rano?
Aha i jak zrobiÄ Ĺźeby po 5 minutach siÄ zmieniaĹo z rano na poĹudnie itd ??
________________________
Melvin
Preferowany:
Ranga RM:
Pomógł: 35 razy Dołączył: 23 Paź 2009 Posty: 1063
mateuszglodowski123
Preferowany:
Dołączył: 05 Lip 2010 Posty: 3
Wysłany: Pią 22 Paź, 2010 10:00
Mam takie pytanko...
W rpg makerze xp jestem trochÄ zielony.
Czy ktoĹ mi wytĹumaczy jak moĹźna to zrobiÄ by
np. co 15min byĹa noc
DJPIRO
Preferowany:
Dołączył: 09 Lis 2010 Posty: 2
Wysłany: Sro 10 Lis, 2010 16:58
ciekawostka :jeĹźeli usuniesz w skrypcie dane dotyczace walki to bÄdzie chodziÄ na VX-ie Spoiler:
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 = 1
#==============================================================================
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
#==============================================================================
# Scene_Map
#==============================================================================
class Scene_Map
alias main_KGC_DayNight main
def main
DayNight._init_var_
main_KGC_DayNight
end
end
Ostatnio zmieniony przez kamillo112 Sro 10 Lis, 2010 17:07, w całości zmieniany 1 raz
Nie możesz pisać nowych tematówNie możesz odpowiadać w tematachNie możesz zmieniać swoich postówNie możesz usuwać swoich postówNie możesz głosować w ankietachNie możesz załączać plików na tym forumMożesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych Wersja do druku