PHP код:
#===================================================
# ¦ Ring Menu - Show Player Location - Release #1 (Enhanced By Dubealex)
#===================================================
# For more infos and update, visit:
# asylum.dubealex.com
#
# Original Ring Menu by: ?? (From XRXS)
# Original Edit and Fix by: Maki
# Show Player Location Version by: Dubealex
#
# You can customize this script at line #35 - Have fun !!
# If you want to show more stuff, its easy to do, you can try to ask in the forum.
#
# [email]alex@dubealex.com[/email]
#===================================================
#===================================================
# ? CLASS Scene_Menu Begins
#===================================================
class Scene_Menu
#--------------------------------------------------------------------------
# Ѓњ ѓIѓuѓWѓFѓNѓgЏ‰Љъ‰»
# menu_index : ѓRѓ}ѓ“ѓh‚МѓJЃ[ѓ\ѓ‹Џ‰Љъ€К’u
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
$location_text=[]
$window_size=[]
$ring_menu_text=[]
$chara_select=[]
@window_opacity=[]
@chara_select=[]
@window_position=[]
#--------------------------------------------------------------------------------------------------
# ¦ Ring Menu Customization Section: (By Dubealex)
#--------------------------------------------------------------------------------------------------
# Those variables defines how the script will act.
# Simply change the value by those you want.
# Remember that changing the font size has its limitation due to text space allocation.
#
# ? TEXT SETTINGS FOR SHOW PLAYER LOCATION WINDOW:
$location_text[0]="Tahoma" # Font Type
$location_text[1]=22 # Font Size
$location_text[2]=6 # Location Title Color
$location_text[4]=0 # Map Name Color
$location_text[3]="Location:" # Customize the "Location" Title Text
# ? SHOW LOCATION WINDOW SETTINS:
@show_location_window=true #Set to false to not use it !
@window_opacity[0]=255 # Border Opacity
@window_opacity[1]=130 # Background Opacity
$window_location_skin="001-Blue01" # Window Skin
@window_position[0]=20 # X Axis Position
@window_position[1]=20 # Y Axis Position
$window_size[0]=160 # Lengh
$window_size[1]=96 # Heigh
# ? TEXT SETTINGS FOR INSIDE THE RING MENU:
$ring_menu_text[0]="Tahoma" # Font Type
$ring_menu_text[7]=0 # Font Color
$ring_menu_text[8]=22 # Font Size
$ring_menu_text[1]="Items" # Items Menu Text
$ring_menu_text[2]="Skills" # Skills Menu Text
$ring_menu_text[3]="Equip" # Equip Menu Text
$ring_menu_text[4]="Stats" # Stats Menu Text
$ring_menu_text[5]="Save" # Save Menu Text
$ring_menu_text[6]="Quit" # Quit Menu Text
# ? CHARACTER SELECTION WINDOW SETTINGS :
@chara_select[0]=400 # X Axis Position
@chara_select[1]=0 # Y Axis Position
$chara_select[0]="Tahoma" # Font Type
$chara_select[1]=0 # Font Color
$chara_select[5]=22 # Font Size
$chara_select[2]=255 # Window Border Opacity
$chara_select[3]=130 # Window Background Opacity
$chara_select[4]="001-Blue01" # Window Skin to use
#--------------------------------------------------------------------------------------------------
end
#--------------------------------------------------------------------------
# Ѓњ ѓЃѓCѓ“Џ€—ќ
#--------------------------------------------------------------------------
def main
# Show Player Location Feature:
if @show_location_window==true
@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]
end
#End of Show Player Location
# ѓXѓvѓ‰ѓCѓgѓZѓbѓg‚рЌмђ¬
@spriteset = Spriteset_Map.new
# ѓRѓ}ѓ“ѓhѓEѓBѓ“ѓhѓE‚рЌмђ¬
px = $game_player.screen_x - 15
py = $game_player.screen_y - 24
@command_window = Window_RingMenu.new(px,py)
@command_window.index = @menu_index
# ѓpЃ[ѓeѓBђlђ”‚Є 0 ђl‚МЏкЌ‡
if $game_party.actors.size == 0
# ѓAѓCѓeѓЂЃAѓXѓLѓ‹ЃA‘•”хЃAѓXѓeЃ[ѓ^ѓX‚р–іЊш‰»
@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
# ѓZЃ[ѓu‹ЦЋ~‚МЏкЌ‡
if $game_system.save_disabled
# ѓZЃ[ѓu‚р–іЊш‚Й‚·‚й
@command_window.disable_item(4)
end
# ѓXѓeЃ[ѓ^ѓXѓEѓBѓ“ѓhѓE‚рЌмђ¬
@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
# ѓgѓ‰ѓ“ѓWѓVѓ‡ѓ“ЋАЌs
Graphics.transition
# ѓЃѓCѓ“ѓ‹Ѓ[ѓv
loop do
# ѓQЃ[ѓЂ‰ж–К‚рЌXђV
Graphics.update
# “ь—НЏо•с‚рЌXђV
Input.update
# ѓtѓЊЃ[ѓЂЌXђV
update
# ‰ж–К‚ЄђШ‚и‘Ц‚н‚Б‚Ѕ‚зѓ‹Ѓ[ѓv‚р’†’f
if $scene != self
break
end
end
# ѓgѓ‰ѓ“ѓWѓVѓ‡ѓ“ЏЂ”х
Graphics.freeze
# ѓXѓvѓ‰ѓCѓgѓZѓbѓg‚р‰р•ъ
@spriteset.dispose
# ѓEѓBѓ“ѓhѓE‚р‰р•ъ
if @show_location_window==true
@window_location.dispose
end
@command_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# Ѓњ ѓtѓЊЃ[ѓЂЌXђV
#--------------------------------------------------------------------------
def update
# ѓEѓBѓ“ѓhѓE‚рЌXђV
if @show_location_window==true
@window_location.update
end
@command_window.update
@status_window.update
# ѓRѓ}ѓ“ѓhѓEѓBѓ“ѓhѓE‚ЄѓAѓNѓeѓBѓu‚МЏкЌ‡: update_command ‚рЊД‚Ф
if @command_window.active
update_command
return
end
# ѓXѓeЃ[ѓ^ѓXѓEѓBѓ“ѓhѓE‚ЄѓAѓNѓeѓBѓu‚МЏкЌ‡: update_status ‚рЊД‚Ф
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# Ѓњ ѓtѓЊЃ[ѓЂЌXђV (ѓRѓ}ѓ“ѓhѓEѓBѓ“ѓhѓE‚ЄѓAѓNѓeѓBѓu‚МЏкЌ‡)
#--------------------------------------------------------------------------
def update_command
# B ѓ{ѓ^ѓ“‚Є‰џ‚і‚к‚ЅЏкЌ‡
if Input.trigger?(Input::B)
# ѓLѓѓѓ“ѓZѓ‹ SE ‚р‰‰‘t
$game_system.se_play($data_system.cancel_se)
# ѓ}ѓbѓv‰ж–К‚ЙђШ‚и‘Ц‚¦
$scene = Scene_Map.new
return
end
# C ѓ{ѓ^ѓ“‚Є‰џ‚і‚к‚ЅЏкЌ‡
if Input.trigger?(Input::C)
# ѓpЃ[ѓeѓBђlђ”‚Є 0 ђl‚ЕЃAѓZЃ[ѓuЃAѓQЃ[ѓЂЏI—№€ИЉO‚МѓRѓ}ѓ“ѓh‚МЏкЌ‡
if $game_party.actors.size == 0 and @command_window.index < 4
# ѓuѓUЃ[ SE ‚р‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# ѓRѓ}ѓ“ѓhѓEѓBѓ“ѓhѓE‚МѓJЃ[ѓ\ѓ‹€К’u‚Е•ЄЉт
case @command_window.index
when 0 # ѓAѓCѓeѓЂ
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ѓAѓCѓeѓЂ‰ж–К‚ЙђШ‚и‘Ц‚¦
$scene = Scene_Item.new
when 1 # ѓXѓLѓ‹
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ѓXѓeЃ[ѓ^ѓXѓEѓBѓ“ѓhѓE‚рѓAѓNѓeѓBѓu‚Й‚·‚й
@command_window.active = false
@status_window.active = true
@status_window.visible = true
@status_window.index = 0
when 2 # ‘•”х
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ѓXѓeЃ[ѓ^ѓXѓEѓBѓ“ѓhѓE‚рѓAѓNѓeѓBѓu‚Й‚·‚й
@command_window.active = false
@status_window.active = true
@status_window.visible = true
@status_window.index = 0
when 3 # ѓXѓeЃ[ѓ^ѓX
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ѓXѓeЃ[ѓ^ѓXѓEѓBѓ“ѓhѓE‚рѓAѓNѓeѓBѓu‚Й‚·‚й
@command_window.active = false
@status_window.active = true
@status_window.visible = true
@status_window.index = 0
when 4 # ѓZЃ[ѓu
# ѓZЃ[ѓu‹ЦЋ~‚МЏкЌ‡
if $game_system.save_disabled
# ѓuѓUЃ[ SE ‚р‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ѓZЃ[ѓu‰ж–К‚ЙђШ‚и‘Ц‚¦
$scene = Scene_Save.new
when 5 # ѓQЃ[ѓЂЏI—№
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ѓQЃ[ѓЂЏI—№‰ж–К‚ЙђШ‚и‘Ц‚¦
$scene = Scene_End.new
end
return
end
# ѓAѓjѓЃЃ[ѓVѓ‡ѓ“’†‚И‚зѓJЃ[ѓ\ѓ‹‚МЏ€—ќ‚рЌs‚н‚И‚ў
return if @command_window.animation?
# ЃЄorЃ© ѓ{ѓ^ѓ“‚Є‰џ‚і‚к‚ЅЏкЌ‡
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
# Ѓ«orЃЁ ѓ{ѓ^ѓ“‚Є‰џ‚і‚к‚ЅЏкЌ‡
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
#--------------------------------------------------------------------------
# Ѓњ ѓtѓЊЃ[ѓЂЌXђV (ѓXѓeЃ[ѓ^ѓXѓEѓBѓ“ѓhѓE‚ЄѓAѓNѓeѓBѓu‚МЏкЌ‡)
#--------------------------------------------------------------------------
def update_status
# B ѓ{ѓ^ѓ“‚Є‰џ‚і‚к‚ЅЏкЌ‡
if Input.trigger?(Input::B)
# ѓLѓѓѓ“ѓZѓ‹ SE ‚р‰‰‘t
$game_system.se_play($data_system.cancel_se)
# ѓRѓ}ѓ“ѓhѓEѓBѓ“ѓhѓE‚рѓAѓNѓeѓBѓu‚Й‚·‚й
@command_window.active = true
@status_window.active = false
@status_window.visible = false
@status_window.index = -1
return
end
# C ѓ{ѓ^ѓ“‚Є‰џ‚і‚к‚ЅЏкЌ‡
if Input.trigger?(Input::C)
# ѓRѓ}ѓ“ѓhѓEѓBѓ“ѓhѓE‚МѓJЃ[ѓ\ѓ‹€К’u‚Е•ЄЉт
case @command_window.index
when 1 # ѓXѓLѓ‹
# ‚±‚МѓAѓNѓ^Ѓ[‚МЌs“®ђ§ЊА‚Є 2 €ИЏг‚МЏкЌ‡
if $game_party.actors[@status_window.index].restriction >= 2
# ѓuѓUЃ[ SE ‚р‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ѓXѓLѓ‹‰ж–К‚ЙђШ‚и‘Ц‚¦
$scene = Scene_Skill.new(@status_window.index)
when 2 # ‘•”х
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ‘•”х‰ж–К‚ЙђШ‚и‘Ц‚¦
$scene = Scene_Equip.new(@status_window.index)
when 3 # ѓXѓeЃ[ѓ^ѓX
# Њ€’и SE ‚р‰‰‘t
$game_system.se_play($data_system.decision_se)
# ѓXѓeЃ[ѓ^ѓX‰ж–К‚ЙђШ‚и‘Ц‚¦
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
#===================================================
# ? CLASS Scene_Menu Ends
#===================================================
#===================================================
# ? CLASS Window_RingMenu Begins
#===================================================
class Window_RingMenu < Window_Base
#--------------------------------------------------------------------------
# Ѓ› ѓNѓ‰ѓX’иђ”
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Ѓ› ѓAѓNѓZѓT
#--------------------------------------------------------------------------
attr_accessor :index
#--------------------------------------------------------------------------
# Ѓњ ѓIѓuѓWѓFѓNѓgЏ‰Љъ‰»
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Ѓњ ѓtѓЊЃ[ѓЂЌXђV
#--------------------------------------------------------------------------
def update
super
refresh
end
#--------------------------------------------------------------------------
# Ѓњ ‰ж–КЌД•`‰ж
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# ѓAѓCѓRѓ“‚р•`‰ж
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
# ѓAѓNѓeѓBѓu‚ИѓRѓ}ѓ“ѓh–ј•\Ћ¦
rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
self.contents.draw_text(rect, @commands[@index],1)
end
#--------------------------------------------------------------------------
# Ѓ› ‰ж–КЌД•`‰ж(Џ‰Љъ‰»Ћћ)
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Ѓ› ‰ж–КЌД•`‰ж(‘Т‹@Ћћ)
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Ѓ› ‰ж–КЌД•`‰ж(‰с“]Ћћ)
# mode : 0=”ЅЋћЊv‰с‚и 1=ЋћЊv‰с‚и
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Ѓњ ЌЂ–Ъ‚М•`‰ж
# x :
# y :
# i : ЌЂ–Ъ”ФЌ†
#--------------------------------------------------------------------------
def draw_item(x, y, i)
#p "x=" + x.to_s + " y=" + y.to_s + " i=" + @items[i].to_s
rect = Rect.new(0, 0, @items[i].width, @items[i].height)
if @index == i
self.contents.blt( x, y, @items[i], rect )
if @disabled[@index]
self.contents.blt( x, y, ICON_DISABLE, rect )
end
else
self.contents.blt( x, y, @items[i], rect, 128 )
if @disabled[@index]
self.contents.blt( x, y, ICON_DISABLE, rect, 128 )
end
end
end
#--------------------------------------------------------------------------
# Ѓњ ЌЂ–Ъ‚р–іЊш‚Й‚·‚й
# index : ЌЂ–Ъ”ФЌ†
#--------------------------------------------------------------------------
def disable_item(index)
@disabled[index] = true
end
#--------------------------------------------------------------------------
# Ѓ› Џ‰Љъ‰»ѓAѓjѓЃЃ[ѓVѓ‡ѓ“‚МЏЂ”х
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Ѓ› ‰с“]ѓAѓjѓЃЃ[ѓVѓ‡ѓ“‚МЏЂ”х
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Ѓ› ѓAѓjѓЃЃ[ѓVѓ‡ѓ“’†‚©‚З‚¤‚©
#--------------------------------------------------------------------------
def animation?
return @mode != MODE_WAIT
end
end
#===================================================
# ? CLASS Window_RingMenu Ends
#===================================================
#===================================================
# ? CLASS Window_RingMenuStatus Begins
#===================================================
class Window_RingMenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Ѓњ ѓIѓuѓWѓFѓNѓgЏ‰Љъ‰»
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# Ѓњ ѓЉѓtѓЊѓbѓVѓ…
#--------------------------------------------------------------------------
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[i]
draw_actor_graphic(actor, x - 40, y + 80)
draw_actor_name(actor, x, y + 24)
end
end
#--------------------------------------------------------------------------
# Ѓњ ѓJЃ[ѓ\ѓ‹‚М‹йЊ`ЌXђV
#--------------------------------------------------------------------------
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
#===================================================
# ? CLASS Window_RingMenuStatus Ends
#===================================================
#===================================================
# ? CLASS Game_Map Additional Code Begins
#===================================================
class Game_Map
#Dubealex Addition (from XRXS) to show Map Name on screen
def name
$map_infos[@map_id]
end
end
#===================================================
# ? CLASS Game_Map Additional Code Ends
#===================================================
#===================================================
# ? CLASS Scene_Title Additional Code Begins
#===================================================
class Scene_Title
#Dubealex Addition (from XRXS) to show Map Name on screen
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end
#===================================================
# ? CLASS Scene_Title Additional Code Ends
#===================================================
#===================================================
# ? CLASS Window_Location Begins
#===================================================
class Window_Location < Window_Base
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
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
#===================================================
# ? CLASS Window_Location Ends
#===================================================
#===================================================
# ? Ring Menu - Show Player Location R1 - Ends
#===================================================
Ну и заменить еще меню статуса чтобы показывалась только количество жизней.. Скажем так селать отдельным маленьким окошком. Этот скрипт использует стандартное.
Социальные закладки