UltimaForum

Skrypty [VX] - Znaczniki tekstu + Automatyczne kolorowanie tekstu

Ayene - Czw 05 Lis, 2009 20:16
Temat postu: Znaczniki tekstu + Automatyczne kolorowanie tekstu
~ Znaczniki tekstu + Automatyczne kolorowanie tekstu ~

Krótki opis
Skrypt dodaje nowe znaczniki wiadomości (czyli skróty dzięki którym wyświetli się nazwa przedmiotu lub potwora umieszczonych w bazie danych) oraz umożliwia automatyczne kolorowanie tekstu (przydatne, gdy nie chcemy za każdym razem używać \c[kolor]).

Przykład:
Znany mam nadzieję wszystkim znacznik \N[id] wyświetlający imię bohatera o wskazanym ID. Dzięki zastosowaniu prostego triku można z góry ustalić, że każdorazowe wprowadzanie tekstu, np. \N[4] sprawi, że wyświetlone imię bohatera nr 4 będzie w wybranym kolorze - wszystko można skonfigurować w skrypcie.

Inne wspomniane już zastosowanie skryptu - dodaje nowe znaczniki, które wyświetlają między innymi: nazwę mapy, broni, pancerza lub klasy bohatera oraz w niewielkim stopniu formatują tekst (kursywa i pogrubienie).

Autor skryptu
Ayene [yurika@o2.pl]

Kompatybilność
Tylko VX. Nie powinien kłócić się z żadnym skryptem, chyba że któryś ingerowałby w sposób wyświetlania okna wiadomości.

Skrypt
Spoiler:

Kod:

