Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zmienne środowisko - wersja rozbudowana by Qentinios


Rekomendowane odpowiedzi

Opublikowano

Cześć, zostało mi na dysku, a raczej już mi się nie przyda, dziś udostępnię oryginalny skrypt zmiennego środowiska z Resthey. To moja największa modyfikacja w pythonie do tej pory.

 

Opis tego co zawiera:

  • możliwość dodania do 16777215 obszarów z innym środowiskiem (chmury, niebo, poświata, itp) na jednej mapie
  • możliwość dodania osobnej muzyki na każdym z tych obszarów
  • możliwość dodania losowego śniegu na wybranych obszarach
  • aż 28 gotowych skyboxów
  • możliwość wyboru jakości skyboxów z myślą o słabszych komputerach
  • możliwość wyboru co ile sekund skrypt będzie aktualizował środowisko
  • możliwość dodania specjalnej konfiguracji w okresie świątecznym
  • łatwa konfiguracja w pliku
  • stosunkowo prosty kod do zedytowania pod siebie
  • bugfix aby system nie kolidował z nocą i śniegiem aktywowanym za pomocą komendy

Wady:

  • Nie do końca zoptymalizowane rozwiązanie
  • Format grafik .jpg prowadzi do powstawania na granicy obszarów odcieni pośrednich, które mogą nieco przeszkadzać
  • Brak systemu pór dnia, którego nie chciało mi się już dodawać
  • Nie uwzględnia muzyki świątecznej, której również nie chciało mi się już dodawać
  • Nie testowałem wersji którą dziś Wam daję, ale powinna działać :D
  • Dużo zbędnych libów, bo uploadowałem cały folder a system wykorzystuje kilka, kilkanaście, ale nie mam czasu wyciągać tylko tych niezbędnych.

 

Screeny:

 

kfb0ws.jpg

 

lg9ld9.jpg

 

oaw548.jpg

 

dn446z.jpg

 

lvxx4p.jpg

 

