Чтобы использовать функцию, нужно закинуть файл blinkinstars.rpy в папку game проекта. В директории images должны быть star.png и bg_sky.jpg (либо свои файлы - всё настраивается). Можно указать регион, в котором появятся звезды (левый верхний и правый нижний углы), также можно указать количество звезд. Полученный файл можно использовать и в скрипте. Например, так: scene mmbg
# код файла blinkinstars.rpy init -2: # мерцание transform sblink(t=1.0, frm=.0, z=1.0): alpha frm*.5+.5 zoom z rotate renpy.random.randint(0, 360) linear t*.5*(1.0-frm) alpha 1.0 linear t*.5 alpha .5 linear t*.5*frm alpha frm*.5+.5 repeat init -1 python: # автоматическое объявление config.automatic_images_minimum_components = 1 config.automatic_images = [' ', '_', '/'] config.automatic_images_strip = ["images"] # в папке images должна лежать картинка star.png # функция, приклеивающая к фону несколько мерцающих звездочек def BlinkinStars(star_count=20, bg = "black", region=None, **properties): sw, sh = (config.screen_width, config.screen_height) if region is None: region = (0, 0, sw, sh) # регион, в пределах которого будут размещены звезды # (можно не задавать, тогда на весь экран) r0x, r0y, r1x, r1y = region # при необходимости добавляем фон if bg is None: data = [(sw, sh)] else: data = [(sw, sh), (0, 0), bg] # мерцающие (несинхронно!) звезды for i in range(star_count): frm = renpy.random.random() # начало мерцания stm = .5+renpy.random.random()*1.5 # время мерцания (0.5..2) # позиция y = renpy.random.randint(r0y, r1y) x = renpy.random.randint(r0x, r1x) szoom = renpy.random.random() # размер звездочки (0..1) # добавляем звездочку iname = "tmpimg" + str(i) renpy.image(iname, At("star", sblink(stm, frm, szoom))) data.extend([(x, y), iname]) return LiveComposite(*data) init: image mmbg = BlinkinStars(30, "bg sky") $ style.mm_root.background = "mmbg" $ style.gm_root.background = "mmbg"
Комментарии
Отправить комментарий