#==============================================================
# [VX] Nowe znaczniki tekstu + Automatyczne kolorowanie tekstu
#--------------------------------------------------------------
# by Ayene [yurika@o2.pl]
# Zapraszam na www.ultimateam.pl
#--------------------------------------------------------------
# ** ZASTOSOWANIE
#--------------------------------------------------------------
# Wykaz wszystkich znaczników:
# \C[numer] - zmienia kolor tekstu (numer - 0~31)
# \G - wyświetla nowe okno z ilością złota
# \. - czeka 1/4 sekundy
# \| - czeka 1 sekundę
# \! - czeka do momentu wciśnięcia przycisku
# \> - włącza szybsze wyświetlanie znaków
# \< - wyłącza szybsze wyświetlanie znaków
# \^ - samoczynnie zamyka okno
# \V[id] - wyświetla wartość zmiennej o podanym ID
# \N - imię bohatera o podanym ID
# \UM[ID]  - nazwa umiejętności o podanym ID
# \PRZ[ID] - nazwa przedmiotu o podanym ID 
# \W[ID] - nazwa broni o podanym ID 
# \ZB[ID] - nazwa zbroji o podanym ID
# \POT[ID] - nazwa potwora o podanym ID
# \GP[ID] - nazwa grupy potworów o podanym ID 
# \CENA[ID] - cena przedmiotu o podanym ID     
# \KL[ID] - klasa bohatera o podanym ID 
# \MAPA - nazwa mapy na której aktualnie znajduje się postać
# \I - włącza i wyłącza kursywę
# \B - włącza i wyłącza pogrubienie
#==============================================================
# Konfiguracja kolorów znajduje się poniżej
#==============================================================
class Window_Message < Window_Selectable
  def convert_special_characters
   
    # standardowe
    @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
    @text.gsub!(/\\G/)              { "\x02" }
    @text.gsub!(/\\\./)             { "\x03" }
    @text.gsub!(/\\\|/)             { "\x04" }
    @text.gsub!(/\\!/)              { "\x05" }
    @text.gsub!(/\\>/)              { "\x06" }
    @text.gsub!(/\\</)              { "\x07" }
    @text.gsub!(/\\\^/)             { "\x08" }   
    @text.gsub!(/\\\\/)             { "\\" }
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
   
    # \I - włącza i wyłącza kursywę
    @text.gsub!(/\\I/i)              { "\x09" }
   
    # \B - włącza i wyłącza pogrubienie
    @text.gsub!(/\\B/i)              { "\x10" }   
 
    # By zmienić kolor wyświetlanych nazw, wystarczy podmienić 29 na inną liczbę
    # Liczba określa numer koloru - 0~31
    # Wykaz wszystkich kolorów można zobaczyć tutaj:
    # http://www.ultimateam.pl/viewtopic.php?t=1981

    # \N - imię bohatera o podanym ID
    @text.gsub!(/\\N\[([0-9]+)\]/i) { "\x01[29]" + $game_actors[$1.to_i].name + "\x01[0]" }   
   
    # \MAPA - nazwa mapy na której aktualnie znajduje się postać
    @text.gsub!(/\\MAPA/i)           { "\x01[29]#{$game_map.map_name}\x01[0]" }   
   
    # \UM[ID]  - nazwa umiejętności o podanym ID
    @text.gsub!(/\\UM\[([0-9]+)\]/i) { "\x01[29]" + $data_skills[$1.to_i].name + "\x01[0]" }
   
    # \PRZ[ID] - nazwa przedmiotu o podanym ID 
    @text.gsub!(/\\PRZ\[([0-9]+)\]/i){ "\x01[29]" + $data_items[$1.to_i].name + "\x01[0]" }
   
    # \W[ID] - nazwa broni o podanym ID 
    @text.gsub!(/\\W\[([0-9]+)\]/i) { "\x01[29]" + $data_weapons[$1.to_i].name + "\x01[0]" }
   
    # \ZB[ID] - nazwa zbroi o podanym ID 
    @text.gsub!(/\\ZB\[([0-9]+)\]/i) { "\x01[29]" + $data_armors[$1.to_i].name + "\x01[0]" }

    # \POT[ID] - nazwa potwora o podanym ID     
    @text.gsub!(/\\POT\[([0-9]+)\]/i){ "\x01[29]" + $data_enemies[$1.to_i].name + "\x01[0]" }
   
    # \GP[ID] - nazwa grupy potworów o podanym ID 
    @text.gsub!(/\\GP\[([0-9]+)\]/i) { "\x01[29]" + $data_troops[$1.to_i].name + "\x01[0]" }
   
    # \CENA[ID] - cena przedmiotu o podanym ID     
    @text.gsub!(/\\CENA\[([0-9]+)\]/i) { "\x01[29]" + $data_items[$1.to_i].price.to_s + "\x01[0]" }
   
    # \KL[ID] - klasa bohatera o podanym ID 
    @text.gsub!(/\\KL\[([0-9]+)\]/i) { "\x01[29]" + $data_classes[$game_actors[$1.to_i].class_id].name + "\x01[0]" }
     
    # A to niewielki dodatek, dla tych którzy często muszą powielać ten sam tekst
    # np. stworzyłam sobie znacznik \Ayene, który wpisany w oknie wiadomości
    # wyświetli nick 'Ayene' w kolorze czerwonym.
    # [Aa] sprawia, że zadeklarowana została różna wielkość pierwszej literki,
    # czyli innymi słowy nie ma różnicy między \Ayene a \ayene
    @text.gsub!(/\\[Aa]yene/) { "\x01[2]Ayene\x01[0]" }
   
    end

  def update_message
    loop do
      c = @text.slice!(/./m)           
      case c
      when nil                         
        finish_message                 
        break
      when "\x00"                       
        new_line
        if @line_count >= MAX_LINE     
          unless @text.empty?           
            self.pause = true           
            break
          end
        end
      when "\x01"                       
        @text.sub!(/\[([0-9]+)\]/, "")
        contents.font.color = text_color($1.to_i)   
        next
      when "\x02"                       
        @gold_window.refresh
        @gold_window.open
      when "\x03"                       
        @wait_count = 15
        break
      when "\x04"                       
        @wait_count = 60
        break
      when "\x05"                       
        self.pause = true
        break
      when "\x06"                     
        @line_show_fast = true
      when "\x07"                     
        @line_show_fast = false
      when "\x08"                     
        @pause_skip = true
      when "\x09"                     
        contents.font.italic = contents.font.italic == true ? false : true
        next
      when "\x10"
        contents.font.bold = contents.font.bold == true ? false : true
        next           
      else                             
        contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
        c_width = contents.text_size(c).width
        @contents_x += c_width
      end
      break unless @show_fast or @line_show_fast
    end
  end
