KrĂłtki opis:
Skrypt na jednorundowÄ grÄ w koĹci z jednym przeciwnikiem. KaĹźdy rzuca szeĹcioma koĹÄmi, ktĂłrych liczba oczek jest sumowana. Ten kto uzyska wyĹźszy wynik wygrywa.
Na koniec gry wynik jest zapisywany za pomocÄ ustalonej zmiennej. DziÄki temu dalszy ciÄ g rozmowy moĹźe byÄ zaleĹźny od wyniku gry.
MoĹźna zmieniÄ napisy, kolory liter i koĹci oraz dodaÄ muzykÄ i dĹşwiÄki.
Autor:
Avara
KompatybilnoĹÄ:
RPG Maker VX
Skrypt:
Spoiler:
Kod:
=begin
*****************************************************************************
* Gra w koĹci *
* Autor: Avara *
* Wersja: 1.0 *
* utimateam.pl *
********************************************************************************
Skrypt na jednorundowÄ grÄ w koĹci z jednym przeciwnikiem. KaĹźdy rzuca szeĹ-
cioma koĹÄmi, ktĂłrych liczba oczek jest sumowana. Ten kto uzyska wyĹźszy wynik
wygrywa.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ WywoĹywanie skryptu ~
W zdarzeniu za pomocÄ polecenia "Script..." wpisujemy:
Kosci.new("IMIÄ PRZECIWNIKA", "NAZWA", NUMER)
IMIÄ PRZECIWNIKA - imiÄ jakie ma mieÄ nasz przeciwnik;
NAZWA - nazwa pliku z twarzami w folderze "Graphics/Faces";
NUMER - numer twarzy od 0 do 7.
PrzykĹad:
KoĹci.new("Ralph", "Actor1", 0)
Po wywoĹaniu skryptu najlepiej jest daÄ polecenie "Czekaj: 1"/"Wait: 1 frame".
Pozwoli to zapobiec bĹÄdom w odczytaniu kolejnych poleceĹ zdarzenia.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Wynik ~
Na koniec gry wynik jest zapisywany za pomocÄ ustalonej zmiennej. DziÄki temu
dalszy ciÄ g rozmowy moĹźe byÄ zaleĹźny od wyniku gry. Znaczenie jej wartoĹci:
0 - przegrana;
1 - wygrana;
2 - remis.
=end
module Avara # <- Nie ruszaÄ!
module Gra_W_Kosci # <- Nie ruszaÄ!
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ KONFIGURACJA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZMIENNA = 13 # Numer zmiennej, okreĹlajÄ cej wynik gry.
BGM_MAPA = true # Czy muzyka z mapy ma nadal graÄ podczas gry?
BGM = false # Czy chcesz ustawiÄ wĹasnÄ muzykÄ?
# Gdy oba powyĹźsze sÄ na "false", podczas gry nie ma wĹÄ czonej Ĺźadnej muzyki.
SE_KOSCI = 2 # 0 - brak dĹşwiÄkĂłw podczas rzucania koĹÄmi;
# 1 - dĹşwiÄk wystÄpuje tylko przy rzucie pierwszej koĹci;
# 2 - dĹşwiÄk przy pokazaniu siÄ kaĹźdej koĹci.
SE_KONIEC = true # Czy ma byÄ odgrywany dĹşwiÄk przy pokazaniu wyniku?
module Napisy # <- Nie ruszaÄ!
RAZEM = "Razem: " # Napis przed sumÄ liczby oczek.
KOLEJ = "Rzuca " # Napis przed imieniem gracza, ktĂłry wĹaĹnie rzuca.
WYGRANA = "WYGRAĹEĹ!" # Napis, gdy wygramy.
PRZEGRANA = "PRZEGRAĹEĹ!" # Napis, gdy przegramy.
REMIS = "REMIS!" # Napis, gdy nastÄ pi remis.
end # <- Nie ruszaÄ!
module Kolory # <- Nie ruszaÄ!
# Kolory przyjmujÄ numery od 0 do 31, ktĂłre moĹźna sprawdziÄ w pliku "Window",
# znajdujÄ cego siÄ w folderze "Graphics/System" (kwadraciki w prawym dolnym rogu).
IMIONA = 3 # Kolor imion.
KOSCI = 4 # Kolor koĹci i kropek.
RAZEM = 3 # Kolor napisu przed sumÄ oczek.
SUMA = 0 # Kolor cyfr wyraĹźajÄ cych sumÄ oczek.
KOLEJ = 0 # Kolor napisu okreĹlajÄ cego czyja jest kolej.
WYGRANA = 3 # Kolor napisu, gdy wygramy.
PRZEGRANA = 2 # Kolor napisu, gdy przegramy.
REMIS = 14 # Kolor napisu, gdy nastÄ pi remis.
end # <- Nie ruszaÄ!
module Przerwy # <- Nie ruszaÄ!
# Przerwy pomiÄdzy kolejnymi zdarzeniami. DĹuga nastÄpuje po pojawieniu siÄ po
# wyĹwietleniu, kto rzuca, a przed pojawieniem siÄ pierwszej koĹci oraz po wyĹ-
# wietleniu ostatniej z nich. W pozostaĹych miejscach nastÄpuje przerwa krĂłtka.
# 1 sekunda = 60
DLUGA = 80
KROTKA = 30
end # <- Nie ruszaÄ!
module Dzwieki # <- Nie ruszaÄ!
# BGMy muszÄ byÄ w folderze "Audio/BGM", zaĹ dĹşwiÄki SE w folderze "Audio/SE".
BGM = "Town4" # Nazwa BGMu, gdy mamy wĹÄ czony wĹasny BGM
# (patrz 35. linijka skryptu).
KOSCI = "Cursor" # Nazwa SE odgrywanego przy rzucie koĹÄmi (37. linijka).
WYGRANA = "Cat" # SE, gdy wygramy (patrz 40. linijka skryptu).
PRZEGRANA = "Cow" # SE, gdy przegramy (patrz 40. linijka skryptu).
REMIS = "Crow" # SE, gdy nastÄ pi remis (patrz 40. linijka skryptu).
GLOSNOSC_SE = 60 # GĹoĹnoĹÄ wszystkich uĹźytych tu SE.
GLOSNOSC_BGM = 60 # GĹoĹnoĹÄ BGMa, gdy uĹźywamy wĹasnego (35. linijka).
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ KONIEC KONFIGURACJI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#~~~~~~~~~~ DALEJ NIE ZMIENIAÄ! CHYBA ĹťE NA WĹASNÄ ODPOWIEDZIALNOĹÄ! ~~~~~~~~~~~
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
end
end
end
class Kosci
def initialize(imie, twarz_nazwa, twarz_nr)
$scene = Scene_Av_Gra_W_Kosci.new(imie, twarz_nazwa, twarz_nr)
end
end
def terminate
dispose_menu_background
@okno.dispose
end
def update
@czas += 1 unless @koniec == true
if @kolej
if @czas == DLUGA
Audio.se_play("Audio/SE/" + KOSCI, GLOSNOSC_SE) if
Avara::Gra_W_Kosci::SE_KOSCI >= 1
rzut; @kolej = false; @rzut = true
end
elsif @rzut
if @czas == KROTKA and @kosc != 6
Audio.se_play("Audio/SE/" + KOSCI, GLOSNOSC_SE) if
Avara::Gra_W_Kosci::SE_KOSCI == 2
rzut
elsif @czas == DLUGA and @kosc == 6
@rzut = false; @kosc = 0; @czas = 0
if @kto == 1; kolej
elsif @kto == 2; @wynik = true; end
end
elsif @wynik
if @czas == KROTKA
if @suma[1] > @suma[2]; wynik = 0; se = PRZEGRANA
elsif @suma[1] < @suma[2]; wynik = 1; se = WYGRANA
elsif @suma[1] == @suma[2]; wynik = 2; se = REMIS; end
$game_variables[Avara::Gra_W_Kosci::ZMIENNA] = wynik
@okno.wynik(wynik); @wynik = false; @koniec = true
Audio.se_play("Audio/SE/" + se, GLOSNOSC_SE) unless
Avara::Gra_W_Kosci::SE_KONIEC == false
end
elsif @koniec
if Input.trigger?(Input::C) or Input.trigger?(Input::B)
$scene = Scene_Map.new; $game_map.autoplay
end
else
if @czas == KROTKA; @czas = 0; kolej; end
end
end
def kolej
@kto += 1; @okno.kolej(@kto); @kolej = true
end
def rzut
@kosc += 1; ile = rand(6) + 1; @suma[@kto] += ile; @czas = 0
@okno.rysuj(@kto, @kosc, ile, @suma[@kto])
end
end
class Window_Av_Gra_W_Kosci < Window_Base
include Avara::Gra_W_Kosci
def initialize(x = 0, y = 0, width = 544, height = 416)
super(x, y, width, height)
end
def kosc(x, y)
self.contents.fill_rect(x, y, 50, 50, text_color(Kolory::KOSCI))
self.contents.clear_rect(x, y, 1, 1)
self.contents.clear_rect(x + 49, y, 1, 1)
self.contents.clear_rect(x, y + 49, 1, 1)
self.contents.clear_rect(x + 49, y + 49, 1, 1)
self.contents.clear_rect(x + 3, y + 2, 44, 46)
self.contents.clear_rect(x + 2, y + 3, 46, 44)
end
def rysuj(kto, kosc, ile, suma)
if kto == 1; y = 50; y_suma = 115 # Przeciwnik.
elsif kto == 2; y = 284; y_suma = 249; end # My.
if kosc == 1; x = 120
self.contents.font.color = text_color(Kolory::RAZEM)
self.contents.draw_text(0, y_suma, 256, 20, Napisy::RAZEM, 2)
elsif kosc == 2; x = 185
elsif kosc == 3; x = 250
elsif kosc == 4; x = 315
elsif kosc == 5; x = 380
elsif kosc == 6; x = 445; end
if ile == 1; kr = [7]
elsif ile == 2; kr = [1, 4]
elsif ile == 3; kr = [1, 7, 4]
elsif ile == 4; kr = [1, 2, 3, 4]
elsif ile == 5; kr = [1, 2, 7, 3, 4]
elsif ile == 6; kr = [1, 5, 3, 2, 6, 4]; end
kosc(x, y); kropki(x, y, kr)
self.contents.clear_rect(256, y_suma - 5, 256, 30)
self.contents.font.color = text_color(Kolory::SUMA)
self.contents.draw_text(256, y_suma, 256, 20, suma)
end
def kropki(xx, yy, kr)
for i in kr
x = xx + 2; y = yy + 2
if i == 1; x += 6; y += 6
elsif i == 2; x += 32; y += 6
elsif i == 3; x += 6; y += 32
elsif i == 4; x += 32; y += 32
elsif i == 5; x += 6; y += 19
elsif i == 6; x += 32; y += 19
elsif i == 7; x += 19; y += 19; end
kropka(x, y)
end
end
def kropka(x, y)
self.contents.fill_rect(x + 2, y, 4, 8, text_color(Kolory::KOSCI))
self.contents.fill_rect(x + 1, y + 1, 6, 6, text_color(Kolory::KOSCI))
self.contents.fill_rect(x, y + 2, 8, 4, text_color(Kolory::KOSCI))
end
def kolej(kto)
self.contents.clear_rect(0, 192 - 30, 512, 60)
if kto == 1; imie = @imie
elsif kto == 2; imie = $game_party.members[0].name; end
self.contents.font.size = 40
self.contents.font.color = text_color(Kolory::KOLEJ)
self.contents.draw_text(0, 192 - 20, 512, 40, Napisy::KOLEJ + imie.to_s, 1)
self.contents.font.size = 20
end
def wynik(wynik)
self.contents.clear_rect(0, 192 - 30, 512, 60)
if wynik == 0; tekst = Napisy::PRZEGRANA; kolor = Kolory::PRZEGRANA
elsif wynik == 1; tekst = Napisy::WYGRANA; kolor = Kolory::WYGRANA
elsif wynik == 2; tekst = Napisy::REMIS; kolor = Kolory::REMIS; end
self.contents.font.size = 40
self.contents.font.color = text_color(kolor)
self.contents.draw_text(0, 192 - 20, 512, 40, tekst, 1)
self.contents.font.size = 20
end
end
Screeny:
Spoiler:
Dodatkowe informacje:
Instrukcja w skrypcie.
Po wywoĹaniu skryptu najlepiej jest daÄ polecenie "Czekaj: 1"/"Wait: 1 frame". Pozwoli to zapobiec bĹÄdom w odczytaniu kolejnych poleceĹ zdarzenia.
Przeciwnik jest wyĹwietlany na gĂłrze, my zaĹ na dole.
Wszystko jest w instrukcji. Wybierasz sobie zmiennÄ , ktĂłra przyjmuje odpowiednio wartoĹÄ po kaĹźdej grze:
0 - gdy przegrasz,
1 - gdy wygrasz,
2 - przy remisie.
A później robisz sobie warunek zaleşny od tej zmiennej.
ZrobiĹam tak ale albo mi Ĺşle pokazuje albo jak wygraĹam to najpierw pokazuje mi to co by pokazaĹa jak przegram a dopiero potem pokazuje to co wygraĹam
Heh... Przypatrz siÄ warunkom. Musi byÄ najpierw "== 0", później "== 1" a na koniec "== 2". Albo robisz "<=" albo dwa razy "== 1".
A jak nadal masz problemy, to wrzuÄ tu screena (to jak zdarzenie jest rozpisane) lub przeĹlij mi demo na PW -.- ...
JuĹź wiem. Jest to wina programu. Mimo, Ĺźe wĹÄ cza nowÄ scenÄ, to zaczyna odtwarzaÄ kolejnÄ linijkÄ kodu zdarzenia. Przed warunkami (zaraz po wywoĹaniu skryptu na grÄ w koĹci) ustaw "Czekaj: 1". Przerwa bÄdzie niewidoczna, a pozwoli na prawidĹowe odczytanie poleceĹ zdarzenia.
________________________ SKOĹCZYĹEM ZABAWÄ Z MAKEREM
Przede wszystkim, za maĹo czasu i chÄci, a takĹźe cierpliwoĹci. Prace nad wszelkimi projektami przekazuje thiefferowi119.
================================
Nie piszÄ skryptĂłw na XP. KtoĹ inny musiaĹby Ci napisaÄ taki skrypt. Ale rĂłwnie dobrze takÄ prostÄ grÄ w koĹci moĹźesz zrobiÄ na zdarzeniach. Tylko nie pytaj siÄ w tym temacie jak... Sam najpierw sprĂłbuj do tego dojĹÄ
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