Thread: OSRS Overlay & Underlay support

Page 1 of 5 123 ... LastLast
Results 1 to 10 of 43
  1. #1 OSRS Overlay & Underlay support 
    Rune-Server Affiliate

    Join Date
    Apr 2014
    Posts
    1,761
    Thanks given
    75
    Thanks received
    714
    Rep Power
    1073
    So, when dumping the OSRS floor configs with poesys OSRS dumper, it compiles the underlay & overlay definitions into a single file. here's the loader for it.

    Code:
    import java.nio.ByteBuffer;
    
    public class FloorDefinition {
    
        public static FloorDefinition[] overlays;
        public static FloorDefinition[] underlays;
    
        public int texture;
        public int rgb;
        public boolean occlude;
        public int anotherRgb;
    
        public int hue;
        public int saturation;
        public int lumiance;
    
        public int anotherHue;
        public int anotherSaturation;
        public int anotherLuminance;
    
        public int blendHue;
        public int blendHueMultiplier;
        public int hsl16;
        
        private FloorDefinition() {
        	texture = -1;
        	occlude = true;
        }
    
        public static void unpackConfig(StreamLoader streamLoader) {
            ByteBuffer buffer = ByteBuffer.wrap(streamLoader.getDataForName("flo.dat"));
            int underlayAmount = buffer.getShort();
            System.out.println("Underlay Floors Loaded: "+underlayAmount);
            underlays = new FloorDefinition[underlayAmount];
            for (int i = 0; i < underlayAmount; i++) {
                if (underlays[i] == null) {
                    underlays[i] = new FloorDefinition();
                }
                underlays[i].readValuesUnderlay(buffer);
                underlays[i].generateHsl();
            }
            int overlayAmount = buffer.getShort();
            System.out.println("Overlay Floors Loaded: "+overlayAmount);
            overlays = new FloorDefinition[overlayAmount];
            for (int i = 0; i < overlayAmount; i++) {
                if (overlays[i] == null) {
                    overlays[i] = new FloorDefinition();
                }
                overlays[i].readValuesOverlay(buffer);
                overlays[i].generateHsl();
            }
        }
    
        private void generateHsl() {
            if (anotherRgb != -1) {
                rgbToHsl(anotherRgb);
                anotherHue = hue;
                anotherSaturation = saturation;
                anotherLuminance = lumiance;
            }
            rgbToHsl(rgb);
        }
    
        private void readValuesUnderlay(ByteBuffer buffer) {
            for (;;) {
                int opcode = buffer.get();
                if (opcode == 0) {
                    break;
                } else if (opcode == 1) {
                    rgb = ((buffer.get() & 0xff) << 16) + ((buffer.get() & 0xff) << 8) + (buffer.get() & 0xff);
                } else {
                    System.out.println("Error unrecognised underlay code: " + opcode);
                }
            }
        }
    
        private void readValuesOverlay(ByteBuffer buffer) {
            for (;;) {
                int opcode = buffer.get();
                if (opcode == 0) {
                    break;
                } else if (opcode == 1) {
                    rgb = ((buffer.get() & 0xff) << 16) + ((buffer.get() & 0xff) << 8) + (buffer.get() & 0xff);
                } else if (opcode == 2) {
                    texture = buffer.get() & 0xff;
                } else if (opcode == 5) {
                    occlude = false;
                } else if (opcode == 7) {
                    anotherRgb = ((buffer.get() & 0xff) << 16) + ((buffer.get() & 0xff) << 8) + (buffer.get() & 0xff);
                } else {
                    System.out.println("Error unrecognised overlay code: " + opcode);
                }
            }
        }
    
        private void rgbToHsl(int rgb) {
            double r = (rgb >> 16 & 0xff) / 256.0;
            double g = (rgb >> 8 & 0xff) / 256.0;
            double b = (rgb & 0xff) / 256.0;
            double min = r;
            if (g < min) {
                min = g;
            }
            if (b < min) {
                min = b;
            }
            double max = r;
            if (g > max) {
                max = g;
            }
            if (b > max) {
                max = b;
            }
            double h = 0.0;
            double s = 0.0;
            double l = (min + max) / 2.0;
            if (min != max) {
                if (l < 0.5) {
                    s = (max - min) / (max + min);
                }
                if (l >= 0.5) {
                    s = (max - min) / (2.0 - max - min);
                }
                if (r == max) {
                    h = (g - b) / (max - min);
                } else if (g == max) {
                    h = 2.0 + (b - r) / (max - min);
                } else if (b == max) {
                    h = 4.0 + (r - g) / (max - min);
                }
            }
            h /= 6.0;
            hue = (int) (h * 256.0);
            saturation = (int) (s * 256.0);
            lumiance = (int) (l * 256.0);
            if (saturation < 0) {
                saturation = 0;
            } else if (saturation > 255) {
                saturation = 255;
            }
            if (lumiance < 0) {
                lumiance = 0;
            } else if (lumiance > 255) {
                lumiance = 255;
            }
            if (l > 0.5) {
                blendHueMultiplier = (int) ((1.0 - l) * s * 512.0);
            } else {
                blendHueMultiplier = (int) (l * s * 512.0);
            }
            if (blendHueMultiplier < 1) {
                blendHueMultiplier = 1;
            }
            blendHue = (int) (h * blendHueMultiplier);
            hsl16 = hsl24to16(hue, saturation, lumiance);
        }
    
        private final static int hsl24to16(int h, int s, int l) {
            if (l > 179) {
                s /= 2;
            }
            if (l > 192) {
                s /= 2;
            }
            if (l > 217) {
                s /= 2;
            }
            if (l > 243) {
                s /= 2;
            }
            return (h / 4 << 10) + (s / 32 << 7) + l / 2;
        }
    }
    Credits:
    poesy
    Reply With Quote  
     


  2. #2  
    🛠️ Actually Knows Programming 🛠️
    Puremin0rez's Avatar
    Join Date
    May 2008
    Age
    30
    Posts
    136
    Thanks given
    14
    Thanks received
    26
    Rep Power
    33
    You're awesome - thank you so much.
    - With Love, Puremin0rez 💝
    Reply With Quote  
     

  3. #3  
    Donator
    snurf's Avatar
    Join Date
    Oct 2015
    Posts
    582
    Thanks given
    70
    Thanks received
    92
    Rep Power
    0
    Thanks for sharing mate
    Attached image
    Reply With Quote  
     

  4. #4  
    Registered Member
    Join Date
    Jun 2013
    Posts
    129
    Thanks given
    7
    Thanks received
    9
    Rep Power
    11
    Amazing, Thanks bro

    EDIT:
    after using it, no floor at all :O
    Reply With Quote  
     

  5. #5  
    Banned

    Join Date
    Oct 2012
    Posts
    4,710
    Thanks given
    1,679
    Thanks received
    1,105
    Rep Power
    0
    Quote Originally Posted by darklight_pro View Post
    Amazing, Thanks bro

    EDIT:
    after using it, no floor at all :O
    In your startup method:

    Code:
    FloorDefinition.unpackConfig(streamLoader);
    Reply With Quote  
     

  6. #6  
    Registered Member
    Join Date
    Jun 2013
    Posts
    129
    Thanks given
    7
    Thanks received
    9
    Rep Power
    11
    Quote Originally Posted by _Patrick_ View Post
    In your startup method:

    Code:
    FloorDefinition.unpackConfig(streamLoader);
    i did cancel in startup method floor & overlayfloors unpackconfig
    added instead
    Code:
    FloorDefinition.unpackConfig(streamLoader);
    and still no floors at all, it says in console 150 underlays & 174 overlay loaded tho
    Reply With Quote  
     

  7. #7  
    Banned

    Join Date
    Oct 2012
    Posts
    4,710
    Thanks given
    1,679
    Thanks received
    1,105
    Rep Power
    0
    Quote Originally Posted by darklight_pro View Post
    i did cancel in startup method floor & overlayfloors unpackconfig
    added instead
    Code:
    FloorDefinition.unpackConfig(streamLoader);
    and still no floors at all, it says in console 150 underlays & 174 overlay loaded tho
    Idk no picture was provided. So can't be sure if this works.
    Reply With Quote  
     

  8. #8  
    Номер 1


    Leanbow's Avatar
    Join Date
    Feb 2008
    Posts
    5,895
    Thanks given
    1,564
    Thanks received
    2,624
    Rep Power
    5000
    Code:
       private final static int hslToRgb(int h, int s, int l) {
            if (l > 179) {
                s /= 2;
            }
            if (l > 192) {
                s /= 2;
            }
            if (l > 217) {
                s /= 2;
            }
            if (l > 243) {
                s /= 2;
            }
            return (h / 4 << 10) + (s / 32 << 7) + l / 2;
        }
    That's not hsl to rgb, it converts hsl to their palette bitpack. Hue has 0-64 colors, sat has 0-8 colors and lightness has 128 colors, total size is 65536 which u can see in rasterizer. Just something that been bothering me about that code.
    Reply With Quote  
     

  9. Thankful users:


  10. #9  
    Registered Member
    Zivik's Avatar
    Join Date
    Oct 2007
    Age
    28
    Posts
    4,421
    Thanks given
    891
    Thanks received
    1,527
    Rep Power
    3285
    Thanks for the share.
    Reply With Quote  
     

  11. #10  
    Registered Member
    Deku's Avatar
    Join Date
    May 2016
    Posts
    151
    Thanks given
    37
    Thanks received
    123
    Rep Power
    165
    Quote Originally Posted by darklight_pro View Post
    i did cancel in startup method floor & overlayfloors unpackconfig
    added instead
    Code:
    FloorDefinition.unpackConfig(streamLoader);
    and still no floors at all, it says in console 150 underlays & 174 overlay loaded tho
    Just a reminder, this does nothing unless you reference this loader when rendering the tile (aka black floors if you disable the original loader)
    wut
    Reply With Quote  
     

  12. Thankful user:


Page 1 of 5 123 ... LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. OSRS Dumper script
    By The Reverse in forum Snippets
    Replies: 18
    Last Post: 07-09-2016, 01:29 PM
  2. OSRS Dumper Tool
    By Poesy700 in forum Selling
    Replies: 22
    Last Post: 05-30-2016, 08:44 PM
  3. OSRS Dumper reupload
    By Belthazar in forum Downloads
    Replies: 19
    Last Post: 02-09-2016, 11:55 PM
  4. OSRS Dumper
    By Secrets in forum Buying
    Replies: 3
    Last Post: 02-27-2015, 08:31 PM
  5. adding 717 Overlay/Underlay flo
    By Richard1992 in forum Tutorials
    Replies: 187
    Last Post: 04-01-2014, 01:15 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •