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ą 12 Mar, 2010 13:41
Gameover
Autor Wiadomość
krychapl 



Preferowany:
RPG Maker XP

Dołączył: 05 Sty 2010
Posty: 38
Wysłany: Sob 27 Lut, 2010 07:13
Gameover
Stworzy ktoś skrypt, który usunie gameover.
Chodzi mi o to, że po przegranej walce zamiast gameovera teleportowało by nas do wybranego miejsca na jakiejś mapie??
 
 
Flanagan 




Preferowany:
RPG Maker VX

Pomógł: 9 razy
Dołączył: 26 Sty 2010
Posty: 181
Skąd: Ziemia
Wysłany: Sob 27 Lut, 2010 09:07
A niemożesz zrobić tak w zdarzeniach że jak bohater ma 20% HP
to teleportuje nas do tego mjejsca???

Albo śmierć bohatera niekończy gry a potem teleport

PS. Co złego to nie ja
 
 
pw115 



Preferowany:
RPG Maker XP

Pomógł: 10 razy
Dołączył: 19 Lut 2010
Posty: 235
Skąd: Katowice
Wysłany: Sob 27 Lut, 2010 09:14
Proszę oto tutek, nie jest mój tylko niejakiego Arrgona

Spoiler:

Zapewne każdy kto zrobił swoją grę w RMXP denerwuje się tym,
że po każdej śmierci musi zaczynać grę od nowa (chyba że zrobił save ^^ )...
Mnie też to denerwowało aż w końcu postanowiłem coś z tym zrobić.
Udało mi się !! I teraz się chcę podzielić z wami jak tego dokonać...

Wymagania:
-mapa (szpital, świątynia itp) [ja nazwałem szpital]

Na początek wchodzimy w edytor skryptów.
To jest najprostrza rzecz, jeśli ktoś sobie nie poradził niech nie czyta dalej,
wogle niech wyłączy komputer bo jeszcze coś zepsuje ;)
Idziemy dalej...
Chcemy zrobić żeby po śmierci gracz miał wybór: 1. bohater (drużyna) idzie na mapę szpital.
2. Kończymy grę. W tym celu do skryptu odpowiedzialnego za wyświetlenie
okna Game Over dodamy okienko wyboru (po kliknięciu enteru).
Starczy teorii. Przejdźmy do czynów...
Odnajdujemy po lewej stronie skrypt Scene_End (gdy podczas gry wcisniemy ESC
pojawia nam się okienko za które odpowiedzialny jest ten skrypt). Klikamy na niego
prawym przyciskiem myszy i wybieramy opcję Kopiuj.
Zjeżdżamy na sam dół listy i znowu prawym przyciskiem na skrypt Main,
ale tym razem klikamy wklej.
Ale nie mogą być 2 skrypty o tej samej nazwie, więc nazwę skryptu zmieniamy na
Scene_Nowa. Otwieramy teraz nasz skrypt. I co widzimy ?

class Scene_End

teraz musimy zmienić nazwę skryptu tam gdzie jest napisane class.
Zmieniamy ją na Scene_Nowa.
Idziemy dalej, a dokładnie jdo lini 13...
interesują nas tylko te linie 13-16

s1 = \"Ekran powitalny\"
s2 = \"Windows\"
s3 = \"Anuluj\"
@command_window = Window_Command.new(192, [s1, s2, s3])

s1 = \"Ekran powitalny\"
zmieniamy na coś co nam bardziej odpowiada np:
s1 = \"Idź do szpitala\"

s2 = \"Windows\"
tak samo. co bardziej odpowiada np:
s2 = \"Koniec gry\"

s3 nam nie będzie potrzebne bo chemy mieć tylko 2 pozycje do wyboru tak więc kasujemy
całą linię 15. Następny krok to edytowanie lini 16 widzimy w nawiasie kwadratowym
[s1, s2, s3] ponieważ wcześniej skasowaliśmy s3 to tu robimy to samo. Kasujemy s3 razem ze
spacją i przecinkiem po s2. Idziemy dalej.
Chodzimy do lini 64.

command_to_title

zmieniamy na command_szpital
a linię 67 i 68 czyli
(when 2 # ???
command_cancel)
kasujemy całkowicie. Znowu chodzimy dalej.
znajdujemy linię 76

def command_to_title

zmieniamy tak jak przed chwilą na

def command_szpital

kasujemy linie 79-83

# BGM?BGS?ME ???—????
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# ???????????

a linię 84

$scene = Scene_Title.new
zmieniamy na
$scene = Scene_Szpital.new

Skończyliśmy edycję tego skryptu.
Żeby wam ułatwić... Tak powinnien wyglądać skrypt po przeróbkach.

#===========================================
# Ś Scene_Nowa
#===========================================

