artekwnc - Pią 15 Sty, 2010 22:41 Temat postu: Skrypt3 Problemy :
Mam problem z tym skryptem
Spoiler:
Kod:
Informacje:
* Zegarek oraz kalendarzyk wyświetlają obecny dzień oraz godzinę
* Co godzinę odgrywany jest "DaySE"
* Co dzień odgrywany jest "DaySE"
* Kalendarzyk oraz okienko można włączać/wyłączać wybranym klawiszem
* Pozycję zegarka oraz kalendarzyka można zmienić według własnych potrzeb
* Podczas włączenia/wyłączenia odgrywany jest wybrany przez nas dźwięk
* Wszystkie ustawienia znajdują się na początku skryptu oraz w Common Eventach
Screen:
Instalacja:
1. Kopiujemy kod i wklejamy w nowej klasie nad Main.
2. Wklejamy dźwięki "DaySE" i "HourSE" do folderu "Audio/SE".
3. Kopiujemy 4 Common Eventy z demka i wklejamy w swoim projekcie.
4. Na starcie gry manewrujemy ustawieniami (przełącznikami i zmiennymi).
Skrypt:
Kod:
#==============================================================================
# *** Day&Night System
#------------------------------------------------------------------------------
# * By Dan (01.10.2008r.)
#==============================================================================
# * Ustawienia
#==============================================================================
# Nazwa czcionki wyświetlanej na zegarku.
FONT_NAME = "Times New Roman"
# Rozmiar czcionki wyświetlanej na zegarku.
FONT_SIZE = 19
# Przezroczystość okienka z którego zrobione jest okienko.
WINDOW_BACK_OPACITY = 160
# Nazwa Windowskina z którego zrobione jest okienko.
WINDOW_NAME = "001-Blue01"
# Czy ma być wyświetlany kalendarz? True na tak, false na nie.
CLOCK_SWITCH = 2
# Numer zmiennej minut
MIN_VARIABLE = 1
# Numer zmiennej godzin
HOUR_VARIABLE = 2
# Numer zmiennej dni
DAY_VARIABLE = 3
# Dźwięk odegrany po dojściu do pełnej godziny
HOUR_SE = "HourSE"
# Dźwięk odegrany po dojściu do godziny 24:00.
DAY_SE = "DaySE"
# Dźwięk odegrany po włączeniu zegarka.
CLOCK_SE = "ClockSE"
# Klawisz odpowiadający za włączenie/wyłączenie zegarka.
TIME_KEY = Input::A
# Pozycja X zegarka
CLOCK_X_PSTN = 540
# Pozycja Y zegarka
CLOCK_Y_PSTN = 0
# Pozycja X kalendarza
CALENDAR_X_PSTN = 463
# Pozycja Y kalendarza
CALENDAR_Y_PSTN = 0
#==============================================================================
# ** Window_Clock
#------------------------------------------------------------------------------
# This window displays time in the game.
#==============================================================================
#==============================================================================
# ** Window_Calendar
#------------------------------------------------------------------------------
# This window displays day in the game.
#==============================================================================
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs map screen processing.
#==============================================================================
class Scene_Map
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Make sprite set
@spriteset = Spriteset_Map.new
# Make clock window
@clock_window = Window_Clock.new
# Make calendar window
@calendar_window = Window_Calendar.new
# Make message window
@message_window = Window_Message.new
# Transition run
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of sprite set
@spriteset.dispose
# Dispose of clock window
@clock_window.dispose
# Dispose of calendar window
@calendar_window.dispose
# Dispose of message window
@message_window.dispose
# If switching to title screen
if $scene.is_a?(Scene_Title)
# Fade out screen
Graphics.transition
Graphics.freeze
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Loop
loop do
# Update map, interpreter, and player order
# (this update order is important for when conditions are fulfilled
# to run any event, and the player isn't provided the opportunity to
# move in an instant)
$game_map.update
$game_system.map_interpreter.update
$game_player.update
# Update system (timer), screen
$game_system.update
$game_screen.update
# Abort loop if player isn't place moving
unless $game_temp.player_transferring
break
end
# Run place move
transfer_player
# Abort loop if transition processing
if $game_temp.transition_processing
break
end
end
# Update sprite set
@spriteset.update
# Update clock window
@clock_window.refresh
# Update calendar window
@calendar_window.refresh
# Update message window
@message_window.update
# If game over
if $game_temp.gameover
# Switch to game over screen
$scene = Scene_Gameover.new
return
end
# If returning to title screen
if $game_temp.to_title
# Change to title screen
$scene = Scene_Title.new
return
end
# If transition processing
if $game_temp.transition_processing
# Clear transition processing flag
$game_temp.transition_processing = false
# Execute transition
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# If showing message window
if $game_temp.message_window_showing
return
end
# If encounter list isn't empty, and encounter count is 0
if $game_player.encounter_count == 0 and $game_map.encounter_list != []
# If event is running or encounter is not forbidden
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
# Confirm troop
n = rand($game_map.encounter_list.size)
troop_id = $game_map.encounter_list[n]
# If troop is valid
if $data_troops[troop_id] != nil
# Set battle calling flag
$game_temp.battle_calling = true
$game_temp.battle_troop_id = troop_id
$game_temp.battle_can_escape = true
$game_temp.battle_can_lose = false
$game_temp.battle_proc = nil
end
end
end
# If B button was pressed
if Input.trigger?(Input::B)
# If event is running, or menu is not forbidden
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
# Set menu calling flag or beep flag
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
# If debug mode is ON and F9 key was pressed
if $DEBUG and Input.press?(Input::F9)
# Set debug calling flag
$game_temp.debug_calling = true
end
# If player is not moving
unless $game_player.moving?
# Run calling of each screen
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
end
end
end
end
Autor:Dan
Demko:Klik!
Dokładniej taki problem, zrobiłem wszystko jak jest napisane, nawet skopiowałem od niego przełączniki itp, ale i tak dalej czasu mi nie liczy.. Mam wszystko pokazane, dzień, zegar itp, lecz czasu mi nie liczy -.- Jeśli komuś będzie potrzebny mogę wysłać grę i niech to zrobi, ale wyślę tylko zaufanym osobom...
PS w demo wszystko działa...
___ !
I drugi problem, ale to jest do gry niespodzianka, więc jednej osobie która dooobrze zna się na skryptach i na przełącznikach, bohaterach itp i by się nie wygadała podałbym gre i na pw o co kaman;] Chodzi o coś z bohaterami ;p
_____!
I trzeci problem, wsadziłem skrytp Quest Log, i ten drugi co jest do niego potrzebny, i nie wiem jak się nim obsługiwać -.- Ciągle wywalają mi jakieś błędy jak dodaje te questy i potem chce sprawdzić je... Posiadam ten skrypt -
Pozaznaczałem trzy pierwsze rzeczy - False, False, True
Spoiler:
Kod:
#===============================================================================
# Thieffer's QuestLog
# version 1.0
# by Thieffer 09.05.2009
#===============================================================================
#===============================================================================
# INSTRUKCJE
#===============================================================================
# Aby włączyć dziennik zadań należy wywołać skrypt:
# $scene = Scene_QuestLog.new
# Zadania powinny być wcześniej zdefiniowane wg wzoru:
# $quest= ["nazwa", poziom, "grafika", "treść"]
# gdzie zamiast:
# $quest --> możesz wpisać co zechcesz (nie będzie wyświetlane)
# "nazwa" --> nazwa zadania (będzie wyświetlana)
# poziom --> liczba od 1 do 5 (poziom trudności)
# "grafika" --> nazwa pliku zawierającego obrazek o wymiarach 400px na 100px (obrazek przedstawiający scenkę z zadania)
# "treść" --> treść zadania
# Konfiguracja:
# $PICTURE_DIFFICULTY = true/false
# (jeśli true, to poziom trudności będzie przedstawiony
# za pomocą obrazków; jeśli false - za pomocą tekstu)
# Obrazki muszą mieć nazwę: quest_difficulty1, quest_difficulty2 itd. (max 5) oraz rozmiary 125px na 48px.
# Tekst możesz edytować w zmiennych $QD1, $QD2 itd.
# $PICTURE_DESCRIPTION = true/false
# (jeśli true, to w opisie zadania, pojawi się obrazek o wymiarach 400px na 100px;
# jeśli false - brak obrazka)
# $MAP_AS_BACKGROUND = true/false
# (jeśli true, to w tle okienek widać mapę, na której jest bohater oraz podczas
# wciśnięcia ESC pojawia nam się mapa; jeśli false - czarne tło oraz podczas
# wciśnięcia ESC pojawia nam się Menu (opcjonalnie Scene_Menu.new))
# Obsługa:
# Dodawanie zadania:
# $game_party.add_quest($quest)
# $quest --> to nazwa "robocza" zadania (ta, która nie jest wyświetlana)
# Ukończenie zadania:
# $game_party.complete_quest($quest)
# Usunięcie zadania:
# $game_party.remove_quest($quest)
# Warunek - czy zadanie jest wykonane?
# $game_party.is_quest_completed?($quest)
#===============================================================================
# U W A G A ---> skrypt wymaga ATP(Advanced Text Paragrapher) V1.0 by Samo, The thief
#===============================================================================
#===============================================================================
# Game_Party
#===============================================================================
class Game_Party
alias :old_initialize :initialize
def initialize
old_initialize
@quests = []
@completed_quests = []
end
#-----------------------------------------------------------------------
# Dodawanie zadania.
#-----------------------------------------------------------------------
def add_quest(quest)
@quests.push(quest) if not @quests.include?(quest)
end
#-----------------------------------------------------------------------
# Ukończenie zadania.
#-----------------------------------------------------------------------
def complete_quest(quest)
if @quests.include?(quest) and not @completed_quests.include?(quest)
@completed_quests.push(quest)
@quests.delete(quest)
end
end
#-----------------------------------------------------------------------
# Usuwanie zadania.
#-----------------------------------------------------------------------
def remove_quest(quest)
@quests.delete(quest) if @quests.include?(quest)
end
#-----------------------------------------------------------------------
# Warunek - czy zadanie jest ukończone?
#-----------------------------------------------------------------------
def is_quest_completed?(quest)
if @completed_quests.include?(quest)
return true
end
return false
end
#-----------------------------------------------------------------------
# Metoda zwraca nazwę zadania.
#-----------------------------------------------------------------------
def quest_name(quest)
return quest[0]
end
#-----------------------------------------------------------------------
# Metoda zwraca poziom trudności zadania.
#-----------------------------------------------------------------------
def quest_difficulty(quest)
case quest[1]
when 1
$QD1
when 2
$QD2
when 3
$QD3
when 4
$QD4
when 5
$QD5
end
end
#-----------------------------------------------------------------------
# Metoda zwraca nazwę pliku z obrazkiem poziomu trudności zadania (125px na 48px).
#-----------------------------------------------------------------------
def quest_picture_difficulty(quest)
case quest[1]
when 1
"quest_difficulty1"
when 2
"quest_difficulty2"
when 3
"quest_difficulty3"
when 4
"quest_difficulty4"
when 5
"quest_difficulty5"
end
end
#-----------------------------------------------------------------------
# Metoda zwraca nazwę pliku z obrazkiem zadania (400px na 100px).
#-----------------------------------------------------------------------
def quest_picture(quest)
return quest[2]
end
#-----------------------------------------------------------------------
# Metoda zwraca treść zadania.
#-----------------------------------------------------------------------
def quest_description(quest)
return quest[3]
end
#-----------------------------------------------------------------------
# Metoda zwraca zadania do wykonania.
#-----------------------------------------------------------------------
def quests
return @quests
end
#-----------------------------------------------------------------------
# Metoda zwraca zadania ukończone.
#-----------------------------------------------------------------------
def completed_quests
return @completed_quests
end
#-----------------------------------------------------------------------
end
#===============================================================================
# Window_QuestDifficulty
#===============================================================================
class Window_QuestDifficulty < Window_Base
def initialize(quest)
super(450, 30, 170, 80)
self.contents = Bitmap.new(width - 32, height - 32)
self.z = 100
self.back_opacity = 230
@quest = quest
refresh
end
#-----------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = Color.new(60,170,25,255)
if $PICTURE_DIFFICULTY
self.contents.blt(13, 0, RPG::Cache.picture($game_party.quest_picture_difficulty(@quest)), Rect.new(0, 0, 125, 48))
else
self.contents.draw_text(20,0,118,48,$game_party.quest_difficulty(@quest),1)
end
end
#-----------------------------------------------------------------------
end
#===============================================================================
# Window_QuestDescription
#===============================================================================
class Window_QuestDescription < Window_Base
def initialize(quest)
super(40, 110, 580, 350)
self.contents = Bitmap.new(width - 32, height - 32)
self.z = 99
self.back_opacity = 230
@quest = quest
refresh
end
#-----------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 18
# wykorzystanie ATP
paragraph = str_paragraph($game_party.quest_description(@quest),518)
if $PICTURE_DESCRIPTION
self.contents.blt(74,0, RPG::Cache.picture($game_party.quest_picture(@quest)), Rect.new(0,0,400,100))
draw_paragraph(30,16,518,202, paragraph)
else
draw_paragraph(30,-116,518,318, paragraph)
end
end
#-----------------------------------------------------------------------
end
#===============================================================================
# Scene_QuestLog
#===============================================================================
class Scene_QuestLog
def initialize
@quests = $game_party.quests
@completed_quests = $game_party.completed_quests
@quests_names = []
@completed_quests_names = []
if @quests.size > 0
for i in 0..(@quests.size-1)
@quests_names.push @quests[i][0]
end
else
@quests_names.push "Brak zadań"
end
if @completed_quests.size > 0
for k in 0..(@completed_quests.size-1)
@completed_quests_names.push @completed_quests[k][0]
end
else
@completed_quests_names.push "Brak ukończonych zadań"
end
end
#-----------------------------------------------------------------------
def main
@command_window = Window_Command.new(210, ["Aktualne zadania", "Ukończone zadania"])
@quests_command_window = Window_Command.new(220, @quests_names)
@completed_quests_command_window = Window_Command.new(220, @completed_quests_names)
@quests_command_window.active = false
@quests_command_window.visible = false
@completed_quests_command_window.active = false
@completed_quests_command_window.visible = false
@command_window.x = 640 - @command_window.width
@command_window.y = 50
@command_window.back_opacity = 190
@quests_command_window.x = 640 - @quests_command_window.width
@quests_command_window.y = 50
@quests_command_window.height = 200
@quests_command_window.back_opacity = 190
@completed_quests_command_window.x = 640 - @completed_quests_command_window.width
@completed_quests_command_window.y = 50
@completed_quests_command_window.height = 200
@completed_quests_command_window.back_opacity = 190
if $MAP_AS_BACKGROUND
@spriteset = Spriteset_Map.new
end
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@quests_command_window.dispose
@completed_quests_command_window.dispose
if $MAP_AS_BACKGROUND
@spriteset.dispose
end
end
#-----------------------------------------------------------------------
def update
@command_window.update
@quests_command_window.update
@completed_quests_command_window.update
if $MAP_AS_BACKGROUND
@spriteset.update
end
if @command_window.active
update_command
return
end
if @quests_command_window.active
update_quests
return
end
if @completed_quests_command_window.active
update_completed_quests
return
end
if @quests_mode
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@quest_name_window.dispose
@quest_difficulty_window.dispose
@quest_description_window.dispose
@quests_command_window.active = true
@quests_command_window.visible = true
@quests_command_window.index = @index
end
return
end
if @completed_quests_mode
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@quest_name_window.dispose
@quest_difficulty_window.dispose
@quest_description_window.dispose
@completed_quests_command_window.active = true
@completed_quests_command_window.visible = true
@completed_quests_command_window.index = @index
end
return
end
end
#-----------------------------------------------------------------------
def update_command
if Input.trigger?(Input::B)
if $MAP_AS_BACKGROUND
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
else
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(0)
end
end
if Input.trigger?(Input::C)
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@command_window.visible = false
@quests_command_window.active = true
@quests_command_window.visible = true
when 1
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@command_window.visible = false
@completed_quests_command_window.active = true
@completed_quests_command_window.visible = true
end
end
end
#-----------------------------------------------------------------------
def update_quests
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@command_window.visible = true
@quests_command_window.active = false
@quests_command_window.visible = false
end
if Input.trigger?(Input::C)
if @quests.size > 0
$game_system.se_play($data_system.decision_se)
@index = @quests_command_window.index
quest = @quests[@index]
@quest_name_window = Window_QuestName.new(quest)
@quest_difficulty_window = Window_QuestDifficulty.new(quest)
@quest_description_window = Window_QuestDescription.new(quest)
@quests_command_window.active = false
@quests_command_window.visible = false
@quests_mode = true
else
$game_system.se_play($data_system.buzzer_se)
end
end
end
#-----------------------------------------------------------------------
def update_completed_quests
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@command_window.visible = true
@completed_quests_command_window.active = false
@completed_quests_command_window.visible = false
end
if Input.trigger?(Input::C)
if @completed_quests.size > 0
$game_system.se_play($data_system.decision_se)
@index = @completed_quests_command_window.index
quest = @completed_quests[@index]
@quest_name_window = Window_QuestName.new(quest)
@quest_difficulty_window = Window_QuestDifficulty.new(quest)
@quest_description_window = Window_QuestDescription.new(quest)
@completed_quests_command_window.active = false
@completed_quests_command_window.visible = false
@completed_quests_mode = true
else
$game_system.se_play($data_system.buzzer_se)
end
end
end
#-----------------------------------------------------------------------
end
Ayene - Nie 17 Sty, 2010 12:17 1. Jesteś pewien, że skopiowałeś oba zdarzenia z mapy zmieszczonej w demie? (i że są one ustawione na parallel process - równoległe zdarzenie). Czy jesteś również pewien, że skopiowałeś wszystkie Common Events / Typowe Zdarzenia? Jest ich pięć, a cztery pierwsze z nich również są równoległe (czyli aktywują się na określony przełącznik).
2. Na drugie nie mam jak odpowiedzieć.
3. Na tej stronie znajdziesz Demo http://thieffer.cba.pl/weblog/?p=13
Skopiuj wszystkie materiały z folderu Pictures i podejrzyj, jak zdefiniowane są questy w demie.Malian - Nie 17 Sty, 2010 12:22 Heh... Wyślij mi kolejną część demka (chyba 1.3). Może coś poradzę.artekwnc - Nie 17 Sty, 2010 15:08 To 2 to skrypt o wybieraniu os na początku gry, i jesli wybiore jakiś to dodaje mi do grupy i mam 2 os...Malian - Nie 17 Sty, 2010 15:10 Ach... To to. Wyślij mi demko na e-mail jutro nad tym popracuję.
Ty chyba ze mną nie współpracujesz bo mi wersji 1.3 nie wysłałeś.artekwnc - Nie 17 Sty, 2010 15:37 Najnowszą wersje masz na necie ;] Nic nowego nie robiłem... Chyba że czegoś brak to jutro na gg Ci wyśle, bo dzisiaj nie będe w domu...