UltimaForum

Skrypty [VX] - Nazwy zdarzeń na mapie

Ayene - Wto 29 Gru, 2009 23:45
Temat postu: Nazwy zdarzeń na mapie
~ Nazwy zdarzeń na mapie [VX] ~

Krótki opis
Skrypt wyświetla nazwy nad zdarzeniami (patrz screen)

Autor skryptu
Woratana [woratana@hotmail.com]

Tłumaczenie i poprawki
Ayene [yurika@o2.pl]

Kompatybilność
Tylko VX

Skrypt
Spoiler:

Kod:

#===============================================================
# [VX] Unoszące się nazwy zdarzeń
# Skrypt wyświetla na mapie nazwy zdarzeń
#--------------------------------------------------------------
# Autor: Woratana [woratana@hotmail.com]
# Tłumaczenie i poprawki: Ayene [yurika@o2.pl]
#--------------------------------------------------------------
# Umieść skrypt nad Main
#=================================================================
module Ayene   
  KOLOR_CZCIONKI = Color.new(0,0,127, 255)  # Kolor RGB i przezroczystość 0~255
  ROZMIAR_CZCIONKI = 16                     # Rozmiar czcionki
  NAZWA_CZCIONKI = "Arial"                  # Czcionka (folder Fonts)
  KURSYWA = false                           # Kursywa (true / false)
  POGRUBIENIE = false                       # Pogrubienie (true / false)
end

class Sprite_Character < Sprite_Base
#=================================================================
# POCZĄTEK KONFIGURACJI   
#=================================================================
  FLOAT_NAME_SHOW_ALL = false
  # Czy chcesz, aby wyświetlały się nazwy wszystkich zdarzeń?
  # (true - tak / false - nie)
 
  # Jeżeli wybrano u góry false, nazwę zdarzenia można wyświetlić dopisując [FS]
  # w jego edycji...
  # np. Statek[FS] 
  FLOAT_NAME_SHOW_TAG = '[FS]'   
 
  # Jeżeli wybrano u góry true, nazwę zdarzenia można ukryć dopisując [FNS]
  # w jego edycji...
  # np. Statek[FNS] 
  FLOAT_NAME_NOT_SHOW_TAG = '[FNS]' 
 
  # Tutaj można ukryć słowa, które mają się nie wyświetlać w nazwie zdarzenia
  # np. FLOAT_NAME_NOT_SHOW_WORDS = ['[ny]', '[ss]', 'lol']
  # Wówczas w nazwie zdarzenia nie wyświetlą się słowa [ny], [ss] i lol.
  FLOAT_NAME_NOT_SHOW_WORDS = []
 
  FLOAT_NAME_X_OFFSET = 10 # Przesunięcie nazwy zdarzenia w poziomie (+ / -)
  FLOAT_NAME_Y_OFFSET = 0 # Przesunięcie nazwy zdarzenia w pionie (+ / -)
  FLOAT_NAME_Z = 198 # Przesunięcie nazwy zdarzenia nad (+) lub pod (-) inne zdarzenia.