class Scene_Nowa
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def main
# ????????????
s1 = \"Do szpitala\"
s2 = \"Koniec gry\"
@command_window = Window_Command.new(192, [s1, s2])
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 240 - @command_window.height / 2
# ?????????
Graphics.transition
# ????—?
loop do
# ?—??????
Graphics.update
# ???????
Input.update
# ??—???
update
# ???????????—????
if $scene != self
break
end
end
# ?????????
Graphics.freeze
# ????????
@command_window.dispose
# ???????????????
if $scene.is_a?(Scene_Title)
# ?????—????
Graphics.transition
Graphics.freeze
end
end
#--------------------------------------------------------------------------
# ? ??—???
#--------------------------------------------------------------------------
def update
# ????????????
@command_window.update
# B ??????????
if Input.trigger?(Input::B)
# ????? SE ???
$game_system.se_play($data_system.cancel_se)
# ???—???????
$scene = Scene_Menu.new(5)
return
end
# C ??????????
if Input.trigger?(Input::C)
# ???????????—???????
case @command_window.index
when 0 # ?????
command_szpital
when 1 # ???????
command_shutdown
end
return
end
end
#--------------------------------------------------------------------------
# ? ???? [?????] ??????
#--------------------------------------------------------------------------
def command_szpital
# ?? SE ???
$game_system.se_play($data_system.decision_se)
$scene = Scene_Szpital.new
end
#--------------------------------------------------------------------------
# ? ???? [???????] ??????
#--------------------------------------------------------------------------
def command_shutdown
# ?? SE ???
$game_system.se_play($data_system.decision_se)
# BGM?BGS?ME ???—????
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# ???????
$scene = nil
end
#--------------------------------------------------------------------------
# ? ???? [???] ??????
#--------------------------------------------------------------------------
end


Teraz na liście skryptów odnajdujemy skrypt
Scene_Map. Kopieujemy go i wklejamy tak jak ostatnio...
Gdy już wkleimy ten skrypt oczywiście musimy zmienić jego nazwę.
Nazywamy go Scene_Szpital
Znowu zmieniamy

class Scene_Map
na
class Scene_Szpital

idziemy do lini 81 gdzie widzimy takei coś:

if $game_temp.to_title
musimy to zmienić na
if $game_temp.gameover=true

pod spodem dodajemy takie coś

$game_temp.gameover=(false)
$game_map.setup($data_system.start_map_id=3)
$game_player.moveto($data_system.start_x=17, $data_system.start_y=7)

już tłumaczę o co chodzi

$game_temp.gameover=(false) - Wrpowadza do pamięci gry że żyjemy
$game_map.setup($data_system.start_map_id=3) - zmienia mapę
(zamiast 3 należy wpisać numer mapy)
$game_player.moveto($data_system.start_x=17, $data_system.start_y=7) - współżedne na nowej mapie z których wystartuje bohater (mozna podac dowolne liczby zamiast 17 i 7)

dalej...

$scene = Scene_Gameover.new
zmieniamy na
$scene = Scene_Map.new
Ten skrypt w całości powinnien (po przeróbkach) wyglądać tak:

#=======================================
# Ś Scene_Szpital
#------------------------------------------------------------------------------
# ?????????????????
#=======================================

class Scene_Szpital
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def main
# ???????????
@spriteset = Spriteset_Map.new
# ???—?????????
@message_window = Window_Message.new
# ?????????
Graphics.transition
# ????—?
loop do
# ?—??????
Graphics.update
# ???????
Input.update
# ??—???
update
# ???????????—????
if $scene != self
break
end
end
# ?????????
Graphics.freeze
# ???????????
@spriteset.dispose
# ???—?????????
@message_window.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
# ?—??—?—???
if $game_temp.gameover=true
# ?—??—?—???????
$game_temp.gameover=(false)
$game_map.setup($data_system.start_map_id=3)
$game_player.moveto($data_system.start_x=17, $data_system.start_y=7)
$scene = Scene_Map.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
# ?????? ????? 0 ???????????????????
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
# B ??????????
if Input.trigger?(Input::B)
# ???????????—????????
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
# ???—???????? SE ?????????
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
# ?????—?? ON ?? F9 ?—?????????
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
# ??? BGM ?????BGM ???
$game_temp.map_bgm = $game_system.playing_bgm
$game_system.bgm_stop
# ????? SE ???
$game_system.se_play($data_system.battle_start_se)
# ??? BGM ???
$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
# ???— SE ????????????????
if $game_temp.menu_beep
# ?? SE ???
$game_system.se_play($data_system.decision_se)
# ???— 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
# ?? SE ???
$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
# ??????????? BGM ? BGS ??????????
$game_map.autoplay
# ??—?????
Graphics.frame_reset
# ???????
Input.update
end
end

Ostatnią rzeczą jaką musimy zrobić to edytować skrypt Scene_Gameover
Otwieramy go.
Schodzimy do lini 56:
$scene = Scene_Title.new
zmieniamy na
$scene = Scene_Nowa.new


