Jump to content
Rpg²S Forum
  • 0

Mappa e cambio party nel menu


Awg
 Share

Question

Mi servirebbe uno script per visualizzare la mappa principale (la world map) del mio gioco e segnare in questa la posizione del party, se possibile la mappa dovrebbe essere apribile dal menu di gioco.

 

Inoltre mi servirebbe un modo per inserire nel menu lo script del cambio party senza sfasare tutto il resto.

 

Lo script di cambio party che volevo utilizzare era questo:

 

#===================================

# Party Changing System by Leon_Westbrooke

# -v 1.2

#----------------------------------------------------------------------

# 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 = [1]

@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, "Please make a party of #{$game_party.min_size.to_s} to #{$game_party.max_size.to_s} members.", 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)

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.character(@actor.character_name, @actor.character_hue)

cw = bitmap.width / 4

ch = bitmap.height / 4

facing = 0

src_rect = Rect.new(0, facing * ch, cw, ch)

self.contents.blt(x + 24, y + 32, 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])

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.character(@actor.character_name, @actor.character_hue)

cw = bitmap.width / 4

ch = bitmap.height / 4

facing = 0

src_rect = Rect.new(0, facing * ch, cw, ch)

self.contents.blt(x + 24, y + 32, 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

$game_system.se_play($data_system.buzzer_se)

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

 

 

Scusate ma sono una capra nello scripting

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Posta il tuo menù cosi possiamo aiutarti

Iscriviti sul mio canale youtube -

https://www.youtube.com/channel/UCYOxXExvlXiOFfYD1fTFpww?view_as=subscriber

Seguimi su Instagram -

https://www.instagram.com/ancestralguitarist/

---------------------------------------------------------------------------------------------------------------------------------------
Contest vinti
---------------------------------------------------------------------------------------------------------------------------------------

FACE CONTEST # 3
BANNER CONTEST #69

Link to comment
Share on other sites

  • 0

Se hai il menù standard basta dimerlo ci penso io in un secondo.

per il tuo primo problema potresti farlo tranquillamente ad eventi poi se vuoi tutta la pappa pronta potrei sempre fartelo.

http://img256.imageshack.us/img256/7639/ihateyou.gif

Un uomo senza religione è come un pesce senza bicicletta.

http://img18.imageshack.us/img18/3668/decasoft1.png

http://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gif

Link to comment
Share on other sites

  • 0
Se hai il menù standard basta dimerlo ci penso io in un secondo.

per il tuo primo problema potresti farlo tranquillamente ad eventi poi se vuoi tutta la pappa pronta potrei sempre fartelo.

Si è il menu standard.

Mi sarebbe utile anche la mappa a eventi, se ho un esempio magari riesco a capirci qualcosa da solo visto che non è uno script.

 

Grazie mille a tutti.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...