Pomógł: 6 razy Dołączył: 19 Gru 2012 Posty: 81 Skąd: Masz taki nr. IQ ?
Wysłany: Nie 20 Sty, 2013 18:34
Skrypt na Pseudo 3d menu
~ Ring Meny (Pseudo) 3d ~
Krótki opis:
tworzy menu w wersji koła ala 3d
Autor:
Gab
Tłumaczenie:
GuGuś
Kompatybilność:
RPG Maker VX Ace
Skrypt:
Spoiler:
Kod:
#=============================================================================
# Gab Ring Menu 3D
#-----------------------------------------------------------------------------
# Autor: Gab!
# Data: 28/11/12
#-----------------------------------------------------------------------------
# Deixa o menu com perspectiva 3D.
#=============================================================================
module Gab
module RingMenu3D
#=============================================================================
# * Konfiguracja
#=============================================================================
# ID Ikond
ICONS = [
192, # Plecak
112, # Zdolności
169, # Ekwipunek
14, # Status
12, # Formacja
117, # Zapisz
121 # Wyjdź
]
#=============================================================================
# * FIM DA CONFIGURAÇÃO
#=============================================================================
end
end
Object.send(:remove_const, :Scene_Menu)
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# ** Base para as janelas do menu
#--------------------------------------------------------------------------
class MenuWindow < Window_Base
def initialize(x, y, width, icon, opacity)
super(x, y, width, fitting_height(1))
@icon = icon
self.opacity = opacity
self.contents.font.name = Gab::RingMenu3D::FNAME
self.contents.font.size = Gab::RingMenu3D::FSIZE
self.contents.font.color = Color.new(*Gab::RingMenu3D::FCOLOR)
self.contents.font.outline = false
self.contents.font.shadow = true
def update
super
refresh if (Graphics.frame_count % Graphics.frame_rate) == 0
end
def text
return ""
end
end
#--------------------------------------------------------------------------
# ** Nome do mapa
#--------------------------------------------------------------------------
class MenuWindowMapName < MenuWindow
def text
$game_map.display_name
end
def align
return 0
end
end
#--------------------------------------------------------------------------
# ** Tempo de jogo
#--------------------------------------------------------------------------
class MenuWindowTime < MenuWindow
def text
total_sec = Graphics.frame_count / Graphics.frame_rate
hour = total_sec / 60 / 60
min = total_sec / 60 % 60
sec = total_sec % 60
sprintf("%02d:%02d:%02d", hour, min, sec)
end
end
#--------------------------------------------------------------------------
# ** Dinheiro
#--------------------------------------------------------------------------
class MenuWindowGold < MenuWindow
def text
$game_party.gold.to_s
end
end
#--------------------------------------------------------------------------
# * Inicialização do processo
#--------------------------------------------------------------------------
def start
super
adjust_actors
update_actors_src
end
#--------------------------------------------------------------------------
# * Cria janelas
#--------------------------------------------------------------------------
def create_windows
windows = Gab::RingMenu3D::Windows
@windows = []
@windows << MenuWindowMapName.new(*windows[:mapName][1,5]) if windows[:mapName][0]
@windows << MenuWindowTime.new(*windows[:time][1,5]) if windows[:time][0]
@windows << MenuWindowGold.new(*windows[:gold][1,5]) if windows[:gold][0]
end
#--------------------------------------------------------------------------
# * Posicionamento e ajuste de opacidade dos ícones
#--------------------------------------------------------------------------
def adjust_icons
el = 2 * Math::PI / @icons.size
t = @addIcons - el
@icons.each{|sprite|
t += el
sprite.x = @sprite.x + Math.sin(t) * Gab::RingMenu3D::R1
sprite.y = @sprite.y + Gab::RingMenu3D::R2 * (Math.cos(t) - 0.5)
dif = (sprite.y - @basePointIcons) / @maxDifIcons
sprite.opacity = @stage == 0 ? 127 + 255 * dif : 0
sprite.zoom_x = sprite.zoom_y = [0.5 + dif, 1].min
}
end
#--------------------------------------------------------------------------
# * Posicionamento e ajuste de opacidade dos atores
#--------------------------------------------------------------------------
def adjust_actors
el = 2 * Math::PI / @actors.size
t = @addActors - el
@actors.each{|sprite|
t += el
sprite.x = @sprite.x + Math.sin(t) * (Gab::RingMenu3D::R1 + 24)
sprite.y = @sprite.y + (Gab::RingMenu3D::R2 + 24) * Math.cos(t)
dif = (sprite.y - @basePointActors) / @maxDifActors
sprite.opacity = @stage != 0 ? 127 + 255 * dif : 0
sprite.zoom_x = sprite.zoom_y = [0.5 + dif, 1].min
}
end
#--------------------------------------------------------------------------
# * Movimento dos ícones
#--------------------------------------------------------------------------
def rotateIcons(dir)
@moveTimesIcons *= -1 if dir == :right
if dir == :right
@moveTimesIcons *= -1
@index += 1
else
@index -= 1
end
@index %= @icons.size
legend_refresh
end
#--------------------------------------------------------------------------
# * Movimento dos atores
#--------------------------------------------------------------------------
def rotateActors(dir)
@moveTimesActors *= -1 if dir == :right
if dir == :right
@moveTimesActors *= -1
@actorIndex += 1
else
@actorIndex -= 1
end
@actorIndex %= @actors.size
legend_refresh
end
#--------------------------------------------------------------------------
# * Atualiza legenda
#--------------------------------------------------------------------------
def legend_refresh
@legend.bitmap.clear
text = @stage == 0 ? @vocabulary[@index] : @actorsNames[@actorIndex]
@legend.bitmap.draw_text(@legend.bitmap.rect, text, 1)
@legend.update
end
#--------------------------------------------------------------------------
# * Atualização Base
#--------------------------------------------------------------------------
def update
super
@windows.each(&:update)
case @stage
when 0
update_main_input
when 1, 2
@stage == 1 ? update_actors_input : update_formation_input
if (Graphics.frame_count % Gab::RingMenu3D::CFREQ) == 0
@pattern = (@pattern + 1) % 3
end
update_actors_src
end
end
#--------------------------------------------------------------------------
# * Atualização de input padrão
#--------------------------------------------------------------------------
def update_main_input
if Input.repeat?(:LEFT)
rotateIcons(:left)
elsif Input.repeat?(:RIGHT)
rotateIcons(:right)
elsif Input.trigger?(:B)
Sound.play_cancel
process_return
elsif Input.trigger?(:C)
process_confirm
end
end
#--------------------------------------------------------------------------
# * Atualização de entrada na seleção de ator
#--------------------------------------------------------------------------
def update_actors_input
if Input.repeat?(:LEFT)
rotateActors(:left)
elsif Input.repeat?(:RIGHT)
rotateActors(:right)
elsif Input.trigger?(:B)
Sound.play_cancel
process_return
elsif Input.trigger?(:C)
Sound.play_ok
process_special_confirm
end
end
#--------------------------------------------------------------------------
# * Atualização de entrada na seleção de ator
#--------------------------------------------------------------------------
def update_actors_input
if Input.repeat?(:LEFT)
rotateActors(:left)
elsif Input.repeat?(:RIGHT)
rotateActors(:right)
elsif Input.trigger?(:B)
Sound.play_cancel
process_return
elsif Input.trigger?(:C)
Sound.play_ok
process_special_confirm
end
end
#--------------------------------------------------------------------------
# * Atualização de troca de formação
#--------------------------------------------------------------------------
def update_formation_input
if Input.repeat?(:LEFT)
rotateActors(:left)
elsif Input.repeat?(:RIGHT)
rotateActors(:right)
elsif Input.trigger?(:B)
Sound.play_cancel
process_return
elsif Input.trigger?(:C)
process_formation_confirm
end
end
#--------------------------------------------------------------------------
# * Processa confirmação
#--------------------------------------------------------------------------
def process_confirm
case @index
when 0 # Item
Sound.play_ok
SceneManager.call(Scene_Item)
when 1, 2, 3, 4 # Skill, Equip, Status, Formação
return Sound.play_buzzer if ($game_party.members.size <= 1 && @index == 4)
Sound.play_ok
@stage = @index == 4 ? 2 : 1
adjust_actors
adjust_icons
legend_refresh
@legend.y -= 28
when 5 # Save
if ($game_system.save_disabled)
Sound.play_buzzer
else
SceneManager.call(Scene_Save)
Sound.play_ok
end
when 6 # Sair
Sound.play_ok
SceneManager.call(Scene_End)
end
end
#--------------------------------------------------------------------------
# * Processa confirmação das opções que requerem seleção de ator
#--------------------------------------------------------------------------
def process_special_confirm
$game_party.menu_actor = $game_party.members[@actorIndex]
case @index
when 1 # Skill
SceneManager.call(Scene_Skill)
when 2 # Equip
SceneManager.call(Scene_Equip)
when 3 # Status
SceneManager.call(Scene_Status)
end
end
#--------------------------------------------------------------------------
# * Processa confirmação de troca de formação
#--------------------------------------------------------------------------
def process_formation_confirm
if @actor1.nil?
@actor1 = @actorIndex
@actors[@actor1].tone = Tone.new(150, 150, 150, 0)
Sound.play_ok
else
return Sound.play_buzzer if @actor1 == @actorIndex
Sound.play_ok
adjust_icons
adjust_actors
legend_refresh
@legend.y += 28
end
end
#--------------------------------------------------------------------------
# * Processa retorno
#--------------------------------------------------------------------------
def process_return
case @stage
when 0
return_scene
when 1
case @index
when 1, 2, 3
@stage = 0
adjust_actors
adjust_icons
legend_refresh
@legend.y += 28
when 4
if !@actor1.nil?
@actors[@actor1].tone = Tone.new(0, 0, 0, 0)
return @actor1 = nil
end
@stage = 0
adjust_actors
adjust_icons
legend_refresh
@legend.y += 28
end
end
end
#--------------------------------------------------------------------------
# * Atualiza characters
#--------------------------------------------------------------------------
def update_actors_src
@actors.each{|sprite|
char, cw, ch = sprite.instance_variable_get(:@charData)
index = char.character_index
sx = (index % 4 * 3 + @pattern) * cw
sy = (index / 4 * 4) * ch
sprite.src_rect.set(sx, sy, cw, ch)
}
end
end
Screeny:
Spoiler:
Dodatkowe informacje:
Skrypt został znaleziony w Internecie.
________________________
Siema
Gość, Jeżeli ci Pomogłem, możesz mi dać .
_______________________________________________________________
Niestety, padł mi komp z Projektami, więc przez pewien czas niestety nici z Projektów :C
Dołączył: 16 Gru 2012 Posty: 24 Skąd: z Jarkendaru
Wysłany: Sob 09 Lut, 2013 07:50
Ayene co,robię nie tak?wkleiłem skrypt nad Main(chyba tam się
wkleja większość skryptów)i nie działa jak uruchamiam projekt wyskakuję takie coś
http://img688.imageshack....wytywanie2z.png
________________________ Nazywam się Megow nie XDOskarXD
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