Krótki opis:
Witam. To mój pierwszy post wraz z przetłumaczonym i wyjaśnionym skryptem więc proszę o wyrozumiałość jeśli popełnię jakiś błąd. Przedstawiam wam skrypt, który umożliwia nam dodawanie teleportów do różnych miejsc w naszym projekcie bez zbędnego tworzenia w zdarzeniach. Dzięki temu możecie utworzyć coś takiego jak w grze Skyrim czyli jak dojdziemy do jakiejś miejscowości to ona automatycznie jest dopisywana do naszego teleportu co umożliwia nam teleportacje bez zbędnego bawienia się w zdarzenia. Co lepsze w każdej chwili możemy dodać lub usunąć dany teleport do wyznaczonego miejsca. Jest też możliwość zablokowania jak i odblokowywania danych teleportów. Autor tego skryptu dał nam też wiele opcji takie jak zmiana czcionki, wyświetlenie opisu czy też obrazka z daną lokacją, dodanie ikonki dla danego teleportu itd.
Zapraszam to testowania skryptu w moim demie ^ ^
Autor:
Nicke
Tłumaczenie:
Ka0909
Kompatybilność:
RPG Maker VX Ace
Skrypt:
Spoiler:
Kod:
#==============================================================================
# XaiL System - Teleport
# Author: Nicke
# Created: 10/01/2012
# Edited: 03/04/2012
# Version: 1.0a
#==============================================================================
# Tłumaczenie na polski: ka0909
# Dopisałem też krótki poradnik jak i legęde w razie potrzeby.
# W razie jakich kolwiek problemów w tłumaczeniu proszę poinformować mnie na
# forum poniżej danej strony i napisanie pod tym samym nickiem ^ ^
#==============================================================================
# http://www.ultimateam.pl/
#==============================================================================
# Instrukcja PL
# -----------------------------------------------------------------------------
# Żeby zainstalować skrypt otwórz edytor skrytpu oraz wklej go nad main.
# Pamiętaj by dokładnie przeczytać instrukcję oraz zapisać dany skrypt :)
#
# Daną scene do teleportu wywołujemy poprzez komendę:
# SceneManager.call(Scene_Teleport)
#
# Aby dodać lub usunąć teleport używamy komendy:
# tp(id, type, enabled = true)
# id-identyfikator
# type-add(dodaje nam teleport),del(usuwa nam teleport).
# enabled(true albo false)-tym oznaczamy czy dany teleport jest możliwy czy
# jest on wyłączony.
#
# Skróty:
# tp(2, :add) # Dodaje teleport o id 2
# tp(2, :del) # Usuwa teleport o id 2.
#
# Aby sprawdzić, czy id jest dodawany lub włączona / wyłączona, wykonaj
# następujące czynności, korzystnie z:
# tp_added?(id)
# tp_enable?(id)
# Skróty:
# tp_added?(2) # Czy jest dodany teleport o ID 2
# tp_enabled?(1) # Czy jest możliwy teleport o ID 1
# !tp_enabled?(3) # Sama metoda używana, ale zwraca wartość true, jeśli jest
# wyłączony.
#
# W każdej chwili możemy zablokować lub umożliwić teleport poprzez dane komendy
# tp_enable(1, true) # Umozliwia teleport o id 1
# tp_enable(2, false) # Blokuje teleport o id 2
#
# Jeśli chcesz szybko usunąć lub dodać wszystkie teleporty użyj komendy:
# Ta metoda jest podobna jak wyżej wymieniony add i del.
# tp_all(:add) # Dodaje wszystkie teleporty o każdym id.
# tp_all(:del) # Usuwa wszystkie teleporty o każdym id.
#
# Przeczytaj uważnie wybór przy tworzeniu nowego miejsca teleportacji oraz
# Jak zmienić niektórych ustawień. Upewnij się, że ustawienia są dobre,
# mam nadzieję że będą Państwo zadowoleni. Enjoy!
#
# *** Wyłącznie dla RPG VX ACE!***
#==============================================================================
($imported ||= {})["XAIL-XS-TELEPORT-SCENE"] = true
module XAIL
module TELEPORT
#--------------------------------------------------------------------------#
# * Settings
#--------------------------------------------------------------------------#
# Czcionka użyta = [ nazwa czcionki, wielkość, kolor, pogrubienie, kursywa,
# cień ].
TP_CMD_FONT = [["Verdana"], 16, Color.new(255,255,255), true, false, false]
TP_INFO_FONT = [["Verdana"], 14, Color.new(155,205,205), true, false, true]
#TP_CMD_Font tekst nazwy teleportów.
#TP_Info_Font opis teleportu
# Czy ma być używany windowskin jaki wybierzemy, nil oznacza że nie.
# SKIN = string
SKIN = nil
# Użyj tego szablonu podczas dodawania długi ciąg do szczegółów mapy.
# użyj \n aby przejść do nowej linni w opisie.
# TP_INFO_ID = Długość ciągu.
TP_INFO_1 = "This is a very long string so that you can see how it may\nwork when using a super long string. :-)"
TP_INFO_2 = "This is just a text explaining the map info."
TP_INFO_3 = "Since this map is disabled i.e no teleporting allowed the\ncommand is disabled as well as the text."
# Jak wiele linni mamy mieć w opisie
# Jeśli chcesz mieć więcej tekstu w opisie zwiększ ilość linni :).
# TP_INFO_LINES = ilość linni
TP_INFO_LINES = 3
# Ustawia dopełnienie tekstu w oknie informacyjnym.
TP_INFO_PADDING = 10 # Default: 12.
# Lista teleportów:
# ID = ['Title', :symbol, map_id, x & y, map_image(nil), map_info(nil),
# enabled, icon_index]
TP_LIST = [] # Nie usuwać!
TP_LIST[0] = ['Zielona łąka', :disabled, 1, [3,4], nil, "piękna zielona łaka z drzewem", true, 309]
TP_LIST[1] = ['Pustynia', :disabled, 1, [10,5],nil, "pustynia bez wody ;(", true, nil]
TP_LIST[2] = ['Góry', :disabled, 2, [4,4],nil, "Dużo gór w około", false, 100]
# LEGENDA:
# 'Title'-Tytuł teleportu np: góra. Pamiętać by wpisywać ' '.
# Map_id-identyfikator mapy wyświetlany na dole po prawej w programie.
# x & y-Miejsce do którego ma się teleportować.
# map_image-Nazwa obrazka dla danego teleportu. Możemy nie dawać obrazka.
# Wtedy wpisujemy wyłącznie "nil" beż cudzysłowów.
# map_info-Opis teleportu. Pamiętać by opis wpisywać w ' '. Tu też możemy
# wpisać "nil" wtedy nie będzie opisu.
# enabled-oznacza to czy teleport jest aktywny(true) czy zablokowany(false).
# icon_index-ikona dla danego teleportu. Możemy wpisać "nil" jeśli nie
# chcemy żadnej ikony.
# Pusty indeks ikony. Która ikona powinna być w użyciu, jeśli TP_LIST
# icon_index jest zerowa.
EMPTY_ICON_INDEX = 0
# Tekst jaki się pojawia:
TEXT_NO_TELEPORTS = "Nie znaleziono żadnych lokalizacji do teleportowania się"
# Ten tekst wyżej pojawia się gdy naszemu graczowi nie przypisaliśmy żadnego
# teleportu. Aby taki tekst zniknął musimy przynajmniej dać jedną możliwość
# do przeteleportowania się.
OK_NAME = "Teleportuj" # Tekst oznajmiający że chcemy się przeteleportować
OK_CANCEL = "Anuluj" # Tekst który oznacza anulowanie teleportu
# Grafika przejścia. Ustawiona zazwyczaj jest na "nil" czyli brak. Ale
# jak ktoś chce można dać wtedy wystarczy wypełnić co jest poniżej:
# TRANSITION [ SPEED, TRANSITION, OPACITY ] #opcje przejścia
# TRANSITION = [40, "Graphics/Transitions/1", 50]#wypełniona opcja przejścia
TRANSITION = nil
# Tło Sceny do teleportowania się (Musimy się znajdywać w folderze:"system")
# Uwaga: Możesz też zmniejszyć krycie.
# okna tak, że można właściwie zobaczyć tle.
# Ustaw "nil" jeśli nie chcesz ustawić żadnego tła.
BACK = nil
# Możesz przypisać daną animacje jaka ma być wyświetlana w czasie
# teleportowania się.
# Jak ktoś nie chce animacji to można nil.
ANIM_ID = 81 #numer animacji
# Możemy też określić czas jaki trzeba do wyciszenia dzwięków.
# 1000 (1 sekunda)
# ANIM_SCENE_FADE/ANIM_AUDIO_FADE = number
ANIM_SCENE_FADE = 500 # Czas wyłączanie BGS.
ANIM_AUDIO_FADE = 500 # Czas wyłączenia pozostałych dzwięków.
end
end
# *** Dalej nic nie dotykaj chyba że wiesz co robisz. ***
#==============================================================================#
# ** Game_System
#------------------------------------------------------------------------------
# Method for checking the teleport list.
#==============================================================================#
class Game_System
attr_accessor :tp_list
alias xail_teleport_sys_initialize initialize
def initialize(*args, &block)
xail_teleport_sys_initialize(*args, &block)
@tp_list = []
end
end
#==============================================================================#
# ** Game_Interpreter
#------------------------------------------------------------------------------
# Method for adding and deleting a teleport.
#==============================================================================#
class Game_Interpreter
def tp(id, type)
# // Method to add a item to the list.
case type
when :add # // Add teleport id.
unless $game_system.tp_list.include?(XAIL::TELEPORT::TP_LIST[id])
$game_system.tp_list.push(XAIL::TELEPORT::TP_LIST[id])
end unless XAIL::TELEPORT::TP_LIST[id].nil?
when :del # // Remove teleport id.
unless XAIL::TELEPORT::TP_LIST[id].nil?
$game_system.tp_list.delete(XAIL::MENU::TP_LIST[id])
end
end
end
def tp_enabled?(id)
# // Method to check if id is enabled.
# (Must be added in the list or else it returns nil).
return if $game_system.tp_list[id].nil?
return $game_system.tp_list[id][6]
end
def tp_added?(id)
# // Method to check if id is added.
return $game_system.tp_list[id]
end
def tp_enable(id, enabled)
# // Method to enable id.
$game_system.tp_list[id][6] = enabled
end
def tp_all(type = :add)
# // Method to add/delete all teleport id's.
id = 0
while id < XAIL::TELEPORT::TP_LIST.size
case type
when :add
tp(id, :add)
else
tp(id, :del)
end
id += 1
end
end
end
#==============================================================================#
# ** Window_TeleportCommand
#------------------------------------------------------------------------------
# New Window :: Window_TeleportCommand - A window for creating the commands.
#==============================================================================#
class Window_TeleportCommand < Window_Command
def window_width
# // Method to return the width.
return 160
end
def window_height
# // Method to return the height.
return Graphics.height
end
def menu_color(color, enabled = true)
# // Method to set the color and alpha if not enabled.
contents.font.color.set(color)
contents.font.color.alpha = 100 unless enabled
end
def draw_tp_icons(index)
# // Method to draw the icons.
# If there is no icon as in nil return a empty
# icon index
y = 0
for i in @tp_list
icon = i[7].nil? ? XAIL::TELEPORT::EMPTY_ICON_INDEX : i[7]
draw_icon(icon, 0, y, menu_enabled?(index))
y += 24
end
end
def item_rect_for_icons(index)
# // Method to draw the text with icons.
rect = item_rect(index)
rect.x += 24
rect.width -= 8
rect
end
def menu_enabled?(index)
# // Method to check if item is enabled.
return @tp_list[index][6]
end
alias xail_mk_cmd_list_tp make_command_list
def make_command_list(*args, &block)
# // Method to add the commands.
xail_mk_cmd_list_tp(*args, &block)
@tp_list = $game_system.tp_list
for i in @tp_list
add_command(i[0], i[1], i[6])
end
end
end
#==============================================================================#
# ** Window_OK_Command
#==============================================================================#
class Window_OK_Command < Window_Command
def window_width
# // Method to return the width.
return 120
end
def alignment
# // Method to return the alignment.
return 1
end
alias xail_mk_cmd_list_ok make_command_list
def make_command_list(*args, &block)
# // Method to add the commands.
xail_mk_cmd_list_ok(*args, &block)
add_command(XAIL::TELEPORT::OK_NAME, :ok)
add_command(XAIL::TELEPORT::OK_CANCEL, :cancel)
end
end
#==============================================================================#
# ** Window_tpInfo
#==============================================================================#
class Window_tpInfo < Window_Base
def initialize(x, y, width, height)
# // Method to initialize the window.
super(0, 0, width, window_height)
@tp_list = $game_system.tp_list
refresh
end
def set_text(text, enabled)
# // Method to set a new the tp text to the window.
if text != @text
@text = text
menu_color(XAIL::TELEPORT::TP_INFO_FONT[2], enabled)
refresh
end
end
def window_height
# // Method to return the height.
return fitting_height(XAIL::TELEPORT::TP_INFO_LINES)
end
def standard_padding
# // Method to set the padding for text.
return XAIL::TELEPORT::TP_INFO_PADDING
end
def refresh
# // Method to refresh the window.
contents.clear
draw_tp_text
end
def menu_color(color, enabled = true)
# // Method to set the color and alpha if not enabled.
contents.font.color.set(color)
contents.font.color.alpha = 150 unless enabled
end
def draw_tp_ex(x, y, text)
# // Special method to draw a text.
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
def draw_tp_text
# // Method to draw the tp text to the window.
contents.font.name = XAIL::TELEPORT::TP_INFO_FONT[0]
contents.font.size = XAIL::TELEPORT::TP_INFO_FONT[1]
contents.font.bold = XAIL::TELEPORT::TP_INFO_FONT[3]
contents.font.italic = XAIL::TELEPORT::TP_INFO_FONT[4]
contents.font.shadow = XAIL::TELEPORT::TP_INFO_FONT[5]
draw_tp_ex(0, 0, @text)
reset_font_settings
end
end
#==============================================================================#
# ** Window_tpImage
#==============================================================================#
class Window_tpImage < Window_Base
def initialize(x, y, width, height)
# // Method to initialize the window.
super(0, 0, width, height)
refresh
end
def refresh
# // Method to refresh the window.
contents.clear
end
def draw_tp_map(x, y, source, enabled = true)
# // Method to draw the teleport map.
rect = Rect.new(0, 0, Graphics.width, Graphics.height)
return clear_tp_map(rect) if source.nil?
clear_tp_map(rect)
tp_map = Cache.picture(source)
contents.blt(x, y, tp_map, rect, enabled ? 255 : 150)
end
def clear_tp_map(rect)
# // Method to clear tp_map rect.
contents.clear_rect(rect)
end
end
#==============================================================================#
# ** Scene_TeleportBase
#------------------------------------------------------------------------------
# New Scene :: Scene_TeleportBase - The teleport scene.
#==============================================================================#
class Scene_TeleportBase < Scene_Base
alias xail_tpbase_start start
def start(*args, &block)
# // Method to start the scene
xail_tpbase_start(*args, &block)
@tp_list = $game_system.tp_list
create_background
end
def post_start
# // Method to post_start the scene.
perform_transition unless @tp_list.empty?
end
alias xail_tpbase_terminate terminate
def terminate(*args, &block)
# // Method to terminate the scene.
xail_tpbase_terminate(*args, &block)
end
def create_background
# // Method to create the background.
@background_sprite = Sprite.new
if XAIL::TELEPORT::BACK.nil?
@background_sprite.bitmap = SceneManager.background_bitmap
@background_sprite.color.set(16, 16, 16, 128)
else
@background_sprite.bitmap = Cache.system(XAIL::TELEPORT::BACK)
end
end
alias xail_tpbase_transition perform_transition
def perform_transition(*args, &block)
# // Method to create the transition.´
if XAIL::TELEPORT::TRANSITION.nil?
Graphics.transition(15)
else
Graphics.transition(XAIL::TELEPORT::TRANSITION[0],XAIL::TELEPORT::TRANSITION[1],XAIL::TELEPORT::TRANSITION[2])
end
xail_tpbase_transition(*args, &block)
end
end
#==============================================================================#
# ** Scene_Teleport
#------------------------------------------------------------------------------
# New Scene :: Scene_Teleport - The teleport scene.
#==============================================================================#
class Scene_Teleport < Scene_TeleportBase
alias xail_tpbase_init initialize
def initialize(*args, &block)
# // Method to initialize scene teleport.
xail_tpbase_init(*args, &block)
@tp_list = $game_system.tp_list
end
def start
# // Method to start scene teleport.
super
return command_map if @tp_list.empty?
create_tp_command_window
create_tp_info
create_tp_image
on_index_change(0) # // Draw id 0 when scene is loaded.
end
def create_tp_command_window
# // Method to create command list window.
@command_window = Window_TeleportCommand.new(0, 0)
@command_window.windowskin = Cache.system(XAIL::TELEPORT::SKIN) unless XAIL::TELEPORT::SKIN.nil?
for i in @tp_list
@command_window.set_handler(i[1], method(:command_ok_dialog))
end
@command_window.set_handler(:cancel, method(:return_scene))
end
def teleport_player(index)
# // Method for teleporting the player to the spawn event. (if exists)
$game_map.setup(@tp_list[index][2])
$game_player.moveto(@tp_list[index][3][0], @tp_list[index][3][1])
fadeout_scene
$game_map.autoplay
$game_map.refresh
$game_player.animation_id = XAIL::TELEPORT::ANIM_ID unless XAIL::TELEPORT::ANIM_ID.nil?
SceneManager.call(Scene_Map)
end
def fadeout_scene
time = XAIL::TELEPORT::ANIM_AUDIO_FADE
# // Method to fade out the scene.
RPG::BGM.fade(time)
RPG::BGS.fade(time)
RPG::ME.fade(time)
Graphics.fadeout(XAIL::TELEPORT::ANIM_SCENE_FADE * Graphics.frame_rate / 1000)
RPG::BGM.stop
RPG::BGS.stop
RPG::ME.stop
end
def draw_tp_info(index)
# // Draw teleport details.
title = @tp_list[index][0]
info = @tp_list[index][5]
enabled = @tp_list[index][6]
text = "#{title}\n#{info}" unless @tp_list[index][5].nil?
@tp_info.set_text(text, enabled)
end
alias xail_upd_tp_index_change update
def update(*args, &block)
# // Method for updating the scene.
old_index = @command_window.index
xail_upd_tp_index_change(*args, &block)
on_index_change(@command_window.index) if old_index != @command_window.index
end
def on_index_change(index)
# // If index changes redraw the image and info.
draw_tp_image(index)
draw_tp_info(index)
end
end # END OF FILE
#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#
Screeny:
Spoiler:
Demo:
Dodatkowe informacje:
Wszystko opisane w skrypcie!
Samo Xail nie ma znaczenia ale Rail to tak :)
Nie wiem czemu autor tak nazwał ale zapewnie chciał stworzyć swoje unikalne skrypty pod tytułem Xail System. Bo przecież ten sam autor ma wiele innych skryptów kompatybilnych z pozostałymi które robił.
________________________ ka0909 <--- Tajemnicze kanumerki
Pomagam w skryptach XP,VX i VX ace.
Napisz priv jeśli potrzebujesz pomocy ;)
Dołączył: 20 Mar 2013 Posty: 24 Skąd: Zapomniane Królestwo
Wysłany: Sob 23 Mar, 2013 18:50
Mam wgrane skrypty:
Spoiler:
Skrypt GameOver który odradza gracza a nie kończy gre
Skrypt do samodzielnego rozdawania statystyk,
Skrypt który daje więcej slotów na zapis.
skrypt dodający czas do gry
skrypt wyboru postaci ( który swoją drogą jeszcze nie ogarnąłem xD )
Skrypt na kolory przedmiotów
Skrypt Sapphire Action System 4.4
Skrypt dodający regulacje dźwięku w grze.
Klas awesome Light effects ( który też nie ogaraniam bo nie działa mi ._. )
System lvlingu ekwipunku
No i te teleporty
Dałem w spoilerze by nie zajmowały dużo miejsca :)
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