Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Conquer Online 2 > CO2 Private Server
You last visited: Today at 00:03

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

Advertisement



met zone to summoner'r rift

Discussion on met zone to summoner'r rift within the CO2 Private Server forum part of the Conquer Online 2 category.

Reply
 
Old   #1
 
2slam's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 586
Received Thanks: 336
met zone to summoner'r rift

could any one tell me which ani file locate the met zone i wanna edit it to look like summoner'r rift lols map as i found it the best and gonna design turrets,minions and nexus to make a pvp tournament but not nw just any one could tell me which files does it use i got messed up with the client and used korvac's wdf extractor i found the map id was 1210 and its dmap is task10.7z any help here?
2slam is offline  
Old 06/14/2013, 15:23   #2
 
LordGragen.'s Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 606
Received Thanks: 68
i dont think its possible editing that map since its using the same textures for twin city.
LordGragen. is offline  
Old 06/14/2013, 15:59   #3
 
2slam's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 586
Received Thanks: 336
that's what i've realised.
2slam is offline  
Old 06/14/2013, 22:55   #4
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
It's very easy to edit the textures.

Create your own tile map using league of legends resources and then simply edit the pul and ani files so that the images change.

You only need to edit dmap in order to determine cell access information which is slightly more tricky. Just re-tiling a map is a rather simple task. You'll want to write a tool to help you visualize the map and edit it via GUI though. My cotographer project would probably be a good start for you.
pro4never is offline  
Old 06/15/2013, 06:22   #5
 
2slam's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 586
Received Thanks: 336
Quote:
Originally Posted by pro4never View Post
It's very easy to edit the textures.

Create your own tile map using league of legends resources and then simply edit the pul and ani files so that the images change.

You only need to edit dmap in order to determine cell access information which is slightly more tricky. Just re-tiling a map is a rather simple task. You'll want to write a tool to help you visualize the map and edit it via GUI though. My cotographer project would probably be a good start for you.
any refrences?
2slam is offline  
Old 06/15/2013, 07:13   #6
 
Spirited's Avatar
 
elite*gold: 12
Join Date: Jul 2011
Posts: 8,282
Received Thanks: 4,191
Replace your task10.pul file with this file (attached). Then, copy "ani\newplain.ani" and rename the copy as "met_zone.ani". Make changes to met_zone.ani (put your new puzzle files in that file as you add them to the client). Good luck.
Attached Files
File Type: rar task10.rar (4.6 KB, 9 views)
Spirited is offline  
Thanks
3 Users
Old 06/15/2013, 14:06   #7
 
2slam's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 586
Received Thanks: 336
Quote:
Originally Posted by Fаng View Post
Replace your task10.pul file with this file (attached). Then, copy "ani\newplain.ani" and rename the copy as "met_zone.ani". Make changes to met_zone.ani (put your new puzzle files in that file as you add them to the client). Good luck.
awesomness im totally amazed thanks dude.

tho u made the .dmap file associated with a specified ani file? How could that be done?
2slam is offline  
Old 06/15/2013, 16:53   #8
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
It lists it directly inside the dmap file... again you should really look at my cotographer project as I said.
pro4never is offline  
Old 06/16/2013, 11:05   #9
 
2slam's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 586
Received Thanks: 336
where's that cotographer project?
2slam is offline  
Old 06/16/2013, 15:21   #10
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
My bad... for some reason I thought I'd gone ahead and released it + source code at some point....




I'll look for the source later if I have time. It was never really designed to make conquer maps but because I let them initially be generated from conquer files (and had support for inarchive dds reading makes it a useful reference for those wanting to do edits to conquer maps.
pro4never is offline  
Thanks
1 User
Old 06/16/2013, 16:42   #11
 
2slam's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 586
Received Thanks: 336
Quote:
Originally Posted by pro4never View Post
My bad... for some reason I thought I'd gone ahead and released it + source code at some point....




I'll look for the source later if I have time. It was never really designed to make conquer maps but because I let them initially be generated from conquer files (and had support for inarchive dds reading makes it a useful reference for those wanting to do edits to conquer maps.
thats awesome but i didnt get the mechanism on how it work.

P.s : if i wanna to study structure of files and make dlls and converters with (zero knowldge) how much time could it took me to achieve smth like that ? Please dont make fun of me or troll on me.
2slam is offline  
Old 06/16/2013, 20:08   #12
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Quote:
Originally Posted by 2slam View Post
thats awesome but i didnt get the mechanism on how it work.

P.s : if i wanna to study structure of files and make dlls and converters with (zero knowldge) how much time could it took me to achieve smth like that ? Please dont make fun of me or troll on me.
Depends on how good you are at searching.

Every file is pretty well documented and I'm positive I have posted about their structures before (as have other members). All you need to do is do a little research into the game files and you'll find their structure is pretty simple.


<edit> instead of posting the map viewer source, I have a different program that converted conquer maps to my own file format for editing. This will give you a nice start on how to read from the required files. You can also update it so that it reads directly from wdf archives using already public libraries around epvp.


Code:
 public const string RESOURCE_LOCATION = "D:\\Extracted Wdf Files\\";
        private void ConvertMapButton_Click(object sender, EventArgs e)
        {
            Program.CellsPerTile = 8;
            ConvertMapOpenFileDialogue.InitialDirectory =  RESOURCE_LOCATION+ "map\\map\\";
            ConvertMapOpenFileDialogue.Filter = "DMap (*.DMap)|*.DMap*;"; 
            if (ConvertMapOpenFileDialogue.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //Load dmap file to pull map name/tilesize
                BinaryReader dmap = new BinaryReader(ConvertMapOpenFileDialogue.OpenFile());
                dmap.ReadUInt32();//MAP ID
                dmap.ReadUInt32();//Unknown/blank
                string pulLocation = Encoding.ASCII.GetString(dmap.ReadBytes(239)).Replace("\0", "").Split('.')[0]+".pul";
                //SET MAP NAME AND TILESIZE      
                Program.MapName  = pulLocation.Split('\\')[2].Split('.')[0];
                dmap.ReadByte();
                
                Program.TileSize = 256;

                //TODO COORD LOADING

                //Load Pul file to get tile information
               BinaryReader pul = new BinaryReader(File.Open(RESOURCE_LOCATION + pulLocation, FileMode.Open));
               string aniLocation = "ani\\"+ Encoding.ASCII.GetString(pul.ReadBytes(264)).Split('.')[0].Split('\\')[1] +".ani";
                //SET TILE WIDTH AND HEIGHT
                Program.TileWidth = pul.ReadInt32();
                Program.TileHeight= pul.ReadInt32();

                MapDirectory = Application.StartupPath + "\\maps\\" + Program.MapName + "\\";           

               Directory.CreateDirectory(MapDirectory);
               Directory.CreateDirectory(MapDirectory + @"\Textures");

                //Load Ani file to Load images as needed for new map.
                StreamReader aniIn = new StreamReader (File.Open(RESOURCE_LOCATION + aniLocation, FileMode.Open));
                string[] tempLines = aniIn.ReadToEnd().Replace("\r", "").Split('\n');
                List<string> aniLines = new List<string>();
                foreach (string str in tempLines)
                    if (str.Length > 0)
                        aniLines.Add(str);

                string tileLocationToRead, tileName;
                ushort tileID;
                Manifest.Collection manifest = new Manifest.Collection(MapDirectory + "\\Manifest.xml");
                //Write the QuadInformation file
                FileStream fs = new FileStream(MapDirectory + "QuadInfo.qi", FileMode.Create);
                BinaryWriter bw = new BinaryWriter(fs);
                bw.Write(Program.TileWidth);//Width of map in tiles
                bw.Write(Program.TileHeight);//Height of map in tiles
                bw.Write(Program.TileSize);//Size of tiles in pixels
                bw.Write(Program.CellsPerTile);//Number of cells per tiles. We only use this for drawing but w/e!
                               
                for (int y = 0; y < Program.TileHeight; y++)
                    for (int x = 0; x < Program.TileWidth; x++)
                    {
                        tileID = pul.ReadUInt16();
                        //We now load in the new resources!!
                        tileLocationToRead = aniLines[2 + (tileID * 3)].Split('=')[1].Replace('/', '\\');
                        tileName = tileLocationToRead.Split('\\')[tileLocationToRead.Split('\\').Length -1];
                        if (!File.Exists(MapDirectory + "Textures\\" + tileID + ".dds"))
                            File.Copy(RESOURCE_LOCATION + tileLocationToRead, MapDirectory + "Textures\\" + tileID+".dds");
                        //Todo read from wdf archive directly

                        //Need to copy the texture over to the texture folder... It is in
                        if(!manifest.TextureElements.ContainsKey(tileID))
                        manifest.AddTexture(tileID, "\\Textures\\"+tileID+".dds");
                        bw.Write((ushort)tileID);
                    }
                bw.Close();
                fs.Close();
                manifest.SaveManifest();
                

                //CLOSE ALL OPEN READERS 
               dmap.Close();
               pul.Close();
                

                //Write the CellInformation file
                int _cellWidth = Program.TileWidth * Program.CellsPerTile;
                int _cellHeight = Program.TileHeight * Program.CellsPerTile;


                fs = new FileStream(MapDirectory + "CellInfo.ci", FileMode.Create);
                bw = new BinaryWriter(fs);
                bw.Write(_cellWidth);
                bw.Write(_cellHeight);
                for (int Y = 0; Y < _cellHeight; Y++)
                    for (int X = 0; X < _cellWidth; X++)
                    {
                        bw.Write((byte)1);//Access = true
                        bw.Write((short)0);//Height = 0
                        bw.Write((ushort)0);//ActionKey = 0
                    }
                bw.Close();
                bw.Dispose();
                fs.Close();
                fs.Dispose();

                MessageBox.Show("Finished Conversion. Attempting to Load Map.");

                DialogResult = System.Windows.Forms.DialogResult.OK;

                
            }
        }
