Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Przesunięty przez: Ayene
Pią 26 Lut, 2010 14:15
Okno w Ruby
Autor Wiadomość
Czeliosss 



Ranga RM:
1 gra

Pomógł: 49 razy
Dołączył: 02 Lis 2009
Posty: 661
Skąd: Wa-wa
Wysłany: Pon 05 Kwi, 2010 21:53
Mam pytanie. Jak zrobić, że po lewej stronie jest jakiś spis (wybór), a jak się naciśnie spację to otwiera się kolejne okno.
Z oknem wiem jak, ale nie wiem z tym spisem.
Pzdr.
________________________
...Amelanduil & FireBlade words will be remembered...
...Amelanduil & FireBlade acts will be remembered...
...Amelanduil & FireBlade never gonna die...

Nie pisać, bo nie odpiszę.
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Wto 06 Kwi, 2010 12:16
Przykładowo w Scene_Map za dowolną zmienną np. @command podstaw:
Kod:
@command = Window_Command.new(160, ["wybór1", "wybór2", "wybór3"])

oczywiście pamiętaj o dispose i update. Trzeba by było zdefiniować, co wybór komendy powoduje, należałoby również aktywować i dezaktywować odpowiednie okna...
Ciężko mi to wytłumaczyć, lepiej będzie jak złożysz odpowiednie zamówienie. Postaram się to zrobić, a Ty podejrzysz o co w tym chodzi.
________________________


 
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Wto 06 Kwi, 2010 15:45
Zależy gdzie okienko ma się pojawić. Jeśli na mapie gry, będziesz musiał zrobić to w Scene_Map.
Samo wywołanie (utworzenie) okienka wygląda tak:
Kod:
okienko = Window_Command(szerokosc, tablica_stringów)

Szerokość to liczba, np. 100. Tablica wygląda tak: ['Wybór 1.', 'Wybór 2.', 'Wybór 3']
Window_Command ma dwie zmienne, których nie ma normalne okienko, a mianowicie: index (liczba aktualnie wybranej komendy) i active (przyzwolenie poruszania kursorem wyboru).

Najprościej (i najbezpieczniej) zapisać to w ten sposób:
Kod:

class Scene_Map
  alias o_main main
  def main
    komenda_1 = "Zrób coś 1."
    komenda_2 = "Zrób coś 2."
    komenda_3 = "Zrób coś 3."
    @twoje_okienko = Window_Command.new(192, [komenda_1, komenda_2, komenda_3])
    @twoje_okienko.x = 50
    @twoje_okienko.y = 100
    @twoje_okienko.back_opacity = 150
    o_main
    @twoje_okienko.dispose
  end
  alias o_update update
  def update
    @twoje_okienko.update
    if Input.trigger?(Input::C) and @twoje_okienko.active
      case @twoje_okienko.index
      when 0:
        # Pierwsza opcja.
       
      when 1:
        # Druga opcja.
       
      when 2:
        # Trzecia opcja.
       
      end
    end
    o_update
  end
end

Żeby potem zmienić widoczność okienka (schować), wpisujesz:
Kod:
@twoje_okienko.visible = false

A jeśli nie chcesz, żeby można było poruszać kursorem, wpisujesz:
Kod:
@twoje_okienko.active = false

Komend możesz dodawać dowolnie, ale musisz je zapisywać w taki sam sposób.

Jakby coś było nadal niejasne, pisz :).
 
 
 
Czeliosss 



Ranga RM:
1 gra

Pomógł: 49 razy
Dołączył: 02 Lis 2009
Posty: 661
Skąd: Wa-wa
Wysłany: Sob 10 Kwi, 2010 19:25
Prześlę Ci na pw Sabikku jak to mam i wkleisz mi ten fragment z wyborem, bo nie wiem, gdzie to dać.
________________________
...Amelanduil & FireBlade words will be remembered...
...Amelanduil & FireBlade acts will be remembered...
...Amelanduil & FireBlade never gonna die...

Nie pisać, bo nie odpiszę.
 
 
ziomalek 



Preferowany:
RPG Maker VX

Dołączył: 23 Kwi 2010
Posty: 36
Skąd: Chomikuj.pl/jjj979
Wysłany: Pon 03 Maj, 2010 08:53
a jak zrobić żeby nie wstawiać nic do scene_map???
________________________

 
 
Fixed 




Preferowany:
RPG Maker XP

Dołączył: 19 Kwi 2010
Posty: 30
Skąd: **********
Wysłany: Pon 03 Maj, 2010 09:50
Użyć "aliasu", albo przekopiować modyfikowany kawałek skryptu do Twojego...
 
 
ziomalek 



Preferowany:
RPG Maker VX

