Search the Community
Showing results for tags 'map'.
Found 18 results
-
Tool for compressing .map files When working with the YAMMI map editor, there may be a problem that the output .map file will be very large. For example, if you open the map darkblue.map (Deep Blue) in YAMMI and save it to disk, then the size of the map will be about 240 MB, instead of the original 46 MB! This is due to the fact that most of the darkblue map is occupied by the sea, i.e. essentially the same cells that do not differ from each other, and such cells do not need to be written to the .map file - the game client will automatically replace them with water when rendering, but YAMMI does not use this optimization and still writes "empty" cells to the output .map file. This tool solves the problem described above and allows you to significantly reduce the size of .map files on disk after they have been edited in YAMMI. To do this, the program looks for "empty" cells in the .map file and removes them from the file. Download 1) The tool (pkodev.tool.mapcompressor.exe); 2) Source code (C++). The tool is a console program, so the paths to the source and output .map files are passed through the startup parameters: > pkodev.tool.mapcompressor darkblue.map darkblue_c.map darkblue.map is the uncompressed .map file that needs to be reduced; darkblue_c.map is a compressed .map file after being processed by the program. The output of the program will be something like this: PKOdev.NET .map file compressor program Version: v1.0.0 (03/01/2022) Author: V3ct0r Input .map file: darkblue.map Output .map file: darkblue_c.map Input .map file information: * Width: 4096 * Height: 4096 * Section width: 8 * Section height: 8 * Sections number: 262144 Please wait . . . Done! * Sections compressed: 222007 * Percentage: 84.69% * Bytes freed: 213126720 As you can see from the output, the size of the .map file has been reduced by about 203 MB! Attention! At the moment, the program has not yet been properly tested, so after compression, certain errors may occur on the maps. Keep this in mind when working and keep backup copies of the original .map files.
-
Map Developers Handbook Author: Skarth Introduction Welcome to my Map Developing Guide. This is about the best way to learn how to make map aside from getting a personal tutor. In this guide we will cover everything there is to map making. You will learn everything from using YAMMI to the Map Editor, Generating Minimaps, and more. Table of Contents: 1- Starting Up 2- Using YAMMI 3- Map Editor use 4- Generating a Minimap 5- Adding to server 6- Publishing Credits Chapter 1 - Starting Up To start up this chapter, this will tell you everything you need to do before making a map! Lesson 1 - Things you will need - YAMMI - Unused Client Files - Map Editor - Server Files - Client Files - Compiler - A Brain Lesson 2 - Keeping Neat To keep everything neat start with this Go to desktop and create a folder called "My Map" Inside it make 2 more folders called "Client Side" and "Server Side" Inside Client side make a folder called "map" and "minimap" Inside Server side make a folder called "Map Files" and "Scripts" All of that is optional, just there if you want to keep everything neat! So I highly recommend doing this because I will be telling you to place files in these folders later in the guide! Lesson 3 - Setting up YAMMI To set up YAMMI [Yet Another Map Manager Innovation] Go to ServerDev Release Section and download the tool, or simply click here! Yammi v0.6.2.zip After that its a pretty simple installation. Once that is done Open YAMMI and it will ask you to find your files Simply find your Unused Client Files folder and hit ok! If this doesn't work then run YAMMI as Admin, Note: If you run as admin when finding the files you will always have to run as admin for it to work the same each and every time! Now close out of YAMMI Congrats, you have set up YAMMI! Lesson 4 - Setting up Map Editor This part is easy all you must do is go to your Unused Client Files. and make a new .txt file. Now once you have that new .txt file open Paste this code into it system\game.exe startgame editor Then go ahead and Save it as editor.bat Congrats, now you have a map editor. Chapter 2 - Using YAMMI This chapter will explain all you need to do with YAMMI to create a map! It will also explain all of YAMMI's Features! Lesson 1 - YAMMI's Tools YAMMI has a ton of useful tools you can use to create a map! Plugins Texture Blending: Blends Textures so they are not blocky. Height Map: Creates the height modifications for your map. Isle Generator: Generates an Island. Layers: Use the Layers Tab's Checkboxes to filter out the colors and definitions that are presented on your map. Using fewer layers reduces lag on Yammi. Note: NEVER CLICK "Height Spot Map" It will bug your map and will force you to return to your previous save! Just do a little exploring! Lesson 2 - Your first map! Alrighty, time for your first map creation! Start by going to FILE> NEW PROJECT A window will pop-up asking for a size To get a good idea of this the size will be maxed coords! I'm going to go ahead and and make a 128x128 map for time's sake! Next zoom into about 400% and Select "Define Land Area" and use the Square making tool and make a small box on the blue screen. The Blue area is water! Your product should look like this Now, lets add some texture! Click on Texture button and find a texture you like! and place it all over that land area! If you want, go to Plugins and Apply Texture Blending! This is best if you have 2 Textures. Next, let's add some borders! Click on the Define a zone that can't be crossed and outline your map with it! Make sure there are no gaps! Your finished product! Next, let's add some height! Go to your height tool and select the desired height! 25 is the max height a character can walk on! If higher then your character will disappear! Now that you have added height lets finish up here Make sure every time you're editing the map, when your done do this! PLUGINS>HEIGHT MAP GENERATOR If you do not do this, your map will be underwater! ALSO, DO THIS AFTER ANY HEIGHT MODIFICATIONS! Now that that is done File>Export Top/Pko map file find your folder that you made earlier! save it in My Map> Client Side> map save it as garner.map for now do not worry we will change this later but for now, it must be garner.map! KEEP YAMMI OPEN FOR THE REST OF THE GUIDE, DO NOT CLOSE! You will need it later on!! Chapter 3 - Map Editor Use Oh wow, you're getting pretty far! Good work! Now, this part will explain all you need to do for Designing the map with map editor! Lesson 1 - Getting Ready for Map Editor! The first thing we do is find that file we saved as "garner.map" Copy it and go to your Unused Client Files then click on the "map" folder and paste it replace the old one! then find garner.obj and delete it! when we start editing a new one will be generated! Lesson 2 - Map Editing Now open on your map editor.bat that we made earlier. You will get a couple errors! Don't worry those are normal. Just click through them and a Client Screen should open up! If you did it right you should see a bunch of blue screens. Now Press "Tab" on your Keyboard Now you should see an interface appear on your screen here is what the buttons on the top do. Now click the menu toggle button and a blue box should appear up! But for second lets go back to YAMMI that should still be open with your map in it. Look for the Window titled Views that should be on your screen when YAMMI is open. Click map info on it then place your mouse on your map [Orange Part] and you should get coordinates in the Views window. It should look like this. Now, remember those coordinates you found because you will need to use them to edit your map! Now go back to Map Editor and see that blue box that opened up? Click on Instant until the cursor for typing pops up and type your coordinates in it like so! After that is done press enter and you will teleport to your map! Now to place objects See the big taskbar to the left of your screen with all those folders? Well open them up and find objects you want to place on your map You will get errors but that is normal just click on them! Once done click on some of the boxes that appear up and move your mouse to the screen and an object should be following your mouse just click to place the object! It should look like this! Map Editor Commands a = raise object z = lower item l = move right (east) j = move left (west) i = move up (north) k = move down (south) h = hide u = unhide f5 = show grid f9 = make object unpassable f12 = change look of character g = lock object/unbind object q = display surrounding auto stats (whatever this means) ß = turn around an object left without moving it ´ = turn around an object right without moving it altgr + 1 - 0 = shows emote-icons crtl + f1 = enter function key mode In function key-mode: f5 = gives some info about char position, char angle etc. f4 = hide/unhide user interface f6 = reset camera f8 = hide all objects If you press "Ctrl + F1" and then you press "C" you can use free camera mode(control it with e,s,f,d) and if you press "P" its zoom out or "O" zoom in, also, you can use right click on mouse and camera will move faster, to restore press "C" again. IF YOU WANT TO MAKE THIS PROCESS A LOT EASIER ADD THIS TO YOUR CLIENT FILES! IT WILL GET RID OF THE ERRORS AND MAKE FINDING MODELS A LOT EASIER Thanks to Amu CLICK HERE Now go back to Unused Client Files>map find these three files garner.map garner.obj garner.rbo just copy them! then go to Desktop>Your map> Client Side> map and paste them there! Then right click and rename them! I'm going to rename them to map1.map map1.obj map1.rbo Chapter 4 - Generating a Minimap Easy so far huh? Well, it should be! This part is for making a minimap and this part is quite easy all you will need is Map editor and a calculator! Lesson 1 - Making a Minimap Start by going to Unused Client Files>texture>minimap>garner and deletegarner.pk Now open up Map editor and have a calculator on hand! Remember the dimensions of your map? Mine was 128x128 Take your calculator and take X/25 and Y/25 so for me 128/25 = 5.12 Now open up map editor, you don't need to go to your map just have it open and get that blue box up! Instead of click on Instant, click on Minimap this time! and type in 0,0,x/25,y/25 for me it would be 0,0,5.12,5.12 It should look like this Go ahead and hit enter and it will start the minimap generation process! Depending on the size of your map will determine the time it will take Just close out when it is done! When it's complete go to Unused Client Files Create a new .txt file inside it paste call system\game.exe pack garner then save as gen.bat When done click on gen.bat Click through the errors. Then go to Unused Client Files>texture>minimap>garner Inside you should see a bunch of pictures Go ahead and delete them if you would like but you should also see a new garner.pk Copy that and paste it in Your Map>Client Side>minimap then rename it to your map name for me its map1.pk Chapter 5 - Adding to Server Woohoo, you made it all the way to Chapter 5, impressive shit! Now in this chapter, you will learn how to add your map to your server You will need your Server Files Your Servers patched client files and a compiler! Lesson 1 - .atr and .blk You should have YAMMI still open, if you do then good. If you closed then get it open. Go to File>Export Top/Pko .atr file File>Export Top.Pko .blk file Go ahead and export them as your map name.atr and your map name.blk and export them to your map>Server side>map files for me, I would export them as map1.atr and map1.blk Lesson 2 - mapinfo.txt and mapinfo.bin For this part, you will need your servers mapinfo.txt and mapinfo.bin Take you mapinfo.txt and add a new line to it For me, it will look like this! 49 map1 My-Map 0 50,50 here is a code template ID mapname Map-Name 0 50,50 best use ones you find in your mapinfo.txt Go ahead and compile and then paste in your Server Files and Client Files Lesson 3 - Birth_conf.lua For this, you must still have YAMMI open! Go to Server Files>Resource>script>birth>birth_conf.lua Copy a line for a base and paste it at the bottom and edit the map name and the 2nd map name[A.K.A. Map Title] for me, it will look like this AddBirthPoint("My-Map", "map1", 203,181 ) Now go to yammi and find the coords you want your player to start at. and change the coords in the line to the ones you found! So now my code will look like this AddBirthPoint("My-Map", "map1", 71,62 ) Save and Close. Lesson 4 - ScriptDefine.lua Start by going to Server Files> Resourse> Script> MisScript> ScriptDefine.lua Copy a base line from whats already in the file and paste it at the bottom and edit it up. For me, it will look like this AddMap ( "map1", "My-Map" ) Save and close. Lesson 5 - Map Files For this it's pretty basic what you need to do. Go to Server files>Resourse Copy a premade map for instance copy and paste a copy of leiting2 then rename it to your map name so for me it would be map1 Now open the folder Complete this task Rename every file that has the original map name with your new map name Example: leiting2npc > map1npc Open every file and find the original map name and replace with your new map name! Now goto your map>server side>map files and then find your .atr and .blk files and copy and paste them into your map folder! This is very important that you do!!!! When your done Go ahead and edit portal location, times, portal name, configuration ect ect all in the files. Lesson 6 - GameServer Now open up your gameserver.cfg and add this line map = your map name so for me it would be map = map1 Save and Close Lesson 7 - Client Side Almost done hehe! Now open up your Client Folder[The one you will use for your server!] Go to the Client folder>map and paste your .map .obj .rbo which should be located at your map>Client side>map Next go to your Client folder>texture>minimap and make a new folder titled with you map name for me it would be map1 Now go to yourmap>client side> minimap find you .pk file and paste it in the folder you just made! Chapter 6 - Publishing Well your basically done but this is a little bit of info you could use! Lesson 1 - Placing mobs and NPCs To place mobs open your monsterconf.txt file which should be in you server side map files. Open up Yammi and find some coords and paste a new monster line with them. Same thing for NPCs! changing city number and city name in the npc line doesn't matter! Credits: Skarth - Full Guide MaTT - YAMMI Alias - Map Editor Commands Flashstep - Video Guide on old serverdev and .pk Generator Others - For basic knowledge on map editing Too many names to be listed. Congratulations! You have created your first map. Sure it doesn't look great but we all have to start somewhere. Just keep working at it. Make more maps and you will quickly learn new ways to make maps on your own. You will develop your own theme of maps and that is something we can not even possible cover in this guide. Your theme is something that reflects upon you and your server. Good luck to you and I hope to see some of your maps hanging around the forum! Notice something wrong? Want to add to the guide? Message me and we will see what's up.
-
The World Map (Ascaron, Magic Sea, Deep Blue continents on the same map) A single map file containing Ascaron, Magic Sea, Deep Blue continents as well as all associated islands. How to install the map Client: 1) Put the files world.map, world.obj, world.rbo from the "Client\map" folder from the attached .zip into corresponding folder of your game client; 2) Put the minimap file "Client\texture\minimap\world\world.pk" from the attached .zip into corresponding folder of your game client; 3) Add the following line into the mapinfo.txt file ("Client\scripts\table"): XX world World 1 2202,2782 255,255,255 Where XX – the latest unused ID. 4) Compile mapinfo.bin. Server: 1) Put the "GameServer\resource\world" folder from the attached .zip into "GameServer\resource" folder of your server files; 2) Add the following line into the file "GameServer\resource\script\MisScript\ScriptDefine.lua" AddMap("world", "World") 3) Add the map into GameServer.cfg for startup: map = world Some useful coordinates Main cities: Argent City 2145, 3410 (&move 2145, 3410, world) Shaitan City 3085, 3250 (&move 3085, 3250, world) Icicle Castle 1015, 500 (&move 1015, 500, world) Thundoria Castle 650, 2080 (&move 650, 2080, world) Islands: Summer Island 3455, 1755 (&move 3455, 1755, world) Spring Island 3506, 797 (&move 3506, 797, world) Autumn Island 2915, 1460 (&move 2915, 1460, world) Isle of Fortune 1600, 1320 (&move 1600, 1320, world) Zephyr Isle 1405, 2405 (&move 1405, 2405, world) Cupid Isle 2055, 2490 (&move 2055, 2490, world) Canary Isle 3900, 3450 (&move 3900, 3450, world) Isle of Chill 3050, 2280 (&move 3050, 2280, world) Glacier Isle 2240, 1940 (&move 2240, 1940, world) Isle of Ruin 2720, 3670 (&move 2720, 3670, world) Arena Isle 1225, 2765 (&move 1225, 2765, world) Practical application peculiarities 1) The map was not thought over in terms of design and was projected "by eye" to fit the main continents and islands in an area of 4096 x 4096. So, for example, the geographical and climatic features were not taken into account: the "summer" islands are located next to the snow-covered continent, and the "winter" ones are next to the deserted. The purpose of creating this map was to demonstrate the possibility of such developments; 2) The map is completely blank. This means that you need to add to it: birth points for player characters, NPCs, respawn points for monsters, resources, portals, docks, weather regions, and the like; 3) Since there will be many objects on one map, including the player characters, it is not known how GameServer.exe will work in terms of performance and whether it will have enough memory. Probably, the three main continents were divided by the game developers into different maps precisely for reasons of performance and resource allocation. However, you can try adjusting the following parameters from GameServer.cfg: [Entity] max_ply = 3000 max_cha = 15000 max_item = 30000 max_tnpc = 300 4) The server side files world.atr and world.blk were obtained using the YAMMI program. When converting the .map file to .atr and .blk, a warning was received that this function is experimental and, when using these files on the server side, unexpected problems may occur. If such problems do arise, and if necessary, the development of our own converter .map -> .atr and .map -> .blk is considered; 5) Generating a minimap takes about 4 hours, and the resulting .pk file weighs 849 Megabytes (the size of a whole client!). This is due to the fact that each chunk of the minimap has a resolution of 256 x 256 and is saved in the .bmp format, as well as due to the larger number of chunks than on any other map ("empty" fragments with the sea are not saved to the .pk file). At the same time, chunks, for example, from the garner minimap have dimensions of only 64 x 64. Therefore, in theory, you can significantly reduce the size of the world.pk file by patching Game.exe and making it generate 64 x 64 chunks. It is also worth noting that PK Viewer does not work with such large .pk files; 6) Map files are large: world.map (86,4 MB), world.obj (22,3 MB), world.atr (48,0 MB), world.blk (8,00 MB). How this map was created This map was made using the Map glue and cut tool with the following program: #include <iostream> #include "Map.h" // Entry point int main(int argc, char* argv[]) { // Path to directory with maps const std::string base{ "C:\\pkodev\\map" }; // Print a welcome message std::cout << "Map cut & glue tool by V3ct0r from PKODev.NET" << std::endl; std::cout << std::endl; try { // Write a message std::cout << "Building world map, it can take a time . . ." << std::endl; // Main maps pkodev::MapWrapper garner, magicsea, darkblue; // Load main maps garner.load(base + "\\garner"); magicsea.load(base + "\\magicsea"); darkblue.load(base + "\\darkblue"); // Main continents pkodev::MapWrapper argent, shaitan, icicle; // Cut main continents from main maps argent = garner.cut( { 168, 980 }, { 2364, 3272 } ); shaitan = magicsea.cut( { 522, 2816 }, { 1880, 3900 } ); icicle = darkblue.cut( { 386, 178 }, { 3248, 1076 } ); // Some islands pkodev::MapWrapper autsumspr, fortune, cupid, arena, bridge, chill, glacier, zephyr; // Cut islands from main maps autsumspr = darkblue.cut( { 2088, 2371 }, { 4000, 3660 } ); // Autumn island + Summer island + Spring island fortune = darkblue.cut( { 1414, 1681 }, { 1771, 2024 } ); // Isle of Fortune cupid = magicsea.cut( { 2368, 2330 }, { 2675, 2608 } ); // Cupid isle arena = darkblue.cut( { 372, 3376 }, { 518, 3498 } ); // Arena isle bridge = darkblue.cut( { 762, 3344 }, { 964, 3524 } ); // Unknown isle nearly arena isle chill = magicsea.cut( { 2274, 370 }, { 2554, 782 } ); // Isle of Chill glacier = garner.cut( { 2134, 1069 }, { 2325, 1222 } ); // Glacier isle zephyr = garner.cut ({ 3200, 3045 }, { 3610, 3390 } ); // Zephyr isle // Use Ascaron map as base map garner.del( { 0, 112 }, { 4095, 4000 } ); // Free main maps magicsea.clear(); darkblue.clear(); // Add main continents + Autumn/Summer/Spring islands to the base map garner.glue( { 80, 1600 }, argent); argent.clear(); garner.glue( { 2700, 2500 }, shaitan); shaitan.clear(); garner.glue( { 2200, 600 }, autsumspr); autsumspr.clear(); garner.glue( { 80, 160 }, icicle); icicle.clear(); // Remove some garbage from the map garner.del( { 1119,1872 }, { 2372,2987 }); garner.del( { 1265, 1660 }, { 1770, 1980 }); garner.del( { 2621, 1765 }, { 2945, 1935 }); garner.del( { 2016, 1810 }, { 2115, 1875 }); garner.del( { 3912, 2623 }, { 4095, 3050 }); garner.del( { 1082, 1980 }, { 1124, 2024 }); garner.del( { 1125, 1819 }, { 1246, 1864 }); garner.del( { 2239, 3000 }, { 2289, 3036 }); garner.del( { 2948, 600 }, { 2970, 648 }); garner.del( { 245, 588 }, { 282, 620 }); garner.del( { 324, 680 }, { 390, 906 }); garner.del( { 2768, 3442 }, { 2882, 3480 }); garner.del( { 2935, 3428 }, { 2965, 3460 }); garner.del( { 3096, 3404 }, { 3226, 3447 }); garner.del( { 2240, 3572 }, { 2279, 3605 }); garner.del( { 3383, 3327 }, { 3603, 3459 }); garner.del( { 3743, 3204 }, { 3864, 3257 }); garner.del( { 3880, 3076 }, { 3915, 3105 }); garner.del( { 4010, 3168 }, { 4036, 3205 }); garner.del( { 3359, 908 }, { 3607, 1090 }); garner.del( { 1032, 1944 }, { 1055, 1968 }); garner.del( { 3254, 1192 }, { 3367, 1299 }); garner.del( { 3093, 1471 }, { 3153, 1610 }); garner.del( { 3075, 1679 }, { 3117, 1714 }); garner.del( { 3783, 671 }, { 3881, 793 }); garner.del( { 3695, 805 }, { 3727, 836 }); garner.del( { 2963, 615 }, { 2977, 631 }); garner.del( { 2040, 1685 }, { 2224, 1850 }); // Add islands to the map garner.glue( { 1388, 1036 }, fortune); fortune.clear(); garner.glue( { 1900, 2420 }, cupid); cupid.clear(); garner.glue( { 1125, 2740 }, arena); arena.clear(); garner.glue( { 2944, 1932 }, chill); chill.clear(); garner.glue( { 2656, 3632 }, bridge); bridge.clear(); garner.glue( { 2096, 1885 }, glacier); glacier.clear(); garner.glue( { 1348, 2160 }, zephyr); zephyr.clear(); // Save new map to file garner.save(base + "\\garner"); // Write a message std::cout << "Done!" << std::endl; } catch (const pkodev::map_file_exception& e) { std::cout << ".map file error: " << e.what() << std::endl; return 1; } catch (const pkodev::obj_file_exception& e) { std::cout << ".obj file error: " << e.what() << std::endl; return 2; } catch (...) { std::cout << "Unknown error!" << std::endl; return 3; } return 0; } Download The World Map (596,3 MB) If you have any questions or have problems, then feel free to write in this thread.
-
[Mod] Full area map for the region As you know, only the three main regions (Ascaron, Magic Ocean and Deep Blue) have a full area map. When the player presses the "Map" button under the minimap to open the full map of the area, the client sends a packet to the server with the appropriate request. The server reads this packet, decides if the region the player is currently in has a full map, and sends a response to the client. If the answer is "yes", then the client show a large map to the player. If "no", then the player receives the message "This area does not have a full map" in the system: "This area does not have a full map" This mod allows you to add full maps for any region: Requirements Installed mod loading system for server and client (PKOdev.NET mod loader). Modification information Name: pkodev.mod.fullmap; Version: 1.0; Author: V3ct0r; Type: for server (GameServer.exe); Supported executable .exe files: GAMESERVER_136, GAMESERVER_138. Installation 1) In the "mods" directory of your GameServer, create a "pkodev.mod.fullmap" folder; 2) Place into it the mod DLL file "pkodev.mod.fullmap.server.<ID>.dll" for your version of GameServer.exe; 3) Place into it the mod settings file "pkodev.mod.fullmap.cfg" and write in it a list of map names for which you want to add a full map. The name of each map is written on a new line: darkswamp garner2 puzzleworld puzzleworld2 Download 1) Binary release (.dll); 2) The source code of the mod for Visual Studio 2019 Community (C++). If you encounter any problem, bug or have any questions, then feel free to write in this thread.
- 1 reply
-
- 1
-
- pkodev.mod.loader
- server
-
(and 3 more)
Tagged with:
-
Map glue and cut tool This tool allows you to cut square map sections from game client side .map and .obj files, as well as add fragments to existing maps, thus, combine several maps into one. With its help, for example, you can cut out a separate island or create a unified world map with three main continents and islands. The .map files contain all the basic information about the maps of the game world: 1) Areas of land and water; 2) ID of textures of the surface of the land; 3) IDs of regions from areaset.bin; 4) Terrain relief, heights; 5) Passable and impassable areas; 6) Combat and safe zones. The .obj files contain a list of all inanimate objects that are present on the map (buildings, structures, trees, plants, stones, etc.). The tool itself is not a complete program in the traditional sense, it is rather a set of programming codes, software development kit (SDK), that allows you to work with maps - the user have to independently write a program that will create the required map. The programming language is C++, and the programming environment is Visual Studio 2019 Community. Thus, basic knowledge of the C++ language is required to use this tool. API The toolkit is mainly represented by two classes, which are located in the Map.h file: 1) pkodev::MapFile – class for working with maps in the format .map; 2) pkodev::ObjFile – class for working with maps in the format .obj. These classes have the same interface (they have the same methods for working with maps) In addition, the pkodev::point structure is defined in the Map.h file, which describes a point with coordinates (x, y). Since, basically, you need to edit .map and .obj files at the same time, the pkodev::MapWrapper class was defined, which encapsulates the pkodev::MapFile and pkodev::ObjFile objects within itself, and ensures that they are modified at the same time. Has the same interface as these classes. In the process of working with maps, various errors may occur. To handle them, the pkodev::map_file_exception and pkodev::obj_file_exception classes are defined, which inherit from the std::runtime_error class. MapFile::MapFile(), ObjFile::ObjFile() Create an empty map with zero size. MapFile(unsigned int width, unsigned int height), ObjFile:: ObjFile(unsigned int width, unsigned int height) Create an empty map with dimensions width x height. void MapFile::load(const std::string& path), void ObjFile::load(const std::string& path) Load the map from a file. Throws pkodev::map_file_exception and pkodev::obj_file_exception, respectively. void MapFile::save(const std::string& path), void ObjFile:: save (const std::string& path) Save the map to a file. Throws pkodev::map_file_exception and pkodev: :obj_file_exception, respectively. MapFile MapFile::cut(const point& start, const point& end), ObjFile ObjFile::cut(const point& start, const point& end) Cut out a square section of the map. start - start coordinates (x0, y0), end - end coordinates (x1, y1). Throws pkodev::map_file_exception and pkodev::obj_file_exception, respectively. void MapFile::glue(const point& pos, MapFile& map), void ObjFile::glue(const point& pos, ObjFile& map) Add a square section to the map. pos - coordinates at which to place the section, map - the section to glue. Throws pkodev::map_file_exception and pkodev: :obj_file_exception, respectively. void MapFile::del(const point& start, const point& end), void ObjFile::del(const point& start, const point& end) Remove a square section from the map. start - start coordinates (x0, y0), end - end coordinates (x1, y1). The section is replaced by the sea. Throws pkodev::map_file_exception and pkodev: :obj_file_exception, respectively. void MapFile::clear(), void ObjFile::clear() Remove the map and free memory. Class pkodev::MapWrapper has a similar interface, but there is a difference in the load() and save() methods: the path to the file is specified without the extension. Examples of usage Cut a map section Let's write a program that will cut the "Isle of Fortune" out of the "Deep Blue" location. Accordingly, we need to work with the files darkblue.map and darkblue.obj. Open Visual Studio 2019 Community, create a C++ console application project and add Map.h and Map.cpp files to the project, or load a ready-made project from the attached .zip. The program algorithm will be as follows: 1) Open files darkblue.map and darkblue.obj; 2) Cut out a map section from them with coordinates x0 = 1430, y0 = 1675, x1 = 1780, y1 = 2025; 3) Save the section to the files fortune.map and fortune.obj. Write the code: #include <iostream> #include "Map.h" // Entry point int main(int argc, char* argv[]) { try { // Create an object for simultaneous work with .map and .obj files pkodev::MapWrapper darkblue; // Load a map from "darkblue.map", "darkblue.obj" files darkblue.load("C:\\pkodev\\Client\\map\\darkblue"); // Cut "Isle of Fortune" from the map pkodev::MapWrapper fortune = darkblue.cut({ 1430, 1675 }, { 1780, 2025 }); // Save "Isle of Fortune" to the "fortune.map", "fortune.obj" files fortune.save("C:\\pkodev\\Client\\map\\fortune"); } catch (const pkodev::map_file_exception& e) { std::cout << ".map file error: " << e.what() << std::endl; return 1; } catch (const pkodev::obj_file_exception& e) { std::cout << ".obj file error: " << e.what() << std::endl; return 2; } catch (...) { std::cout << "Unknown error!" << std::endl; return 3; } return 0 } As a result, we will get a map (screenshot from YAMMI): Glue several maps into the one map Now let's try to glue some maps into the one map. For example, let's create an array of "Isles of Fortune" from the island we got in the previous example. The program algorithm will be as follows: 1) Create an empty map with a size of 1024 x 1024; 2) Load "Isle of Fortune" from files fortune.map and fortune.obj; 3) Place the "Isle of Fortune" at coordinates (128, 32) on the map; 4) Place the "Isle of Fortune" at coordinates (512, 320) on the map; 5) Place the "Isle of Fortune" at coordinates (128, 576) on the map; 6) Save the map to array.map and array.obj files. Write the code: #include <iostream> #include "Map.h" // Entry point int main(int argc, char* argv[]) { try { // Create an empty map 1024 x 1024 pkodev::MapWrapper map(1024, 1024); // "Isle of Fortune" map pkodev::MapWrapper fortune; // Load the "Isle of Fortune" map from "fortune.map", "fortune.obj" files fortune.load("C:\\pkodev\\Client\\map\\fortune"); // Adding several "Isles of Fortune" to the empty map map.glue({ 128, 32 }, fortune); map.glue({ 512, 320 }, fortune); map.glue({ 128, 576 }, fortune); // Save the map map.save("C:\\pkodev\\Client\\map\\array"); } catch (const pkodev::map_file_exception& e) { std::cout << ".map file error: " << e.what() << std::endl; return 1; } catch (const pkodev::obj_file_exception& e) { std::cout << ".obj file error: " << e.what() << std::endl; return 2; } catch (...) { std::cout << "Unknown error!" << std::endl; return 3; } return 0; } As a result, we will get a map (screenshot from YAMMI): Download the tool (9 KB)
-
Hello everyone! A few weeks ago i came to the conclusion that every server i happened to visit uses the good old Argent City as a main basis. Some of them are edited for better or worse, but isnt it boring? So i decided to try to make maps on my own. The reason i write this post is to get an answer for a question: Would you like to use a new map with some forest and a city which isnt too big but enough for the basic needs of NPCs? Would you like to have PK maps or mazes which isnt the good old ones, but fresh and made by heart? I actually have a few maps right now done and under developement, and if making maps turn out to be half as needed as custom apparels ( which i also want to do in the future with other custom "stuff" ) then here is the chance if the community wants me to do it! I will show some print screens of my maps below to help you: Race map aka Super Maria ( thats how i personally adress the map, but officially its a Race map ) The race map has a unique shape, and style. I wanted it to be a little dark, a little olymics feeling (?) The size is 180x180 Has an A and a B version : version A has black boxes around it, version B is an update where the boxes are gone Has a minimap The wild life around the race field was also planned and styled out, and the same amount everywhere, with shades. See the pictures in this PDF file Frozen Island ( It doesnt have a proper name yet ) This frozen island says no the the icicle buildings, its a fortress which was frozen by a time, ice and maybe magic?
-
Hello pkodev community, Back in 2014 I had made a map called Maracanã Shore: web.archive: serverdev | Maracanã Shore Basically, it was a football stadium with a small village and shore in its surroundings. Unfortunately, due to a severe data loss, I haven't managed to recover it and I haven't been able find it anywhere else. Therefore, I humbly ask, is there anyone from that time who still has this map or maybe know who might have it? If that's the case, please contact me. Thanks in advance!
-
helo pko! i'm facing 2 issue , first with my map radar it's not auto detected any way to fix that? the second issue with my pet skills when i try add 3rd skill for mordo jr or 2gen pet most time don't show the skills in pet but work normal with normal pet and green mordo when try add 3rd skill , and this with normal pet what i should do?
-
link: permissible "paranoia" MD5 4dca1ac0ff463997edcd665fadc3fb6d SHA1 dab11d12ab503e41532395b7090f1ed5dfb10b97 SHA256 9f9d0d2fdfc2233ea68738d0dcc4f4b4a53a56d229067d7a040ba88341752b38 Установка: Клиент игры/map Installation: client game/map Link : Disc.Yandex Link : Mediafire link: permissible "paranoia" MD5 249c273dd9bbe174917f941e88f85e0a SHA1 32b3bb460b1b83df67d785731506f452f3871494 SHA256 0f837c4ff5b3c464f1ee345a31306b1b4cbb0c3955e4c30839264f0cac0d0128 Установка: Клиент игры/map Installation: client game/map link : Disc.Yandex link : Mediafire
-
Hello I'm selling my maps services, feel free to look. Dark Forest Town: - PvP invite zone - Safe Zone - Two Boss spawn zone Galery Dark Forest Heaven: Galery Plant the Bomb: > 5 vs 5 Red Team win the Round: > Kill all enemy players and deploy the bomb; > Bomb explode; Green Team win the Round: > Kill all enemy players and defuse the bomb if it was deployed; > Defuse the bomb; > Time to Plant the Bomb ends; Time to deploy the bomb: 120 secs; Time to defuse the bomb: 90 secs after deployed; To plant or defuse the bomb, players must be in the "Red Zone". Each team member in this area will reduce deploy/defuse time by 1. Time total: 20 sec(s). Galery Discord: Andrew#5753
-
Ссылка: от "паранои" MD5 4dca1ac0ff463997edcd665fadc3fb6d SHA1 dab11d12ab503e41532395b7090f1ed5dfb10b97 SHA256 9f9d0d2fdfc2233ea68738d0dcc4f4b4a53a56d229067d7a040ba88341752b38 Установка: Клиент игры/map Installation: client game/map Ccылка : Disc.Yandex Ccылка : Mediafire
- 1 reply
-
- 1
-
Ссылка: от "паранои" MD5 249c273dd9bbe174917f941e88f85e0a SHA1 32b3bb460b1b83df67d785731506f452f3871494 SHA256 0f837c4ff5b3c464f1ee345a31306b1b4cbb0c3955e4c30839264f0cac0d0128 Установка: Клиент игры/map Installation: client game/map Ccылка : Disc.Yandex Ccылка : Mediafire
-
i am trying to lunch the map editor the .bat file format but i keep getting this error program as game program, unable to run directly, please launch the game correctly! would appreciate the help and thanks in advance
-
How to create a map using the Import Sub map tool with the objects aligned correctly? An example map that was created from Abaddon - Purgatory:
-
Hi my friends, i want to know how to fix the problem with the Tales of Pirates original client music... It's crashing the game sometimes!
-
I have a problem with my server when i put a map to open for example every 3 hour and the other every 3 hour but from different start alway there is a hour when all the map open at same time i dont know why this happend and my other question is ? is possible to make a function that i can put the time to a mapa no every 3 hour or so just like i want BH open at 1 and after at 3 and after at 4 for example like add a time for ea map no every XX time
-
Could someone upload Chaos Icicle and Chaos Shaitan Server side and client side plss i really need it