Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Nostale
You last visited: Today at 23:52

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



「NImage - Toolset」

Discussion on 「NImage - Toolset」 within the Nostale forum part of the MMORPGs category.

Reply
 
Old   #1
 
ernilos's Avatar
 
elite*gold: 20
Join Date: Jan 2012
Posts: 766
Received Thanks: 645
「NImage - Toolset」

NImage - Toolset
Since Elecktrochemie released him tool for unpack and repack .NOS files I worked on some tool's for parse the images (Sprites, backgrounds, textures...), I done it for fun so I don't see any problem for sharing it
(Yeah, I know when Elecktro will release him tool this thread will become useless but I don't care)

Tools:
  • Background editor: 50%
  • SpritePack editor: 100%

Background editor:
The first tool what I done, it can load/save files in background format(547069832), that files are inside NS4BbData.NOS


SpritePack editor:
It actually can load/save files in spritePack format(537068565), those files are stored in files likely NSxpDataXX.nos (Ex: NSmpData00.NOS)



ImageFormat
Interesting info for a developer, I find all the structs trying and failing, you'll have it easier . I'll keep updating this (I hope...)

Background (547069832)
OffsetSizeDescription
0x00x2Width
0x20x2Height
0x4Width * Height * 4Raw Image

Sprites(537068565)
OffsetSizeDescription
0x00x1Sprite Amount
0x10x12 * SpriteAmountSpriteInfo table
1 + 0x12 * SpriteAmount??Raw SpriteImage
SpriteInfo struct
OffsetSizeDescription
0x00x2Width
0x20x2Height
0x40x4Unknow
0x80x4OffSet
Attached Files
File Type: rar NImage_BackGround.rar (61.9 KB, 585 views)
File Type: rar NImage_SpritePack.rar (63.9 KB, 424 views)
ernilos is offline  
Thanks
20 Users
Old 09/04/2014, 18:29   #2
 
ernilos's Avatar
 
elite*gold: 20
Join Date: Jan 2012
Posts: 766
Received Thanks: 645
Quote:
Originally Posted by JMII89 View Post
*bla bla bla*
You know how to use a .net decompiler, congratulations.
I didn't mentioned but if someone want's the good code no the "****" one generated by decompilers just PM me ^-^
ernilos is offline  
Thanks
1 User
Old 09/04/2014, 20:18   #3
 
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
gj ernilos!
Elektrochemie is offline  
Old 09/04/2014, 20:35   #4
 
Bejine's Avatar
 
elite*gold: 0
Join Date: Jul 2014
Posts: 283
Received Thanks: 317
You should make "fast Binary -> Image" function for every file in folder
@EDIT Also, transparency doesn't work :/
Bejine is offline  
Old 09/04/2014, 22:43   #5
 
ernilos's Avatar
 
elite*gold: 20
Join Date: Jan 2012
Posts: 766
Received Thanks: 645
NImage SpritePack -Update
-Supports RGBA png images (need's some fix's in the colour function)
-Save working perfectly (creates 1:1 copy)
---
RGBA FIXXED!
ernilos is offline  
Thanks
2 Users
Old 09/04/2014, 23:18   #6



 
IceTrailer's Avatar
 
elite*gold: 150
Join Date: Sep 2010
Posts: 2,070
Received Thanks: 821
Quote:
Originally Posted by ernilos View Post
NImage SpritePack -Update
-Supports RGBA png images (need's some fix's in the colour function)
-Save working perfectly (creates 1:1 copy)
---
RGBA FIXXED!
Is it possible to open a folder that you don't have to open a binary file every time?

Good job, ernilos!
IceTrailer is offline  
Thanks
1 User
Old 09/05/2014, 00:03   #7

 
Leon162's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 3,337
Received Thanks: 588


Kennt wer das Monster?
Leon162 is offline  
Old 09/05/2014, 01:10   #8
 
elite*gold: 52
Join Date: Sep 2014
Posts: 111
Received Thanks: 75
Thanks to my love (ernilos) for the best dedication to me xD

"private string WTF = "If you're reading this you're a fuckin' bastard <3";

Now the source code ù.ù

Code:
namespace NImage
{
    using Microsoft.VisualBasic;
    using Microsoft.VisualBasic.CompilerServices;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;

    [DesignerGenerated]
    public class Form1 : Form
    {
        [AccessedThroughProperty("BinaryToolStripMenuItem")]
        private ToolStripMenuItem _BinaryToolStripMenuItem;
        [AccessedThroughProperty("FileToolStripMenuItem")]
        private ToolStripMenuItem _FileToolStripMenuItem;
        [AccessedThroughProperty("ImageToolStripMenuItem")]
        private ToolStripMenuItem _ImageToolStripMenuItem;
        [AccessedThroughProperty("LOAD_BTN")]
        private ToolStripMenuItem _LOAD_BTN;
        [AccessedThroughProperty("MenuStrip1")]
        private MenuStrip _MenuStrip1;
        [AccessedThroughProperty("OPEN_BIN_BTN")]
        private ToolStripMenuItem _OPEN_BIN_BTN;
        [AccessedThroughProperty("picture")]
        private PictureBox _picture;
        [AccessedThroughProperty("SAVE_ALL_BTN")]
        private ToolStripMenuItem _SAVE_ALL_BTN;
        [AccessedThroughProperty("SAVE_BIN_BTN")]
        private ToolStripMenuItem _SAVE_BIN_BTN;
        [AccessedThroughProperty("SAVE_BTN")]
        private ToolStripMenuItem _SAVE_BTN;
        [AccessedThroughProperty("sList")]
        private ListBox _sList;
        private IContainer components;
        private string fName;
        private List<SpriteInfo> Sprites;
        private string WTF = "If you're reading this you're a fuckin' bastard <3";

        public Form1()
        {
            this.InitializeComponent();
        }

        public ushort ByteJoin(byte[] byt)
        {
            return BitConverter.ToUInt16(byt, 0);
        }

        public void Decrypt()
        {
            this.sList.Items.Clear();
            BinaryReader reader = new BinaryReader(File.Open(this.fName, FileMode.Open));
            this.Sprites = new List<SpriteInfo>();
            byte num = reader.ReadByte();
            int num6 = num - 1;
            for (int i = 0; i <= num6; i++)
            {
                SpriteInfo item = new SpriteInfo();
                item.Width = reader.ReadUInt16();
                item.Height = reader.ReadUInt16();
                item.unk_3 = reader.ReadUInt16();
                item.unk_4 = reader.ReadUInt16();
                item.OffSet = reader.ReadUInt32();
                this.Sprites.Add(item);
            }
            int num7 = this.Sprites.ToArray().Length - 1;
            for (int j = 0; j <= num7; j++)
            {
                SpriteInfo info6 = this.Sprites[j];
                reader.BaseStream.Seek((long) info6.OffSet, SeekOrigin.Begin);
                info6 = this.Sprites[j];
                SpriteInfo info5 = this.Sprites[j];
                Bitmap bitmap = new Bitmap(info6.Width, info5.Height);
                info6 = this.Sprites[j];
                int num8 = info6.Height - 1;
                for (int k = 0; k <= num8; k++)
                {
                    info5 = this.Sprites[j];
                    int num9 = info5.Width - 1;
                    for (int m = 0; m <= num9; m++)
                    {
                        bitmap.SetPixel(m, k, this.RGB4A_to_RGB888(reader.ReadUInt16()));
                    }
                }
                SpriteInfo info = this.Sprites[j];
                info.Img = bitmap;
                this.Sprites[j] = info;
                this.sList.Items.Add(j + 1);
            }
            this.sList.SelectedIndex = 0;
            this.Text = "NImage [" + Path.GetFileName(this.fName) + "]";
            reader.Close();
        }

        public void Decrypt_32GBS()
        {
            try
            {
                BinaryReader reader = new BinaryReader(File.Open(this.fName, FileMode.Open));
                short width = reader.ReadInt16();
                short num2 = (short) Math.Round((double) (((double) width) / 4.0));
                short height = reader.ReadInt16();
                if ((width == 0) & (height == 0))
                {
                    this.Text = "NImage [Failed - " + Path.GetFileName(this.fName) + "]";
                }
                else
                {
                    short x = 0;
                    short y = 0;
                    Bitmap bitmap = new Bitmap(width, height);
                    while (reader.BaseStream.Position != reader.BaseStream.Length)
                    {
                        short num;
                        byte blue = reader.ReadByte();
                        byte green = reader.ReadByte();
                        byte red = reader.ReadByte();
                        byte alpha = reader.ReadByte();
                        bitmap.SetPixel(x, y, Color.FromArgb(alpha, red, green, blue));
                        x = (short) (x + 1);
                        if (x == ((short) (num + num2)))
                        {
                            x = num;
                            y = (short) (y + 1);
                        }
                        if (y == height)
                        {
                            y = 0;
                            num = (short) (num + num2);
                            x = num;
                        }
                    }
                    this.picture.Image = bitmap;
                    this.Text = "NImage [" + Path.GetFileName(this.fName) + "]";
                    reader.Close();
                }
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                this.Text = "NImage [Failed - " + Path.GetFileName(this.fName) + "]";
                ProjectData.ClearProjectError();
            }
        }

        [DebuggerNonUserCode]
        protected override void Dispose(bool disposing)
        {
            try
            {
                if (disposing && (this.components != null))
                {
                    this.components.Dispose();
                }
            }
            finally
            {
                base.Dispose(disposing);
            }
        }

        public void Encrypt()
        {
            SpriteInfo info5;
            BinaryWriter writer = new BinaryWriter(File.Open(this.fName, FileMode.OpenOrCreate));
            writer.Write((byte) this.Sprites.ToArray().Length);
            writer.Seek(1 + (this.Sprites.ToArray().Length * 12), SeekOrigin.Begin);
            int num6 = this.Sprites.ToArray().Length - 1;
            for (int i = 0; i <= num6; i++)
            {
                int position = (int) writer.BaseStream.Position;
                SpriteInfo info = this.Sprites[i];
                Bitmap img = (Bitmap) info.Img;
                int num7 = img.Height - 1;
                for (int k = 0; k <= num7; k++)
                {
                    int num8 = img.Width - 1;
                    for (int m = 0; m <= num8; m++)
                    {
                        writer.Write(this.RGB888_to_RGB4A(img.GetPixel(m, k)));
                    }
                }
                SpriteInfo info3 = new SpriteInfo {
                    Width = (ushort) img.Width,
                    Height = (ushort) img.Height
                };
                SpriteInfo info4 = this.Sprites[i];
                info3.unk_3 = info4.unk_3;
                info5 = this.Sprites[i];
                info3.unk_4 = info5.unk_4;
                info3.OffSet = (uint) position;
                info3.Img = img;
                this.Sprites[i] = info3;
            }
            writer.Seek(1, SeekOrigin.Begin);
            int num9 = this.Sprites.ToArray().Length - 1;
            for (int j = 0; j <= num9; j++)
            {
                info5 = this.Sprites[j];
                writer.Write(info5.Width);
                info5 = this.Sprites[j];
                writer.Write(info5.Height);
                info5 = this.Sprites[j];
                writer.Write(info5.unk_3);
                info5 = this.Sprites[j];
                writer.Write(info5.unk_4);
                info5 = this.Sprites[j];
                writer.Write(info5.OffSet);
            }
            writer.Flush();
            writer.Close();
        }

        public void Encrypt_32GBS()
        {
            BinaryWriter writer = new BinaryWriter(File.Open(this.fName, FileMode.OpenOrCreate));
            bool flag = false;
            Bitmap image = (Bitmap) this.picture.Image;
            writer.Write((short) image.Width);
            short num2 = (short) Math.Round((double) (((double) image.Width) / 4.0));
            writer.Write((short) image.Height);
            while (!flag)
            {
                short num;
                short num3;
                short num4;
                writer.Write(image.GetPixel(num3, num4).B);
                writer.Write(image.GetPixel(num3, num4).G);
                writer.Write(image.GetPixel(num3, num4).R);
                writer.Write(image.GetPixel(num3, num4).A);
                num3 = (short) (num3 + 1);
                if (num3 == ((short) (num + num2)))
                {
                    num3 = num;
                    num4 = (short) (num4 + 1);
                }
                if (num4 == image.Height)
                {
                    num4 = 0;
                    num = (short) (num + num2);
                    num3 = num;
                }
                if (num3 == image.Width)
                {
                    flag = true;
                }
            }
            writer.Flush();
            writer.Close();
            Interaction.MsgBox("File Saved!", MsgBoxStyle.Information, null);
        }

        public byte GetColour(byte byt, bool encoding = false)
        {
            if (encoding)
            {
                return (byte) Math.Round((double) (((double) byt) / 17.0));
            }
            return (byte) (byt * 0x11);
        }

        [DebuggerStepThrough]
        private void InitializeComponent()
        {
            ComponentResourceManager manager = new ComponentResourceManager(typeof(Form1));
            this.MenuStrip1 = new MenuStrip();
            this.FileToolStripMenuItem = new ToolStripMenuItem();
            this.BinaryToolStripMenuItem = new ToolStripMenuItem();
            this.OPEN_BIN_BTN = new ToolStripMenuItem();
            this.ImageToolStripMenuItem = new ToolStripMenuItem();
            this.SAVE_BTN = new ToolStripMenuItem();
            this.SAVE_ALL_BTN = new ToolStripMenuItem();
            this.LOAD_BTN = new ToolStripMenuItem();
            this.picture = new PictureBox();
            this.sList = new ListBox();
            this.SAVE_BIN_BTN = new ToolStripMenuItem();
            this.MenuStrip1.SuspendLayout();
            ((ISupportInitialize) this.picture).BeginInit();
            this.SuspendLayout();
            this.MenuStrip1.Items.AddRange(new ToolStripItem[] { this.FileToolStripMenuItem });
            Point point2 = new Point(0, 0);
            this.MenuStrip1.Location = point2;
            this.MenuStrip1.Name = "MenuStrip1";
            Size size2 = new Size(0x317, 0x18);
            this.MenuStrip1.Size = size2;
            this.MenuStrip1.TabIndex = 0;
            this.MenuStrip1.Text = "MenuStrip1";
            this.FileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { this.BinaryToolStripMenuItem, this.ImageToolStripMenuItem });
            this.FileToolStripMenuItem.Name = "FileToolStripMenuItem";
            size2 = new Size(0x25, 20);
            this.FileToolStripMenuItem.Size = size2;
            this.FileToolStripMenuItem.Text = "File";
            this.BinaryToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { this.OPEN_BIN_BTN, this.SAVE_BIN_BTN });
            this.BinaryToolStripMenuItem.Name = "BinaryToolStripMenuItem";
            size2 = new Size(0x98, 0x16);
            this.BinaryToolStripMenuItem.Size = size2;
            this.BinaryToolStripMenuItem.Text = "Binary";
            this.OPEN_BIN_BTN.Name = "OPEN_BIN_BTN";
            size2 = new Size(0x98, 0x16);
            this.OPEN_BIN_BTN.Size = size2;
            this.OPEN_BIN_BTN.Text = "Open";
            this.ImageToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { this.SAVE_BTN, this.SAVE_ALL_BTN, this.LOAD_BTN });
            this.ImageToolStripMenuItem.Name = "ImageToolStripMenuItem";
            size2 = new Size(0x98, 0x16);
            this.ImageToolStripMenuItem.Size = size2;
            this.ImageToolStripMenuItem.Text = "Image";
            this.SAVE_BTN.Name = "SAVE_BTN";
            size2 = new Size(0x98, 0x16);
            this.SAVE_BTN.Size = size2;
            this.SAVE_BTN.Text = "Save";
            this.SAVE_ALL_BTN.Name = "SAVE_ALL_BTN";
            size2 = new Size(0x98, 0x16);
            this.SAVE_ALL_BTN.Size = size2;
            this.SAVE_ALL_BTN.Text = "Save all";
            this.LOAD_BTN.Name = "LOAD_BTN";
            size2 = new Size(0x98, 0x16);
            this.LOAD_BTN.Size = size2;
            this.LOAD_BTN.Text = "Load";
            this.picture.Dock = DockStyle.Fill;
            point2 = new Point(0xa9, 0x18);
            this.picture.Location = point2;
            this.picture.Name = "picture";
            size2 = new Size(0x26e, 0x1c0);
            this.picture.Size = size2;
            this.picture.SizeMode = PictureBoxSizeMode.CenterImage;
            this.picture.TabIndex = 1;
            this.picture.TabStop = false;
            this.sList.Dock = DockStyle.Left;
            this.sList.FormattingEnabled = true;
            point2 = new Point(0, 0x18);
            this.sList.Location = point2;
            this.sList.Name = "sList";
            size2 = new Size(0xa9, 0x1c0);
            this.sList.Size = size2;
            this.sList.TabIndex = 2;
            this.SAVE_BIN_BTN.Name = "SAVE_BIN_BTN";
            size2 = new Size(0x98, 0x16);
            this.SAVE_BIN_BTN.Size = size2;
            this.SAVE_BIN_BTN.Text = "Save";
            SizeF ef2 = new SizeF(6f, 13f);
            this.AutoScaleDimensions = ef2;
            this.AutoScaleMode = AutoScaleMode.Font;
            this.BackColor = Color.White;
            size2 = new Size(0x317, 0x1d8);
            this.ClientSize = size2;
            this.Controls.Add(this.picture);
            this.Controls.Add(this.sList);
            this.Controls.Add(this.MenuStrip1);
            this.Icon = (Icon) manager.GetObject("$this.Icon");
            this.MainMenuStrip = this.MenuStrip1;
            this.Name = "Form1";
            this.StartPosition = FormStartPosition.CenterScreen;
            this.Text = "NImage";
            this.MenuStrip1.ResumeLayout(false);
            this.MenuStrip1.PerformLayout();
            ((ISupportInitialize) this.picture).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();
        }

        private void LOAD_BTN_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog {
                Filter = "PNG File |*.png"
            };
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                SpriteInfo info = this.Sprites[this.sList.SelectedIndex];
                info.Img = Image.FromFile(dialog.FileName);
                info.Height = (ushort) info.Img.Height;
                info.Width = (ushort) info.Img.Width;
                this.Sprites[this.sList.SelectedIndex] = info;
                SpriteInfo info3 = this.Sprites[this.sList.SelectedIndex];
                this.picture.Image = info3.Img;
            }
        }

        private void OPEN_BIN_BTN_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                this.fName = dialog.FileName;
                this.Decrypt();
            }
        }

        public Color RGB4A_to_RGB888(ushort clr)
        {
            int num = ((ushort) (clr >> 12)) & 15;
            int num4 = ((ushort) (clr >> 8)) & 15;
            int num3 = ((ushort) (clr >> 4)) & 15;
            int num2 = clr & 15;
            return Color.FromArgb(this.GetColour((byte) num, false), this.GetColour((byte) num4, false), this.GetColour((byte) num3, false), this.GetColour((byte) num2, false));
        }

        public ushort RGB888_to_RGB4A(Color clr)
        {
            byte num = (byte) (((byte) (this.GetColour(clr.A, 1) << 4)) | this.GetColour(clr.R, true));
            byte num3 = (byte) (((byte) (this.GetColour(clr.G, 1) << 4)) | this.GetColour(clr.B, true));
            return this.ByteJoin(new byte[] { num3, num });
        }

        private void SAVE_ALL_BTN_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog dialog = new FolderBrowserDialog();
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                int num2 = this.Sprites.ToArray().Length - 1;
                for (int i = 0; i <= num2; i++)
                {
                    SpriteInfo info = this.Sprites[i];
                    int num3 = i + 1;
                    info.Img.Save(Path.Combine(dialog.SelectedPath, num3.ToString() + ".png"));
                }
            }
        }

        private void SAVE_BIN_BTN_Click(object sender, EventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog();
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                this.fName = dialog.FileName;
                this.Encrypt();
            }
        }

        private void SAVE_BTN_Click(object sender, EventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog {
                Filter = "PNG File |*.png"
            };
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                this.picture.Image.Save(dialog.FileName, ImageFormat.Png);
            }
        }

        private void sList_SelectedIndexChanged(object sender, EventArgs e)
        {
            SpriteInfo info = this.Sprites[this.sList.SelectedIndex];
            this.picture.BackColor = ((Bitmap) info.Img).GetPixel(0, 0);
            info = this.Sprites[this.sList.SelectedIndex];
            this.picture.Image = info.Img;
        }

        internal virtual ToolStripMenuItem BinaryToolStripMenuItem
        {
            get
            {
                return this._BinaryToolStripMenuItem;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                this._BinaryToolStripMenuItem = value;
            }
        }

        internal virtual ToolStripMenuItem FileToolStripMenuItem
        {
            get
            {
                return this._FileToolStripMenuItem;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                this._FileToolStripMenuItem = value;
            }
        }

        internal virtual ToolStripMenuItem ImageToolStripMenuItem
        {
            get
            {
                return this._ImageToolStripMenuItem;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                this._ImageToolStripMenuItem = value;
            }
        }

        internal virtual ToolStripMenuItem LOAD_BTN
        {
            get
            {
                return this._LOAD_BTN;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                EventHandler handler = new EventHandler(this.LOAD_BTN_Click);
                if (this._LOAD_BTN != null)
                {
                    this._LOAD_BTN.Click -= handler;
                }
                this._LOAD_BTN = value;
                if (this._LOAD_BTN != null)
                {
                    this._LOAD_BTN.Click += handler;
                }
            }
        }

        internal virtual MenuStrip MenuStrip1
        {
            get
            {
                return this._MenuStrip1;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                this._MenuStrip1 = value;
            }
        }

        internal virtual ToolStripMenuItem OPEN_BIN_BTN
        {
            get
            {
                return this._OPEN_BIN_BTN;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                EventHandler handler = new EventHandler(this.OPEN_BIN_BTN_Click);
                if (this._OPEN_BIN_BTN != null)
                {
                    this._OPEN_BIN_BTN.Click -= handler;
                }
                this._OPEN_BIN_BTN = value;
                if (this._OPEN_BIN_BTN != null)
                {
                    this._OPEN_BIN_BTN.Click += handler;
                }
            }
        }

        internal virtual PictureBox picture
        {
            get
            {
                return this._picture;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                this._picture = value;
            }
        }

        internal virtual ToolStripMenuItem SAVE_ALL_BTN
        {
            get
            {
                return this._SAVE_ALL_BTN;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                EventHandler handler = new EventHandler(this.SAVE_ALL_BTN_Click);
                if (this._SAVE_ALL_BTN != null)
                {
                    this._SAVE_ALL_BTN.Click -= handler;
                }
                this._SAVE_ALL_BTN = value;
                if (this._SAVE_ALL_BTN != null)
                {
                    this._SAVE_ALL_BTN.Click += handler;
                }
            }
        }

        internal virtual ToolStripMenuItem SAVE_BIN_BTN
        {
            get
            {
                return this._SAVE_BIN_BTN;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                EventHandler handler = new EventHandler(this.SAVE_BIN_BTN_Click);
                if (this._SAVE_BIN_BTN != null)
                {
                    this._SAVE_BIN_BTN.Click -= handler;
                }
                this._SAVE_BIN_BTN = value;
                if (this._SAVE_BIN_BTN != null)
                {
                    this._SAVE_BIN_BTN.Click += handler;
                }
            }
        }

        internal virtual ToolStripMenuItem SAVE_BTN
        {
            get
            {
                return this._SAVE_BTN;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                EventHandler handler = new EventHandler(this.SAVE_BTN_Click);
                if (this._SAVE_BTN != null)
                {
                    this._SAVE_BTN.Click -= handler;
                }
                this._SAVE_BTN = value;
                if (this._SAVE_BTN != null)
                {
                    this._SAVE_BTN.Click += handler;
                }
            }
        }

        internal virtual ListBox sList
        {
            get
            {
                return this._sList;
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                EventHandler handler = new EventHandler(this.sList_SelectedIndexChanged);
                if (this._sList != null)
                {
                    this._sList.SelectedIndexChanged -= handler;
                }
                this._sList = value;
                if (this._sList != null)
                {
                    this._sList.SelectedIndexChanged += handler;
                }
            }
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct SpriteInfo
        {
            public ushort Width;
            public ushort Height;
            public ushort unk_3;
            public ushort unk_4;
            public uint OffSet;
            public Image Img;
        }
    }
}
JMII89 is offline  
Old 09/05/2014, 03:49   #9
 
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
"private string WTF = "If you're reading this you're a ******' ******* <3";

