Witam!
Ring Menu to skrypt pozwalajÄ cy na wyĹwietlenie menu w formie koĹa, z ikonami pojawiajÄ cym siÄ na ekranie. ZastosowaĹem ten skrypt w grze "System". Lekko go zmodyfikowaĹem. Mam nadziejÄ Ĺźe komuĹ siÄ przyda.
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]="Comic Sans MS" # 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]="Lokacja:" # Text
$gold_text[0]="Comic Sans MS" # Font Type
$gold_text[1]=24 # Font Size
$gold_text[2]=0 # Gold Title Color
$gold_text[6]=0 # Gold Color
$gold_text[4]="ZĹoto:" # 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]="Comic Sans MS" # Font Type
$ring_menu_text[7]=0 # Font Color
$ring_menu_text[8]=24 # Font Size
$ring_menu_text[1]="Przedmioty"
$ring_menu_text[2]="Czary"
$ring_menu_text[3]="Ekwipunek"
$ring_menu_text[4]="Stan"
$ring_menu_text[5]="Zapisz grÄ"
$ring_menu_text[6]="WyjdĹş z gry"
@chara_select[0]=408 # X Axis Position
@chara_select[1]=0 # Y Axis Position
$chara_select[0]="Comic Sans MS" # 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
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
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)
$scene = Scene_Save.new
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
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
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
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
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
def draw_item(x, y, i)
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
def disable_item(index)
@disabled[index] = true
end
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
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
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 - 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
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 Game_Map
def name
$map_infos[@map_id]
end
end
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
Pomógł: 3 razy Dołączył: 22 Gru 2009 Posty: 262 Skąd: Warszawa
Wysłany: Nie 17 Sty, 2010 10:03
A ja mam pytanie:
Czy da siÄ dopasowaÄ ring menu do windowskina. W mojej grze sÄ one zmienne.
[ Dodano: Nie 17 Sty, 2010 10:48 ]
JuĹź znalazĹem rozwiÄ zanie w linijce 51 moĹźna zmieniÄ Windowskin na jaki chcecie pod warunkiem Ĺźe go macie w Graphics\Windowskins.
Eh.. Mam zdaje siÄ problem kombatybilnoĹciowy tego skryptu z SBS... Mianowicie... Skrypt dziaĹa piÄknie do pierwszej walki... Po tej nastÄpuje error o komunikacie :
Script 'New menu' line 329:RGSSError occured. Disposed bitmap.
Niestety linjka 329 wyglÄ da nastÄpujÄ co : rect = Rect.new(0, 0, @items[i].width, @items[i].height)... Nie ma tu sĹowa o pozycji grafiki czy czegoĹ w ten deseĹ wiÄc nie za bardzo wiem jak to zreperowaÄ... JakieĹ sugestie ?
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pon 18 Sty, 2010 16:47
Jest pozycja grafiki - w tej linijce tworzy siÄ nowÄ bitmapÄ (Rect od rectangle, czyli prostokÄ t), dwa pierwsze argumenty to poĹoĹźenie, a dwa kolejne to wymiary. Wina musi leĹźeÄ po stronie SBS (to SideView Battle System?!). Czasami wyskakiwaĹ mi tego typu bĹÄ d, gdy skrypt prĂłbowaĹ stworzyÄ coĹ, co byĹo mniejsze od standardowego 32-pikselowego formatu. Niestety nie jestem w stanie Tobie pomĂłc - nie wiem, jakiego SBS uĹźywasz.
Tak sideview battle system... UĹźywam tĹumaczenia systemu Tankentai'a (z portugalskiego/japoĹskiego na angielski) (nie wiem czy to nie problem :D) Link : http://www.rpgrevolution....opic=25504&st=0 (bardzo fajny battle system... polecam...).
Nie wiem gdzie leĹźy problem bo obydwa skrypty... osobno dziaĹajÄ ... Menu dziaĹa dopĂłki nie ma miejsca pierwsza walka (moĹźe problem przy umieszczaniu aktorĂłw/resizie ikonek/etc...)
JeĹli tĹumaczenia/translacje skryptĂłw na forum coĹ dajÄ /sÄ mile widziane... To ja chÄtnie pare zaoferuje/zaproponuje/przetĹumaczÄ <maĹy offtop przepraszam>
[ Dodano: Wto 19 Sty, 2010 11:07 ]
Zero rezultatu :< Inne sugestie ? :< MyĹlÄ ,Ĺźe bÄdzie trzeba jednak pobabraÄ w skrypcie :< Tylko nie mam pojÄcia od czego zaczÄ Ä...
Skrypty <komentarze do nich> przetĹumaczone na poski ? ;P
Ayene jesteĹ genialna ;P Chodzi o ikony ;P Jak jakaĹ postaÄ uĹźywa tej broni ,ktĂłra jest jako domyĹlna ikonka w menu... To robi siÄ crash :D Bardzo dziÄkuje :>
Mam problem taki nie wiem od czego ale jeĹli wybiore np:
czary to jest error
script 'ring menu xp' line 202 :nomethoderror occurred
undefided method 'restriction' for nil:nilclass
A jak ekwipunek to to samo ale inny komunikat jeszcze tak samo stan.
Mam podejrzenia Ĺźe mi moĹźe siÄ to kolizowaÄ z systemem myszki.
________________________ http://www.poomoc.pl/
Kilka klikniÄÄ a pomoĹźesz innym!
Czy naprawdÄ to jest duĹźa strata czasu?
W ten sposĂłb pomoĹźesz innym!
________________________ http://www.poomoc.pl/
Kilka klikniÄÄ a pomoĹźesz innym!
Czy naprawdÄ to jest duĹźa strata czasu?
W ten sposĂłb pomoĹźesz innym!
________________________ http://www.poomoc.pl/
Kilka klikniÄÄ a pomoĹźesz innym!
Czy naprawdÄ to jest duĹźa strata czasu?
W ten sposĂłb pomoĹźesz innym!
Chyba zrezygnuje z ring menu
to samo tylko inny bĹÄ d.
________________________ http://www.poomoc.pl/
Kilka klikniÄÄ a pomoĹźesz innym!
Czy naprawdÄ to jest duĹźa strata czasu?
W ten sposĂłb pomoĹźesz innym!
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