W poradniku "okno w Ruby" nauczyłem was jak tworzyć okna i wypełniać je tekstem
dzisiaj pokaże wam jak w oknie wyświetlić zmienną, przełącznik, złoto drużyny itd.
W linijce
Kod:
self.contents.draw_text(0, 0, 288, 32, "Losowy tekst służący do zapełnienia okna", 1)
zamiast "losowy tekst służ.... możemy napisać:
Kod:
$game_variables[N] - pokazuje wartość zmiennej nr N.
$game_switches[N] - pokazuje wartość przełącznika nr N (True lub False)
$game_system.save_count - pokazuje ilość zapisów gry
$data_system.words.hp - pokazuje słowo 'HP' zapisane w bazie danych
$data_system.words.sp - pokazuje słowo 'SP' zapisane w bazie danych
$data_system.words.atk - pokazuje słowo "Atk" zapisane w bazie danych
$data_system.words.pdef - pokazuje słowo "Pdef" zapisane w bazie danych
$data_system.words.mdef - pokazuje słowo "Mdef" zapisane w bazie danych
$data_system.words.str - pokazuje słowo "Str" zapisane w bazie danych
$data_system.words.dex - pokazuje słowo "Dex" zapisane w bazie danych
$data_system.words.agi - pokazuje słowo "Agi" zapisane w bazie danych
$data_system.words.int - pokazuje słowo "Int" zapisane w bazie danych
$data_actors[N].final_level - ostateczny poziom postaci o numerze N
$data_actors[N].name - imię bohatera o numerze N
$data_actors[N].level - poziom postaci o numerze N
$data_actors[N].class_name - nazwa klasy bohatera o numerze N
$data_actors[N].exp_s - doświadczenie postaci o numerze N
$data_actors[N].next_exp_s - doświadczenie potrzebne do następnego poziomu dla postaci o numerze N
$data_actors[N].hp - pokazuje ilość HP postaci o numerze N
$data_actors[N].maxhp - pokazuje MaxHP postaci o numerze N
$data_actors[N].sp - pokazuje ilość HP postaci o numerze N
$data_actors[N].maxsp - pokazuje MaxSP postaci o numerze N
$data_actors[N].skills.size - ilość umiejętności jakie posiada postać o numerze N
$data_actors[N].item.size - ilość przedmiotów jakie posiada postać o numerze N
$data_actors[N].str - ilość str postaci o numerze N
$data_actors[N].dex - ilość dex postaci o numerze N
$data_actors[N].agi - ilość agi postaci o numerze N
$data_actors[N].int - ilość int postaci o numerze N
$data_actors[N].atk - ilość atk postaci o numerze N
$data_actors[N].pdef - ilość pdef postaci o numerze N
$data_actors[N].mdef - ilość mdef postaci o numerze N
$data_actors[N].eva - ilość eva postaci o numerze N
a zamiast
self.contents.draw_text(0, 0, 288, 32, "Losowy tekst służący do zapełnienia okna", 1)
możemy napisać:
Kod:
draw_actor_graphic - pokazuje character jaki posiada postać
draw_actor_name - pokazuje imię bohatera
draw_actor_class - pokazuję klasę postaci
draw_actor_level - pokazuje level bohatera
draw_actor_state - pokazuje postaci
draw_actor_exp - pokazuje doświadczenie bohatera
draw_actor_hp - pokazuje hit points postaci
draw_actor_sp - pokazuje skill points bohatera
draw_actor_parameter (actor, x, y, type) - pokazuje parametry postaci (dla type: 0 - atak, 1 - obrona fizyczna, 2 - obrona magiczna, 3 - siła, 4 - zręczność, 5 - zwinność, 6 - inteligencja.
Dużo tego nie ? ale pomyślcie jakie to stwarza możliwości !!
________________________ ...Amelanduil & FireBlade words will be remembered... ...Amelanduil & FireBlade acts will be remembered... ...Amelanduil & FireBlade never gonna die...
$data_actors[N].hp - pokazuje ilość HP postaci o numerze N
N to nie numer postaci, tylko jej ID w bazie danych.
A tak na prawdę to w grze rzadko przydaje się tego typu zmienna, gdyż nie można przewidzieć jaką postać będzie miał w drużynie gracz dlatego używa się zmiennej przystosowanej do indeksu postaci:
$game_party.actors[N].hp - gdzie N to indeks postaci (od 0)
a w VX'e
$game_party.members[N].hp - gdzie N to indeks postaci (od 0)
________________________ Nie ma śniegu, a na ulicach pełno bałwanów ^^
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pią 21 Maj, 2010 12:25
Bo co to jest w ogóle za komenda 'self.contents.draw_actor_name'. I kogo ma podać imię?
Po pierwsze 'draw_actor_name' to zadeklarowana już definicja, która sama w sobie powoduje wyświetlenie imienia bohatera, jednak - co jest ważne - należy wskazać, którego bohatera imię chcesz wyświetlić?
czyli linijka z:
Kod:
self.contents.draw_actor_name
powinna wyglądać przykładowo tak:
Kod:
draw_actor_name($game_party.actors[0], x, y)
za x i y podstaw współrzędne.
Wówczas wyświetli się imię pierwszego bohatera w drużynie.
ok, dzięki ayene ;p
a jak zrobić by ukazać 2 lub 3 okienka? bo jak dałem 2 oddzielne skrypty z 2 okienkami to tylko jedno pokazało
EDIT: wiem już chyba, ale mam pytanie bo robię HUDa i jak zrobić by podstawić grafiki pod pasek HP MP i EXP?
________________________ Kolekcjonuję "Pomógł". Jeżeli ci pomogłem i chcesz wzbogacić moją kolekcję, kliknij "Pomógł".
Pomógł: 1 raz Dołączył: 21 Maj 2010 Posty: 236 Skąd: z nikąd
Wysłany: Pią 23 Lip, 2010 14:32
Mam wielki problem!
Stworzyłem coś takiego:
Spoiler:
Skrypt:
class Window_okno < Window_Base
def initialize(x = 7, y = 16, width = 320, height = 60)
super(x, y, width, height)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "HP:"$data_actors[N].hp
self.contents.font.size = 18
self.back_opacity = 160
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 288, 32, "", 1)
end
end
Scene_Map
class Window_okno < Window_Base
def initialize(x = 7, y = 16, width = 320, height = 60)
super(x, y, width, height)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Book Antiqua"
self.contents.font.size = 18
self.back_opacity = 160
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 288, 32, "HP:"$data_actors[N].hp, 1)
end
end
class Scene_Map
def main
@spriteset = Spriteset_Map.new
@message_window = Window_Message.new
@okienko = Window_okno.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@spriteset.dispose
@message_window.dispose
@okienko.dispose
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
end
def update
loop do
$game_map.update
$game_system.map_interpreter.update
$game_player.update
$game_system.update
$game_screen.update
unless $game_temp.player_transferring
break
end
transfer_player
if $game_temp.transition_processing
break
end
end
@spriteset.update
@message_window.update
@okienko.refresh
if $game_temp.gameover
$scene = Scene_Gameover.new
return
end
if $game_temp.to_title
$scene = Scene_Title.new
return
end
if $game_temp.transition_processing
$game_temp.transition_processing = false
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
if $game_temp.message_window_showing
return
end
if $game_player.encounter_count == 0 and $game_map.encounter_list != []
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
n = rand($game_map.encounter_list.size)
troop_id = $game_map.encounter_list[n]
if $data_troops[troop_id] != nil
$game_temp.battle_calling = true
$game_temp.battle_troop_id = troop_id
$game_temp.battle_can_escape = true
$game_temp.battle_can_lose = false
$game_temp.battle_proc = nil
end
end
end
if Input.trigger?(Input::B)
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
if $DEBUG and Input.press?(Input::F9)
$game_temp.debug_calling = true
end
unless $game_player.moving?
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
end
end
end
def transfer_player
$game_temp.player_transferring = false
if $game_map.map_id != $game_temp.player_new_map_id
$game_map.setup($game_temp.player_new_map_id)
end
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
case $game_temp.player_new_direction
when 2
$game_player.turn_down
when 4
$game_player.turn_left
when 6
$game_player.turn_right
when 8
$game_player.turn_up
end
$game_player.straighten
$game_map.update
@spriteset.dispose
@spriteset = Spriteset_Map.new
if $game_temp.transition_processing
$game_temp.transition_processing = false
Graphics.transition(20)
end
$game_map.autoplay
Graphics.frame_reset
Input.update
end
end
I wyskakuje mi syntax error a ja chcialem HP w rogu
________________________ 89% graczy uważa, że najważniejsza jest grafika.
Jeśli należysz do pozostałych 11% wklej to do swojego podpisu.
Moja Gra MMORPG Erathia:
Ostatnio zmieniony przez Nhadala Wto 17 Sie, 2010 20:44, w całości zmieniany 1 raz
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