Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Ulepszony system wpisywania imienia...
Autor Wiadomość
spino333 



Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 21 Gru 2009
Posty: 85
Skąd: Nie pamiętam
Wysłany: Czw 21 Sty, 2010 01:31
Ulepszony system wpisywania imienia...
Skrypt ulepsza system wpisywania imienia...
Skrypt:

Spoiler:

No zaczynajmy:
Otwieramy edytor skryptów...Szukamy po lewej zakładki: Class Scene_Name , gdy ją znajdziemy usuwamy całą jej zawartość...
Następnie wklejamy do niej nowy kod:

Kod:
class Scene_Name
 # -------------------------
 def main
   @actor = $game_actors[$game_temp.name_actor_id]
   @edit_window = Window_NameEdit.new(@actor, $game_temp.name_max_char)
   @input_window = Window_NameInput.new
   @alert_window = Window_Base.new(188, 208, 264, 64)
   @alert_window.contents = Bitmap.new(228, 32)
   @alert_window.contents.font.name = "Arial"
   @alert_window.contents.font.size = 24
   @alert_window.contents.draw_text(0, 0, 228, 32, "You must enter a name.")
   @alert_window.z = 1001
   @alert_window.visible = false
   c1 = "English"
   c2 = "Chinese"
   c3 = "Japanese"
   c4 = "Space"
   c5 = "Backspace"
   c6 = "Default"
   c7 = "Done"
   commands = [c1, c2, c3, c4, c5, c6, c7]
   @command_window = Window_NameCommand.new(160, commands)
   @input_window.active = false
   @input_window.visible = true
   @command_window.index = 0
   @command_window.visible = true
   @command_window.active = true
   @command_window.x = 0
   @command_window.y = 128
   @command_window.z = 1000
   @alert_count = 0
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @edit_window.dispose
   @input_window.dispose
   @command_window.dispose
   @alert_window.dispose
 end
 # -------------------------
 def update
   @edit_window.update
   @input_window.update
   @command_window.update
   @alert_window.update
   if @alert_window.visible == true && @alert_count > 0
     @alert_count -= 1
     if @alert_count <= 0
       @command_window.active = true
       @alert_window.visible = false
     end
   return
   end
   if @input_window.active == false
     @command_window.active = true
   end
   if @command_window.active == false
     @input_window.active = true
   end
   if Input.repeat?(Input::B) && @input_window.active == true
     if @edit_window.index == 0
       return
     else
     $game_system.se_play($data_system.cancel_se)
     @edit_window.back
     end
   end
   if Input.repeat?(Input::B) && @command_window.active == true
     $game_system.se_play($data_system.buzzer_se)
     return
   end   
     
       
   if Input.trigger?(Input::C)     
     if @command_window.active == true
       case @command_window.index
       when 0
       $game_system.se_play($data_system.decision_se)
       @input_window.mode = 1
       @input_window.refresh
       @command_window.active = false
       @input_window.active = true
       @input_window.index = 0
       return
       when 1
       $game_system.se_play($data_system.decision_se)
       @input_window.mode = 2
       @input_window.refresh
       @command_window.active = false
       @input_window.active = true
       @input_window.index = 0
       return
       when 2
       $game_system.se_play($data_system.decision_se)
       @input_window.mode = 3
       @input_window.refresh
       @command_window.active = false
       @input_window.active = true
       @input_window.index = 0
       return
       when 3
       if @edit_window.index < $game_temp.name_max_char
         $game_system.se_play($data_system.decision_se)
         @edit_window.add("")
       else         
         $game_system.se_play($data_system.buzzer_se)
       end
       return
       when 4
       $game_system.se_play($data_system.decision_se)
       @edit_window.back
       return
       when 5
       $game_system.se_play($data_system.decision_se)
       @edit_window.restore_default
       return
       when 6
       if @edit_window.name == ""         
         $game_system.se_play($data_system.buzzer_se)
         @alert_window.visible = true
         @command_window.active = false
         @alert_count = 60
         return
       end
         $game_system.se_play($data_system.decision_se)
         @actor.name = @edit_window.name
         $game_system.se_play($data_system.decision_se)
         $scene = Scene_Map.new
         return
       end
      end
     if @edit_window.index == $game_temp.name_max_char &&
       @input_window.active == true
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     if @input_window.character == "" && @input_window.active == true
       $game_system.se_play($data_system.buzzer_se)
       return
     end
    if @input_window.character != nil && @input_window.active == true &&
       @edit_window.index <= $game_temp.name_max_char
     $game_system.se_play($data_system.decision_se)
     if @input_window.mode == 1
       @edit_window.char_type[@edit_window.index] = 1
     else
       @edit_window.char_type[@edit_window.index] = 2
     end
     @edit_window.add(@input_window.character)
   end
     return
     end
 end
