Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Веб-браузер в игре

Веб-браузер в игре 9 года 6 мес. назад #80702

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • 3 местоОрганизатор конкурсовПрограммист RubyПроект месяца 1 местоУчительПроект месяца 2 местоПисатель 3 место1 место в ГотвВетеран
Веб-браузер в игре

Автор: Soulpour777
Переводчик: DeadElf79
Оригинал скрипта: infinitytears.wordpress.com/2015/04/19/r...-ace-browser-system/

Описание:
Добавляет возможность вызвать браузер, встроенный в игру. Внимание: может сильно тормозить, не имеет адресной строки и я не нашёл выхода оттуда.

Код:
#==============================================================================
# ** RPG Maker VXAce Browser System
# Автор: Soulpour777
# Переводчик: DeadElf79
#------------------------------------------------------------------------------
# Описание: скрипт вызывает динамическую библиотеку (DLL), при помощи
# которой вставляет в окно приложения веб-браузер (можно использовать мышь!).
#------------------------------------------------------------------------------
# Требования: cwebpage.dll (лежит в папке System в корне проекта)
#------------------------------------------------------------------------------
# Инструкции для установки:
# Поместите файл cwebpage.dll в папку System в корне проекта (там же лежит RGSS301.DLL)
# Установите скрипт как обычно (над Main)
# Вы можете поменять некоторые части скрипта, если не хотите добавлять
# вызов браузера в титульном экране.
#------------------------------------------------------------------------------
# Вызов скрипта из события:
# RMVXAB.browser(ВСТАВЬТЕ СЮДА ПОЛНЫЙ АДРЕС В КАВЫЧКАХ!)
# Пример:
# RMVXAB.browser("http://www.rpg-maker.info/")
#------------------------------------------------------------------------------
# Настройки для титульного экрана:
# SITE_TO_BROWSE = "http://www.rpg-maker.info/"
# Вы можете поменять их на адрес Вашего сайта
#==============================================================================
 
module Soul
  module Title
 
    # Title Extra Command Name
    BROWSER_CALL_NAME = "Зайти на сайт"
 
    # Title Commands
    COMMANDS = [
      :new_game,
      :continue,
      :visit_website,
      :shutdown
    ] 
  end
 
  module Browser
 
    # Site to browse. This is the home page. You can use Google.com if you
    # want.
    SITE_TO_BROWSE = "http://www.rpg-maker.info/"
    wdll="System/cwebpage.dll"
 
    GPPS = Win32API.new('kernel32', 'GetPrivateProfileString', 'pppplp', 'l')
    FW   = Win32API.new('user32',   'FindWindow',              'pp',     'i')
    SWL  = Win32API.new('user32',   'SetWindowLong',           'lll',    'l')
    GCR  = Win32API.new('user32',   'GetClientRect',           'lp',     'i')
    GAKS = Win32API.new('user32',   'GetAsyncKeyState',        'i',      'i')
    EBO  = Win32API.new(wdll,       'EmbedBrowserObject',      'l',      'i')
    DHP  = Win32API.new(wdll,       'DisplayHTMLPage',         'lp',     'i')
    RB   = Win32API.new(wdll,       'ResizeBrowser',           'lll',    'i')
    UEBO = Win32API.new(wdll,       'UnEmbedBrowserObject',    'l',      'l')
    DPA  = Win32API.new(wdll,       'DoPageAction',            'll',     'l')
  end
end
 
module RMVXAB
  def self.browser(url)
    Soul::Browser::EBO.call(handle)
    Soul::Browser::DHP.call(handle,url)
    Soul::Browser::RB.call(handle,*dimensions)
    loop do
      break if Soul::Browser::GAKS.call(0x1b)&0x01==1
      Soul::Browser::DPA.call(handle,0)if Soul::Browser::GAKS.call(0x08)&0x01==1
      Soul::Browser::DPA.call(handle,4)if Soul::Browser::GAKS.call(0x74)&0x01==1
      Soul::Browser::RB.call(handle,*dimensions)
    end
    Soul::Browser::UEBO.call(handle)
  end
end
 
def handle
  Soul::Browser::GPPS.call("Game","Title","",title="\0"*256,256,".//Game.ini")
  Soul::Browser::FW.call("RGSS Player",title.delete!("\0"))
end
 
def dimensions
  Soul::Browser::GCR.call(handle,rect=[0,0,0,0].pack('l4'))
  rect.unpack('l4')[2..3]
end
 
class Window_TitleCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Create Command List
  #--------------------------------------------------------------------------
  def make_command_list
    for command in Soul::Title::COMMANDS
    case command
      when :new_game
        add_command(Vocab::new_game, :new_game)
      when :continue
        add_command(Vocab::continue, :continue, continue_enabled)
      when :visit_website
        add_command(Soul::Title::BROWSER_CALL_NAME, :visit_website)
      when :shutdown
        add_command(Vocab::shutdown, :shutdown)   
      end
    end
  end
end
 
class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_TitleCommand.new
    @command_window.set_handler(:new_game, method(:command_new_game))
    @command_window.set_handler(:continue, method(:command_continue))
    @command_window.set_handler(:visit_website, method(:command_browser))
    @command_window.set_handler(:shutdown, method(:command_shutdown))
  end
  #--------------------------------------------------------------------------
  # * command_browser : new method
  #--------------------------------------------------------------------------
  def command_browser
    RMVXAB.browser(Soul::Browser::SITE_TO_BROWSE)
  end
end

Скриншот:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Демо: cloud.mail.ru/public/5Evz4Ls8bXBD/WebBrowser.zip
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Ren310, strelokhalfer

Веб-браузер в игре 9 года 6 мес. назад #80703

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • ПереводчикДаритель Стимкея2 место Организатор конкурсовПрограммист Ruby2 место Сбитая кодировка
Я вот вспомнил, видел проект с прикрученным хромиумом, надо поискать.
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79

Веб-браузер в игре 9 года 6 мес. назад #80706

  • Green-Leo
  • Green-Leo аватар
  • Вне сайта
  • Архитектор Миров
  • Зелёный
  • Сообщений: 1182
  • Спасибо получено: 1165
  • ВетеранОраторПроект месяца 2 место
Единственная мысль глядя на это всё:

Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, DeadElf79, strelokhalfer, Yros, TheMaximGames, Iren_Rin, Rude, peter8031983
Модераторы: NeKotZima
Время создания страницы: 0.254 секунд