Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Przydatne zmienne globalne/komendy "draw"
Autor Wiadomość
pw115 



Preferowany:
RPG Maker XP

Pomógł: 10 razy
Dołączył: 19 Lut 2010
Posty: 235
Skąd: Katowice
Wysłany: Pią 26 Lut, 2010 17:06
Przydatne zmienne globalne/komendy "draw"
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 !!
________________________
Pomocy:
http://pw115.myminicity.com/




 
 
Asantos 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 15 razy
Dołączył: 31 Sty 2010
Posty: 236
Skąd: Gniezno
Wysłany: Pią 26 Lut, 2010 18:40
super nie wiedziałem że się znasz na RUBY - kiedy będę miał wolny czas to poszperam trochę i pouczę się tego wszystkiego :)
 
 
Unnamed 




Preferowany:
RPG Maker XP

Dołączył: 29 Lip 2009
Posty: 59
Skąd: from Hell
Wysłany: Pon 01 Mar, 2010 17:44
Widze ze powieliles temat... na co dwa tematy ze zmiennymi?
________________________
Time to Play :!:

 
 
pw115 



Preferowany:
RPG Maker XP

Pomógł: 10 razy
Dołączył: 19 Lut 2010
Posty: 235
Skąd: Katowice
Wysłany: Pon 01 Mar, 2010 17:57
Tak ale Ayene napisała zastosowanie zmiennych a ja wypisałem same zmienne
________________________
Pomocy:
http://pw115.myminicity.com/




 
 
Czeliosss 



Ranga RM:
1 gra

Pomógł: 49 razy
Dołączył: 02 Lis 2009
Posty: 661
Skąd: Wa-wa
Wysłany: Wto 06 Kwi, 2010 16:26
No fajne. Można tak zrobić jakiegoś Huda.
Pzdr.
________________________
...Amelanduil & FireBlade words will be remembered...
...Amelanduil & FireBlade acts will be remembered...
...Amelanduil & FireBlade never gonna die...

Nie pisać, bo nie odpiszę.
 
 
SaE 





Ranga RM:
2 gry

Pomogła: 8 razy
Dołączyła: 14 Paź 2007
Posty: 189
Wysłany: Wto 27 Kwi, 2010 09:38
Jest pewna nieścisłość bo
Cytat:
$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 ^^


 
 
 
ziomalek 



Preferowany:
RPG Maker VX

Dołączył: 23 Kwi 2010
Posty: 36
Skąd: Chomikuj.pl/jjj979
Wysłany: Nie 02 Maj, 2010 08:12
a dałby ktoś przykład skryptu jak wyświetlić lvl boha i aby nietrzeba było wstawiac nic do scene_map :?: :?: :?:
________________________

 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 02 Maj, 2010 08:26
Jeżeli korzystasz z VX'a możesz wejść w edytor skryptów, przejść do klasy 'Window_Message', znaleźć:
Kod:
@text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }

po czym dodać:
Kod:
@text.gsub!(/\\L\[([0-9]+)\]/i) { $game_actors[$1.to_i].level }


Dzięki temu wpisując w treści wiadomości \L[nr] wyświetlisz poziom postaci o id = nr
(dlatego nr zamień na jakieś id) :->
________________________


 
 
 
ziomalek 



Preferowany:
RPG Maker VX

Dołączył: 23 Kwi 2010
Posty: 36
Skąd: Chomikuj.pl/jjj979
Wysłany: Nie 02 Maj, 2010 08:36
Dzięki Ayne, jesteś BOSKA :!:

A jak zrobić to bez dodawania tych koment do Windows_Message, Scene_Map...???

[ Dodano: Nie 09 Maj, 2010 12:56 ]
to powie ktoś???
________________________

 
 
erienus 




Preferowany:
RPG Maker XP

Pomógł: 29 razy
Dołączył: 12 Lut 2010
Posty: 300
Wysłany: Pią 21 Maj, 2010 11:10
przy próbowaniu sobie coś zryłem chyba bo:

class Window_okno < Window_Base
def initialize(x = 160, y = 120, width = 320, height = 240)
super(x, y, width, height)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 18
self.back_opacity = 160
refresh
end
def refresh
self.contents.clear
self.contents.draw_actor_name
end
end