Przykładowy kod:

    def __SpecialEnvironmentEnable(self, Env, Resthea, SnowEnable, NightEnable, ConfigTime, ConfigSkybox, XmasEvent):
        ### START OF ENVIRONMENT MODULE Resthea.eu, qentinios
        self.Env = Env
        self.Resthea = Resthea
        self.SnowEnable = SnowEnable
        self.NightEnable = NightEnable
        self.ConfigTime = ConfigTime
        self.ConfigSkybox = ConfigSkybox
        self.XmasEvent = XmasEvent
        czass = str(time.ctime())
        sekundy = czass[17:19]
        bg = background.GetCurrentMapName()
 
        if ConfigTime == 0:
            try:
                ConfigTime = int(linecache.getline("config.cfg", 2))
            except:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "Error while changing environment")
                chat.AppendChat(chat.CHAT_TYPE_INFO, "Cannot open file: config.cfg")
 
        if ConfigTime == -1:
            return
 
        map = ( "metin2_map_4_wiatry",
                "metin2_map_krance_swiata",
                "metin2_map_srodziemie",
                "metin2_map_resthea", )
 
        if bg in map and sekundy != Env:
            if ConfigTime == 5 and int(sekundy) in (5,10,15,20,25,30,35,40,45,50,55,00):
                self.Env = sekundy
                pass
            elif ConfigTime == 15 and int(sekundy) in (15,30,45,00):
                self.Env = sekundy
                pass
            elif ConfigTime == 30 and int(sekundy) in (30,00):
                self.Env = sekundy
                pass
            elif ConfigTime == 60 and int(sekundy) == 30:
                pass
            else:
                if ConfigTime not in (-1,5,15,30,60) and int(sekundy) == 30:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, "Error while changing environment")
                    chat.AppendChat(chat.CHAT_TYPE_INFO, "Wrong data: " + ConfigTime + ", config.cfg, line 2")
                    self.Env = sekundy
                return
        else:
            return
 
        minuty = czass[14:16]
        godziny = czass[11:13]
        czas = int(godziny + minuty)
 
        try:
            im = Image.open("msenv/" + bg + ".jpg")
        except:
            chat.AppendChat(chat.CHAT_TYPE_INFO, "Error while changing environment")
            chat.AppendChat(chat.CHAT_TYPE_INFO, "Cannot open file: " + "msenv/" + bg + ".jpg")
            return
 
        (x, y, z) = player.GetMainCharacterPosition() 
        x = int(x/100)
        y = int(y/100)
 
        try:
            color = str(im.getpixel((int(x),int(y))))
        except:
            chat.AppendChat(chat.CHAT_TYPE_INFO, "Error while changing environment")
            chat.AppendChat(chat.CHAT_TYPE_INFO, "Not exist pixel: " + str(x) + ", " + str(y) + "; " + "msenv/" + bg + ".jpg")
            return
 
        #Skybox config
        if ConfigSkybox == "0":
            try:
                ConfigSkybox = linecache.getline("config.cfg", 5)
 
            except:
                ConfigSkybox = "_1k"
                
            if ConfigSkybox in ("_512\n","_1k\n","_1.5k\n"):
                ConfigSkybox = ConfigSkybox[:-1]
 
            if ConfigSkybox not in ("_512","_1k","_1.5k"):
                ConfigSkybox = "_1k"
        #End of skybox config
        
        #Xmas event
        if XmasEvent == -1:
            try:
                XmasEvent = int(linecache.getline("config.cfg", 8))
 
            except:
                XmasEvent = 0
 
        if XmasEvent == 1:
            ColorList={
                #Color (RGB)
                1 : ("(255, 255, 255)", "(241, 255, 158)", "(254, 0, 0)", "(0, 255, 127)", "(158, 255, 248)", "(253, 254, 62)", "(255, 176, 63)", "(222, 255, 0)", "(95, 255, 0)", "(50, 121, 19)", "(95, 192, 35)", "(214, 214, 214)", "(148, 0, 0)", "(142, 142, 142)", "(251, 165, 0)"),
                #Msenv
                2 : ("snowm02", "map_n_desert_01", "fire_low", "white_sky", "default", "rainy", "sand_mountain", "vanilia_white", "trent", "trent02", "vanilia", "snowm02", "fire_low", "default", "desert_cloud"),
                #Mp3
                3 : ("christmas/4w/xmas", "christmas/4w/xmas", "christmas/4w/xmas", "christmas/4w/xmas", "christmas/4w/xmas", "christmas/krance/xmas", "christmas/krance/xmas", "christmas/krance/xmas", "christmas/krance/xmas", "christmas/krance/xmas", "christmas/srodziemie/xmas", "christmas/srodziemie/xmas", "christmas/srodziemie/xmas", "christmas/resthea/xmas", "christmas/resthea/xmas_wyspa"),
                #Snow
                4 : (1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1)
                }
        #End of Xmas event
        else:
            ColorList={
                #Color (RGB)
                1 : ("(255, 255, 255)", "(241, 255, 158)", "(254, 0, 0)", "(0, 255, 127)", "(158, 255, 248)", "(253, 254, 62)", "(255, 176, 63)", "(222, 255, 0)", "(95, 255, 0)", "(50, 121, 19)", "(95, 192, 35)", "(214, 214, 214)", "(148, 0, 0)", "(142, 142, 142)", "(251, 165, 0)"),
                #Msenv
                2 : ("snowm02", "map_n_desert_01", "fire_low", "white_sky", "default", "rainy", "sand_mountain", "vanilia_white", "trent", "trent02", "vanilia", "snowm02", "fire_low", "default", "desert_cloud"),
                #Mp3
                3 : ("4w/lodowa", "4w/pustynia", "4w/ognista", "4w/orki", "4w/srodek", "krance/przeklete", "krance/pustynia", "krance/swiatynia", "krance/las", "krance/las2", "srodziemie/trawa", "srodziemie/lodowa", "srodziemie/ognista", "resthea/trawa", "resthea/wyspa"),
                #Snow
                4 : (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0)
                }
        i = 0
        Colors = ColorList[1]
        length = len(Colors)
        for ColorItem in xrange(length):
            if color == Colors[ColorItem]:
                #START OF SNOW EFFECT
                Snow = ColorList[4]
                if SnowEnable != 1:
                    if Snow[ColorItem] == 1 and int(minuty) in (2,7,12,17,22,27,32,37,42,47,52,57) and int(sekundy) in (00,01,30,31):
                        random = app.GetRandom(1,3)
                        if random == 1:
                            background.EnableSnow(1)
                        else:
                            background.EnableSnow(0)
 
                    if Snow[ColorItem] == 0:
                            background.EnableSnow(0)
                #END OF SNOW EFFECT
 
                if Resthea == color:
                    break
 
                #START OF MUSIC MODULE
                Music = ColorList[3]
                if app.IsExistFile("BGM/" + Music[ColorItem] + ".mp3")==1:
                    if musicInfo.fieldMusic != "":
                        snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)
                    musicInfo.fieldMusic = (Music[ColorItem] + ".mp3")
                    snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
                else:
                    if musicInfo.fieldMusic != "":
                        snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)
                    musicInfo.fieldMusic=musicInfo.METIN2THEMA
                    snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
                #END OF MUSIC MODULE
 
                Msenv = ColorList[2]
 
                if NightEnable == 1 and self.__IsXMasMap():
                    background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
                    background.SetEnvironmentData(1)
                else:
                    background.RegisterEnvironmentData(1, "d:/ymir work/environment/" + Msenv[ColorItem] + ConfigSkybox + ".msenv")
                    background.SetEnvironmentData(1)
                
                self.Resthea = color
 
                break
 
            else:
                i = i+1
 
        if i == length:
            background.SetEnvironmentData(0)
            snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)
            musicInfo.fieldMusic=musicInfo.METIN2THEMA
            snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
            self.Resthea = color
    ### END OF ENVIRONMENT MODULE Resthea.eu, qentinios

Stary film, w którym opisuję działanie systemu:

 

 

Opisy jak dodać w paczce.

 

