XP 스크립트

이실형이 만들었다네요....

 

5번째 줄과 6번째 줄을이용해 해상도를 조정할수있습니다.... ^^

 

유용히쓰세요 ^^

 

#====================바로밑줄부터복사=====================#

 

# Written by Squall (squall@loeher.znn.com)
# 할 일: 1. GetSystemMetrics 함수
#        2. ??

WINDOW_WIDTH = 1020
WINDOW_HEIGHT = 740
class Win32API
  GAME_INI_FILE = ".Game.ini"
  HWND_TOPMOST = 0
  HWND_TOP = -1
  SWP_NOMOVE = 0
  def Win32API.GetPrivateProfileString(section, key)
    val = "" * 256
    gps = Win32API.new("kernel32", "GetPrivateProfileString", ['P', 'P', 'P', 'P', 'L', 'P'], 'L')
    gps.call(section, key, '', val, 256, GAME_INI_FILE)
    val.delete!("")
    return val
  end
  def Win32API.FindWindow(class_name, title)
    fw = Win32API.new("user32", "FindWindow", ['P', 'P'], 'I')
    hwnd = fw.call(class_name, title)
    return hwnd
  end
  def Win32API.SetWindowPos(w, h)
    title = Win32API.GetPrivateProfileString("Game", "Title")
    hwnd = Win32API.FindWindow("RGSS Player", title)
    swp = Win32API.new("user32", "SetWindowPos", ['L', 'L', 'I', 'I', 'I', 'I', 'I'], 'I')
    win = swp.call(hwnd, HWND_TOP, 0, 0, w + 6, h + 32, 0)
#    win = swp.call(hwnd, HWND_TOPMOST, 0, 0, w + 6, h + 32, SWP_NOMOVE)
    return win
  end
end
$window_width = WINDOW_WIDTH
$window_height = WINDOW_HEIGHT
class Game_Map
  def scroll_down(distance)
    if $window_height / 32.0 < self.height - 1
      @display_y = [@display_y + distance, (self.height - ($window_height / 32.0)) * 128].min
    else
      @display_y = [@display_y + distance, (self.height - 15) * 128].min
    end
  end
  def scroll_left(distance)
    @display_x = [@display_x - distance, 0].max
  end
  def scroll_right(distance)
    if $window_width / 32.0 < self.width - 1
      @display_x = [@display_x + distance, (self.width - ($window_width / 32.0)) * 128].min
    else
      @display_x = [@display_x + distance, (self.width - 20) * 128].min
    end
  end
  def scroll_up(distance)
    @display_y = [@display_y - distance, 0].max
  end
end
class Game_Player < Game_Character
  CENTER_X = ($window_width / 2 - 16) * 4
  CENTER_Y = ($window_height / 2 - 16) * 4