#=================================================================
# KONIEC KONFIGURACJI 
#================================================================= 
  alias wora_floatevn_sprcha_dis dispose
  alias wora_floatevn_sprcha_upd update
 
  def dispose
    if !@charname_box.nil? and @charname_box.is_a?(Sprite)
      @charname_box.bitmap.dispose
      @charname_box.dispose
    end
    wora_floatevn_sprcha_dis
  end 
 
  def update
    wora_floatevn_sprcha_upd
    if @character.is_a?(Game_Event)
      if @charname_box.nil?
        if (FLOAT_NAME_SHOW_ALL and !@character.event.name.include?(FLOAT_NAME_NOT_SHOW_TAG)) or
        (!FLOAT_NAME_SHOW_ALL and @character.event.name.include?(FLOAT_NAME_SHOW_TAG))
          @float_charname = @character.event.name.dup
          not_show_words = FLOAT_NAME_NOT_SHOW_WORDS.clone.push FLOAT_NAME_SHOW_TAG,
        FLOAT_NAME_NOT_SHOW_TAG
          not_show_words.each {|w| @float_charname.gsub!(w) {''} }         
          @charname_box = Sprite.new         
          @charname_box.z = FLOAT_NAME_Z
          bitmap = Bitmap.new(1,1)
          nsize = bitmap.text_size(@float_charname)
          bitmap.dispose         
          @charname_box.bitmap = Bitmap.new(nsize.width, nsize.height)
          @charname_box.bitmap.font.color = Ayene::KOLOR_CZCIONKI
          @charname_box.bitmap.font.size = Ayene::ROZMIAR_CZCIONKI
          @charname_box.bitmap.font.name = Ayene::NAZWA_CZCIONKI
          @charname_box.bitmap.font.italic = Ayene::KURSYWA
          @charname_box.bitmap.font.bold = Ayene::POGRUBIENIE         
          @charname_box.bitmap.draw_text(0, 0, nsize.width, nsize.height, @float_charname)           
        else 
          @charname_box = 0
        end       
      end
      if @charname_box.is_a?(Sprite)
        @charname_box.x = self.x - (@charname_box.width / 2) + FLOAT_NAME_X_OFFSET
        @charname_box.y = self.y - self.oy - @charname_box.height + FLOAT_NAME_Y_OFFSET
      end
    end
  end
end

class Game_Event < Game_Character
  attr_reader :event
end


Demo
niepotrzebne

Screenshot
Spoiler:


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

Piszcie w razie problemów.

KillYou - Sro 30 Gru, 2009 10:17

Mam mały problem. Kiedy otwieram grę wyskakuje mi okno
"Nazwy Zdarzeń" numer 66. Jest tam u mnie jakies charname_box itd.
O co z tym chodzi?

Ayene - Sro 30 Gru, 2009 12:14

Zrób najlepiej screenshota... bo nie wiem za bardzo w czym może być problem.
KillYou - Sro 30 Gru, 2009 14:45

http://img230.imageshack.us/i/bd2c.jpg/

Poradził mi Spino, obydwaj mamy tak samo, a u mnie tylko ta
jedna linijka nie działa!
WHY?

[ Dodano: Sro 30 Gru, 2009 14:50 ]
Sorki, już mi działa! To było związane z napisami końcowymi!

Deegi - Sro 30 Gru, 2009 17:29

Mam problem. Na mapie widzę nazwy eventów które są wyłączone (np. npc których jeszcze nie ma). Poza tym czy da się nieco zmniejszyć czcionkę?
Ayene - Sro 30 Gru, 2009 21:23

Co do wyglądu czcionki to podmieniłam skrypt z pierwszego posta - wymagał niewielkich modyfikacji.
Co zaś tyczy się nieistniejących zdarzeń... muszę trochę nad tym pomyśleć. Jak widzisz Woratana tego nie przewidział ;-)

KillYou - Sro 30 Gru, 2009 22:34

Deegi, mam ten sam problem, i też to, że zawsze gdy zdarzenie się skończy (usunie)
to jego nazwa nadal zostaje.

Ayene - Czw 31 Gru, 2009 02:29

Myślałam, myślałam i wymyśliłam, lecz nie jest to zadowalające rozwiązanie, gdyż trzeba trochę się namęczyć. Otóż istnieje odwołanie do skryptu, które zmienia nazwę eventu/zdarzenia, ale tylko na mapie, na którym to odwołanie zostanie zastosowane. Czyli gdy będziemy się znajdować na mapie ID004, to zmienić możemy nazwę zdarzenia tylko z tej mapy - i to jest niestety największy mankament tego rozwiązania.
Niemniej jednak dla tych, którzy uważają, że warto się potrudzić, zamieszczam wspomniane odwołanie:
Kod:
$game_map.events[ID zdarzenia].event.name='Nowa nazwa'

