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