[XP] Czcionki spoza systemu - Wersja do druku
Ultima Forum
[XP] Czcionki spoza systemu - Wersja do druku

+- Ultima Forum (https://forum.ultimateam.pl)
+-- Dział: RPG Maker (/Forum-RPG-Maker)
+--- Dział: Wsparcie (/Forum-Wsparcie)
+--- Wątek: [XP] Czcionki spoza systemu (/Thread-XP-Czcionki-spoza-systemu)

Strony: 1 2 3


Czcionki spoza systemu - Mateusz SSJ8 - 26-10-14 16:52

Potrzebuję skryptu RGSS ładującego czcionki do gry. Bo chcę walnąć do gry na potrzeby HUDa czcionkę "Emulogic", a nie chcę zmuszać graczy do instalowania jej. Próbowałem już AddFontResource i AddFontResourceEx, ale czcionka analogicznie była używana przez grę dopiero po jej ponownym uruchomieniu (piwerwsza funkcja) i nie była używana wcale (druga). Chcę, żeby działało jak w RPG Makerze VX i VX Ace. Jest coś takiego?


RE: Czcionki spoza systemu - ReetzO - 26-10-14 17:52

Zawsze warto spróbować. Pierwszy wynik w google:
http://www.rmxp.tigerseye.uk.com/tutorial_scriptf1.shtml


RE: Czcionki spoza systemu - Mateusz SSJ8 - 26-10-14 18:29

Problem niby rozwiązany. Jutro sprawdzę, bo dzisiaj już wywołałem AddFontResource, a nie chce mi się dokańczać siedzenia przykolejnym uruchomieniu komputera. Do tego czasu spróbujmy rozwiać możliwości. Jeśli porada ReetzO (czy "Reetz0", zależy jak to pisać) działa standardowo w RPG Makerze XP bez dodatkowych skryptów, to jaki plik DLL trzeba przydzielić do aplikacji? Bo mam nazwane "rgss100j", gdyż program przy każdym zapisaniu ustawia mi tą właśnie.


RE: Czcionki spoza systemu - Mateusz SSJ8 - 27-10-14 08:51

Przepraszam za drugi post z rzędu, ale problem wciąż istnieje. ReetzO nie podał właściwej porady. Grałem dziś rano i próba szybkości wygląda tak
Spoiler: (Otwórz)
, a powinna wyglądać tak:
Spoiler: (Otwórz)
Ktoś wie, co zrobić, żeby czcionka była już za pierwszym razem?

PS. Dałem obrazki w spojlery, bo mi za pierwszym razem ramki na tym forum rozwaliło.


RE: Czcionki spoza systemu - Kosmik123 - 27-10-14 10:32

Taka luźna propozycja (nawet nie oglądałem skryptu), ale może po tym skrypcie dodaj jakąś komendę by załadowało grę na nowo. Wtedy miałbyś drugie uruchomienie za jednym razem.


RE: Czcionki spoza systemu - Mateusz SSJ8 - 27-10-14 11:14

Nie rozumiecie? Ma używać tej czcionki już za pierwszym razem, kiedy gra się uruchomi, a nie dopiero za drugim.


RE: Czcionki spoza systemu - ReetzO - 27-10-14 17:33

Przepraszam, takim specem aż nie jestem. Tak sobie czasem podaje jakieś proste porady mając nadzieję, że zadziałają. ;)


RE: Czcionki spoza systemu - Dragon Kamillo - 28-10-14 21:43

Mateusz, a może nie kombinuj ze skryptami w RM, tylko jak już będziesz wydawał grę to znajdź taki instalator który zainstaluje grę i wrzuci odpowiednie czcionki do windowsowego folderu. Wtedy problem jakby zniknie.

Z tego co wiem jest to tak rozwiązane w tym projekcie: http://tsukuru.pl/index.php?link=gra&title=2k-roguald UWAGA: lepiej przed instalacją tego zrobić sobie kopie czcionek z RM2k - instalator je podmienia na swoje. Zawsze radzę do gier dawać czcionki o małym prawdopodobieństwie wystąpienia ich nazw gdzie indziej - po prostu je edytować. Chyba że nasza czcionka niczym nie różni się od innych czcionek o tej samej nazwie.


RE: Czcionki spoza systemu - Mateusz SSJ8 - 29-10-14 20:07

Nie widzisz, Dragon Kamillo? Skoro ja miałem ten problem, to tylko kwestia czasu, kiedy ktoś inny będzie miał ten problem. Jeśli rozwiążemy go teraz, to raz na zawsze go rozwiążemy. Tytm bardziej, że to pierwszy taki przypadek.

A zatem ma ktoś czcionki od razu używane przezgrę robioną w RPG Makerze XP? Podmiana RGSS, instalacja czcionek i ponowne uruchomienie gry nie wchodzą w grę.


RE: Czcionki spoza systemu - Ayene - 08-11-14 14:41

Hmm... a sprawdź ten skrypt. Korzystam z niego w Wymiarze X i chyba nie ma tego błędu...
Kod:
#==============================================================================
# ** Fonts
#------------------------------------------------------------------------------
#  Install or load the font.
#==============================================================================

module Fonts
  AutoInstall = {'Arial.ttf' => 'Arial'}
  Source = 'Fonts/'  
  AFR = Win32API.new('gdi32', 'AddFontResource', ['P'], 'L')
  WPS = Win32API.new('kernel32', 'WriteProfileString', ['P'] * 3, 'L')
  SM = Win32API.new('user32', 'SendNotifyMessage', ['L'] * 4, 'L')
  SHGetFolderPath = Win32API.new("shell32.dll","SHGetFolderPath","PIPIP","I")
  WM_FONTCHANGE = 0x001D
  HWND_BROADCAST = 0xffff
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def self.reload_custom_fonts
    needs_reset = false
    for i in Fonts::AutoInstall.keys
      f = i.dup
      n = Fonts::AutoInstall[f]
      if not Font.exist?(n)
        if FileTest.exists?(Fonts::Source + f)
          needs_reset = true
          fontDir = " " * 256
          SHGetFolderPath.call(0,0x0014,0,0,fontDir)
          fontDir = fontDir.strip.gsub("\000","")
          fontDir.gsub!(/\\/, "/")
          if File.writable_real?(fontDir)
            dest = File.open("#{fontDir}/#{f}", "w+")
            src = File.open(Fonts::Source + f, "r")
            src.each { |line| dest.puts(line) }
            dest.close; src.close
            AFR.call("#{fontDir}/#{f}")
            SM.call(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
            WPS.call('Fonts', '#{f} (TrueType)', f)
          else
            Fonts::Source + f
            AFR.call(Fonts::Source + f)
            SM.call(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
            WPS.call('Fonts', n + ' (TrueType)', f)
          end
        else
          p 'Czcionki: font ' + f + ' nie znaleziono.'
        end
      end
    end
    if needs_reset
      Thread.new { system('Game') }
      exit
    end
  end
end
Fonts.reload_custom_fonts