Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pią 13 Maj, 2011 12:53
Wybór postaci II [VX]
~ Wybór postaci II [VX] ~
Krótki opis
Skrypt jest poprawioną wersją Wyboru postaci z tego tematu. Pozwala na wybór klasy na początku gry. Może mieć również zastosowanie przy wyborze więcej niż jednego bohatera (maksymalnie tyle, ile może liczyć drużyna). W przeciwieństwie do wersji, na której był wzorowany, dodaje opcje wyświetlenia dużego obrazka postaci oraz jej opisu.
Autor skryptu
Ayene [yurika@o2.pl]
Kompatybilność
Tylko VX
Skrypt
Spoiler:
Kod:
#===================================================================
# Wybór postaci II [VX]
# by Ayene
# 13.05.2011 ver 1.0
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt pozwala na wybór klasy na początku gry. Może mieć również
# zastosowanie przy wyborze więcej niż jednego bohatera (maksymalnie tyle,
# ile może liczyć drużyna).
#===================================================================
# Instrukcja:
#===================================================================
# Na początku gry wywołaj za pomocą polecenia "Script" w zdarzeniu:
# $scene = Scene_CharacterSelect.new
#
#===================================================================
# Konfiguracja:
#===================================================================
module Ayene
module CharSel
# Tekst pomocy
HELP_TEXT = "Wybierz postać (SHIFT - opis postaci)"
# ID żeńskich postaci
GENDER_FEMALE = [2,4,7]
# ID męskich postaci
GENDER_MALE = [1,3,5,6,8]
# Nazwy podstawowych statystyk
STATS = ["Atak", "Obrona", "Wola", "Szybkość"]
# Wyświetlenie obrazka postaci. Obrazek o nazwie klasy postaci
# należy umieścić w folderze Graphics/Pictures, np. nazwa klasy to
# "gnom", wówczas do folderu trzeba wrzucić plik "gnom.png".
ACTOR_BATTLER = true
# Opis bohatera
ACTOR_DESCRIPTION = { # <-nie usuwać
# ID postaci => "Opis bohatera"
1 => "Tutaj |opis bohatera. |Kreska pionowa to przejście |do następnej linijki",
2 => "Tutaj |opis bohatera. |Kreska pionowa to przejście |do następnej linijki",
3 => "Tutaj |opis bohatera. |Kreska pionowa to przejście |do następnej linijki",
4 => "Tutaj |opis bohatera. |Kreska pionowa to przejście |do następnej linijki",
5 => "Tutaj |opis bohatera. |Kreska pionowa to przejście |do następnej linijki",
# By przejść do następnej linijki wystarczy użyć znaku |
# Maksymalnie 12 linijek tekstu.
} # <-nie usuwać
end
end
def draw_item(index)
self.contents.font.color = normal_color
self.contents.draw_text(8 + index * 150, -5, 100, 32, @commands[index], 1)
end
end
#--------------------------------------------------------------------------
# Window_Choose_Character
#--------------------------------------------------------------------------
class Window_Choose_Character < Window_Selectable
include Ayene::CharSel
def create_contents(gender=0)
self.contents.dispose
@data = []
case gender
when 0
item_max = GENDER_MALE.size
for i in 0...item_max
actor_id = $data_actors[GENDER_MALE[i]].id
if !$game_party.actors.include?(actor_id)
@data.push(actor_id)
end
end
when 1
item_max = GENDER_FEMALE.size
for i in 0...item_max
actor_id = $data_actors[GENDER_FEMALE[i]].id
if !$game_party.actors.include?(actor_id)
@data.push(actor_id)
end
end
end
@item_max = @data.size
self.contents = Bitmap.new(width - 32, @item_max * 110 - 5)
end
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index)
self.contents.font.color = normal_color
actor = $data_actors[@data[index]]
draw_actor_face(actor, 8, 6 + index * 110 - self.oy)
draw_actor_class(actor, 128, 6 + index * 110 - self.oy)
draw_actor_basis_hp_sp(actor, 128, WLH + 6 + index * 110 - self.oy)
draw_actor_stats(actor, 348, 6 + index * 110 - self.oy)
draw_actor_graphic(actor, 298, 68 + index * 110 - self.oy)
end
def draw_actor_class(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 108, WLH, $data_classes[actor.class_id].name)
end
def draw_actor_stats(actor, x, y)
self.contents.font.color = system_color
for i in 0...STATS.size
self.contents.draw_text(x, y + WLH * i, 84, WLH, STATS[i])
end
self.contents.font.color = normal_color
for i in 2...6
self.contents.draw_text(x + 32, y + WLH * (i - 2), 108, WLH, actor.parameters[i, actor.initial_level], 2)
end
end
def top_row=(row)
row = 0 if row < 0
row = row_max - 1 if row > row_max - 1
self.oy = row * 110
end
end
#--------------------------------------------------------------------------
# Window_Character_Info
#--------------------------------------------------------------------------
class Window_Character_Info < Window_Base
include Ayene::CharSel
def initialize
super(0, 56, 544, 360)
end
def refresh(actor_id)
self.contents.clear
actor = $data_actors[actor_id]
actor_class = $data_classes[actor.class_id]
self.contents.draw_text(40, 22, 108, WLH, actor_class.name,1)
draw_actor_battler(actor_class, 0, 0) if ACTOR_BATTLER rescue nil
draw_actor_description(actor_id) rescue nil
end
def draw_actor_battler(actor_class, x, y)
bitmap = Cache.picture(actor_class.name)
rect = Rect.new(0, 0, bitmap.width, bitmap.height)
y = 160 - bitmap.height / 2
self.contents.blt(x, y, bitmap, rect)
bitmap.dispose
end
def draw_actor_description(actor_id)
text = ACTOR_DESCRIPTION[actor_id].split(/\|/)
for i in 0...text.size
self.contents.font.color = normal_color
self.contents.draw_text(200, 22 + i * 24, self.width - 40, WLH, text[i])
break if (i * WLH) > (self.height - 100)
end
end
end
#--------------------------------------------------------------------------
# Scene_CharacterSelect
#--------------------------------------------------------------------------
class Scene_CharacterSelect < Scene_Base
include Ayene::CharSel
def terminate
super
dispose_menu_background
@help_window.dispose
@gender_window.dispose
@character_window.dispose
@info_window.dispose
end
def return_scene
$scene = Scene_Map.new
end
def update
super
update_menu_background
@help_window.update
if @gender_window.active
update_gender_selection
elsif @character_window.active
update_character_selection
elsif @info_window.active
update_info_window
end
end
def update_gender_selection
@gender_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
Sound.play_decision
show_character_window(@gender_window.index)
end
end
def update_character_selection
@character_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
hide_character_window
elsif Input.trigger?(Input::C)
determine_character
if $game_party.members.size < $game_party.party_size
Sound.play_decision
$game_party.add_actor(@actor_id)
return_scene
else
Sound.play_buzzer
end
elsif Input.trigger?(Input::A)
determine_character
Sound.play_decision
@character_window.active = false
@character_window.visible = false
@info_window.refresh(@actor_id)
@info_window.visible = true
@info_window.active = true
end
end
def determine_character
actor_index = @character_window.index
data = []
case @gender_window.index
when 0
item_max = GENDER_MALE.size
for i in 0...item_max
actor_id = $data_actors[GENDER_MALE[i]].id
if !$game_party.actors.include?(actor_id)
data.push(actor_id)
end
end
when 1
item_max = GENDER_FEMALE.size
for i in 0...item_max
actor_id = $data_actors[GENDER_FEMALE[i]].id
if !$game_party.actors.include?(actor_id)
data.push(actor_id)
end
end
end
@actor_id = $data_actors[data[actor_index]].id
end
def update_info_window
@info_window.update
if Input.trigger?(Input::B) or Input.trigger?(Input::A)
Sound.play_cancel
@info_window.visible = false
@info_window.active = false
@character_window.visible = true
@character_window.active = true
end
end
end
#--------------------------------------------------------------------------
# Game_Party
#--------------------------------------------------------------------------
class Game_Party < Game_Unit
attr_reader :actors
def party_size
return MAX_MEMBERS
end
end
Demo
niepotrzebne
Screenshot
Spoiler:
Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.
;( Nie ma takich że tak to nazwę całościowych, a tych popiersi to już mam dosyć dużo...
Był bym wdzięczny za umieszczenie jakiegoś linku do obrazków :) ( http://lud.sakura.ne.jp/index.html
już mam grafiki battlersów )
________________________ Pomyśl, o czym myślisz i przemyśl czy warto sobie zajmować tym czas
Szukałam sposobu na łatwe "enterowanie" tekstu w oknie w skrypcie, a ty właśnie go stworzyłaś (lub podałaś ) Wielkie dzięki ten fragment skryptu bardzo mi się przyda
Edit: Hihi "enterowanie" działa bez zarzutu Dzięki
Hej ;) .
Albo coś nie doczytałam albo nie umiem czegoś zrobić bo mam taki problem jak już
wybiorę te 4 postacie to jak wyjść z tego okna i zacząć grać xd ?
może i to banalne ale nie wiem jak to zrobić jak naciskam esc to wychodzi do wyboru płci
i dalej jak nacisnę to ponownie to do tego wchodzi xd . Z góry thx za pomoc =]
________________________ W trakcie produkcji gry ,,Kalie'' ;]
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