end


Teraz czas na kolejny krok szukamy zakładki : Window Name_Edit i zamieniamy jej zawartość na :

Cytat:
class Window_NameEdit < Window_Base
# ---------------------------
attr_accessor :char_type
attr_reader :name
attr_reader :index
# ---------------------------
def initialize(actor, max_char)
super(0, 0, 640, 128)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
@name = actor.name
@max_char = max_char
@char_type = []
name_array = @name.split(//)[0...@max_char]
@name = ""
for i in 0...name_array.size
@name += name_array[i]
@char_type[i] = 1
end
@default_name = @name
@index = name_array.size
refresh
update_cursor_rect
end
# ---------------------------
def restore_default
@name = @default_name
for i in 0..@default_name.size
@char_type[i] = 1
end
@index = @name.split(//).size
refresh
update_cursor_rect
end
# ---------------------------
def add(character)
if @index < @max_char and character != ""
@name += character
@index += 1
refresh
update_cursor_rect
end
end
# ---------------------------
def back
if @index > 0
name_array = @name.split(//)
@name = ""
for i in 0...name_array.size-1
@name += name_array[i]
end
@index -= 1
refresh
update_cursor_rect
end
end
# ---------------------------
def refresh
self.contents.clear
name_array = @name.split(//)
for i in 0...@max_char
c = name_array[i]
if c == nil
c = "�"
end
x = 320 - @max_char * 14 + i * 28
if @char_type[i] == 1
self.contents.font.name = "Arial"
self.contents.font.size = 24
else
self.contents.font.name = "Arial"
self.contents.font.size = 22
end
self.contents.draw_text(x, 32, 28, 32, c, 1)
end
draw_actor_graphic(@actor, 320 - @max_char * 14 - 40, 80)
end
# ---------------------------
def update_cursor_rect
x = 320 - @max_char * 14 + @index * 28
self.cursor_rect.set(x, 32, 28, 32)
end
# ---------------------------
def update
super
update_cursor_rect
end
end

Następnie szukamy zakładki Window Name_Input i orbimy z nią to samo tym razem wklejamy jednak ten kod:


class Window_NameInput < Window_Base
# ----------------------------------
attr_accessor :mode
# ----------------------------------
ENGLISH_TABLE =
[
"A","B","C","D","E",
"F","G","H","I","J",
"K","L","M","N","O",
"P","Q","R","S","T",
"U","V","W","X","Y",
"Z","","","","",
"0","1","2","3","4",
"5", "6" ,"7", "8" ,"9",
"","","","","",
"a", "b" ,"c", "d" ,"e",
"f","g","h","i","j",
"k","l","m","n","o",
"p","q","r","s","t",
"u","v","w","x","y",
"z","","","","",
".",",","?","!","/",
"\\","<",">",";",":",
"","", "" , "" , "" ,
"@","#","$","%","^",
"&","*","(",")","",
"[","]","'","\"","~",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"", "" ,"", "" ,"",
"","","","","",
]
HIRAGANA_TABLE =
[
"‚ ","‚¢","‚¤","‚¦","‚¨",
"‚©","‚«","‚","‚¯","‚±",
"‚³","‚µ","‚·","‚¹","‚»",
"‚½","‚¿","‚Â","‚Ä","‚Æ",
"‚È","‚É","‚Ê","‚Ë","‚Ì",
"‚Í","‚Ð","‚Ó","‚Ö","‚Ù",
"‚Ü","‚Ý","‚Þ","‚ß","‚à",
"‚â", "" ,"‚ä", "" ,"‚æ",
"‚ç","‚è","‚é","‚ê","‚ë",
"‚í", "" ,"‚ð", "" ,"‚ñ",
"‚ª","‚¬","‚®","‚°","‚²",
"‚´","‚¶","‚¸","‚º","‚¼",
"‚¾","‚À","‚Ã","‚Å","‚Ç",
"‚Î","‚Ñ","‚Ô","‚×","‚Ú",
"‚Ï","‚Ò","‚Õ","‚Ø","‚Û",
"‚á","‚ã","‚å","‚Á","‚ì",
"‚Ÿ","‚¡","‚£","‚¥","‚§",
"�[","�E", "" , "" , "" ,
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
]
KATAKANA_TABLE =
[
"‚ ","¢","¤","¦","¨",
"©","«","","¯","±",
"³","µ","·","¹","»",
"½","¿","Â","Ä","Æ",
"È","É","Ê","Ë","Ì",
"Í","Ð","Ó","Ö","Ù",
"Ü","Ý","Þ","ß","à",
"â", "" ,"ä", "" ,"æ",
"ç","è","é","ê","ë",
"í", "" ,"ð", "" ,"ñ",
"ª","¬","®","°","²",
"´","¶","¸","º","¼",
"¾","À","Ã","Å","Ç",
"Î","Ñ","Ô","×","Ú",
"Ï","Ò","Õ","Ø","Û",
"á","ã","å","Á","ì",
"Ÿ","¡","£","¥","§",
"�[","�E", "" , "" , "" ,
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
"","","","","",
]

# ----------------------------------
def initialize
super(160, 128, 480, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.active = false
@index = -1
@mode = 1
refresh
update_cursor_rect
end
# ----------------------------------
def index=(value)
@index = value
update_cursor_rect
end
#--------------------------------------
def character
if @mode == 1
return ENGLISH_TABLE[@index]
elsif @mode == 2
return HIRAGANA_TABLE[@index]
else
return KATAKANA_TABLE[@index]
end
end
# ----------------------------------
def refresh
self.contents.clear
for i in 0..134
x = 4 + i / 5 / 9 * 152 + i % 5 * 28
y = i / 5 % 9 * 32
if @mode == 1
self.contents.font.name = "Arial"
self.contents.font.size = 24
self.contents.draw_text(x, y, 28, 32, ENGLISH_TABLE[i], 1)
elsif @mode == 2
self.contents.font.name = "Arial"
self.contents.font.size = 22
self.contents.draw_text(x, y, 28, 32, HIRAGANA_TABLE[i], 1)
else
self.contents.font.name = "Arial"
self.contents.font.size = 22
self.contents.draw_text(x, y, 28, 32, KATAKANA_TABLE[i], 1)
end
end
end
# ----------------------------------
def update_cursor_rect
if self.active == false
self.cursor_rect.empty
else
x = 4 + @index / 5 / 9 * 152 + @index % 5 * 28
y = @index / 5 % 9 * 32
self.cursor_rect.set(x, y, 28, 32)
end
end
# ----------------------------------
def update
super
if @index >= 0 && @index <= 134
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
if @index % 5 == 4
if @index < 94
@index += 41
end
else
@index += 1
end
end
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
if @index % 5 == 0
if @index < 45
self.active = false
@index = -999
return
else
@index -= 41
end
else
@index -= 1
end
end
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
if @index % 45 < 40
@index += 5
end
end
if Input.repeat?(Input::UP)
if Input.trigger?(Input::UP) or @index % 45 >= 5
$game_system.se_play($data_system.cursor_se)
if @index % 45 >= 5
@index -= 5
end
end
end
end
update_cursor_rect
end
end


W tabelach English table, hiregana table itd. Są znaki, które wyświetlą się po wybraniu języka...angielski będzie tu językiem standardowym...Oczywiście znaki musicie sobie zedytować...
Teraz tworzymy nową zakładke jak? klikamy prawym klawiszem myszy na liscie i wybieramy wstaw(add).
Nazwa zakładki to : Window_NameCommand

A jej zawartość to:

Kod:
class Window_NameCommand < Window_Command
# -------------------------------
 def refresh
   self.contents.clear
   for i in 0...@item_max
     if i == 1 or i == 2
       font = 1
       self.contents.font.name = "Arial"
       self.contents.font.size = 22
     else
       font = 0
       self.contents.font.name = "Arial"
       self.contents.font.size = 24
     end
     draw_item(i, normal_color, font)
   end
 end
# -------------------------------
def draw_item(index, color, f)
 if f == 0
   self.contents.font.color = color
   self.contents.font.name = "Arial"
   self.contents.font.size = 24
 else
   self.contents.font.name = "Arial"
   self.contents.font.size = 22
 end
   rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
   self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
   self.contents.draw_text(rect, @commands[index])
 end
end


No i powinno działać...Mam nadzieję, że opisałem to wystarczjąco łatwo....



Screen:
Spoiler:


________________________
_________________
_________________
Jak kraść to milinony...
Jak ruchać to księżniczki...
_________________
_________________
_________________
Ostatnio zmieniony przez Ayene Nie 04 Kwi, 2010 15:29, w całości zmieniany 2 razy  
 
 
 
R.I.P. 




Preferowany:
RPG Maker XP

Pomógł: 9 razy
Dołączył: 28 Mar 2010
Posty: 173
Skąd: Warszawa
Wysłany: Nie 28 Mar, 2010 22:44
Jak dla mnie może być tylko stary też dobry, tutaj zmienia się tylko językowy ;p.
 
 
RtaMag2 




Preferowany:
RPG Maker XP

Dołączył: 11 Lut 2010
Posty: 137
Skąd: Piechy
Wysłany: Sob 03 Kwi, 2010 19:53
To się czymś wywołuje czy coś?
________________________

 
 
 
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Sob 03 Kwi, 2010 19:59
To zastępuje zwykły system wpisywania imienia...
________________________
MelvinClass:
Spoiler:

 
 
RtaMag2 




Preferowany:
RPG Maker XP

Dołączył: 11 Lut 2010
Posty: 137
Skąd: Piechy
Wysłany: Sob 03 Kwi, 2010 20:03
I jak włączę grę to odrazu się pojawia?
________________________

 
 
 
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Sob 03 Kwi, 2010 20:05
Nie.
Masz w edycji zdarzeń: "Wprowadź imię bohatera"...
I to zastępuje podstawowy system wpisywania imienia...
________________________
MelvinClass:
Spoiler:

 
 
RtaMag2 




Preferowany:
RPG Maker XP

Dołączył: 11 Lut 2010
Posty: 137
Skąd: Piechy
Wysłany: Sob 03 Kwi, 2010 20:12
A moge zrobić tak że na początku gry pojawia mi się to wpisywanie imienia jak tak to podaj mi dokładniusi prodanik :-D
________________________

 
 
 
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Sob 03 Kwi, 2010 20:15
Tam gdzie pozycja startowa bohatera ustawiasz zdarzenie(równoległe) z poleceniem "Wprowadź imię bohatera" a po tym dajesz usuń zdarzenie... I już! :-D
________________________
MelvinClass:
Spoiler:

 
 
Czeliosss 



Ranga RM:
1 gra

Pomógł: 49 razy
Dołączył: 02 Lis 2009
Posty: 661
Skąd: Wa-wa
Wysłany: Sob 03 Kwi, 2010 20:16
1 strona zdarzenia. Robisz zdarzenie na równoległe i dajesz Zmień imię Bohatera, i główny przełącznik A.
2 strona zdarzenia. Ustawiasz warunek A=On
________________________
...Amelanduil & FireBlade words will be remembered...
...Amelanduil & FireBlade acts will be remembered...
...Amelanduil & FireBlade never gonna die...

Nie pisać, bo nie odpiszę.
 
 
Izaya 




Pomógł: 2 razy
Dołączył: 20 Mar 2010
Posty: 127
Skąd: z Netaa !
Wysłany: Nie 11 Lip, 2010 09:16
Bardzo przydatny Skrypt. :-)
Mało "Mejkerowców" wybiera wpisywanie imienia bohatera,
ponieważ uważają że ich Imię jest bardzo dobre.
Lecz niektórym graczom nie podoba się imię i chcieliby to zmienić...
Jestem jednym właśnie z takich :mrgreen:
Nie wykluczone że ten skrypt pojawi się w mojej grze ;-)
Dobrze wykombinowane z językami Angielskim, Chińskim i Japońskim,
urozmaica to to całą grę :-)
Pozdrawiam :przytul:
________________________
Padł mi laptop ... wszystko, RPG Maker i projekty, wszystko się skończyło. Nie bawię się już w RPGM'a, Zmieniam wizerunek.

Nowa strona, szukam tłumaczy, edytorów, korektorów i HTMLowców ! :D

P.S.: Aga Organization rlz ! =>
 
 
 
vikki 




Preferowany:
RPG Maker XP

Dołączył: 10 Cze 2011
Posty: 25
Skąd: Wumpa Island
Wysłany: Nie 12 Cze, 2011 09:27
Ops...Nie, nie działa:(
________________________



 
 
Feniks 




Preferowany:
RPG Maker XP

Ranga RM:
2 gry

Pomógł: 62 razy
Dołączył: 04 Wrz 2010
Posty: 511
Wysłany: Nie 12 Cze, 2011 12:16
co ci dokładnie nie działa?... Jakiś błąd?
________________________

 
 
vikki 




Preferowany:
RPG Maker XP

Dołączył: 10 Cze 2011
Posty: 25
Skąd: Wumpa Island
Wysłany: Nie 12 Cze, 2011 15:45
@darknessXII
Tak 1.Wyskakuje mi błąd 2.Opcja nie działa
________________________



 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 12 Cze, 2011 16:31
Jakiej treści jest błąd, w którym momencie się pokazuje?
________________________


 
 
 
vikki 




Preferowany:
RPG Maker XP

Dołączył: 10 Cze 2011
Posty: 25
Skąd: Wumpa Island
Wysłany: Nie 12 Cze, 2011 17:03
@Ayene

Kiedy włączam grę...
________________________



 
 
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