Gdzie:
ID zdarzenia - to ID eventu/zdarzenia
Nowa nazwa - tłumaczyć nie trzeba

Odwołanie można wykorzystać w następujący sposób.
1. Dla zdarzeń, których jeszcze nie ma :arrow: nazwę zdarzenia w edycji dajemy 'Cosik', a po aktywacji konkretnego przełącznika (albo po spełnieniu innego warunku) za pomocą wspomnianego odwołania zmieniamy nazwę na 'Cosik[FS]'.
2. Dla zdarzeń. których już nie ma, a ich nazwa nadal sie wyświetla :arrow: odwrotnie do powyższego przykładu: w edycji 'Cosik[FS]', a po zmianie 'Cosik' lub 'Cosik[FSN]'

1. Uwaga! Jeżeli chcemy, aby nazwa zdarzenia pojawiła się na naszych oczach (zaktualizowała się na bieżąco, a nie po opuszczeniu mapy) po odwołaniu należy umieścić skrypt:
Kod:
$scene = Scene_Map.new


2. Uwaga! Jeśli ktoś chce wykorzystać powyższe odwołanie bez korzystania ze skryptu 'Nazwy zdarzeń', dla poprawnego działania, powinien w Edytorze Skryptów umieścić taki oto skrypt:
Kod:
class Game_Event < Game_Character
  attr_reader :event
end


I to wszystko ;-) Jeżeli za bardzo namieszałam, to wrzucę demo.

Malian - Czw 28 Sty, 2010 14:32

Hmm...

@up
Nic nie zrozumialem, i czy jest taki skrypt do XP.

Czeliosss - Sob 30 Sty, 2010 20:50

No mi też taki by się przydał.

[ Dodano: Sob 30 Sty, 2010 20:50 ]
A skrypt świetny.

krychapl - Nie 14 Lut, 2010 18:53

Jak zmienić kolor czcionki na biały bo mam jakiś fioletowy?
Ayene - Nie 14 Lut, 2010 19:38

krychapl, wszystko jest w instrukcji :!:

11 linijka:
Kod:
KOLOR_CZCIONKI = Color.new(0,0,127, 255)  # Kolor RGB i przezroczystość 0~255

Pierwsze cyfra to Red (R)
Druga - Green (G)
Trzecia - Blue (B)
Stąd nazwa RGB.

krychapl - Wto 16 Lut, 2010 20:06

Okej dzięki.
Flanagan - Czw 25 Lut, 2010 18:23

Ja mam problem bo jak znika mi nazwa zdarzenia i wchodze do domu a później wychodze to nazwa znów jest proszę o pomoc...
Kable - Nie 28 Lut, 2010 02:29

Mam Pytanie, a czy Można zrobić by wyglądało to tak Tyle że Kolor w środku biały a na zewnątrz czarny :P czy da rade tak zrobić ? :P
Ayene - Pon 01 Mar, 2010 08:45

Najłatwiejszy sposób, to zastosowanie 'Skrypt z biblioteką TRGSSX.dll' :arrow: http://www.ultimateam.pl/viewtopic.php?t=2020
Umieść go w swoim projekcie pamiętając o bibliotece, a w skrypcie z nazwami zdarzeń zmień kolor czcionki na:
Kod:
KOLOR_CZCIONKI = Color.new(255,255,255, 255)

Kable - Pon 01 Mar, 2010 13:16

Hmm więc tak tą bitmape mam od dawana , a kolor zmieniłem ale nadal brak pożądanego efektu...gdzieś widziałem właśnie do tego tekst ruby żeby było tak jak pokazałem wyżej... ale nie pamiętam już jak się to nazywało może dało by jakoś dodać to do skryptu czy coś ; / ?
Yoroiookami - Sro 10 Mar, 2010 17:17

