Jump to content
Rpg²S Forum
  • 0

Richiesta: piccola modifica script menu ad anello.


Draxis
 Share

Question

Salve!

Rifacendomi a QUESTO topic sul menu ad anello (precisamente al secondo secondo script al suo interno,quello originale) mi chiedevo se fosse possibile rimuovere l'opzione di salvataggio (che nel mio progetto è fattibile tramite i classici save point sparsi sulle mappe) e sostituirla con un trasporto in una mappa (che sarebbe un menu creato da me).

 

E' possibile?

Apprendimento Rpg Maker XP: |||||||||||||||||||

Progetto in corso: CaelestiS: |||||||||||||||||||

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Ecco fatto: :sisi: Dovrebbe andare

 

X = 10

Y = 10

MAP = 2

DIREZIONE = 2 # 2 = giu 4 = sinistra 6 = destra e 8 = su

 

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

# Ring_Menu

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

# By: XRXS, Dubealex, and Hypershadow180

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

class Scene_Menu

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

# Initialize

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

def initialize(menu_index = 0)

@menu_index = menu_index

$location_text=[]

$gold_text=[]

$window_size=[]

$ring_menu_text=[]

$chara_select=[]

@window_opacity=[]

@chara_select=[]

@window_position=[]

$location_text[0]="Calibri" # Font Type

$location_text[1]=24 # Font Size

$location_text[2]=0 # Location Title Color

$location_text[4]=0 # Map Name Color

$location_text[3]="Location:" # Text

$gold_text[0]="Calibri" # Font Type

$gold_text[1]=20 # Font Size

$gold_text[2]=0 # Gold Title Color

$gold_text[3]=0 # Gold Color

$gold_text[4]="Gold" # Text

@window_opacity[0]=255 # Border Opacity

@window_opacity[1]=130 # Background Opacity

$window_location_skin="001-Blue01" # Location Windowskin

$window_gold_skin="001-Blue01" # Gold Windowskin

@window_position[0]=0 # X Axis Position

@window_position[1]=0 # Location Y Axis Position

@window_position[2]=384 # Gold Y Axis Position

$window_size[0]=160 # Length

$window_size[1]=96 # Height

$ring_menu_text[0]="Calibri" # Font Type

$ring_menu_text[7]=0 # Font Color

$ring_menu_text[8]=20 # Font Size

$ring_menu_text[1]="Items"

$ring_menu_text[2]="Skills"

$ring_menu_text[3]="Equip"

$ring_menu_text[4]="Stats"

$ring_menu_text[5]="Teletrasporto"

$ring_menu_text[6]="Quit"

@chara_select[0]=408 # X Axis Position

@chara_select[1]=0 # Y Axis Position

$chara_select[0]="Calibri" # Font Type

$chara_select[1]=0 # Font Color

$chara_select[5]=24 # Font Size

$chara_select[2]=255 # Border Opacity

$chara_select[3]=130 # Background Opacity

$chara_select[4]="001-Blue01" # Windowskin

end

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

# Main

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

def main

@window_location = Window_Location.new

@window_location.x = @window_position[0]

@window_location.y = @window_position[1]

@window_location.opacity = @window_opacity[0]

@window_location.back_opacity = @window_opacity[1]

@window_gold = Window_MenuGold.new

@window_gold.x = @window_position[0]

@window_gold.y = @window_position[2]

@window_gold.opacity = @window_opacity[0]

@window_gold.back_opacity = @window_opacity[1]

@spriteset = Spriteset_Map.new

px = $game_player.screen_x - 15

py = $game_player.screen_y - 24

@command_window = Window_RingMenu.new(px,py)

@command_window.index = @menu_index

if $game_party.actors.size == 0

@command_window.disable_item(0)

@command_window.disable_item(1)

@command_window.disable_item(2)

@command_window.disable_item(3)

end

@command_window.z = 100

if $game_system.save_disabled

@command_window.disable_item(4)

end

@status_window = Window_RingMenuStatus.new

@status_window.x = @chara_select[0]

@status_window.y = @chara_select[1]

@status_window.z = 200

@status_window.opacity=$chara_select[2]

@status_window.back_opacity=$chara_select[3]

@status_window.visible = false

Graphics.transition

loop do

Graphics.update

Input.update

update

