Ĺwietny skrypt. Ale czy ktoĹ mĂłgĹby go nieco przerobiÄ? ChciaĹbym by skrypt pozwalaĹ zmieniaÄ statystyki tylko jednego bohatera (tak wiÄc komendy "poprzedni" i "nastÄpny" mogĹyby zostaÄ usuniÄte) i by moĹźna byĹo zwiÄkszaÄ rĂłwnieĹź HP i SP.
Pomógł: 1 raz Dołączył: 07 Sty 2012 Posty: 46 Skąd: Polska
Wysłany: Pią 24 Lut, 2012 19:40
Mnie tam to nie przeszkadza, bo sam w "Miasteczko Nowoczesne" pozwalam na piÄÄ goĹci w druĹźynie. A co do skryptu, to daĹem wĹasny mechanizm automatycznego wywoĹywania ekranu rozwoju.
Cytat:
Po kaĹźdej walce komputer sprawdza, ilu bohaterĂłw awansowaĹo. JeĹli w walce uczestniczyĹ przynajmniej jeden, ktĂłremu XPL skoczyĹo w gĂłrÄ (XPL.abs > 0), to po wciĹniÄciu Entera przez gracza wyskoczy okno wyboru. Wybranie opcji "RozwĂłj postaci" wywoĹuje ekran rozwoju druĹźyny, ale tylko dla uczestnikĂłw walki, ktĂłrzy awansowali, bez wzglÄdu na to, czy opuĹcili druĹźynÄ podczas walki, czy nie. Po wybraniu opcji "ZakoĹcz walkÄ" gracz od razu wraca na mapÄ. JeĹli liczba awansujÄ cych w walce wynosi zero, okno wyboru nie pojawia siÄ. Ten system dziaĹa w fazĂłwce ("Miasteczko Nowoczesne 6" uĹźywa SSJ8_ATB) i standardowej biegĂłwce ("Miasteczko Nowoczesne 6" uĹźywa SSJ8_Run). ABS (w "Miasteczko Nowoczesne 6" jest to SSJ8_ABS) nie korzysta z tego systemu.
________________________ RyzykujÄ c, Ĺźe zrobisz super gniota, moĹźesz zrobiÄ super hit lub super gniota.
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pon 27 Lut, 2012 13:03
Nathaniel125, sprawdĹş to:
Spoiler:
Kod:
#====================================================================
# Autor Blizzard
# Modyfikacja by Ayene
#====================================================================
module BlizzCFG
#====================================================================
STARTING_POINTS = 10 # liczba punktĂłw startowych
POINTS_PER_LEVEL = 5 # punkty do rozdania co poziom
DISPLAY_ICON = true # wyĹwietl ikonÄ true/false
ADD_HP_SP = 20 # o ile wzrasta HP i SP
ICON_DATA = [612, 452, 192]
EVASION = 'Unik'
HP_LIMIT = 9999 # max. hp
SP_LIMIT = 9999 # max. sp
STR_LIMIT = 999 # max. siĹy
DEX_LIMIT = 999 # max. zrÄcznoĹci
AGI_LIMIT = 999 # max.szybkoĹci
INT_LIMIT = 999 # max.inteligencji
WINDOW_MODE = true # true/false
AUTOMATIC_CALL = false # true/false
AUTOMATIC_MAP_CALL = false # true/false
#====================================================================
ATTR_LIMITS = [HP_LIMIT, SP_LIMIT, STR_LIMIT, DEX_LIMIT, AGI_LIMIT, INT_LIMIT]
#====================================================================
end
#====================================================================
class Array
def sum
result = 0
self.each {|i| result += i if i.is_a?(Numeric)}
return result
end
end
#====================================================================
class Game_Actor < Game_Battler
#====================================================================
attr_reader :points
alias setup_sds_later setup
def setup(actor_id)
@points = BlizzCFG::STARTING_POINTS
setup_sds_later(actor_id)
end
alias exp_sds_later exp=
def exp=(exp)
old_level = @level
exp_sds_later(exp)
add_stat_points((@level - old_level) * BlizzCFG::POINTS_PER_LEVEL)
end
def add_stat_points(val)
@points += val if val > 0
end
def remove_stat_points(val)
@points = [@points-val, 0].max
end
alias draw_actor_parameter_sds_later draw_actor_parameter
def draw_actor_parameter(actor, x, y, type)
if type == 7
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, BlizzCFG::EVASION)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, actor.eva.to_s, 2)
else
draw_actor_parameter_sds_later(actor, x, y, type)
end
end
end
#====================================================================
class Window_Distribution_Status < Window_Base
#====================================================================
attr_accessor :actor
def initialize(actor)
super(BlizzCFG::WINDOW_MODE ? 160 : 0, 0, 480, 480)
@actor = actor
self.contents = Bitmap.new(width - 32, height - 32)
if $fontface != nil
self.contents.font.name = "Comic Sans MS"
self.contents.font.size = 22
self.contents.font.bold = true
elsif $defaultfonttype != nil
self.contents.font.name = "Comic Sans MS"
self.contents.font.size = 22
self.contents.font.bold = true
end
refresh
end
def add_points
attr = [@actor.maxhp, @actor.maxsp, @actor.str, @actor.dex, @actor.agi, @actor.int]
if @points < @actor.points &&
attr[index]+@att[index] < BlizzCFG::ATTR_LIMITS[index]
@points = [@points + 1, @actor.points].min
case index
when 0,1; num = BlizzCFG::ADD_HP_SP
else ; num = 1
end
@att[index] = [@att[index]+num, @points*num+@att[index]].min
return true
end
return false
end
def remove_points
if @points > 0 && @att[index] > 0
@points = [@points - 1, 0].max
case index
when 0,1; num = BlizzCFG::ADD_HP_SP
else ; num = 1
end
@att[index] = [@att[index] - num, 0].max
return true
end
return false
end
def update
super
return unless self.active
if Input.repeat?(Input::RIGHT)
if add_points
$game_system.se_play($data_system.cursor_se)
refresh
else
$game_system.se_play($data_system.buzzer_se)
end
elsif Input.repeat?(Input::LEFT)
if remove_points
$game_system.se_play($data_system.cursor_se)
refresh
else
$game_system.se_play($data_system.buzzer_se)
end
end
end
def update_cursor_rect
if @index < 0 || !self.active
self.cursor_rect.empty
else
self.cursor_rect.set(32, (@index+1)*WLH*2, 64, WLH)
end
end
end
#====================================================================
class Window_Sure < Window_Command
#====================================================================
attr_accessor :actor
def update
if @command_window.active
@command_window.update
update_main_command
elsif @sure_window != nil
@sure_window.update
update_sure
elsif @distro_window.active
@distro_window.update
if Input.trigger?(Input::B) or Input.trigger?(Input::C)
$game_system.se_play($data_system.cancel_se)
@command_window.active, @distro_window.active = true, false
end
end
end
def update_main_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
if @distro_window.points != 0
@command_window.index, @command_window.active = 3, false
make_sure_window
else
$scene = @scene.new
end
elsif Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
case @command_window.index
when 0 then @command_window.active, @distro_window.active = false, true
when 1
if @distro_window.points != 0
@command_window.active = false
make_sure_window
else
$scene = @scene.new
end
end
end
end
def update_sure
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@sure_window.dispose
@sure_window, @command_window.active = nil, true
elsif Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
if @sure_window.index > 0
@distro_window.set_new_attributes if @sure_window.index == 1
$scene = @scene.new
end
@sure_window.dispose
@sure_window, @command_window.active = nil, true
end
end
end
#====================================================================
class Scene_Battle
#====================================================================
alias main_sds_later main
def main
main_sds_later
if BlizzCFG::AUTOMATIC_CALL &&
$game_party.actors.any? {|actor| actor.points > 0}
$scene = Scene_Points.new
end
end
end
#====================================================================
class Scene_Map
#====================================================================
alias main_sds_later main
def main
main_sds_later
@notify.dispose if @notify != nil
end
JuĹź traciĹem nadzieje na to Ĺźe ktoĹ odpowie
DziÄkuje Ayene,
Mam jeszcze jedno pytanie: jak okreĹliÄ o ile wzroĹnie HP i SP wraz z kaĹźdym rozdanym punktem? Bo domyĹlnie roĹnie o 1 a to trochÄ maĹo.
Edit:
Ayene wyglÄ da na to Ĺźe wszystko jest ok ;) DziÄkuje
Podczas gdy ktoĹ awansuje w menu mam dostÄpnÄ zakĹadkÄ "statystyki" gdzie moĹźna rozdawaÄ punkty statystyk. Za kaĹźdym razem pojawia siÄ okienko z pierwszÄ postaciÄ , problem polega na tym, Ĺźe chciaĹbym zmieniÄ w skrypcie tak, Ĺźeby bezpoĹrednio moĹźna byĹo wskazaÄ postaÄ ktĂłrej "okno rozdawania statystyk" ma siÄ pojawiÄ oraz pozbyÄ siÄ "nastÄpny" i "poprzedni" z menu opcji rozdawania
rÄcznie, tak jak ktoĹ podaĹ w tym temacie , zastÄ piĹem juĹź istniejÄ ce statystyki w menu tylko podmieniĹem je komendÄ ktĂłra wywoĹuje skrypt rozdawania statystyk xD tak, Ĺźe wszystko raczej standardowe
aa sorka z tymi ' ' to juĹź sam kombinowaĹem i omyĹkowo wkleiĹem z tym ;p
No ale bĹÄ d i tak wywala po skopiowaniu tego co kazaĹaĹ mi wrzuciÄ ;P
(Ten skrypt statystyk mam z HP i SP co jest kilka postĂłw wyĹźej)
ciÄ gle jest taki bĹÄ d w tej mojej 306 linijce :
@actor, @scene = $game_party.actors[actor], $scene.class
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