Dołączył: 23 Kwi 2010
Posty: 36
Skąd: Chomikuj.pl/jjj979
Wysłany: Wto 04 Maj, 2010 13:45
dzięki, a mógłby ktoś dać przykład małego obrazka z napisem "LOL" w prawym górnym rogu i aby nie trzeba było nic wstawiac do scene map???
________________________

 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Wto 04 Maj, 2010 15:32
Niestety, nie zrobisz wyświetlania czegoś podczas gry na mapie nie modyfikując zarazem lub nadpisując Scene_Map.

Da się też zrobić o wiele szybciej, lepiej, łatwiej. W zdarzeniu - odsyłając do tutków na twierdzy ;-) .
 
 
 
ziomalek 



Preferowany:
RPG Maker VX

Dołączył: 23 Kwi 2010
Posty: 36
Skąd: Chomikuj.pl/jjj979
Wysłany: Wto 04 Maj, 2010 19:09
a jak zrobić aby automatycznie wstawialo coś do scene_map

P.S.
Każdy skrypt jest tak zrobiony...(chyba)
________________________

 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Wto 04 Maj, 2010 19:28
Można to zaliasowac. I pokaż, o jaki skrypt ci chodzi, bo i tak każdy działa na tej zasadzie co napisałem.

Kod:
alias nowa_nazwa stara_nazwa
def stara_nazwa
  kod przed funkcją
  nowa_nazwa
  kod po funkcji
end


W ten sposób zaliasuj w Scene_Map main, dodając przed wywołaniem utworzenie obrazka, a po wywołaniu jego usuwanie, + alias na update odświeżający obrazek przed wywołaniem normalnego update.
Obrazek można stworzyć na dwa sposoby, jako niewidzialne okienko wypełnione obrazkiem (przed aliasowaniem przydałoby się zdefiniować podklasę klasy Window_Base na wzór Window_Gold, Window_Steps itp), lub zwykły obiekt klasy Sprite (niepotrzebna podklasa właściwie).

Namawiam dalej. Zrób to na najnormalniejszych zdarzeniach :).
 
 
 
ziomalek 



Preferowany:
RPG Maker VX

Dołączył: 23 Kwi 2010
Posty: 36
Skąd: Chomikuj.pl/jjj979
Wysłany: Wto 04 Maj, 2010 19:36
dzięki :-)

P.S.
Możesz dokładnie (i pokolei) wszystko opisać???

P.S.2
Jestem w tym zielony
________________________

 
 
Flanagan 




Preferowany:
RPG Maker VX

Pomógł: 9 razy
Dołączył: 26 Sty 2010
Posty: 181
Skąd: Ziemia
Wysłany: Sob 22 Maj, 2010 12:30
wyskakuje mi błąd a chcem użyć zmiennej błąd jest następującej treści:
?????'Window_okno'? 14 ??? NoMethodError?????
undefined method ' [] ' for nil:NilClass

A skrypt wygląda tak:
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_text(0, 0, 288, 32, "$game_variables[1]", 1)
end
if $game_variables[0001] == 10*
self.contents.draw_text (x, y, width, height, "Dobry", 1)
else
self.contents.draw_text (x, y, width, height, "Neutralny", 1)
end
end

Prosze o pomoc!!!! bo chcem napisać ten skrypt do mojego projektu ;-(
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Sob 22 Maj, 2010 12:58
Wystarczy, że porobisz sobie wcięcia:
Kod:
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_text(0, 0, 288, 32, "$game_variables[1]", 1)
  end
  if $game_variables[0001] == 10*
    self.contents.draw_text (x, y, width, height, "Dobry", 1)
  else
    self.contents.draw_text (x, y, width, height, "Neutralny", 1)
  end
end

Jak widać, rysowanie napisu 'dobry' / 'neutralny' wyszło ci poza metodę refresh. Przesuń więc cały warunek wyżej, w ten sposób:
Kod:
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_text(0, 0, 288, 32, "$game_variables[1]", 1)
    if $game_variables[0001] == 10*
      self.contents.draw_text (x, y, width, height, "Dobry", 1)
    else
      self.contents.draw_text (x, y, width, height, "Neutralny", 1)
    end
  end
end
 
 
 
Flanagan 




Preferowany:
RPG Maker VX

Pomógł: 9 razy
Dołączył: 26 Sty 2010
Posty: 181
Skąd: Ziemia
Wysłany: Sob 22 Maj, 2010 13:09
A jak zrobić by zależnie od zmiennej wyświetlał się text co trzeba wpisać??
 
 
pw115 



Preferowany:
RPG Maker XP

Pomógł: 10 razy
Dołączył: 19 Lut 2010
Posty: 235
Skąd: Katowice
Wysłany: Sob 22 Maj, 2010 13:26
Kod:

if $game_variables[0001] == 10
   self.contents.draw_text (x, y, width, height, "Dobry", 1)
end


Ten warunek znaczy że jeśli zmienna 1 wynosi 10 to się pokaże tekst
________________________
Pomocy:
http://pw115.myminicity.com/




 
 
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