if $scene != self

break

end

end

Graphics.freeze

@spriteset.dispose

@window_location.dispose

@window_gold.dispose

@command_window.dispose

@status_window.dispose

end

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

# Update

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

def update

@window_location.update

@window_gold.update

@command_window.update

@status_window.update

if @command_window.active

update_command

return

end

if @status_window.active

update_status

return

end

end

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

# Update Comman

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

def update_command

if Input.trigger?(Input::B)

$game_system.se_play($data_system.cancel_se)

$scene = Scene_Map.new

return

end

if Input.trigger?(Input::C)

if $game_party.actors.size == 0 and @command_window.index < 4

$game_system.se_play($data_system.buzzer_se)

return

end

case @command_window.index

when 0

$game_system.se_play($data_system.decision_se)

$scene = Scene_Item.new

when 1

$game_system.se_play($data_system.decision_se)

@command_window.active = false

@status_window.active = true

@status_window.visible = true

@status_window.index = 0

when 2

$game_system.se_play($data_system.decision_se)

@command_window.active = false

@status_window.active = true

@status_window.visible = true

@status_window.index = 0

when 3

$game_system.se_play($data_system.decision_se)

@command_window.active = false

@status_window.active = true

@status_window.visible = true

@status_window.index = 0

when 4

if $game_system.save_disabled

$game_system.se_play($data_system.buzzer_se)

return

end

$game_system.se_play($data_system.decision_se)

$game_map.setup(MAP)

# Move player to initial position

$game_player.moveto(X, Y)

 

case DIREZIONE

when 2

$game_player.turn_down

when 4

$game_player.turn_left

when 6

$game_player.turn_right

when 8

$game_player.turn_up

end

 

$scene = Scene_Map.new

# Refresh player

$game_player.refresh

# Run automatic change for BGM and BGS set with map

$game_map.autoplay

when 5

$game_system.se_play($data_system.decision_se)

$scene = Scene_End.new

end

return

end

return if @command_window.animation?

if Input.press?(Input::UP) or Input.press?(Input::LEFT)

$game_system.se_play($data_system.cursor_se)

@command_window.setup_move_move(Window_RingMenu::MODE_MOVEL)

return

end

if Input.press?(Input::DOWN) or Input.press?(Input::RIGHT)

$game_system.se_play($data_system.cursor_se)

@command_window.setup_move_move(Window_RingMenu::MODE_MOVER)

return

end

end

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

# Update Status

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

def update_status

if Input.trigger?(Input::B)

$game_system.se_play($data_system.cancel_se)

@command_window.active = true

@status_window.active = false

@status_window.visible = false

@status_window.index = -1

return

end

if Input.trigger?(Input::C)

case @command_window.index

when 1

if $game_party.actors[@status_window.index].restriction >= 2

$game_system.se_play($data_system.buzzer_se)

return

end

$game_system.se_play($data_system.decision_se)

$scene = Scene_Skill.new(@status_window.index)

when 2

$game_system.se_play($data_system.decision_se)

$scene = Scene_Equip.new(@status_window.index)

when 3

$game_system.se_play($data_system.decision_se)

$scene = Scene_Status.new(@status_window.index)

end

return

end

end

end

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

# Window_RingMenu

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

class Window_RingMenu < Window_Base

STARTUP_FRAMES = 20

MOVING_FRAMES = 5

RING_R = 64

ICON_ITEM = RPG::Cache.icon("034-Item03")

ICON_SKILL = RPG::Cache.icon("044-Skill01")

ICON_EQUIP = RPG::Cache.icon("001-Weapon01")

ICON_STATUS = RPG::Cache.icon("050-Skill07")

ICON_SAVE = RPG::Cache.icon("038-Item07")

ICON_EXIT = RPG::Cache.icon("046-Skill03")

ICON_DISABLE= RPG::Cache.icon("")

SE_STARTUP = "056-Right02"

MODE_START = 1

MODE_WAIT = 2

MODE_MOVER = 3

MODE_MOVEL = 4

attr_accessor :index

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

# Initialize

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

def initialize( center_x, center_y )

super(0, 0, 640, 480)

self.contents = Bitmap.new(width-32, height-32)

self.contents.font.name = $ring_menu_text[0]

self.contents.font.color = text_color($ring_menu_text[7])