I to wszystko :D
Teraz uruchomcie grę dajcie się zabić jakiemuś stworkowi i sprawdzcie czy działa...
Jeśli nie działa zacznijcie od początku pewnie się gdzieś zgubiliście ^^
W razie jakichkolwiek problemów piszcie na gg 8581693
albo na maila akws@o2.pl
________________________
Pomocy:
http://pw115.myminicity.com/




 
 
krychapl 



Preferowany:
RPG Maker XP

Dołączył: 05 Sty 2010
Posty: 38
Wysłany: Sob 27 Lut, 2010 10:47
A ten poradnik to do xp czy vx?
 
 
pw115 



Preferowany:
RPG Maker XP

Pomógł: 10 razy
Dołączył: 19 Lut 2010
Posty: 235
Skąd: Katowice
Wysłany: Sob 27 Lut, 2010 11:31
do Xp ale u mnie na Vx też działa
________________________
Pomocy:
http://pw115.myminicity.com/




 
 
krychapl 



Preferowany:
RPG Maker XP

Dołączył: 05 Sty 2010
Posty: 38
Wysłany: Sob 27 Lut, 2010 11:56
Coś mi nie działa w vx.
 
 
bionicl 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 06 Gru 2009
Posty: 99
Skąd: z Huty Mińskiej
Wysłany: Sob 27 Lut, 2010 13:44
Oj, poco ten skrypt. Gdy w zdarzeniu zrobi się walkę, można "zahaczyć" opcję "przegrana nie kończy gry"...
________________________
Gość, podoba ci się moja gra? ;)
 
 
L 




Preferowany:
RPG Maker XP

Dołączył: 26 Lut 2010
Posty: 18
Wysłany: Sob 27 Lut, 2010 16:36
bionicl napisał/a:
Oj, poco ten skrypt. Gdy w zdarzeniu zrobi się walkę, można "zahaczyć" opcję "przegrana nie kończy gry"...

To nie to samo...
________________________

 
 
krychapl 



Preferowany:
RPG Maker XP

Dołączył: 05 Sty 2010
Posty: 38
Wysłany: Sob 27 Lut, 2010 16:43
Bionicl a w angielskim vx gdzie to dokładnie ustawić?
 
 
pw115 



Preferowany:
RPG Maker XP

Pomógł: 10 razy
Dołączył: 19 Lut 2010
Posty: 235
Skąd: Katowice
Wysłany: Sob 27 Lut, 2010 16:55
3 zakładka 1 kolumna 1 od góry (battle progressing czy jakoś tak)
jak klikniesz to ci się wyświetli okienko z 4 opcjami zaznaczasz tą na samym dole
________________________
Pomocy:
http://pw115.myminicity.com/




 
 
bionicl 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 06 Gru 2009
Posty: 99
Skąd: z Huty Mińskiej
Wysłany: Sob 27 Lut, 2010 19:19
L napisał/a:
bionicl napisał/a:
Oj, poco ten skrypt. Gdy w zdarzeniu zrobi się walkę, można "zahaczyć" opcję "przegrana nie kończy gry"...

To nie to samo...


Ale później ma się po walce takie coś "jeżeli się przegrało"/ czy jakoś tak... można by tam było ustawić to z tym szpitalem...
________________________
Gość, podoba ci się moja gra? ;)
 
 
Flanagan 




Preferowany:
RPG Maker VX

Pomógł: 9 razy
Dołączył: 26 Sty 2010
Posty: 181
Skąd: Ziemia
Wysłany: Sob 27 Lut, 2010 19:31
O tym samym pisałem przecierz chyba jako pierwszy w tym temacie troche bez sensu...
 
 
bionicl 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 06 Gru 2009
Posty: 99
Skąd: z Huty Mińskiej
Wysłany: Sob 27 Lut, 2010 21:12
songoxyz, nie zauważyłem, bo tak napisałeś...
________________________
Gość, podoba ci się moja gra? ;)
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 27 Lut, 2010 23:28
krychapl, wklej nad Main poniższy kod:
Spoiler:

Kod:
module Ayene   
  ID_MAPY = 1  # tutaj wpisz ID mapy, na którą ma teleportować drużynę
  POZYCJA = [1, 1]   # tutaj wpisz pozycję drużyny na nowej mapie
end

class Scene_Battle < Scene_Base
  def call_gameover   
    @message_window.clear   
    $game_map.setup(Ayene::ID_MAPY)   
    $game_player.moveto(Ayene::POZYCJA[0],Ayene::POZYCJA[1])
    $game_player.refresh
    $scene = Scene_Map.new
    $game_map.autoplay   
  end 
end


Mam nadzieję, że o to chodziło.
________________________


 
 
 
krychapl 



Preferowany:
RPG Maker XP

Dołączył: 05 Sty 2010
Posty: 38
Wysłany: Nie 28 Lut, 2010 08:08
Dzięki, oto mi chodziło.
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
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