Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Ring Menu XP
Autor Wiadomość
Seivoth 





Pomógł: 2 razy
Dołączył: 18 Wrz 2007
Posty: 79
Skąd: Kohlingen
Wysłany: Wto 08 Gru, 2009 23:00
Ring Menu XP
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.

Skrypt wklej nad Main
Spoiler:

Kod:
# Ring Menu XP
# Modified by SeIVoth
# www.ultimateam.pl

class Scene_Menu

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

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

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

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

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

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

def update
super
refresh
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 animation?
return @mode != MODE_WAIT
end
end

class Window_RingMenuStatus < Window_Selectable

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

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

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_MenuGold < 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 = $gold_text[0]
self.contents.font.size = $gold_text[1]
refresh
end

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
# www.ultimateam.pl



Pozdrawiam!
________________________
 
 
 
Malian 




Preferowany:
RPG Maker XP

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



Preferowany:
RPG Maker XP

Dołączył: 18 Sty 2010
Posty: 11
Wysłany: Pon 18 Sty, 2010 16:18
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 ?
________________________

 
 
 
Ayene 




Ranga RM:
4 gry

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


 
 
 
Inverse 



Preferowany:
RPG Maker XP

Dołączył: 18 Sty 2010
Posty: 11
Wysłany: Pon 18 Sty, 2010 20:47
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 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Wto 19 Sty, 2010 11:18
A spróbuj w skrypcie 'Ring Menu' linijkę:
Kod:
ICON_EQUIP  = RPG::Cache.icon("001-Weapon01")

zmienić na:
Kod:
ICON_EQUIP  = RPG::Cache.icon("002-Weapon02")


Co do offtopu :-) Bylibyśmy bardzo wdzięczni za wszelkie nowe materiały na forum :->
________________________


 
 
 
Inverse 



Preferowany:
RPG Maker XP

Dołączył: 18 Sty 2010
Posty: 11
Wysłany: Wto 19 Sty, 2010 11:27
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 :>
________________________

 
 
 
HESEE 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 31 Mar 2010
Posty: 145
Wysłany: Sob 01 Maj, 2010 11:28
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!

Pomagam bezinteresownie!
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 01 Maj, 2010 11:49
A masz w ogóle kogoś w drużynie?
________________________


 
 
 
HESEE 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 31 Mar 2010
Posty: 145
Wysłany: Sob 01 Maj, 2010 11:50
nie
________________________
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!

Pomagam bezinteresownie!
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 01 Maj, 2010 11:53
No to dlatego Tobie nie działa. Ustaw chociaż jedną osobę.
________________________


 
 
 
HESEE 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 31 Mar 2010
Posty: 145
Wysłany: Sob 01 Maj, 2010 11:58
Dodałem do drużyny nawet 4 osoby i to samo.
________________________
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!

Pomagam bezinteresownie!
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 01 Maj, 2010 12:03
W takim razie masz kolizję z innym skryptem. A spróbuj usunąć fragment:
Kod:
if $game_party.actors[@status_window.index].restriction >= 2
$game_system.se_play($data_system.buzzer_se)
return
end
________________________


 
 
 
HESEE 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 31 Mar 2010
Posty: 145
Wysłany: Sob 01 Maj, 2010 12:12
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!

Pomagam bezinteresownie!
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 01 Maj, 2010 12:15
Jaki błąd? Masz jakiś skrypt, który zmienia menu w grze?
________________________


 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene