Ogłoszenie |
Administracja Forum
|
Przesunięty przez: Ayene Pią 26 Lut, 2010 14:15 |
Okno w Ruby |
Autor |
Wiadomość |
Czeliosss
Ranga RM:
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:
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:
Ranga RM:
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:
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:
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:
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:
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:
Ranga RM:
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:
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:
Ranga RM:
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:
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:
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:
Ranga RM:
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:
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:
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/
|
|
|
|
|
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
|
|