Ayene - czy zmiana nazwy zdarzenia umieszcza się w samym skrypcie, czy w tym poleceniu "Wywołaj skrypt"?
Asantos - Sob 26 Cze, 2010 15:03

A ja mam takie pytanie. Czy można przerobić skrypt tak, aby w trakcie wygaszania ekranu nazwy zdarzeń nie były widoczne? Czy to zbyt skomplikowane?
CreeperCrisis - Sob 26 Cze, 2010 15:26

Asantos napisał/a:
A ja mam takie pytanie. Czy można przerobić skrypt tak, aby w trakcie wygaszania ekranu nazwy zdarzeń nie były widoczne? Czy to zbyt skomplikowane?


Też chciałbym się dowiedzieć :-)

Dodanie cienia :-)
Pod:
Kod:
  POGRUBIENIE = false                       # Pogrubienie (true / false)

Wstaw:
Kod:
  CIEŃ = false                       # Cień (true / false)


A pod:
Kod:
          @charname_box.bitmap.font.bold = Ayene::POGRUBIENIE         

Wstaw:
Kod:
          @charname_box.bitmap.font.shadow = Ayene::CIEŃ         

Asantos - Sro 28 Lip, 2010 09:38

Odświeżam pytanie. Jaki kod trzeba wstawić do skryptu, aby nazwy znikały podczas wygaszania ekranu? Wiem, że jest to możliwe, gdyż mam skrypt na pokazywanie nazwy lokacji i on znika podczas wygaszania.
Ayene - Sro 28 Lip, 2010 16:25

To podaj link do tego skryptu, zobaczymy...
Asantos - Sro 28 Lip, 2010 17:41

Proszę bardzo: http://wiki.pockethouse.c...e=Location_Name
gaba2261 - Sro 01 Gru, 2010 13:59

Jak by było mało to teraz mam problem w 74 linijce :-/
Legendarny - Pią 17 Gru, 2010 14:01

Mam problem, piszę że nie dało się utworzyć bitmapy.
PS Witam jestem nowy na tym forum a to mój pierwszy post.
PS2 Już wiem co się stało! Nie potrzeba już pomocy!
Znowu mam problem, np: Zrobię zdarzenie śmieć, pierwszy Quest polega na zebraniu śmieci. Co zrobić aby to zdarzenie nie miało już napisu po zebraniu śmiecia, (Przełączeniu na drugą stronę)

RATI - Sob 18 Gru, 2010 12:24

Zamiast przechodzić na drugą stronę zdarzenia po zebraniu śmiecia spróbuj usunąć całe zdarzenie (erase event).
Ogr78 - Sro 09 Lis, 2011 11:19

Ja mam ten sam problem!
Tylko ja chce ze jak podejdziemy do zdarzenia to wtedy sie wyswietla nazwa.

Vrona - Sro 09 Lis, 2011 14:44

Cytat:
Kod:
FLOAT_NAME_SHOW_ALL = false
  # Czy chcesz, aby wyświetlały się nazwy wszystkich zdarzeń?
  # (true - tak / false - nie)
 
  # Jeżeli wybrano u góry false, nazwę zdarzenia można wyświetlić dopisując [FS]
  # w jego edycji...
  # np. Statek[FS]
  FLOAT_NAME_SHOW_TAG = '[FS]'   
 
  # Jeżeli wybrano u góry true, nazwę zdarzenia można ukryć dopisując [FNS]
  # w jego edycji...
  # np. Statek[FNS]
  FLOAT_NAME_NOT_SHOW_TAG = '[FNS]' 


CZYTAĆ!

Wpiszcie w nazwie zdarzenia odpowiedni tag.

marsonek - Pią 11 Sty, 2013 19:49

Siemanko wszystkim.
mam tu taką sytuację i nie wiem jak to zrobić

Po przeczytaniu mapy (przedmiot z ekwipunku) pojawia się lokacja na mapie świata z NAZWĄ EWENTU


Powered by phpBB modified by Przemo © 2003 phpBB Group