UltimaForum

Skrypty [XP] - FullScreen

Melvin - Nie 17 Kwi, 2011 22:25
Temat postu: FullScreen
Automatic Full Screen v1.0

Skrypt wyświetla okno z wyborem pełnego ekranu, zanim przejdzie do titla(menu głównego).

Autor
Blizzard
Modyfikacje by Melvin

Screenshot
Spoiler:



Demo
Brak

Skrypt
Spoiler:

Kod:
#==========================================================================
# Automatic Full Screen v1.0
#==========================================================================
# Autor: Blizzard
# Modyfikacje by Melvin - www.ultimateam.pl
#==========================================================================
module Melvin
# Windowskin:
  $WSFSSCR = "001-Blue01"
# Przezroczystość(0-255):
  OP = 255
#=================================================
# Tekst na ekranie:
  TEXT = "Ustawić pełny ekkran?"
# Tekst przycisku "Tak":
  YES = "Tak"
# Tekst przycisku "Nie":
  NO = "Nie"
end
#==========================================================================
class Scene_Title
  alias main_fullscreen? main
  def main
    if true
      unless $game_started
        Graphics.freeze
        $data_system = load_data('Data/System.rxdata')
        $game_system = Game_System.new
        @window = Window_FullScreen.new(320, [Melvin::YES ,Melvin::NO])
        @window.x = 320 - @window.width / 2
        @window.y = 240 - @window.height / 2
        @window.opacity = 0
        @picBG = Window_picBG.new
        @picBG.x = 0
        @picBG.y = 0
        @picBG.opacity = 255
        Graphics.transition(10)
        loop do
          Graphics.update
          Input.update
          @window.update
          @picBG.update
          update_window
          break if $game_started
        end
        Graphics.freeze
        @window.dispose
        @picBG.dispose
        @window = nil
        Graphics.transition(10)
        Graphics.freeze
      end
    else
      $game_started = true
    end
    main_fullscreen?
  end
  def update_window
    if Input.trigger?(Input::C)
      if @window.index == 0
        $game_system.se_play($data_system.decision_se)
        keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v'
        keybd.call 0xA4, 0, 0, 0
        keybd.call 13, 0, 0, 0
        keybd.call 13, 0, 2, 0
        keybd.call 0xA4, 0, 2, 0
      else
        $game_system.se_play($data_system.cancel_se)
      end
      $game_started = true
    elsif Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $game_started = true
    end
  end
end
class Window_FullScreen < Window_Selectable
  def initialize(width, commands)
    super(0, 0, width, commands.size * 32 + 64)
    @item_max = commands.size
    @commands = commands
    self.contents = Bitmap.new(width - 32, @item_max * 32 + 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    refresh
    self.index = 0
  end
  def refresh
    self.contents.clear
    qu = Melvin::TEXT
    self.contents.draw_text(0, 0, width - 32, 32, qu, 1)
    for i in 0...@item_max
      draw_item(i, normal_color)
    end
  end
  def draw_item(index, color)
    rect = Rect.new(4, 32+32 * index, self.contents.width - 8, 32)
    rect2 = Rect.new(4+1, 32+32 * index+1, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.font.color = color
    self.contents.draw_text(rect, @commands[index], 1)
  end
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
      return
    end
    row = @index / @column_max
    self.top_row = row if row < self.top_row
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    cursor_width = 64
    x = (self.contents.width - cursor_width) / 2
    y = @index / @column_max * 32 - self.oy
    self.cursor_rect.set(x, y + 32, cursor_width, 32)
  end
end
class Window_picBG < Window_Base
  def initialize(x = 640, y = 480, width = 640, height = 480)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = Melvin::OP
    refresh
  end
  def refresh
    self.contents.clear
    self.windowskin = RPG::Cache.windowskin($WSFSSCR)
  end
end



Instrukcja
Wklej na "Main"

shiwt - Pon 18 Kwi, 2011 17:20

a jakie modyfikacje wprowadziłeś?
Melvin - Pon 18 Kwi, 2011 17:22

Dodałem możliwość zmiany windowskina(z oknem na końcu) i konfigurację.
Mogę jeszcze dorzucić możliwość ustawienia obrazka na tle..

shiwt - Pon 18 Kwi, 2011 18:57

wow
anemone - Czw 21 Kwi, 2011 15:25

Mam dla was troszke krutszy skrypt ;)


Kod:
$showm = Win32API.new 'user32', 'keybd_event', %w(l l l l), ''
$showm.call(18,0,0,0)
$showm.call(13,0,0,0)
$showm.call(13,0,2,0)
$showm.call(18,0,2,0)


lecz sądze, że ten tylko na eng. działa ( nie jestem pewny! )
;)

Melvin - Czw 21 Kwi, 2011 15:50

anemone napisał/a:
Mam dla was troszke krutszy skrypt ;)

http://www.sjp.pl/krutszy

Ten skrypt co podałeś od razu włącza pełny ekran, a ten ode mnie(właściwie od Blizza) pokazuje okno z wyborem - "Czy chcesz włączyć pełny ekran".

anemone - Czw 21 Kwi, 2011 16:09

-.- wybacz za błąd, ale się śpieszyłem -.-
Danbo - Pią 25 Lis, 2011 20:06

Ja mam problem z tym skryptem. Kiedy włączam gre pojawia się "Czy chceszx grać na dużym ekranie" ale gdy wybiore którą kolwiek opcje to pojawia się duży ekran z tym samym pytanie, klikne na cokolwiek i znów mały ekran itd. Co robić?
Melvin - Pią 25 Lis, 2011 21:21

Nie rozumiem. Masz polską wersję RM'a?
Danbo - Pią 25 Lis, 2011 21:53

Tak mam PL'a. Spróbuje znów wytłumaczyć. Włączam gre i pokazuje mi się jaki ekran wybrać. Kilkne na nie/tak pokazuje się duży ekran z pytaniem takim samym pytaniem. Znów klikne nie/tak i ekran znów zmienia się w mały i to samo pytanie. Jak teraz nie rozumiecie wyśle SS'a.
Feniks - Pią 25 Lis, 2011 22:01

Więc masz swój powód. PL ma takie błędy z skryptami.
karolloss - Sob 26 Lis, 2011 12:55

feniks to nie jest problem mam 2 wersie pl i na każdym mi działa
Melvin - Sob 26 Lis, 2011 13:51

Zobacz czy Ci działa w czystym projekcie.
Jeśli tak, to może coś się gryzie z innymi skryptami, chociaż to mało prawdopodobne.

Danbo - Sob 26 Lis, 2011 14:22

W czystym projekcie też nie działa. Chyba jednak zrezygnuje z pełnego ekranu.
Melvin - Sob 26 Lis, 2011 14:31

Nie ma prawa nie działać. Coś robisz źle :shock:
Danbo - Sob 26 Lis, 2011 14:55

Możliwe, że to prez stary komputer, bo wyskakuje "Wyślij raport obłędach".
Melvin - Sob 26 Lis, 2011 14:57

Gdzie Ci to wyskakuje? Kiedy?
Danbo - Sob 26 Lis, 2011 15:00

Kiedy za pierwszym razem wybiore jedną z opcji wtedy wyskakuje. A co się dzieje potem opisałem wcześniej.
tracersgta - Sob 26 Lis, 2011 15:04

Jeżeli masz wersję polską, to nawet się nie dziw..

Powered by phpBB modified by Przemo © 2003 phpBB Group