Počasí

Skripty pro RPG Makeru XP (nekompatibilní s verzemi VX).

Moderátor: Moderátoři

Uživatelský avatar
 
Příspěvky: 1416
Registrován: červen 13, 2007, 11:05 am
Bydliště: Brno, snad někde na kopečku.

Počasí

Příspěvek od Grim » říjen 8, 2008, 6:20 pm

Tohle jsem našel při průzkumu helpu v XP.
Dát nad Main a napsat např Počasí.
Kód: Vybrat vše
module RPG
  class Weather
    def initialize(viewport = nil)
      @type = 0
      @max = 0
      @ox = 0
      @oy = 0
      #nstavení barev
      color1 = Color.new(255, 255, 255, 255)
      color2 = Color.new(255, 255, 255, 128)
      @rain_bitmap = Bitmap.new(7, 56)
      for i in 0..6
        @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
      end
    #velikost bouřky
      @storm_bitmap = Bitmap.new(34, 64)
      for i in 0..31
        @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
        @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
        @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
      end
     #velikost sněhového pole
      @snow_bitmap = Bitmap.new(6, 6)
      @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
      @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
      @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
      @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
      @sprites = []
      for i in 1..40
        sprite = Sprite.new(viewport)
        sprite.z = 1000
        sprite.visible = false
        sprite.opacity = 0
        @sprites.push(sprite)
      end
    end
    def dispose
      for sprite in @sprites
        sprite.dispose
      end
      @rain_bitmap.dispose
      @storm_bitmap.dispose
      @snow_bitmap.dispose
    end
    def type=(type)
      return if @type == type
      @type = type
      case @type
      when 1
        bitmap = @rain_bitmap
      when 2
        bitmap = @storm_bitmap
      when 3
        bitmap = @snow_bitmap
      else
        bitmap = nil
      end
      for i in 1..40
        sprite = @sprites[i]
        if sprite != nil
          sprite.visible = (i <= @max)
          sprite.bitmap = bitmap
        end
      end
    end
    def ox=(ox)
      return if @ox == ox;
      @ox = ox
      for sprite in @sprites
        sprite.ox = @ox
      end
    end
    def oy=(oy)
      return if @oy == oy;
      @oy = oy
      for sprite in @sprites
        sprite.oy = @oy
      end
    end
    def max=(max)
      return if @max == max;
      @max = [[max, 0].max, 40].min
      for i in 1..40
        sprite = @sprites[i]
        if sprite != nil
          sprite.visible = (i <= @max)
        end
      end
    end
    def update
      return if @type == 0
      for i in 1..@max
        sprite = @sprites[i]
        if sprite == nil
          break
        end
        if @type == 1
          sprite.x -= 2
          sprite.y += 16
          sprite.opacity -= 8
        end
        if @type == 2
          sprite.x -= 8
          sprite.y += 16
          sprite.opacity -= 12
        end
        if @type == 3
          sprite.x -= 2
          sprite.y += 8
          sprite.opacity -= 8
        end
        x = sprite.x - @ox
        y = sprite.y - @oy
        if sprite.opacity < 64 or x <50> 750 or y <300> 500
          sprite.x = rand(800) - 50 + @ox
          sprite.y = rand(800) - 200 + @oy
          sprite.opacity = 255
        end
      end
    end
    attr_reader :type
    attr_reader :max
    attr_reader :ox
    attr_reader :oy
  end
end


Je to script na nastavení počasí ve hře.
@rain_bitmap.fill_rect(6-i, i*8, 1(a), 8(b), color1) tímto se nastavuje déšť.a nastavuje šířku a b délku děštové částice, toto @rain_bitmap = Bitmap.new(7, 56) nastavuje délku deště jako takového.
Obrázek

Uživatelský avatar
 
Příspěvky: 852
Registrován: říjen 30, 2007, 2:56 pm
Bydliště: Pardubický kraj

Příspěvek od Lukaaash » říjen 9, 2008, 9:26 am

myslíš, že by to šlo i do vx-ka?
ObrázekObrázek Obrázek

Uživatelský avatar
 
Příspěvky: 1416
Registrován: červen 13, 2007, 11:05 am
Bydliště: Brno, snad někde na kopečku.

Příspěvek od Grim » říjen 9, 2008, 10:57 am

Uz to tam je udelany v Spriteset_Weather uplne stejne jako v XP. :twisted:
Obrázek

Uživatelský avatar
 
Příspěvky: 852
Registrován: říjen 30, 2007, 2:56 pm
Bydliště: Pardubický kraj

Příspěvek od Lukaaash » říjen 9, 2008, 5:01 pm

jj, a jak se to jako má použít, jsem to nepochopil...

EDIT: jo, už to vim, v eventu se dá nastavit...
ObrázekObrázek Obrázek


Zpět na Skripty pro RPG Maker XP

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 4 návštevníků