ahahaha
Elektrochemie is offline  
Thanks
1 User
Old 09/05/2014, 19:01   #10
 
Bejine's Avatar
 
elite*gold: 0
Join Date: Jul 2014
Posts: 283
Received Thanks: 317
hmm, some of pixels (colors) are still wrong. just take picture from program and game and compare.
Bejine is offline  
Old 09/07/2014, 12:34   #11
 
ernilos's Avatar
 
elite*gold: 20
Join Date: Jan 2012
Posts: 766
Received Thanks: 645
Quote:
Originally Posted by Bejine View Post
hmm, some of pixels (colors) are still wrong. just take picture from program and game and compare.
They aren't wrong, it's just the colour algorythm it converts RGBA8 to RGBA4, it implies some "lost" colours, but it work
ernilos is offline  
Old 09/07/2014, 20:51   #12
 
Bejine's Avatar
 
elite*gold: 0
Join Date: Jul 2014
Posts: 283
Received Thanks: 317
So, in-game they'll be allright? Or not?
Bejine is offline  
Old 09/07/2014, 22:54   #13
 
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
Quote:
Originally Posted by ernilos View Post
Tools:
  • Background editor: 100%
Dude, 80% of the images aren't working >.> (It's the same format)


Elektrochemie is offline  
Thanks
2 Users
Old 09/08/2014, 00:42   #14
 