self.contents.font.size = $ring_menu_text[8]

self.opacity = 0

self.back_opacity = 0

s1 = $ring_menu_text[1]

s2 = $ring_menu_text[2]

s3 = $ring_menu_text[3]

s4 = $ring_menu_text[4]

s5 = $ring_menu_text[5]

s6 = $ring_menu_text[6]

@commands = [ s1, s2, s3, s4, s5, s6 ]

@item_max = 6

@index = 0

@items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_SAVE, ICON_EXIT ]

@disabled = [ false, false, false, false, false, false ]

@cx = center_x - 16

@cy = center_y - 16

setup_move_start

refresh

end

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

# Update

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

def update

super

refresh

end

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

# Refresh

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

def refresh

self.contents.clear

case @mode

when MODE_START

refresh_start

when MODE_WAIT

refresh_wait

when MODE_MOVER

refresh_move(1)

when MODE_MOVEL

refresh_move(0)

end

rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)

self.contents.draw_text(rect, @commands[@index],1)

end

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

# Refresh Start

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

def refresh_start

d1 = 2.0 * Math::PI / @item_max

d2 = 1.0 * Math::PI / STARTUP_FRAMES

r = RING_R - 1.0 * RING_R * @steps / STARTUP_FRAMES

for i in 0...@item_max

j = i - @index

d = d1 * j + d2 * @steps

x = @cx + ( r * Math.sin( d ) ).to_i

y = @cy - ( r * Math.cos( d ) ).to_i

draw_item(x, y, i)

end

@steps -= 1

if @steps < 1

@mode = MODE_WAIT

end

end

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

# Refresh Wait

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

def refresh_wait

d = 2.0 * Math::PI / @item_max

for i in 0...@item_max

j = i - @index

x = @cx + ( RING_R * Math.sin( d * j ) ).to_i

y = @cy - ( RING_R * Math.cos( d * j ) ).to_i

draw_item(x, y, i)

end

end

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

# Refresh Move

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

def refresh_move( mode )

d1 = 2.0 * Math::PI / @item_max

d2 = d1 / MOVING_FRAMES

d2 *= -1 if mode != 0

for i in 0...@item_max

j = i - @index

d = d1 * j + d2 * @steps

x = @cx + ( RING_R * Math.sin( d ) ).to_i

y = @cy - ( RING_R * Math.cos( d ) ).to_i

draw_item(x, y, i)

end

@steps -= 1

if @steps < 1

@mode = MODE_WAIT

end

end

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

# Draw Item

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

def draw_item(x, y, i)

rect = Rect.new(0, 0, @items.width, @items.height)

if @index == i

self.contents.blt( x, y, @items, rect )

if @disabled[@index]

self.contents.blt( x, y, ICON_DISABLE, rect )

end

else

self.contents.blt( x, y, @items, rect, 128 )

if @disabled[@index]

self.contents.blt( x, y, ICON_DISABLE, rect, 128 )

end

end

end

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

# Disable Item

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

def disable_item(index)

@disabled[index] = true

end

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

# Setup Move Start

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

def setup_move_start

@mode = MODE_START

@steps = STARTUP_FRAMES

if SE_STARTUP != nil and SE_STARTUP != ""

Audio.se_play("Audio/SE/" + SE_STARTUP, 80, 100)

end

end

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

# Setup Move Move

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

def setup_move_move(mode)

if mode == MODE_MOVER

@index -= 1

@index = @items.size - 1 if @index < 0

elsif mode == MODE_MOVEL

@index += 1

@index = 0 if @index >= @items.size

else

return

end

@mode = mode

@steps = MOVING_FRAMES

end

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

# Animation

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

def animation?

return @mode != MODE_WAIT

end

end

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

# Window_RingMenuStatus

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

class Window_RingMenuStatus < Window_Selectable

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

# Initialize

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

def initialize

super(204, 64, 232, 352)

self.contents = Bitmap.new(width - 32, height - 32)

self.contents.font.size = $chara_select[5]

refresh

self.active = false

self.index = -1

end

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

# Refresh

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

def refresh

self.contents.clear

self.windowskin = RPG::Cache.windowskin($chara_select[4])

self.contents.font.name = $chara_select[0]

self.contents.font.color = text_color($chara_select[1])