taki mam kod, chciałem by wyświetlało imię bohatera, więc dodałem

self.contents.draw_actor_name

ale wywala mi grę ;/
________________________
Kolekcjonuję "Pomógł". Jeżeli ci pomogłem i chcesz wzbogacić moją kolekcję, kliknij "Pomógł".
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 21 Maj, 2010 11: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.
________________________


 
 
 
erienus 




Preferowany:
RPG Maker XP

Pomógł: 29 razy
Dołączył: 12 Lut 2010
Posty: 300
Wysłany: Sob 22 Maj, 2010 08:01
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ł".
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 22 Maj, 2010 10:46
Trzeba skorzystać ze skryptu, najlepiej będzie jak podejrzysz, jak wstawić takie paski do Menu:
Spoiler:

Kod:
# Paski HP i SP

module Ayene
    SZEROKOŚĆ_PASKÓW = 144
    KOLOR_HP = Color.new(128, 128, 255, 255)
    KOLOR_SP = Color.new(255, 64, 0)
end

class Window_Base < Window
  def draw_actor_hp_gauge(actor, x, y, width = Ayene::SZEROKOŚĆ_PASKÓW)
    gw = width * actor.hp / actor.maxhp
    self.contents.fill_rect(x, y + 24, width, 6, Color.new(255, 255, 255, 255))
    self.contents.fill_rect(x, y + 24, gw, 6, Ayene::KOLOR_HP)
  end 
 
  def draw_actor_sp_gauge(actor, x, y, width = Ayene::SZEROKOŚĆ_PASKÓW)
    gw = width * actor.sp / actor.maxsp
    self.contents.fill_rect(x, y + 24, width, 6, Color.new(255, 255, 255, 255))
    self.contents.fill_rect(x, y + 24, gw, 6, Ayene::KOLOR_SP)
  end 
 
  alias ayene_draw_actor_hp draw_actor_hp
  def draw_actor_hp(*arg)
    ayene_draw_actor_hp(*arg)
    draw_actor_hp_gauge(*arg)
  end 
 
  alias ayene_draw_actor_sp draw_actor_sp
  def draw_actor_sp(*arg)
    ayene_draw_actor_sp(*arg)
    draw_actor_sp_gauge(*arg)
  end 
end


Wystarczy, że w miejsce, gdzie chcesz wstawić paski podasz kod:
Kod:
draw_actor_hp_gauge(actor, x, y, width)

i
Kod:
draw_actor_sp_gauge(actor, x, y, width)
________________________


 
 
 
erienus 




Preferowany:
RPG Maker XP

Pomógł: 29 razy
Dołączył: 12 Lut 2010
Posty: 300
Wysłany: Sob 22 Maj, 2010 14:34
ok, może mi się uda
________________________
Kolekcjonuję "Pomógł". Jeżeli ci pomogłem i chcesz wzbogacić moją kolekcję, kliknij "Pomógł".
 
 
FilipsO 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 1 raz
Dołączył: 21 Maj 2010
Posty: 236
Skąd: z nikąd
Wysłany: Pią 23 Lip, 2010 13: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 call_battle
$game_temp.battle_calling = false
$game_temp.menu_calling = false
$game_temp.menu_beep = false
$game_player.make_encounter_count
$game_temp.map_bgm = $game_system.playing_bgm
$game_system.bgm_stop
$game_system.se_play($data_system.battle_start_se)
$game_system.bgm_play($game_system.battle_bgm)
$game_player.straighten
$scene = Scene_Battle.new
end

def call_shop
$game_temp.shop_calling = false
$game_player.straighten
$scene = Scene_Shop.new
end

def call_name
$game_temp.name_calling = false
$game_player.straighten
$scene = Scene_Name.new
end

def call_menu
$game_temp.menu_calling = false
if $game_temp.menu_beep
$game_system.se_play($data_system.decision_se)
$game_temp.menu_beep = false
end
$game_player.straighten
$scene = Scene_Menu.new
end

def call_save
$game_player.straighten
$scene = Scene_Save.new
end

def call_debug
$game_temp.debug_calling = false
$game_system.se_play($data_system.decision_se)
$game_player.straighten
$scene = Scene_Debug.new
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 19:44, w całości zmieniany 1 raz  
 
 
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