elite*gold: 52
Join Date: Sep 2014
Posts: 111
Received Thanks: 75
Quote:
Originally Posted by Elektrochemie View Post
Dude, 80% of the images aren't working >.> (It's the same format)


Thats perfectly what i said him on skype :P his method is wrong..
JMII89 is offline  
Old 09/08/2014, 12:24   #15
 
ernilos's Avatar
 
elite*gold: 20
Join Date: Jan 2012
Posts: 766
Received Thanks: 645
Quote:
Originally Posted by Elektrochemie View Post
Dude, 80% of the images aren't working >.> (It's the same format)


I thought they was crappy data so I didn't taked a extensive look. I'll might work on it today...
ernilos is offline  
Reply


Similar Threads Similar Threads
[Trading] 「100+ Capes COMPLETE」╠►Dalgs Fire Capes◄╣「Safest & Cheapest!」「WILL BEAT LEGIT PRICES」
11/21/2013 - Runescape Trading - 0 Replies
http://i43.tinypic.com/23k6cnr.jpg http://i43.tinypic.com/95vu3m.jpg http://i40.tinypic.com/i2sfhj.jpghttp://i39.tinyp ic.com/14uz33d.jpg ^^^ Click To Add My Skype ^^^ ^^^ Click For Pics Of Past Capes ^^^ The Gear



All times are GMT +1. The time now is 23:53.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.