@item_max = $game_party.actors.size

for i in 0...$game_party.actors.size

x = 80

y = 80 * i

actor = $game_party.actors

draw_actor_graphic(actor, x - 60, y + 65)

draw_actor_name(actor, x, y + 2)

draw_actor_hp(actor, x - 40, y + 26)

draw_actor_sp(actor, x - 40, y + 50)

end

end

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

# Update Cursor Rect

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

def update_cursor_rect

if @index < 0

self.cursor_rect.empty

else

self.cursor_rect.set(0, @index * 80, self.width - 32, 80)

end

end

end

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

# Game_Map

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

class Game_Map

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

# Name

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

def name

$map_infos[@map_id]

end

end

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

# Scene_Title

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

class Scene_Title

$map_infos = load_data("Data/MapInfos.rxdata")

for key in $map_infos.keys

$map_infos[key] = $map_infos[key].name

end

end

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

# Window_Location

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

class Window_Location < Window_Base

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

# Initialize

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

def initialize

super(0, 0, $window_size[0], $window_size[1])

self.contents = Bitmap.new(width - 32, height - 32)

self.contents.font.name = $location_text[0]

self.contents.font.size = $location_text[1]

refresh

end

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

# Refresh

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

def refresh

self.contents.clear

self.windowskin = RPG::Cache.windowskin($window_location_skin)

self.contents.font.color = text_color($location_text[2])

self.contents.draw_text(4, 0, 120, 32, $location_text[3])

self.contents.font.color = text_color($location_text[4])

self.contents.draw_text(4, 32, 120, 32, $game_map.name, 2)

end

end

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

# Window_MenuGold

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

class Window_MenuGold < Window_Base

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

# Initialize

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

def initialize

super(0, 0, $window_size[0], $window_size[1])

self.contents = Bitmap.new(width - 32, height - 32)

self.contents.font.name = $gold_text[0]

self.contents.font.size = $gold_text[1]

refresh

end

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

# Refresh

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

def refresh

self.contents.clear

self.windowskin = RPG::Cache.windowskin($window_gold_skin)

self.contents.font.color = text_color($gold_text[2])

self.contents.draw_text(4, 0, 120, 32, $gold_text[4])

self.contents.font.color = text_color($gold_text[3])

self.contents.draw_text(4, 32, 120, 32, $game_party.gold.to_s, 2)

end

end

 

 

Modifica i valori X,Y,MAP, e DIREZIONE per personalizzare le cordinate, la mappa e la direzione quando viene teletrasportato il personaggio.

Edited by Valentino
Link to comment
Share on other sites

  • 0

Ho modificato lo script in modo che esegua un evento comune quando viene selezionata l'opzione che sostituisce il salvataggio, cosa che ti permette di programmare ad eventi ciò che accade quando la si sceglie . . .

 

Ho realizzato una piccola demo in cui appunto il player viene trasferito ad un'altra mappa quando si sceglie l'opzione transfer nel ring menu. Ma puoi davvero far accadere qualunque cosa permessa dai comandi-evento . . .

Demo ring menu no save but transfer (by giver) @ Hotfile.com

 


SCRIPT RGSS (RPG Maker XP) VINTAGE LIBRARY [2018+]


Breaking (in ogni senso) News: "Treno deraglia per via del seno di Sakurai Aoi . . ." - Info nello spoiler !!

 


http://afantasymachine.altervista.org/_altervista_ht/NOOOOOOOOOilMIOtreninooooo_500.gif


Non riesco a smettere di essere affascinato da immagini come questa . . .

http://anime.vl-vostok.ru/art/photos2011/17/78049800/wall_VladAnime_WWA_1885-1680x1050.jpg


Alcuni wallpapers che faccio ruotare sul mio vecchio PC . . .


http://afantasymachine.altervista.org/_altervista_ht/gits_window.jpg

http://afantasymachine.altervista.org/_altervista_ht/madoka_group01.jpg
http://afantasymachine.altervista.org/_altervista_ht/arisu_picipici_01.jpg
http://afantasymachine.altervista.org/_altervista_ht/phantom_wp01_einzwei.jpg


La parte più spassosa della mia vita è quando gli altri cercano di spiegarmi i miei pensieri . . .


BBCode Testing


Typeface & Size



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...