pro4never is offline  
Thanks
3 Users
Old 06/16/2013, 22:08   #13
 
Spirited's Avatar
 
elite*gold: 12
Join Date: Jul 2011
Posts: 8,282
Received Thanks: 4,191
Hahaha, I actually didn't even write a tool for doing that. I kinda took the lazy route and edited the constant string using a hex editor. Since it's of static length, it was easy to do. It's not worth the time making an entire tool for doing such a simple, small edit. Anyways, good luck.
Spirited is offline  
Thanks
1 User
Old 06/16/2013, 22:16   #14
 
2slam's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 586
Received Thanks: 336
Quote:
Originally Posted by pro4never View Post
Depends on how good you are at searching.

Every file is pretty well documented and I'm positive I have posted about their structures before (as have other members). All you need to do is do a little research into the game files and you'll find their structure is pretty simple.


<edit> instead of posting the map viewer source, I have a different program that converted conquer maps to my own file format for editing. This will give you a nice start on how to read from the required files. You can also update it so that it reads directly from wdf archives using already public libraries around epvp.


Code:
 public const string RESOURCE_LOCATION = "D:\\Extracted Wdf Files\\";
        private void ConvertMapButton_Click(object sender, EventArgs e)
        {
            Program.CellsPerTile = 8;
            ConvertMapOpenFileDialogue.InitialDirectory =  RESOURCE_LOCATION+ "map\\map\\";
            ConvertMapOpenFileDialogue.Filter = "DMap (*.DMap)|*.DMap*;"; 
            if (ConvertMapOpenFileDialogue.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //Load dmap file to pull map name/tilesize
                BinaryReader dmap = new BinaryReader(ConvertMapOpenFileDialogue.OpenFile());
                dmap.ReadUInt32();//MAP ID
                dmap.ReadUInt32();//Unknown/blank
                string pulLocation = Encoding.ASCII.GetString(dmap.ReadBytes(239)).Replace("\0", "").Split('.')[0]+".pul";
                //SET MAP NAME AND TILESIZE      
                Program.MapName  = pulLocation.Split('\\')[2].Split('.')[0];
                dmap.ReadByte();
                
                Program.TileSize = 256;

                //TODO COORD LOADING

                //Load Pul file to get tile information
               BinaryReader pul = new BinaryReader(File.Open(RESOURCE_LOCATION + pulLocation, FileMode.Open));
               string aniLocation = "ani\\"+ Encoding.ASCII.GetString(pul.ReadBytes(264)).Split('.')[0].Split('\\')[1] +".ani";
                //SET TILE WIDTH AND HEIGHT
                Program.TileWidth = pul.ReadInt32();
                Program.TileHeight= pul.ReadInt32();

                MapDirectory = Application.StartupPath + "\\maps\\" + Program.MapName + "\\";           

               Directory.CreateDirectory(MapDirectory);
               Directory.CreateDirectory(MapDirectory + @"\Textures");

                //Load Ani file to Load images as needed for new map.
                StreamReader aniIn = new StreamReader (File.Open(RESOURCE_LOCATION + aniLocation, FileMode.Open));
                string[] tempLines = aniIn.ReadToEnd().Replace("\r", "").Split('\n');
                List<string> aniLines = new List<string>();
                foreach (string str in tempLines)
                    if (str.Length > 0)
                        aniLines.Add(str);

                string tileLocationToRead, tileName;
                ushort tileID;
                Manifest.Collection manifest = new Manifest.Collection(MapDirectory + "\\Manifest.xml");
                //Write the QuadInformation file
                FileStream fs = new FileStream(MapDirectory + "QuadInfo.qi", FileMode.Create);
                BinaryWriter bw = new BinaryWriter(fs);
                bw.Write(Program.TileWidth);//Width of map in tiles
                bw.Write(Program.TileHeight);//Height of map in tiles
                bw.Write(Program.TileSize);//Size of tiles in pixels
                bw.Write(Program.CellsPerTile);//Number of cells per tiles. We only use this for drawing but w/e!
                               
                for (int y = 0; y < Program.TileHeight; y++)
                    for (int x = 0; x < Program.TileWidth; x++)
                    {
                        tileID = pul.ReadUInt16();
                        //We now load in the new resources!!
                        tileLocationToRead = aniLines[2 + (tileID * 3)].Split('=')[1].Replace('/', '\\');
                        tileName = tileLocationToRead.Split('\\')[tileLocationToRead.Split('\\').Length -1];
                        if (!File.Exists(MapDirectory + "Textures\\" + tileID + ".dds"))
                            File.Copy(RESOURCE_LOCATION + tileLocationToRead, MapDirectory + "Textures\\" + tileID+".dds");
                        //Todo read from wdf archive directly

                        //Need to copy the texture over to the texture folder... It is in
                        if(!manifest.TextureElements.ContainsKey(tileID))
                        manifest.AddTexture(tileID, "\\Textures\\"+tileID+".dds");
                        bw.Write((ushort)tileID);
                    }
                bw.Close();
                fs.Close();
                manifest.SaveManifest();
                

                //CLOSE ALL OPEN READERS 
               dmap.Close();
               pul.Close();
                

                //Write the CellInformation file
                int _cellWidth = Program.TileWidth * Program.CellsPerTile;
                int _cellHeight = Program.TileHeight * Program.CellsPerTile;


                fs = new FileStream(MapDirectory + "CellInfo.ci", FileMode.Create);
                bw = new BinaryWriter(fs);
                bw.Write(_cellWidth);
                bw.Write(_cellHeight);
                for (int Y = 0; Y < _cellHeight; Y++)
                    for (int X = 0; X < _cellWidth; X++)
                    {
                        bw.Write((byte)1);//Access = true
                        bw.Write((short)0);//Height = 0
                        bw.Write((ushort)0);//ActionKey = 0
                    }
                bw.Close();
                bw.Dispose();
                fs.Close();
                fs.Dispose();

                MessageBox.Show("Finished Conversion. Attempting to Load Map.");

                DialogResult = System.Windows.Forms.DialogResult.OK;

                
            }
        }
great thanks dude u're Pro.
2slam is offline  
Old 06/18/2013, 09:12   #15


 
Korvacs's Avatar
 
elite*gold: 20
Join Date: Mar 2006
Posts: 6,126
Received Thanks: 2,518
The scale on that is going to be all wrong lol, best of luck though.
Korvacs is offline  
Reply




All times are GMT +1. The time now is 00:03.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.