Download (bez gotowych skyboxów):

https://www.mediafire.com/?edtdz50gc4tzmqj

Skan:

https://www.virustotal.com/pl/file/6976db774c8e3e7945a90d4d934fc8ebc8b2be0908ff1f7d265822765013e1ec/analysis/1402144687/

Download (z gotowymi skyboxami):

https://www.mediafire.com/?y14v0yir24tqbvv

Skan:

http://www.fotoszok.pl/upload/09ff0062.png

Warto wspomnieć że coś podobnego zostało już udostępnione, ale moje rozwiązanie jest dużo bardziej rozbudowane, no i powstało wcześniej:

http://www.mpcforum.pl/topic/1119796-tutzmienne-srodowisko-rgb/

Dzięki za pomoc dla Sunushiego (ci z lat <2013 będą wiedzieć o kogo chodzi) i za pewną pomoc z libami dla kwiatmix'a.

Modyfikacja powstała na potrzeby serwera Resthea prawie rok temu.

sygnatura2.png


Opublikowano

Dodałem paczkę ze skyboxami, ale nie mam jak zeskanować (na screenie z avg nie widać jaki plik był skanowany), jakby był ktoś tak miły zrobić skan.. :P

sygnatura2.png


Opublikowano

Jak zwykle dobre wykonanie, za takie prace nie można nie dać lajka, a mapka leży od dłuższego czasu na necie :P


da5e9f82fbb05240438e374847f4a6f9.gif

Opublikowano

Mapa widzialem ale udostępnia ją teraz profesjonalista.

 

mapka leży od dłuższego czasu na necie :P

 

Tylko ja w tym temacie nie prezentuję mapy, a możliwość tworzenia różnego środowiska na różnych obszarach jednej mapy  ^_^

 

Prostszym językiem - dzięki temu możliwe jest na jednym fragmencie tej samej mapy mieć czerwoną poświatę, mgłę i skyboxy typu ognista ziemia, a na drugim fragmencie np lodową ziemię z szarą mgłą, białym niebem i losowym śniegiem.

 

Edit. E69, dzięki za skan.

sygnatura2.png


Opublikowano

Duży + .Zajebista robota.Oby więcej takich prac i mam nadzieję,że wstawisz może kiedyś poprawioną wersję.

Opublikowano

Tylko ja w tym temacie nie prezentuję mapy, a możliwość tworzenia różnego środowiska na różnych obszarach jednej mapy  ^_^

 

Prostszym językiem - dzięki temu możliwe jest na jednym fragmencie tej samej mapy mieć czerwoną poświatę, mgłę i skyboxy typu ognista ziemia, a na drugim fragmencie np lodową ziemię z szarą mgłą, białym niebem i losowym śniegiem.

 

Edit. E69, dzięki za skan.

 

Tak, ja wiem, że to nie prezentacja mapy, ale mówię tak z wyprzedzeniem żeby nie było spamu czy dasz download mapy czy cuś ^^

 

Sprawdził ktoś czy na pewno działa? Wszystko proste do konfiguracji? Czy po prostu nikomu się nie przyda? xD

 

Jak dla mnie fajny bajer, ale rzadko kiedy można go wykorzystać, można by to dodać np. do dungeonu gdzie jest jedna mapa i z czasem atmosfera się robi taka bardziej "zła"

da5e9f82fbb05240438e374847f4a6f9.gif

Opublikowano

 

Tak, ja wiem, że to nie prezentacja mapy, ale mówię tak z wyprzedzeniem żeby nie było spamu czy dasz download mapy czy cuś ^^

 

 

Jak dla mnie fajny bajer, ale rzadko kiedy można go wykorzystać, można by to dodać np. do dungeonu gdzie jest jedna mapa i z czasem atmosfera się robi taka bardziej "zła"

 

 

Dodaj sobie zmianę środowiska gdy pojawia się boss na dungeonie.

0LsM05U.png

Opublikowano

Dodaj sobie zmianę środowiska gdy pojawia się boss na dungeonie.

Otóż w ten wlasnie sposób mozna wykorzystać te zmienne srodowisko. Mimo wszystko jest to ciekawy bajer.

da5e9f82fbb05240438e374847f4a6f9.gif

Opublikowano

Pozwolę sobie odświeżyć.

 

AW RGB umożliwia wykorzystanie 255x255x255 różnych odcieni, co daje do 16581375 środowisk na jedną mapę. Raczej wystarczy ;).

sygnatura2.png


Opublikowano

Nie jestem grafikiem, ale to chyba było tak, że FFFFFF do string (16777215) to ilość kolorów (odcieni).

Dzięki za udostępnienie. Zawsze Cię lubiłem :D

ZcWbjGf.png


Serdecznie zapraszam :)

Opublikowano

Masz rację, bo zakres od 0-255 więc 256x256x256 co daje 16777215.

 

Czyli jeszcze dodatkowe 195841 odcieni do wykorzystania, myślę że starczy nawet najbardziej wymagającym xD.

sygnatura2.png


  • 2 tygodnie później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...