end
class Spriteset_Map
  def initialize
    if $game_map.width >= 25 and $game_map.height >= 19
      $window_width2 = $window_width
      $window_height2 = $window_height
    elsif $game_map.width >= 25 and $game_map.height < 19
      $window_width2 = $window_width
      $window_height2 = 480
    elsif $game_map.width < 25 and $game_map.height >= 19
      $window_width2 = 640
      $window_height2 = $window_height
    elsif $game_map.width < 25 and $game_map.height < 19
      $window_width2 = 640
      $window_height2 = 480
    else
      $window_width2 = $window_width
      $window_height2 = $window_height
    end
    @viewport1 = Viewport.new(0, 0, $window_width2, $window_height2)
    @viewport2 = Viewport.new(0, 0, $window_width2, $window_height2)
    @viewport3 = Viewport.new(0, 0, $window_width2, $window_height2)
    @viewport4 = Viewport.new(640, 0, $window_width2 - 640, 480)
    @viewport5 = Viewport.new(0, 480, 640, $window_height2 - 480)
    @viewport6 = Viewport.new(640, 480, $window_width2 - 640, $window_height2 - 480)
    @viewport2.z = 200
    @viewport3.z = 5000
    @tilemap = Tilemap.new(@viewport2)
    @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
    for i in 0..6
      autotile_name = $game_map.autotile_names[i]
      @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
    end
    @tilemap.map_data = $game_map.data
    @tilemap.priorities = $game_map.priorities
    @panorama = Plane.new(@viewport2)
    @panorama.z = -1000
    @fog = Plane.new(@viewport2)
    @fog.z = 3000
    @character_sprites = []
    for i in $game_map.events.keys.sort
      sprite = Sprite_Character.new(@viewport2, $game_map.events[i])
      @character_sprites.push(sprite)
    end
    @character_sprites.push(Sprite_Character.new(@viewport2, $game_player))
    @weather = RPG::Weather.new(@viewport2)
    @picture_sprites = []
    for i in 1..50
      @picture_sprites.push(Sprite_Picture.new(@viewport2, $game_screen.pictures[i]))
    end
    @timer_sprite = Sprite_Timer.new
    @tilemap2 = Tilemap.new(@viewport4)
    @tilemap2.tileset = RPG::Cache.tileset($game_map.tileset_name)
    @tilemap3 = Tilemap.new(@viewport5)
    @tilemap3.tileset = RPG::Cache.tileset($game_map.tileset_name)
    @tilemap4 = Tilemap.new(@viewport6)
    @tilemap4.tileset = RPG::Cache.tileset($game_map.tileset_name)
    for i in 0..6
      autotile_name = $game_map.autotile_names[i]
      @tilemap2.autotiles[i] = RPG::Cache.autotile(autotile_name)
      @tilemap3.autotiles[i] = RPG::Cache.autotile(autotile_name)
      @tilemap4.autotiles[i] = RPG::Cache.autotile(autotile_name)
    end
    @tilemap2.map_data = $game_map.data
    @tilemap3.map_data = $game_map.data
    @tilemap4.map_data = $game_map.data
    update
  end
  def dispose
    @tilemap.tileset.dispose
    @tilemap2.tileset.dispose
    @tilemap3.tileset.dispose
    @tilemap4.tileset.dispose
    for i in 0..6
      @tilemap.autotiles[i].dispose
      @tilemap2.autotiles[i].dispose
      @tilemap3.autotiles[i].dispose
      @tilemap4.autotiles[i].dispose
    end
    @tilemap.dispose
    @tilemap2.dispose
    @tilemap3.dispose
    @tilemap4.dispose
    @panorama.dispose
    @fog.dispose
    for sprite in @character_sprites
      sprite.dispose
    end
    @weather.dispose
    for sprite in @picture_sprites
      sprite.dispose
    end
    @timer_sprite.dispose
    @viewport1.dispose
    @viewport2.dispose
    @viewport3.dispose
    @viewport4.dispose
    @viewport5.dispose
    @viewport6.dispose
  end
  def update
    if @panorama_name != $game_map.panorama_name or
       @panorama_hue != $game_map.panorama_hue
      @panorama_name = $game_map.panorama_name
      @panorama_hue = $game_map.panorama_hue
      if @panorama.bitmap != nil
        @panorama.bitmap.dispose
        @panorama.bitmap = nil
      end
      if @panorama_name != ""
        @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
      end
      Graphics.frame_reset
    end
    if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
      @fog_name = $game_map.fog_name
      @fog_hue = $game_map.fog_hue
      if @fog.bitmap != nil
        @fog.bitmap.dispose
        @fog.bitmap = nil
      end
      if @fog_name != ""
        @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
      end
      Graphics.frame_reset
    end
    @tilemap.ox = $game_map.display_x / 4
    @tilemap.oy = $game_map.display_y / 4
    @tilemap.update
    @tilemap2.ox = @tilemap.ox + 640
    @tilemap2.oy = @tilemap.oy
    @tilemap2.update
    @tilemap3.ox = @tilemap.ox
    @tilemap3.oy = @tilemap.oy + 480
    @tilemap3.update
    @tilemap4.ox = @tilemap.ox + 640
    @tilemap4.oy = @tilemap.oy + 480
    @tilemap4.update
    @panorama.ox = $game_map.display_x / 8
    @panorama.oy = $game_map.display_y / 8
    @fog.zoom_x = $game_map.fog_zoom / 100.0
    @fog.zoom_y = $game_map.fog_zoom / 100.0
    @fog.opacity = $game_map.fog_opacity
    @fog.blend_type = $game_map.fog_blend_type
    @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
    @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
    @fog.tone = $game_map.fog_tone
    for sprite in @character_sprites
      sprite.update
    end
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.ox = $game_map.display_x / 4
    @weather.oy = $game_map.display_y / 4
    @weather.update
    for sprite in @picture_sprites
      sprite.update
    end
    @timer_sprite.update
    @viewport3.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    @viewport3.color = $game_screen.flash_color
    @viewport1.update
    @viewport3.update
   
    win = Win32API.SetWindowPos($window_width, $window_height)
    if win == 0
      print("창 크기 변경에 실패하였습니다.")
      exit
    end
  end
