Ogłoszenie |
Administracja Forum
|
Zamknięty przez: Ayene Sob 16 Kwi, 2011 23:25 |
Jasno, Ciemno |
Autor |
Wiadomość |
filipek32
Preferowany:
Dołączył: 16 Kwi 2011 Posty: 76 Skąd: Z tąd
|
Wysłany: Sob 16 Kwi, 2011 19:26
|
|
Jasno, Ciemno
|
Witam, mam znowu maly problem, poniewaz nie jestem profesjonalistą RPG Makera VX, więc jak zrobic żeby bylo troche ciemniej? a nie tak jasno..Np. Robie las i jak do niego wchodze to chce zeby bylo mhmm 3/5% ciemniej.
Prosze o szybką odpowiedz:)) |
|
|
|
onimush3
Preferowany:
Pomógł: 14 razy Dołączył: 26 Paź 2010 Posty: 164
|
Wysłany: Sob 16 Kwi, 2011 19:50
|
|
|
polecam użycie ci skryptu o nazwie Noc i dzień. Jest rewelacyjnym rozwiązaniem w takich wypadkach. Prosty w obsłudze i możesz w tedy na każdej mapie sobie ustawić dane światło. a dokładniej porę dnia. Mogę dać skrypt. ale po dalsze instrukcje musisz się kierować do Ayene.
Kod: | #_/ Tytuł w oryginale: Day-to-Night Phases - KGC_DayNight
#_/ Autor: KGC [http://ytomy.sakura.ne.jp/]
#_/ Tłumaczenie i poprawki: Ayene [yurika@o2.pl]
#_/ www.ultimateam.pl
#_/----------------------------------------------------------------------------
#_/ Skrypt dodaje opcję zmiany dnia i nocy. Dodatkowe jego funkcje umożliwiają
#_/ ustawienie konkretnych grup potworów atakujących np. nocą oraz konfigurację
#_/ zdarzeń warunkowanych aktualną porą dnia lub dniem tygodnia.
#_/============================================================================
#_/ Instalacja: Umieść nad Main.
#_/----------------------------------------------------------------------------
#_/ INSTRUKCJA UŻYCIA
#_/
#_/ ZATRZYMAJ DZIEŃ I NOC
#_/ Gdy po nazwie mapy w jej własciowościach będzie wpisane [DN_STOP]
#_/ pory dnia nie będą się zmianiać, czas się nie zatrzyma, a gdy aktulanie
#_/ aktywna jest np. noc, ekran nadal będzie ściemniony.
#_/
#_/ ZATRZYMAJ DZIEŃ I NOC + ANULUJ PORĘ DNIA
#_/ Gdy po nazwie mapy w jej własciwościach będzie wpisane [DN_VOID]
#_/ pory dnia nie będą się zmianiać, czas się zatrzyma, a gdy aktulanie
#_/ aktywna jest np. noc, ekran powróci to swoich domyślnych ustawień.
#_/
#_/ POTWORY ATAKUJĄCE O OKREŚLONEJ PORZE DNIA
#_/ Gdy po nazwie grupy potworów (zakładka Troops) będzie wpisane [DN NR]
#_/ (gdzie NR odpowiada konkrentej porze dnia: 0 = południe, 1 = wieczór,
#_/ 2 = noc, 3 = rano), dana grupa będzie atakowała tylko o określonej porze.
#_/
#_/ FUNKCJE DO ZDARZEŃ
#_/ Poniższych funkcji można użyć korzystając z polecenia 'Script' w edycji
#_/ zdarzenia.
#_/
#_/ * stop_daynight
#_/ Zatrzymanie zmiany pory dnia
#_/
#_/ * start_daynight
#_/ Wznowienie zmiany pory dnia
#_/
#_/ * get_daynight_week (id_zmiennej)
#_/ Przyporządkowuje dni tygodnia określonej zmiennej
#_/
#_/ * change_daynight_phase(pora_dnia, czas_trwania, ilość_dni)
#_/ Zmienia aktualną porę dnia na nową. Przydatne w gospodach.
#_/ Przykład: change_daynight_phase (3, 1, 1)
#_/ Powyższa funckja sprawi, że minie jeden dzień, nastanie poranek,
#_/ a zmiana będzie trwała 1 klatkę animacji (minimalnie musi być 1).
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==========================================================================#
# KONFIGURACJA SKRYPTU #
#==========================================================================#
module KGC
module DayNight
# METODA PRZEJŚCIA DNIA W NOC
# 0. Upływ czasu 1.W zależności od liczby kroków 2.Czas realny
METHOD = 1
# ZMIENNA PORY DNIA
# W tej zmiennej przechowywana jest obecna pora dnia.
PHASE_VARIABLE = 11
# ZMIENNA DNI TYGODNIA
# W tej zmiennej przechowywana jest obecny dzień tygodnia.
PASS_DAYS_VARIABLE = 12
# ZATRZYMAJ PRZY ZDARZENIACH
# Czas nie leci, gdy gracz wywołuje zdarzenie.
STOP_ON_EVENT = false
# ODCIEŃ DZNIA I NOCY PODCZAS WALKI
# 0: Brak 1: Tylko Tło 2: Tło + Przeciwnicy
BG_TONE_IN_BATTLE = 0
# PORY DNIA
# Ustawienia upływu czasu
PHASE = [
# NAZWA Odcień Upływ czasu
["Południe", Tone.new( 0, 0, 0), 300], # Pora 0
["Wieczór", Tone.new( -32, -96, -96), 100], # Pora 1
["Noc", Tone.new(-128, -128, -32), 250], # Pora 2
["Rano", Tone.new( -48, -48, -16), 100], # Pora 3
] # Nie usuwaj tej linijki!
# Ustawienia czasu realnego
# ["Południe", Tone.new( 0, 0, 0), 13], #Pora 0 (godz. 13.00)
# ["Wieczór", Tone.new( 0, -96, -96), 19], #Pora 1 (godz. 19.00)
# ["Noc", Tone.new(-96, -96, -64), 1], #Pora 2 (godz. 1.00)
# ["Rano", Tone.new(-48, -48, -16), 7], #Pora 3 (godz. 7.00)
# ZMIANA DNIA
# Dzień tygodnia zmienia się o wraz z nastaniem określonej pory dnia.
# 0.Południe 1.Wieczór 2.Noc 3.Rano
PASS_DAY_PHASE = 3
# PRZEJŚCIE MIĘDZY PORAMI DNIA
# Jednostka klatek animacji przy przejściu do kolejnej pory dnia
PHASE_DURATION = 564
# NAZWY DNI TYGODNIA
# Wartiość kolejno: 0, 1, 2, 3, 4, 5, 6
WEEK_NAME = ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"]
end
end
#===========================================================================#
# KONIEC KONFIGURACJI #
#===========================================================================#
$imported = {} if $imported == nil
$imported["DayNight"] = true
#---------------------------------------------------------------------------#
if $data_mapinfos == nil
$data_mapinfos = load_data("Data/MapInfos.rvdata")
end
#---------------------------------------------------------------------------#
module KGC::DayNight
BATTLE_TONE_NONE = 0
BATTLE_TONE_BG = 1
BATTLE_TONE_FULL = 2
METHOD_TIME = 0
METHOD_STEP = 1
METHOD_RTIME = 2
module Regexp
module MapInfo
DAYNIGHT_STOP = /\[DN_STOP\]/i
DAYNIGHT_VOID = /\[DN_VOID\]/i
end
module Event
LUMINOUS = /\[(?:LUMINOUS|light)\]/i
end
module Troop
APPEAR_PHASE = /\[DN((?:[ ]*[\-]?\d+(?:[ ]*,)?)+)\]/i
end
end
def self.troop_appear?(troop, phase = $game_system.daynight_phase)
unless troop.appear_daynight_phase.empty?
return false unless troop.appear_daynight_phase.include?(phase)
end
unless troop.nonappear_daynight_phase.empty?
return false if troop.nonappear_daynight_phase.include?(phase)
end
return true
end
end
#==============================================================================
# KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
def stop_daynight
$game_system.daynight_change_enabled = false
end
def start_daynight
$game_system.daynight_change_enabled = true
end
def get_daynight_week(variable_id = 0)
if KGC::DayNight::METHOD == KGC::DayNight::METHOD_RTIME
week = Time.now.wday
else
days = $game_variables[KGC::DayNight::PASS_DAYS_VARIABLE]
week = (days % KGC::DayNight::WEEK_NAME.size)
end
if variable_id > 0
$game_variables[variable_id] = week
$game_map.need_refresh = true
end
return week
end
def change_daynight_phase(phase,
duration = KGC::DayNight::PHASE_DURATION,
pass_days = 0)
$game_temp.manual_daynight_duration = duration
$game_system.daynight_counter = 0
$game_system.daynight_phase = phase
$game_variables[KGC::DayNight::PASS_DAYS_VARIABLE] += pass_days
$game_map.need_refresh = true
end
end
end
class Game_Interpreter
include KGC::Commands
end
#==============================================================================
# RPG::MapInfo
#==============================================================================
class RPG::MapInfo
def name
return @name.gsub(/\[.*\]/) { "" }
end
def original_name
return @name
end
def daynight_stop
return @name =~ KGC::DayNight::Regexp::MapInfo::DAYNIGHT_STOP
end
def daynight_void
return @name =~ KGC::DayNight::Regexp::MapInfo::DAYNIGHT_VOID
end
end
#==============================================================================
# RPG::Area
#==============================================================================
unless $@
class RPG::Area
alias encounter_list_KGC_DayNight encounter_list
def encounter_list
list = encounter_list_KGC_DayNight.clone
list.each_index { |i|
list[i] = nil unless KGC::DayNight.troop_appear?($data_troops[list[i]])
}
return list.compact
end
end
end
#==============================================================================
# RPG::Troop
#==============================================================================
class RPG::Troop
def create_daynight_cache
@__appear_daynight_phase = []
@__nonappear_daynight_phase = []
if @name =~ KGC::DayNight::Regexp::Troop::APPEAR_PHASE
$1.scan(/[\-]?\d+/).each { |num|
phase = num.to_i
if phase < 0
@__nonappear_daynight_phase << phase.abs
else
@__appear_daynight_phase << phase
end
}
end
end
def appear_daynight_phase
create_daynight_cache if @__appear_daynight_phase == nil
return @__appear_daynight_phase
end
def nonappear_daynight_phase
create_daynight_cache if @__nonappear_daynight_phase == nil
return @__nonappear_daynight_phase
end
end
#==============================================================================
# Game_Temp
#==============================================================================
class Game_Temp
attr_accessor :manual_daynight_duration # 手動フェーズ変更フラグ
alias initialize_KGC_DayNight initialize
def initialize
initialize_KGC_DayNight
@manual_daynight_duration = nil
end
end
#==============================================================================
# Game_System
#==============================================================================
class Game_System
attr_writer :daynight_counter
attr_writer :daynight_change_enabled
alias initialize_KGC_DayNight initialize
def initialize
initialize_KGC_DayNight
@daynight_counter = 0
@daynight_change_enabled = true
end
def daynight_counter
@daynight_counter = 0 if @daynight_counter == nil
return @daynight_counter
end
def daynight_phase
return $game_variables[KGC::DayNight::PHASE_VARIABLE]
end
def daynight_phase=(value)
$game_variables[KGC::DayNight::PHASE_VARIABLE] = value
$game_map.need_refresh = true
end
def daynight_change_enabled
@daynight_change_enabled = 0 if @daynight_change_enabled == nil
return @daynight_change_enabled
end
def progress_daynight_phase
self.daynight_phase += 1
if self.daynight_phase >= KGC::DayNight::PHASE.size
self.daynight_phase = 0
end
$game_map.need_refresh = true
end
def daynight_phase_object
return KGC::DayNight::PHASE[daynight_phase]
end
def previous_daynight_phase_object
return KGC::DayNight::PHASE[daynight_phase - 1]
end
end
#==============================================================================
# Game_Screen
#==============================================================================
class Game_Screen
DEFAULT_TONE = Tone.new(0, 0, 0)
attr_reader :daynight_tone # 昼夜の色調
alias clear_KGC_DayNight clear
def clear
clear_KGC_DayNight
clear_daynight
end
def clear_daynight
@daynight_tone = DEFAULT_TONE.clone
@daynight_x = 0
@daynight_y = 0
@frame_count = Graphics.frame_count
@daynight_tone_duration = 0
apply_daynight
end
def apply_daynight
return if $game_map == nil
if $game_temp.in_battle
if KGC::DayNight::BG_TONE_IN_BATTLE == KGC::DayNight::BATTLE_TONE_NONE
return
end
end
if $game_map.daynight_void?
if @daynight_tone_changed
@tone = DEFAULT_TONE.clone
@daynight_tone_changed = false
end
@daynight_tone = @tone.clone
return
end
if $game_system.daynight_phase_object == nil
$game_system.daynight_phase = 0
end
@tone = $game_system.daynight_phase_object[1].clone
@daynight_tone = @tone.clone
if KGC::DayNight::METHOD == KGC::DayNight::METHOD_RTIME
time = Time.now
KGC::DayNight::PHASE.each_with_index { |phase, i|
if phase[2] <= time.hour
start_tone_change(phase[1], 1)
$game_system.daynight_phase = i
break
end
}
end
@daynight_tone_changed = true
end
def tone
if $game_temp.in_battle
if KGC::DayNight::BG_TONE_IN_BATTLE <= KGC::DayNight::BATTLE_TONE_BG
return DEFAULT_TONE
end
end
return @tone
end
alias start_tone_change_KGC_DayNight start_tone_change
def start_tone_change(tone, duration)
duration = [duration, 1].max
start_tone_change_KGC_DayNight(tone, duration)
@daynight_tone_target = tone.clone
@daynight_tone_duration = duration
end
alias update_KGC_DayNight update
def update
update_KGC_DayNight
update_daynight_transit
end
alias update_tone_KGC_DayNight update_tone
def update_tone
update_tone_KGC_DayNight
if @daynight_tone_duration >= 1
d = @daynight_tone_duration
target = @daynight_tone_target
@daynight_tone.red = (@daynight_tone.red * (d - 1) + target.red) / d
@daynight_tone.green = (@daynight_tone.green * (d - 1) + target.green) / d
@daynight_tone.blue = (@daynight_tone.blue * (d - 1) + target.blue) / d
@daynight_tone.gray = (@daynight_tone.gray * (d - 1) + target.gray) / d
@daynight_tone_duration -= 1
end
end
def update_daynight_transit
if $game_temp.manual_daynight_duration
start_tone_change($game_system.daynight_phase_object[1],
$game_temp.manual_daynight_duration)
$game_temp.manual_daynight_duration = nil
@daynight_tone_changed = true
end
return unless $game_system.daynight_change_enabled
return if $game_map.daynight_stop?
if KGC::DayNight::STOP_ON_EVENT
interpreter = ($game_temp.in_battle ? $game_troop.interpreter :
$game_map.interpreter)
return if interpreter.running?
end
case KGC::DayNight::METHOD
when KGC::DayNight::METHOD_TIME
update_daynight_pass_time
when KGC::DayNight::METHOD_STEP
update_daynight_step
when KGC::DayNight::METHOD_RTIME
update_daynight_real_time
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
$game_system.daynight_counter += inc_count
@frame_count = Graphics.frame_count
count = $game_system.daynight_counter / Graphics.frame_rate
if count >= $game_system.daynight_phase_object[2]
transit_daynight_next
end
end
def update_daynight_step
return if @daynight_x == $game_player.x && @daynight_y == $game_player.y
@daynight_x = $game_player.x
@daynight_y = $game_player.y
$game_system.daynight_counter += 1
count = $game_system.daynight_counter
if count >= $game_system.daynight_phase_object[2]
transit_daynight_next
end
end
def update_daynight_real_time
time = Time.now
time1 = $game_system.daynight_phase_object[2]
transit = (time1 <= time.hour)
if $game_system.previous_daynight_phase_object != nil
time2 = $game_system.previous_daynight_phase_object[2]
if time1 < time2
transit &= (time.hour < time2)
end
end
if transit
transit_daynight_next
end
end
def transit_daynight_next(duration = KGC::DayNight::PHASE_DURATION)
$game_system.daynight_counter = 0
$game_system.progress_daynight_phase
if $game_system.daynight_phase == KGC::DayNight::PASS_DAY_PHASE
$game_variables[KGC::DayNight::PASS_DAYS_VARIABLE] += 1
end
start_tone_change($game_system.daynight_phase_object[1], duration)
@daynight_tone_changed = true
end
def set_daynight_default(duration)
start_tone_change(DEFAULT_TONE, duration)
end
def restore_daynight_phase(duration)
start_tone_change($game_system.daynight_phase_object[1], duration)
@daynight_tone_changed = true
end
end
#==============================================================================
# Game_Map
#==============================================================================
class Game_Map
alias setup_KGC_DayNight setup
def setup(map_id)
setup_KGC_DayNight(map_id)
@screen.apply_daynight
end
def daynight_stop?
info = $data_mapinfos[map_id]
return false if info == nil
return (info.daynight_stop || info.daynight_void)
end
def daynight_void?
info = $data_mapinfos[map_id]
return false if info == nil
return info.daynight_void
end
alias encounter_list_KGC_DayNight encounter_list
def encounter_list
list = encounter_list_KGC_DayNight.clone
list.each_index { |i|
list[i] = nil unless KGC::DayNight.troop_appear?($data_troops[list[i]])
}
return list.compact
end
end
#==============================================================================
# Game_Character
#==============================================================================
class Game_Character
def luminous?
return false
end
end
#==============================================================================
# Game_Event
#==============================================================================
class Game_Event < Game_Character
def luminous?
return (@event.name =~ KGC::DayNight::Regexp::Event::LUMINOUS)
end
end
#==============================================================================
# Spriteset_Map
#==============================================================================
class Spriteset_Map
alias create_viewports_KGC_DayNight create_viewports
def create_viewports
create_viewports_KGC_DayNight
@viewport1_2 = Viewport.new(0, 0,
@viewport1.rect.width, @viewport1.rect.height)
end
alias create_characters_KGC_DayNight create_characters
def create_characters
create_characters_KGC_DayNight
@character_sprites.each { |sprite|
sprite.viewport = @viewport1_2 if sprite.character.luminous?
}
end
alias dispose_viewports_KGC_DayNight dispose_viewports
def dispose_viewports
dispose_viewports_KGC_DayNight
@viewport1_2.dispose
end
alias update_viewports_KGC_DayNight update_viewports
def update_viewports
update_viewports_KGC_DayNight
@viewport1_2.ox = $game_map.screen.shake
@viewport1_2.update
end
end
#==============================================================================
# Spriteset_Battle
#==============================================================================
if KGC::DayNight::BG_TONE_IN_BATTLE == KGC::DayNight::BATTLE_TONE_BG
class Spriteset_Battle
alias create_battleback_KGC_DayNight create_battleback
def create_battleback
create_battleback_KGC_DayNight
if @battleback_sprite.wave_amp == 0
@battleback_sprite.tone = $game_troop.screen.daynight_tone
end
end
alias create_battlefloor_KGC_DayNight create_battlefloor
def create_battlefloor
create_battlefloor_KGC_DayNight
@battlefloor_sprite.tone = $game_troop.screen.daynight_tone
end
end
end
#==============================================================================
# Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
alias start_KGC_DayNight start
def start
$game_map.screen.clear_daynight
start_KGC_DayNight
end
end |
I tak jak mówię jeżeli czegoś nie będziesz rozumiał to pisz do Ayene, ja w tym skrypcie nie jestem ekspertem, umiem jedynie zrobić tak aby po przejściu np: z lasu do jaskini było ciemno itp. ale z tego co czytałem możliwości jest więcej. |
________________________ Pracuję nad 2 częścią gry Ostatnia Powieść
Fabuła : Niezła ( jeżeli lubicie Assassin's Creed )
Skrypty: Sporo przyznam się.
Walki: Dużo i to trudnych!
Misje: Wiele głównych i pobocznych
Muzyka: Ciekawa, wpadająca w ucho
Graficzki: Kilka własnych i kilka pożyczonych
Wzorowanie się: Assassin's Creed, Final Fantasy
|
|
|
|
Prometherion
Preferowany:
Pomógł: 3 razy Dołączył: 21 Gru 2010 Posty: 30
|
Wysłany: Sob 16 Kwi, 2011 19:59
|
|
|
A nie możesz po prostu ściemnić ekranu w evencie? Wg mnie jest to najprostszy sposób, a nie bawienie się w skrypty. Oczywiście ten sposób będzie najprostszy w przypadku gdy nie zamierzasz robić cyklu Dzień/Noc. |
|
|
|
Dżoj
Pomógł: 10 razy Dołączył: 03 Mar 2011 Posty: 53
|
Wysłany: Sob 16 Kwi, 2011 20:06
|
|
|
Wchodzisz w nowe zdarzenie i szukasz zmień odcień ekranu tam se ustawiasz i to wszystko |
________________________
|
|
|
|
filipek32
Preferowany:
Dołączył: 16 Kwi 2011 Posty: 76 Skąd: Z tąd
|
Wysłany: Sob 16 Kwi, 2011 20:07
|
|
|
Dobra dzieki:p Do zamknięcia! |
|
|
|
|
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
|
|