sono ancora io spero di non sbagliare stavolta ho preferito aprire un topic^^' allora visto che non trovo un menù che mi piace,ho deciso di modificare quello standard,ho modificato alcuni comandi,ho aggiunto il cambio party(tramite lo script Party Changing System by Leon_Westbrooke) e tolto l'end game,e cambiato l'ordine tra salva e cambio party, fin qui tutto bene però quando vado su salva e poi torno al menù il cursore si sposta su cambio party(ovvero dove prima c'era il salva) mentre se vado nel cambio party quando premo il tasto per tornare al menù va direttamente sulla mappa..quindi per farla a breve voglio sistemare il cursore all'uscita dalla finestra di salvataggio e tornare al menù una volta cambiati i membri del party=) posto anche lo script del cambio party visto che non so se occorre modificare anche quello,non so se è rilevante,ma lo script è leggermente modificato(da me),nella finestra non visualizza i character,ma i face dei pg..scusate per il "tema"xD e grazie in anticipo^^
EDIT:Un'altra cosa come faccio se voglio visualizzare i face nella finestra status al posto dei character?
#===================================
# Party Changing System by Leon_Westbrooke
# -v 1.1
#----------------------------------------------------------------------
# Instructions: Place above main, but below all other default scripts.
#
# Features:
# -Allows the player to make a party from the minimum to maximum size.
# -Extra members are limitless.
# -You can remove a person from the party and put it into reserve using:
# $game_party.remove_actor_to_party(actor_id)
# -You can remove a person from the reserve if they exist, and them into
# the party:
# $game_party.add_actor_to_party(actor_id)
# -You can lock a character in reserve or active party by using:
# $game_party.locked.push(actor_id)
# -You can set the maximum and minimum number of the party in-game using:
# $game_party.min_size = x
# $game_party.max_size = x
# (NOTE: Do NOT make the max size lower than the minimum size.)
# -Allows you to use the default add/remove actors command.
# (NOTE: If you remove an actor with this method, he is gone from both
# the party and the reserve members.)
#
# Credits:
# This setup uses SephirothSpawn's coding to simplify the cursor's position.
#
#
# Command Quick-list:
# $game_party.remove_actor_from_party(actor_id)
# -Removes an actor from the party, and puts them in reserve.
# $game_party.add_actor_to_party(actor_id)
# -Replaces the last actor in the party with the actor in reserve.
# $game_party.locked.push(actor_id)
# -Locks the actor in place.
# $game_party.min_size = x
# $game_party.max_size = x
# -Sets the minimum and maximum party size.
#
#
# Notes:
# This script rewrites these methods from Game_Party:
# add_actor
# remove_actor
#===================================
#==================================================
# Game_Party
#==================================================
class Game_Party attr_accessor :party_members
attr_accessor :move
attr_accessor :locked
attr_accessor :min_size
attr_accessor :max_size
alias leon_partyswitch_gameactor_initialize initialize
def initialize
leon_partyswitch_gameactor_initialize
@party_members = []
# Edit :This is to change if an actor is locked or not. To lock them, add
# their id to the array below.
@locked = []
@min_size = 1
@max_size = 4
end
def add_actor(actor_id)
actor = $game_actors[actor_id]
if @actors.size < @max_size
unless @actors.include?(actor)
unless @party_members.include?(actor.id)
@actors.push(actor)
$game_player.refresh
end
end
else
unless @party_members.include?(actor.id)
unless @actors.include?(actor)
@party_members.push(actor.id)
$game_player.refresh
end
end
end
end
def remove_actor(actor_id)
@actors.delete($game_actors[actor_id])
@party_members.delete(actor_id)
$game_player.refresh
end
def remove_actor_from_party(actor_id)
if @actors.include?($game_actors[actor_id])
unless @party_members.include?(actor_id)
@party_members.push(actor_id)
@party_members.sort!
end
end
@actors.delete($game_actors[actor_id])
$game_player.refresh
end def add_actor_to_party(actor_id)
if @party_members.include?(actor_id)
if @actors[@max_size - 1] != nil
@party_members.push(@actors[@max_size - 1].id)
@actors.delete_at(@max_size - 1)
end
@actors.push($game_actors[actor_id])
@party_members.delete(actor_id)
end
end
end
#==================================================
# END Game_Party
#==================================================
#==============================================================================
# ** Window_Selectable
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :cursor_height
#--------------------------------------------------------------------------
# * Alias Initialization
#--------------------------------------------------------------------------
alias custom_int initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
custom_int(x, y, width, height)
@cursor_height = 32
end
#--------------------------------------------------------------------------
# * Get Top Row
#--------------------------------------------------------------------------
def top_row
# Divide y-coordinate of window contents transfer origin by 1 row
# height of @cursor_height
return self.oy / @cursor_height
end
#--------------------------------------------------------------------------
# * Set Top Row
# row : row shown on top
#--------------------------------------------------------------------------
def top_row=(row)
# If row is less than 0, change it to 0
if row < 0
row = 0
end
# If row exceeds row_max - 1, change it to row_max - 1
if row > row_max - 1
row = row_max - 1
end
# Multiply 1 row height by 32 for y-coordinate of window contents
# transfer origin
self.oy = row * @cursor_height
end
#--------------------------------------------------------------------------
# * Get Number of Rows Displayable on 1 Page
#--------------------------------------------------------------------------
def page_row_max
# Subtract a frame height of 32 from the window height, and divide it by
# 1 row height of @cursor_height
return (self.height - 32) / @cursor_height
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max - 32
# Calculate cursor coordinates
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * @cursor_height - self.oy
if self.active == true
# Update cursor rectangle
self.cursor_rect.set(x, y, cursor_width, @cursor_height)
end
end
end#==============================================================================
# ** Window_Command
#==============================================================================
class Window_Command < Window_Selectable
#--------------------------------------------------------------------------
# * Unisable Item
# index : item number
#--------------------------------------------------------------------------
def undisable_item(index)
draw_item(index, normal_color)
end
end
#============================================================
#==================================================
# Window_Party_Info
#==================================================
class Window_Party_Info < Window_Base
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end def refresh
self.contents.clear
self.contents.draw_text(0, 0, 614, 32, "Scegli i Membri del Gruppo.", 1)
end
end
#==================================================
# END Window_Party_Info
#==================================================
#==================================================
# Window_Party_Slots
#==================================================
class Window_Party_Slots < Window_Selectable def initialize
super(0, 64, 320, 416)
@item_max = 4
self.contents = Bitmap.new(width - 32, height - 32)
self.index = 0
self.active = true
refresh
end
def actors
if @data[index] != nil
return @data[index]
end
end
def refresh
@data = []
if self.contents != nil
self.contents.dispose
self.contents = nil
end
for i in 0...$game_party.actors.size
@data.push($game_party.actors[i])
end
@item_max = (@data.size + 1)
if @item_max > 0
if @item_max > 4
@item_max = 4
end
self.contents = Bitmap.new(width - 32, row_max * 96)
for i in 0...@item_max
draw_item(i)
end
end
end
def draw_item(index)
@actor = @data[index]
y = index * 96
x = 4
if $game_party.locked.include?(@actor.id)
self.contents.font.color = disabled_color
opacity = 128
else
self.contents.font.color = normal_color
opacity = 255
end
if @actor != nil
self.contents.draw_text(x + 100, y, 192, 32, @actor.name)
draw_actor_hp(@actor, x + 100, y + 32)
draw_actor_sp(@actor, x + 100, y + 64)
bitmap = RPG::Cache.picture(@actor.character_name)
fw = bitmap.width
fh = bitmap.height
facing = 0
src_rect = Rect.new(0, 0, fw, fh)
self.contents.blt(x + 14, y + 12, bitmap, src_rect, opacity)
end
end
def update_cursor_rect
if @index > -1
x = 0
y = index * 96
self.cursor_rect.set(x, y, (self.width - 32), 96)
else
self.cursor_rect.empty
end
end
end
#==================================================
# END Window_Party_Slots
#==================================================
#==================================================
# Window_Party_Extras
#==================================================
class Window_Party_Extras < Window_Selectable
def initialize
super(320, 64, 320, 416)
self.cursor_height = 96
self.contents = Bitmap.new(width - 32, height - 32)
self.index = -1
self.active = false
refresh
end
def actors
if @data != nil
return @data[index]
end
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...$game_party.party_members.size
@data.push($game_actors[$game_party.party_members[i]])
end
@data.push(nil)
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 96)
for i in 0...@item_max
draw_item(i)
end
end
end
def draw_item(index)
@actor = @data[index]
y = index * 96
x = 4
if $game_party.locked.include?(@actor.id)
self.contents.font.color = disabled_color
opacity = 128
else
self.contents.font.color = normal_color
opacity = 255
end
if @actor != nil
self.contents.draw_text(x + 100, y, 192, 32, @actor.name)
draw_actor_hp(@actor, x + 100, y + 32)
draw_actor_sp(@actor, x + 100, y + 64)
bitmap = RPG::Cache.picture(@actor.character_name)
fw = bitmap.width
fh = bitmap.height
facing = 0
src_rect = Rect.new(0, 0, fw, fh)
self.contents.blt(x + 14, y + 12, bitmap, src_rect, opacity)
end
end
end
#===================================
# END Window_Party_Extras
#===================================
#===================================
# Scene_Party_Change
#===================================
class Scene_Party_Change
def main
@info_window = Window_Party_Info.new
@slot_window = Window_Party_Slots.new
@extra_window = Window_Party_Extras.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@info_window.dispose
@slot_window.dispose
@extra_window.dispose
end
def update
@slot_window.update
if @slot_window.active
update_slot
return
end
if @extra_window.active
update_extra
return
end
end
def update_slot
if Input.trigger?(Input::B)
if $game_party.actors.size >= $game_party.min_size and $game_party.actors.size <= $game_party.max_size
$game_player.refresh
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
else
$game_system.se_play($data_system.buzzer_se)
end
end
if Input.trigger?(Input::C)
if $game_party.locked.include?(@slot_window.actors.id) == true
if @slot_window.index != 0
$game_system.se_play($data_system.decision_se)
@slot_window.active = false
@extra_window.active = true
@extra_window.index = 0
else
$game_system.se_play($data_system.buzzer_se)
end
else
$game_system.se_play($data_system.decision_se)
@slot_window.active = false
@extra_window.active = true
@extra_window.index = 0
end
end
end
def update_extra
@extra_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
if $game_party.locked.include?(@extra_window.actors.id)
$game_system.se_play($data_system.buzzer_se)
return
end
if @extra_window.actors == nil
if $game_party.actors[@slot_window.index] != nil
$game_party.party_members.push($game_party.actors[@slot_window.index].id)
$game_party.remove_actor_from_party($game_party.actors[@slot_window.index].id)
$game_party.party_members.sort!
@slot_window.refresh
@extra_window.refresh
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
else
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
end
else
if $game_party.actors[@slot_window.index] != nil
hold = @extra_window.actors
$game_party.party_members.push($game_party.actors[@slot_window.index].id)
$game_party.actors[@slot_window.index] = hold
$game_party.party_members.delete_at(@extra_window.index)
$game_party.party_members.sort!
@slot_window.refresh
@extra_window.refresh
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
else
$game_party.actors[@slot_window.index] = @extra_window.actors
$game_party.party_members.delete_at(@extra_window.index)
$game_party.party_members.sort!
@slot_window.refresh
@extra_window.refresh
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
end
end
end
end
end
Edited by elle92
Progetti in Corso:
[spoiler]
The Devil's Sonata Il mio primo progetto con l'XP,attualmente in pausa per vari motivi,quindi ne approfitto per riorganizzare le idee visto che ad ogni passo avanti nel progetto,mi accorgo dei vari errori che ci sono^^'
Status: Storia: 70% ->Tutta scritta nella mia testa dall'inizio alla fine,mancano gli ultimi dettagli e ovviamente come realizzarli. Mapping: 15% -> Essendo poco pratico lascio la costruzione di Città e Dungeon alla fine per ora mi concentro sulle altre cose,inizierò quando ne avrò bisogno per la storia. Eventi: 30% -> Per eventi intendo anche i vari dialoghi tra i personaggi principali il 30% è per gli eventi di gioco(ciclio giorno/notte,mostri,skill ecc..) Quest: 1% -> Per "Quest" si intende tutto ciò che è secondario dalla semplici missioni ai dialoghi con gli NPC... Script: 70% ->Anche se sto pensando di cambiare Battle Systems per vari problemi ciò farebbe scendere la % a 30-40% Database: 30% -> Ci sono tutti i PG, e quasi tutti gli oggetti,armi e skill, mancano i nemici e alcuni boss. Completamento: 30-35% -> Più o meno la base c'è,ma manca ancora molto il tutto è reso più difficile a causa della mia inesperienza con gli script,mapping e incompetenza generalexD l'unica cosa in cui sono bravo è la grafica,anche se quella usata nel gioco non mi piace molto infatti anche quella è da rivedere..
Question
elle92
sono ancora io spero di non sbagliare stavolta ho preferito aprire un topic^^' allora visto che non trovo un menù che mi piace,ho deciso di modificare quello standard,ho modificato alcuni comandi,ho aggiunto il cambio party(tramite lo script Party Changing System by Leon_Westbrooke) e tolto l'end game,e cambiato l'ordine tra salva e cambio party, fin qui tutto bene però quando vado su salva e poi torno al menù il cursore si sposta su cambio party(ovvero dove prima c'era il salva) mentre se vado nel cambio party quando premo il tasto per tornare al menù va direttamente sulla mappa..quindi per farla a breve voglio sistemare il cursore all'uscita dalla finestra di salvataggio e tornare al menù una volta cambiati i membri del party=) posto anche lo script del cambio party visto che non so se occorre modificare anche quello,non so se è rilevante,ma lo script è leggermente modificato(da me),nella finestra non visualizza i character,ma i face dei pg..scusate per il "tema"xD e grazie in anticipo^^
EDIT:Un'altra cosa come faccio se voglio visualizzare i face nella finestra status al posto dei character?
Edited by elle92Progetti in Corso:
[spoiler]
The Devil's Sonata
Il mio primo progetto con l'XP,attualmente in pausa per vari motivi,quindi ne approfitto per riorganizzare le idee visto che ad ogni passo avanti nel progetto,mi accorgo dei vari errori che ci sono^^'
Status:
Storia: 70% ->Tutta scritta nella mia testa dall'inizio alla fine,mancano gli ultimi dettagli e ovviamente come realizzarli.
Mapping: 15% -> Essendo poco pratico lascio la costruzione di Città e Dungeon alla fine per ora mi concentro sulle altre cose,inizierò quando ne avrò bisogno per la storia.
Eventi: 30% -> Per eventi intendo anche i vari dialoghi tra i personaggi principali il 30% è per gli eventi di gioco(ciclio giorno/notte,mostri,skill ecc..)
Quest: 1% -> Per "Quest" si intende tutto ciò che è secondario dalla semplici missioni ai dialoghi con gli NPC...
Script: 70% ->Anche se sto pensando di cambiare Battle Systems per vari problemi ciò farebbe scendere la % a 30-40%
Database: 30% -> Ci sono tutti i PG, e quasi tutti gli oggetti,armi e skill, mancano i nemici e alcuni boss.
Completamento: 30-35% -> Più o meno la base c'è,ma manca ancora molto il tutto è reso più difficile a causa della mia inesperienza con gli script,mapping e incompetenza generalexD l'unica cosa in cui sono bravo è la grafica,anche se quella usata nel gioco non mi piace molto infatti anche quella è da rivedere..
Per Maggiori dettagli vi invito a visitare il topic del progetto:
http://www.rpg2s.net/forum/index.php?showtopic=14695
Sono ben accette critiche(costruttivexD) e consigli di ogni genere!^_^
[/spoiler]
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now