end
#ㅇ이거 ㅗ좀 쩔드라 ㅋㅋㅋㅋㅋ뻉바밥ㅏㅂ뺴

 

#==========================위에까지복사=============================#

Comment '6'
  • ?
    피아노맨 2009.08.07 00:36
    괜찮은 스크립트네요 감사한데,, 이걸 적용하게되니깐 그림의 표시가 재대로 표시가 안되네요 ;; 왜그러죠;; 맵에 부분적으로 가려서나옵니다;
  • ?
    제로스S2 2009.08.07 13:19

    아... 그건 말이죠 ... 해상도에 따라 그림의 크기를 변환해주어야 하는데... ㅎㅎ

     

    좀 기찮은듯? ㅎ

  • ?
    누군가 2009.08.07 14:36

    아...엄청난 오류가.. 뜨네...

     

  • ?
    '알중_ 2009.08.08 14:19
    오류가 좀 많네요.. 좋은데..;
  • ?
    멋지다준기 2010.02.13 20:42

    귀찮군... 아

  • ?
    알피지에엑스피 2013.08.24 15:11
    감사해요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
1021 키입력 한글입력스크립트 16 file 아방스 2007.11.09 11823
1020 온라인 채팅 가능 온라인 스크립트 배포 107 file 아방스 2009.01.03 10680
1019 온라인 RPG 만들기 xp 온라인 스크립트 33 아방스 2007.11.09 9592
1018 맵/타일 [유니크급] RPG XP 게임을 3D화로 보자! Neo Mode7 script / 52 file 쉴더 2009.02.28 9442
1017 온라인 온라인 스크립트 Unis Net RMXP 공식 배포! 25 file 뮤바보 2011.12.25 9400
1016 온라인 광넷[ 광땡 온라인 + 넷플레이 ] 62 - 하늘 - 2009.08.02 9003
1015 전투 [액알]neo_a-rpg_module_1[1][1].2 스크립트 83 file 은빛바람 2009.10.03 8298
1014 이름입력 대화창에 얼굴, 이름 띄우기 37 킬라롯 2008.11.09 7496
1013 온라인 넷플레이1.7.0+abs5.5+한챗 49 쀍뛝쒧 2009.01.24 7286
1012 메뉴 메이플스토리처럼 메뉴를^^ 57 file 딸기님 2010.07.13 7141
1011 메시지 대화창에 얼굴 그래픽 띠우기 73 아방스 2007.11.09 7119
1010 스킬 ABP액알 v1.2 스킬추가, 버그수정판 36 file 백호 2009.02.22 6919
1009 전투 [신기술 체험] 강회된 횡스크롤 액알 13 file 백호 2009.02.22 6841
1008 메뉴 온라인메뉴처럼!! 메이플 메뉴처럼!! 변신~스크립트 33 WMN 2008.03.17 6816
1007 그래픽 화면을 부드럽게 해주는스크립트[ 아주 유용] 56 file - 하늘 - 2009.08.05 6561
1006 온라인 Mr.Metring NPE 1.0 [RPG XP 온라인 스크립트] 35 아방스 2009.01.07 6535
1005 이름입력 케릭터 위에 또는 NPC 위에 이름 뛰우기 [헬악이님 제공] 49 file 아방스 2007.11.09 6407
1004 액터 시트르산의 XP용 감정 말풍선 표시 스크립트 37 file 시트르산 2011.01.25 6110
1003 HUD 주인공,NPC이름 머리 나타내기 49 file 송긔 2010.11.28 6060
1002 전투 액알 스크립트 24 백호 2009.02.22 6013
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52