- Сообщений: 65
- Спасибо получено: 34
Разрешение игры
Вставить в раздел скриптов Main в начале фигурных скобок (перед имеющимся содержанием). Это если Ace. А вообще надо было сразу указывать мэйкер, потому что это от него зависит полностью.
Жуть болотная, на лапках, в тапках и с пулемётом...
Жуть болотная, на лапках, в тапках и с пулемётом...
DeadElf79 пишет: forum.chaos-project.com/index.php/topic,7814.0.html
Не сработало
Cerberus пишет: Официально (согласно справке) - нет, это максимум. Реально - см. Eokati (правда, она зашифрована, а если расшифровать - разрешение слетает, но можно спросить автора, как он это сделал).
Что такое Эокати и кто создатель? А то не вкурился технический топик...
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
В общем, для Асе есть две возможности увеличения разрешения.
Первый, это тупо взять вот этот скрипт www.himeworks.com/2013/10/25/unlimited-resolution/
Но, он имеет проблемы. Вроде как что-то там с панорамами, а может и нет, я не помню, давно его пробовал. Но это фигня, основная проблема, это вылеты игры, может так случиться что игра просто повиснет, а после появится сообщение о завершении роботы приложения или как-то так. Я не знаю с чем оно связано, но бывает, хотя если вы игру будете делать на ивентах с минимальным количеством остальных скриптов, то проблем, возможно, и не будет. Скрипт вроде как обновлялся со времен когда я его использовал, может сейчас он работает вполне себе отлично.
Второй, это тот который используется в Eokati, способ более радикальный, это взломанная и переделанная DLL RGSS от Esrever.
Собственно вот сама ДЛЛ yadi.sk/d/yrhtbzMYS4QzG
Не имеет проблем с вылетами, но 100% имеет проблемы с панорамой, для их устранения нужен фикс.
Фикс -
Этот фикс, своеобразная смесь куска скрипта Unlimited Resolution и фикса от Kraed-EX, выведенная мной. Так как только фикс от Kraed-EX, лечил только показ панорам, но их нельзя было крутить, а в этом варианте проблемы с панорамой отпадают полностью, ну по крайней мере у меня.
Установка всей этой богадельни такова. Закидываем ДЛЛ в папку систем игры и в Game.ini меняем RGSS301 на RGSS300. Потом закидываем фикс в пользовательские скрипты в самом редакторе. Естественно, при каждом сохранении проекта через редактор, Game.ini будет переписывать сам себя и менять RGSS300 обратно на RGSS301(не пытайтесь переименовывать саму ДЛЛ300 в ДЛЛ301, при сохранении она все равно заменится оригинальной ДЛЛ301 из папки мейкера), это лечится установлением флажка "только чтение" в свойствах Game.ini, но при каждом запуске редактора он будет снимать этот флажок, т.е. флажок "только чтение" нужно каждый раз устанавливать уже после запуска редактора. При запуске игры из ехе таких проблем нету, там никто никого не переписывает и не снимает, поэтому достаточно после завершения разработки установить флажок и забыть.
После выбора варианта, чтобы изменить разрешение в игре, где-нибудь в пользовательских скриптах пишите строку Graphics.resize_screen(ширина, высота), лучше выбирать разрешения с соотношением сторон 4:3, тогда игра будет нормально открываться в полноэкранном режиме, в других случаях могут быть черные полосы.
Естественно при изменении разрешения ждите падения фпс, поэтому не удивляйтесь, если вдруг ваша игра начнет тормозить, особенно в полноэкранном режиме.
Конец.
sinder пишет: Да что тут думать, лол. На другом форуме я это описывал. Вообще гугл вполне дает хорошие ответы поэтому вопросу, просто нужно немного почитать...
Второй, это тот который используется в Eokati, способ более радикальный, это взломанная и переделанная DLL RGSS от Esrever.
Собственно вот сама ДЛЛ yadi.sk/d/yrhtbzMYS4QzG
Не имеет проблем с вылетами, но 100% имеет проблемы с панорамой, для их устранения нужен фикс.
Фикс -ВНИМАНИЕ: Спойлер!Code:#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= # ▼ Plane # Author: Kread-EX # Version 1.01 # Release date: 08/01/2013 #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= #------------------------------------------------------------------------------ # ▼ UPDATES #------------------------------------------------------------------------------ # # 11/04/2013. Added compatibility with Yanfly's Parallax Lock. #------------------------------------------------------------------------------ # ▼ TERMS OF USAGE #------------------------------------------------------------------------------ # # You are free to adapt this work to suit your needs. # # You can use this work for commercial purposes if you like it. # # # # For support: # # grimoirecastle.wordpress.com # # rpgmakerweb.com #------------------------------------------------------------------------------ # ▼ INTRODUCTION #------------------------------------------------------------------------------ # # Rewrite the Plane class to work with Esrever's hacked DLL. Plug-and-play. #------------------------------------------------------------------------------ #============================================================================== # ■ Plane #============================================================================== class Plane #-------------------------------------------------------------------------- # ● Object initialize #-------------------------------------------------------------------------- def initialize(view = nil) @viewport = view @sprite = Sprite.new(@viewport) end #-------------------------------------------------------------------------- # ● Free #-------------------------------------------------------------------------- def dispose @sprite.dispose end #-------------------------------------------------------------------------- # ● Get freed #-------------------------------------------------------------------------- def disposed? @sprite.disposed? end #-------------------------------------------------------------------------- # ● Get visible #-------------------------------------------------------------------------- def visible @sprite.visible end #-------------------------------------------------------------------------- # ● Set visible #-------------------------------------------------------------------------- def visible=(value) @sprite.visible = value end #-------------------------------------------------------------------------- # ● Get zoom x #-------------------------------------------------------------------------- def zoom_x @sprite.zoom_x end #-------------------------------------------------------------------------- # ● Set zoom x #-------------------------------------------------------------------------- def zoom_x=(value) @sprite.zoom_x = value end #-------------------------------------------------------------------------- # ● Get zoom y #-------------------------------------------------------------------------- def zoom_y @sprite.zoom_y end #-------------------------------------------------------------------------- # ● Set zoom y #-------------------------------------------------------------------------- def zoom_y=(value) @sprite.zoom_y = value end #-------------------------------------------------------------------------- # ● Get opacity #-------------------------------------------------------------------------- def opacity @sprite.opacity end #-------------------------------------------------------------------------- # ● Set opacity #-------------------------------------------------------------------------- def opacity=(value) @sprite.opacity = value end #-------------------------------------------------------------------------- # ● Get blend type #-------------------------------------------------------------------------- def blend_type @sprite.blend_type end #-------------------------------------------------------------------------- # ● Set blend type #-------------------------------------------------------------------------- def blend_type=(value) @sprite.blend_type = value end #-------------------------------------------------------------------------- # ● Get color #-------------------------------------------------------------------------- def color @sprite.color end #-------------------------------------------------------------------------- # ● Set color #-------------------------------------------------------------------------- def color=(value) @sprite.color = value end #-------------------------------------------------------------------------- # ● Get tone #-------------------------------------------------------------------------- def tone @sprite.tone end #-------------------------------------------------------------------------- # ● Set tone #-------------------------------------------------------------------------- def tone=(value) @sprite.tone = value end #-------------------------------------------------------------------------- # ● Frame update #-------------------------------------------------------------------------- def update @sprite.update end #-------------------------------------------------------------------------- # ● Get viewport #-------------------------------------------------------------------------- def viewport @viewport end #-------------------------------------------------------------------------- # ● Set viewport #-------------------------------------------------------------------------- def viewport=(value) @viewport = value @sprite.viewport = viewport end #-------------------------------------------------------------------------- # ● Get bitmap #-------------------------------------------------------------------------- def bitmap @sprite.bitmap end #-------------------------------------------------------------------------- # ● Set bitmap #-------------------------------------------------------------------------- def bitmap=(value) if value.nil? @sprite.bitmap = value return end bw = @viewport ? @viewport.rect.width : Graphics.width bh = @viewport ? @viewport.rect.height : Graphics.height if SceneManager.scene.is_a?(Scene_Map) #&& $game_map.parallax_tile_lock? bw = $game_map.width * 32 bh = $game_map.height * 32 end rw = bw.fdiv(value.width).ceil rh = bh.fdiv(value.height).ceil new_bmp = Bitmap.new(bw, bh) 0.upto(rw).each do |x| 0.upto(rh).each do |y| new_bmp.blt(x * value.width, y * value.height, value, value.rect) end end @sprite.bitmap = new_bmp end #-------------------------------------------------------------------------- # ● Get ox #-------------------------------------------------------------------------- def ox @sprite.ox end #-------------------------------------------------------------------------- # ● Set ox #-------------------------------------------------------------------------- def ox=(nox) @sprite.ox = nox end #-------------------------------------------------------------------------- # ● Get oy #-------------------------------------------------------------------------- def oy @sprite.oy end #-------------------------------------------------------------------------- # ● Set oy #-------------------------------------------------------------------------- def oy=(noy) @sprite.oy = noy end #-------------------------------------------------------------------------- # ● Get z #-------------------------------------------------------------------------- def z @sprite.z end #-------------------------------------------------------------------------- # ● Set z #-------------------------------------------------------------------------- def z=(z) @sprite.z = z end end ##### PLANE FIX ##### #------------------------------------------------------------------------------- # FenixFyre's custom Plane, simply drawing a sprite. Needs to do something about # the y-axis #------------------------------------------------------------------------------- class Plane attr_reader :ox, :oy alias :th_unlimited_resolution_initialize :initialize def initialize(viewport = nil) th_unlimited_resolution_initialize(viewport) @sprite = Sprite.new(viewport) @bitmap = nil @ox = 0 @oy = 0 end alias :th_unlimited_resolution_dispose :dispose def dispose th_unlimited_resolution_dispose @sprite.dispose if @sprite @sprite = nil end def method_missing(symbol, *args) @sprite.method(symbol).call(*args) end def bitmap=(bitmap) @bitmap = bitmap refresh end def bitmap @sprite.bitmap end def ox=(ox) w = @sprite.viewport != nil ? @sprite.viewport.rect.width : Graphics.width @ox = ox % w @sprite.ox = @ox end def oy=(oy) h = @sprite.viewport != nil ? @sprite.viewport.rect.height : Graphics.height @oy = oy % h @sprite.oy = @oy end def refresh return if @bitmap.nil? w = @sprite.viewport != nil ? @sprite.viewport.rect.width : Graphics.width h = @sprite.viewport != nil ? @sprite.viewport.rect.height : Graphics.height if @sprite.bitmap != nil @sprite.bitmap.dispose end @sprite.bitmap = Bitmap.new(w * 2, h * 2) max_x = w / @bitmap.width max_y = h / @bitmap.height for x in 0..max_x for y in 0..max_y @sprite.bitmap.blt(x * @bitmap.width, y * @bitmap.height, @bitmap, Rect.new(0, 0, @bitmap.width, @bitmap.height)) end end for i in 1...4 x = i % 2 * w y = i / 2 * h @sprite.bitmap.blt(x, y, @sprite.bitmap, Rect.new(0, 0, w, h)) end end end
Этот фикс, своеобразная смесь куска скрипта Unlimited Resolution и фикса от Kraed-EX, выведенная мной. Так как только фикс от Kraed-EX, лечил только показ панорам, но их нельзя было крутить, а в этом варианте проблемы с панорамой отпадают полностью, ну по крайней мере у меня.
Установка всей этой богадельни такова. Закидываем ДЛЛ в папку систем игры и в Game.ini меняем RGSS301 на RGSS300. Потом закидываем фикс в пользовательские скрипты в самом редакторе. Естественно, при каждом сохранении проекта через редактор, Game.ini будет переписывать сам себя и менять RGSS300 обратно на RGSS301(не пытайтесь переименовывать саму ДЛЛ300 в ДЛЛ301, при сохранении она все равно заменится оригинальной ДЛЛ301 из папки мейкера)
После выбора варианта, чтобы изменить разрешение в игре, где-нибудь в пользовательских скриптах пишите строку Graphics.resize_screen(ширина, высота), лучше выбирать разрешения с соотношением сторон 4:3, тогда игра будет нормально открываться в полноэкранном режиме, в других случаях могут быть черные полосы.
Естественно при изменении разрешения ждите падения фпс, поэтому не удивляйтесь, если вдруг ваша игра начнет тормозить, особенно в полноэкранном режиме.
Конец.
Спасибо за фикс. Саму ДЛЛ я уже нашел совершенно самостоятельно (создатель Эокати повесил мне лапшу на уши, что дескать ДЛЛ называется кернел32) и все сделал.
С панорамами еще не пробовал вообще - хорошо, что ты фикс дал.
Тормозов (1024*768) не обнаружено ни малейших.
Полет нормальный.
Да, кстати. Я заменил ДЛЛку не в игре, а прямо в мейкере, заменив 0 на 1. Так что оригинальная ДЛЛ у меня только в бекапе - как результат, никаких проблем с рид-онли.
И вопрос к создателю сего чуда. Можно ли как-то сделать внутри игры изменяемое разрешение по выбору опции?
Ну тут того, кто переделывал эту длл и нету)И вопрос к создателю сего чуда. Можно ли как-то сделать внутри игры изменяемое разрешение по выбору опции?
А так можно, все та же строка Graphics.resize_screen(ширина, высота) просто ее нужно пихнуть туда где этот выбор будет осуществятся. Соответственно нужен еще скрипт, с какими-нибудь опциями в которые можно пихать свои пункты, по идее янфлаевский должен подойти yanflychannel.wordpress.com/rmvxa/menu-scripts/system-options/
Ну или можно просто в ивенты пихать, достаточно вставить команду "выполнить скрипт" и туда строку.
greyf24 пишет:
ВНИМАНИЕ: Спойлер!sinder пишет: Да что тут думать, лол. На другом форуме я это описывал. Вообще гугл вполне дает хорошие ответы поэтому вопросу, просто нужно немного почитать...
Второй, это тот который используется в Eokati, способ более радикальный, это взломанная и переделанная DLL RGSS от Esrever.
Собственно вот сама ДЛЛ yadi.sk/d/yrhtbzMYS4QzG
Не имеет проблем с вылетами, но 100% имеет проблемы с панорамой, для их устранения нужен фикс.
Фикс -ВНИМАНИЕ: Спойлер!Code:#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= # ▼ Plane # Author: Kread-EX # Version 1.01 # Release date: 08/01/2013 #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= #------------------------------------------------------------------------------ # ▼ UPDATES #------------------------------------------------------------------------------ # # 11/04/2013. Added compatibility with Yanfly's Parallax Lock. #------------------------------------------------------------------------------ # ▼ TERMS OF USAGE #------------------------------------------------------------------------------ # # You are free to adapt this work to suit your needs. # # You can use this work for commercial purposes if you like it. # # # # For support: # # grimoirecastle.wordpress.com # # rpgmakerweb.com #------------------------------------------------------------------------------ # ▼ INTRODUCTION #------------------------------------------------------------------------------ # # Rewrite the Plane class to work with Esrever's hacked DLL. Plug-and-play. #------------------------------------------------------------------------------ #============================================================================== # ■ Plane #============================================================================== class Plane #-------------------------------------------------------------------------- # ● Object initialize #-------------------------------------------------------------------------- def initialize(view = nil) @viewport = view @sprite = Sprite.new(@viewport) end #-------------------------------------------------------------------------- # ● Free #-------------------------------------------------------------------------- def dispose @sprite.dispose end #-------------------------------------------------------------------------- # ● Get freed #-------------------------------------------------------------------------- def disposed? @sprite.disposed? end #-------------------------------------------------------------------------- # ● Get visible #-------------------------------------------------------------------------- def visible @sprite.visible end #-------------------------------------------------------------------------- # ● Set visible #-------------------------------------------------------------------------- def visible=(value) @sprite.visible = value end #-------------------------------------------------------------------------- # ● Get zoom x #-------------------------------------------------------------------------- def zoom_x @sprite.zoom_x end #-------------------------------------------------------------------------- # ● Set zoom x #-------------------------------------------------------------------------- def zoom_x=(value) @sprite.zoom_x = value end #-------------------------------------------------------------------------- # ● Get zoom y #-------------------------------------------------------------------------- def zoom_y @sprite.zoom_y end #-------------------------------------------------------------------------- # ● Set zoom y #-------------------------------------------------------------------------- def zoom_y=(value) @sprite.zoom_y = value end #-------------------------------------------------------------------------- # ● Get opacity #-------------------------------------------------------------------------- def opacity @sprite.opacity end #-------------------------------------------------------------------------- # ● Set opacity #-------------------------------------------------------------------------- def opacity=(value) @sprite.opacity = value end #-------------------------------------------------------------------------- # ● Get blend type #-------------------------------------------------------------------------- def blend_type @sprite.blend_type end #-------------------------------------------------------------------------- # ● Set blend type #-------------------------------------------------------------------------- def blend_type=(value) @sprite.blend_type = value end #-------------------------------------------------------------------------- # ● Get color #-------------------------------------------------------------------------- def color @sprite.color end #-------------------------------------------------------------------------- # ● Set color #-------------------------------------------------------------------------- def color=(value) @sprite.color = value end #-------------------------------------------------------------------------- # ● Get tone #-------------------------------------------------------------------------- def tone @sprite.tone end #-------------------------------------------------------------------------- # ● Set tone #-------------------------------------------------------------------------- def tone=(value) @sprite.tone = value end #-------------------------------------------------------------------------- # ● Frame update #-------------------------------------------------------------------------- def update @sprite.update end #-------------------------------------------------------------------------- # ● Get viewport #-------------------------------------------------------------------------- def viewport @viewport end #-------------------------------------------------------------------------- # ● Set viewport #-------------------------------------------------------------------------- def viewport=(value) @viewport = value @sprite.viewport = viewport end #-------------------------------------------------------------------------- # ● Get bitmap #-------------------------------------------------------------------------- def bitmap @sprite.bitmap end #-------------------------------------------------------------------------- # ● Set bitmap #-------------------------------------------------------------------------- def bitmap=(value) if value.nil? @sprite.bitmap = value return end bw = @viewport ? @viewport.rect.width : Graphics.width bh = @viewport ? @viewport.rect.height : Graphics.height if SceneManager.scene.is_a?(Scene_Map) #&& $game_map.parallax_tile_lock? bw = $game_map.width * 32 bh = $game_map.height * 32 end rw = bw.fdiv(value.width).ceil rh = bh.fdiv(value.height).ceil new_bmp = Bitmap.new(bw, bh) 0.upto(rw).each do |x| 0.upto(rh).each do |y| new_bmp.blt(x * value.width, y * value.height, value, value.rect) end end @sprite.bitmap = new_bmp end #-------------------------------------------------------------------------- # ● Get ox #-------------------------------------------------------------------------- def ox @sprite.ox end #-------------------------------------------------------------------------- # ● Set ox #-------------------------------------------------------------------------- def ox=(nox) @sprite.ox = nox end #-------------------------------------------------------------------------- # ● Get oy #-------------------------------------------------------------------------- def oy @sprite.oy end #-------------------------------------------------------------------------- # ● Set oy #-------------------------------------------------------------------------- def oy=(noy) @sprite.oy = noy end #-------------------------------------------------------------------------- # ● Get z #-------------------------------------------------------------------------- def z @sprite.z end #-------------------------------------------------------------------------- # ● Set z #-------------------------------------------------------------------------- def z=(z) @sprite.z = z end end ##### PLANE FIX ##### #------------------------------------------------------------------------------- # FenixFyre's custom Plane, simply drawing a sprite. Needs to do something about # the y-axis #------------------------------------------------------------------------------- class Plane attr_reader :ox, :oy alias :th_unlimited_resolution_initialize :initialize def initialize(viewport = nil) th_unlimited_resolution_initialize(viewport) @sprite = Sprite.new(viewport) @bitmap = nil @ox = 0 @oy = 0 end alias :th_unlimited_resolution_dispose :dispose def dispose th_unlimited_resolution_dispose @sprite.dispose if @sprite @sprite = nil end def method_missing(symbol, *args) @sprite.method(symbol).call(*args) end def bitmap=(bitmap) @bitmap = bitmap refresh end def bitmap @sprite.bitmap end def ox=(ox) w = @sprite.viewport != nil ? @sprite.viewport.rect.width : Graphics.width @ox = ox % w @sprite.ox = @ox end def oy=(oy) h = @sprite.viewport != nil ? @sprite.viewport.rect.height : Graphics.height @oy = oy % h @sprite.oy = @oy end def refresh return if @bitmap.nil? w = @sprite.viewport != nil ? @sprite.viewport.rect.width : Graphics.width h = @sprite.viewport != nil ? @sprite.viewport.rect.height : Graphics.height if @sprite.bitmap != nil @sprite.bitmap.dispose end @sprite.bitmap = Bitmap.new(w * 2, h * 2) max_x = w / @bitmap.width max_y = h / @bitmap.height for x in 0..max_x for y in 0..max_y @sprite.bitmap.blt(x * @bitmap.width, y * @bitmap.height, @bitmap, Rect.new(0, 0, @bitmap.width, @bitmap.height)) end end for i in 1...4 x = i % 2 * w y = i / 2 * h @sprite.bitmap.blt(x, y, @sprite.bitmap, Rect.new(0, 0, w, h)) end end end
Этот фикс, своеобразная смесь куска скрипта Unlimited Resolution и фикса от Kraed-EX, выведенная мной. Так как только фикс от Kraed-EX, лечил только показ панорам, но их нельзя было крутить, а в этом варианте проблемы с панорамой отпадают полностью, ну по крайней мере у меня.
Установка всей этой богадельни такова. Закидываем ДЛЛ в папку систем игры и в Game.ini меняем RGSS301 на RGSS300. Потом закидываем фикс в пользовательские скрипты в самом редакторе. Естественно, при каждом сохранении проекта через редактор, Game.ini будет переписывать сам себя и менять RGSS300 обратно на RGSS301(не пытайтесь переименовывать саму ДЛЛ300 в ДЛЛ301, при сохранении она все равно заменится оригинальной ДЛЛ301 из папки мейкера)
После выбора варианта, чтобы изменить разрешение в игре, где-нибудь в пользовательских скриптах пишите строку Graphics.resize_screen(ширина, высота), лучше выбирать разрешения с соотношением сторон 4:3, тогда игра будет нормально открываться в полноэкранном режиме, в других случаях могут быть черные полосы.
Естественно при изменении разрешения ждите падения фпс, поэтому не удивляйтесь, если вдруг ваша игра начнет тормозить, особенно в полноэкранном режиме.
Конец.
Спасибо за фикс. Саму ДЛЛ я уже нашел совершенно самостоятельно (создатель Эокати повесил мне лапшу на уши, что дескать ДЛЛ называется кернел32) и все сделал.
С панорамами еще не пробовал вообще - хорошо, что ты фикс дал.
Тормозов (1024*768) не обнаружено ни малейших.
Полет нормальный.
Да, кстати. Я заменил ДЛЛку не в игре, а прямо в мейкере, заменив 0 на 1. Так что оригинальная ДЛЛ у меня только в бекапе - как результат, никаких проблем с рид-онли.
И вопрос к создателю сего чуда. Можно ли как-то сделать внутри игры изменяемое разрешение по выбору опции?
Никто тебе макаронные изделия не предлагал. Я с самого начала сказал что нужен Dll от Esrever (а какой именно не помнил). Sinder все правильно расписал (у него лучше с русским чем у меня).
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Dethrone пишет: Никто тебе макаронные изделия не предлагал. Я с самого начала сказал что нужен Dll от Esrever (а какой именно не помнил). Sinder все правильно расписал (у него лучше с русским чем у меня).
То есть, у тебя в игре лежит эта ДЛЛ-ка, ты не помнишь ее названия, и простая мысль "возьми ДЛЛ из моей игры" тебя не посетила? Я не хочу показаться грубым, но у тебя, мне кажется, проблемы не только с русским языком и памятью.
Возможно, я со своими 146 IQ склонен завышать умственные способности среднестатистического человека, но мне кажется, что додуматься сказать "я не помню как называется, просто возьми ее из папки с моей игрой" мог бы и человек с очень средненькой сообразительностью.
Десу.
Жуть болотная, на лапках, в тапках и с пулемётом...
