Ogłoszenie
Administracja Forum
Zamknięty przez: Ayene Czw 01 Kwi, 2010 13:25
CMS
Autor
Wiadomość
Melvin
Preferowany:
Ranga RM:
Pomógł: 35 razy Dołączył: 23 Paź 2009 Posty: 1063
Wysłany: Wto 30 Mar, 2010 16:58
CMS
ELO!!!!
Znów mam problem z moim CMS'em....
Po 1. Coś mi się okienko zacięło i bohater nie chodzi...
Helpnie ktoś?
Tu mój skrypt:
Spoiler:
Kod: #==============================================================================
# C M S
#------------------------------------------------------------------------------
# CMS by Melvin
#==============================================================================
#------------------------------------------------------------------------------
# class Scene_CMS
#------------------------------------------------------------------------------
class Scene_CMS
def main
@okno1 = Window_Gold_CMS.new
@okno2 = Window_PlayTime_CMS.new
@okno3 = Window_Steps_CMS.new
@okno4 = Window_Location_CMS.new
@okno5 = Window_MenuStatus_CMS.new
@okno1.x = -160
@okno1.y = 95
@okno2.x = 640
@okno2.y = 158
@okno3.x = -160
@okno3.y = 0
@okno4.x = 160
@okno4.y = -65
@okno5.x = 420
@okno5.y = 480
@spriteset = Spriteset_Map.new
@appearing = true
@disappearing = false
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@okno1.dispose
@okno2.dispose
@okno3.dispose
@okno4.dispose
@okno5.dispose
@spriteset.dispose
end
def appear
@okno1.x += 5 if @okno1.x < 0
@okno2.x -= 5 if @okno2.x > 0
@okno3.x += 5 if @okno3.x < 0
@okno4.y += 2 if @okno4.y < 0
@okno5.y -= 5 if @okno5.y > 0
if Input.trigger?(Input::B)
@appearing = false
end
if @okno1.x == 0 and @okno2.x == 0 and @okno3.x == 0 and
@okno4.y == 0 and @okno5.y == 0
@appearing = false
end
end
def disappear
@okno1.x -= 5 if @okno1.x > -160
@okno2.x += 15 if @okno2.x < 640
@okno3.x -= 5 if @okno3.x > -160
@okno4.y -= 2 if @okno4.y > -65
@okno5.y += 7 if @okno5.y < 480
if @okno1.x == -160 and @okno2.x == 640 and @okno3.x == -160 and
@okno4.y == -65 and @okno5.y == 480
$scene = Scene_Map.new
end
end
def update
if @appearing
appear
end
if @disappearing
disappear
end
@okno1.update
@okno2.update
@okno3.update
@okno4.update
@okno5.update
@spriteset.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@disappearing = true
end
end
end
#--------------------------------------------------------------------------
# Window_Steps_CMS
#--------------------------------------------------------------------------
class Window_Steps_CMS < Window_Base
def initialize
super(0, 0, 160, 96)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 120, 32, "Ilość kroków")
self.contents.font.color = normal_color
self.contents.draw_text(4, 32, 120, 32, $game_party.steps.to_s, 2)
self.back_opacity = 255
end
end
#--------------------------------------------------------------------------
# Window_PlayTime_CMS
#--------------------------------------------------------------------------
class Window_PlayTime_CMS < Window_Base
def initialize
super(0, 0, 160, 96)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 120, 32, "Czas gry")
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 32, 120, 32, text, 2)
self.back_opacity = 255
end
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#--------------------------------------------------------------------------
# Window_Gold_CMS
#--------------------------------------------------------------------------
class Window_Gold_CMS < Window_Base
def initialize
super(2, 77, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
cx = contents.text_size($data_system.words.gold).width
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
self.back_opacity = 255
end
end
class Game_Map
def name
$map_info[@map_id]
end
end
class Scene_Title
$map_info = load_data("Data/MapInfos.rxdata")
for key in $map_info.keys
$map_info[key] = $map_info[key].name
end
end
class Window_Base < Window
end
#--------------------------------------------------------------------------
# Window_Location_CMS
#--------------------------------------------------------------------------
class Window_Location_CMS < Window_Base
def initialize
super(0, 0, 480, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial"
self.contents.font.size = 22
self.back_opacity = 255
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 100, 32, "Lokacja:", 1)
self.contents.draw_text(0, 0, 350, 32, $game_map.name, 1)
end
end
#------------------------------------------------------------------------------
# Window_MenuStatus_CMS
#------------------------------------------------------------------------------
class Window_MenuStatus_CMS < Window_Selectable
def initialize
super(0, 0, 220, 320)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 64
y = i * 116
actor = $game_party.actors[i]
draw_actor_graphic(actor, x - 40, y + 80)
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 144, y)
draw_actor_level(actor, x, y + 32)
draw_actor_state(actor, x + 90, y + 32)
draw_actor_exp(actor, x, y + 64)
draw_actor_hp(actor, x + 236, y + 32)
draw_actor_sp(actor, x + 236, y + 64)
end
end
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
end
end
end
Po 2. Jak zrobić w CMS'e menu z polem do zaznaczania?
Oczywiście z animacją wjazdową...
Pzdr
________________________ MelvinClass:
Ayene
Ranga RM:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Sro 31 Mar, 2010 07:53
1. Scene_Map załącza się dopiero wówczas, gdy:
Kod: @okno1.x == -160 and @okno2.x == 640 and @okno3.x == -160 and
@okno4.y == -65 and @okno5.y == 480
jeżeli do położenia np. @okno2 dajesz przyrost 15, to nie ma jak osiągnąć wartości 640 (podziel 640 na 15, pozostaje reszta, a nie powinna). Dlatego Scene_map się nie włącza i nie możesz chodzić postacią.
2. O jakie menu 'z polem do zaznaczenia' Tobie chodzi?
________________________
Melvin
Preferowany:
Ranga RM:
Pomógł: 35 razy Dołączył: 23 Paź 2009 Posty: 1063
Wysłany: Sro 31 Mar, 2010 17:01
Cytat: 2. O jakie menu 'z polem do zaznaczenia' Tobie chodzi?
Chodzi mi o takie jak:
Plecak
Czary
Ekwipunek
ipt........
A jeszcze co do 1:
THX!
________________________ MelvinClass:
Ayene
Ranga RM:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Czw 01 Kwi, 2010 13:15
Jak podejrzysz klasę Scene_Manu to zobaczysz kod:
Kod: s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Status"
s5 = "Save"
s6 = "End Game"
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
i właśnie ten fragment odpowiada za stworzenie okna poleceń (window command).
________________________
Melvin
Preferowany:
Ranga RM:
Pomógł: 35 razy Dołączył: 23 Paź 2009 Posty: 1063
Wysłany: Czw 01 Kwi, 2010 13:23
Ah... Dzięki Wielki!!!
Można zamknąć.
________________________ MelvinClass:
Nie możesz pisać nowych tematówNie możesz odpowiadać w tematachNie możesz zmieniać swoich postówNie możesz usuwać swoich postówNie możesz głosować w ankietachNie możesz załączać plików na tym forumMożesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych Wersja do druku