end

class Game_Map
  def map_name
    mpname = load_data("Data/MapInfos.rvdata")
    mpname[@map_id].name
  end 
end


Demo
niepotrzebne

Screenshot
niepotrzebne

Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.

Piszcie w razie problemów.

Azsak von Triger - Czw 05 Lis, 2009 20:24

Może i dobre ,ale u mnie na angielskim nie działa :-(
Ayene - Czw 05 Lis, 2009 20:28

No ja też mam angielski i u mnie wszystko chodzi. Najprawdopodobniej masz skrypt, który coś blokuje ;-) Próbowałeś w czystym projekcie?
Azsak von Triger - Czw 05 Lis, 2009 20:36

Prawie czystym :-D .(sprawdzam na czystym) Działa:!:Czyli teraz angielska wersja jest jak polska :-)
ishizaki1 - Nie 10 Paź, 2010 14:40

A jak zmienić kolor broni w bazie danych ? Czytam instrukcje i nie umiem zrozumieć.
Ja robię tak : Robię nową broń i dopisuje na początku \c[1] a i tak nie działa -_-.

radek02 - Nie 10 Paź, 2010 15:07

ishizaki1 napisał/a:
A jak zmienić kolor broni w bazie danych ? Czytam instrukcje i nie umiem zrozumieć.
Ja robię tak : Robię nową broń i dopisuje na początku \c[1] a i tak nie działa -_-.

sie nie da chyba ;) . trzeba pisac [unikat] / [heroik] ;|

ishizaki1 - Nie 10 Paź, 2010 15:16

No właśnie chyba się da
Ayene napisał/a:
Inne wspomniane już zastosowanie skryptu - dodaje nowe znaczniki, które wyświetlają między innymi: nazwę mapy, broni, pancerza lub klasy bohatera oraz w niewielkim stopniu formatują tekst (kursywa i pogrubienie).

kylu31 - Czw 25 Lis, 2010 19:39

Dzięki ! jesteś wielka !
MrDawnok - Nie 19 Cze, 2011 09:54

Spoko skrypcik :) żeby go całkowicie zrozumieć trzeba go chwile pooglądać, ale i tak jest super :mrgreen: Użyję! 6/6
Finwe - Wto 20 Wrz, 2011 19:26

Ayene, skąd ty to wszystko bierzesz? Jak na 10 forach byłem to tak aktywnej adminki nie widziałem.
MMS-S3 - Wto 27 Gru, 2011 13:30

Ona to pisze... Chyba ;-)
jacorex1 - Pią 01 Cze, 2012 16:10

Bardzo Fajny skrypt :D Przydał mi się dzięki ^^
aragorn7015 - Czw 07 Cze, 2012 20:53

Czy jest podobny na XP?
gats - Sob 09 Cze, 2012 09:01

Właściwie to jak wpisać imie bo ja mam problem wpisuje \N <---- imie bochatera i włanczam testówke i kiedy jest rozmowa to imienia bochatera nie widać, co zrobić ?.
Ayene - Sob 09 Cze, 2012 19:31

Przeczytaj uważnie jeszcze raz pierwszy post w tym temacie, a znajdziesz odpowiedź na pytanie, czemu \N nie działa. Do tego, prosiłabym o przykładanie nieco większej uwagi do reguł pisowni, bo tekstu typu "włanczam imie bochatera" naruszają regulamin forum.

Powered by phpBB modified by Przemo © 2003 phpBB Group