Герои 5 редактор карт руководство

Map making suggestions for those brand new to the Editor.

The latest Fan Manual is a «must-read» Fan Manual

Link dedicated to this guide. Update

You also have available 2 other threads loaded with all sorts of info. Maps

http://www.celestialheavens.com/forums/viewtopic.php?t=3793&start=0

A Few Ideas about Starting

Find the HoMM storyline and retell or create your own story based on it. Create something from History.(sortof)I have used real-world maps of counties, states, regions etc. Of course you can create your own fictional world. One thing I took from HoMM 3 was making a map of a Dragon and going from there. They also did a Griffin for Griffin King map objective.
***Read my dedicated topic «Mindsprinkles about mapping» post in this thread just for fun, before beginning a map.

These are guidelines and not etched in stone. An assumption is made that a new map-maker has a PC that is ‘middle-of-the-road in Stats. It is also assumed that it will be a ‘single-player, single-mission map’ that can be modified for other gaming-modes later.

Map Size

Beginning your map

Important! When starting a new map by either the default pop-up or by selecting “File”/then ‘New‘, you will receive an option to pick either Multiplayer’ or ‘Single-Mission’. If you think there is any chance you may want others to play this map with you…always pick “Multiplayer“. I apologize if my not knowing this before has caused anyone headaches but better late than never. I’ve not been able to change my original single player maps to multiplayer. I’ve been told there is a way to do that but he could not remember the method used to change the maps default.

In selecting Your map size, if you want lots of trees and animations, etc, and also want an ‘underground’ , then select nothing larger than ‘large’ with normal or smaller being better. This has to do with your PC and the games A.I.and processing speeds. Not having an underground, does make picking the larger maps i.e. «Huge» valid for decent game play. Other factors concerning this are of course number of players/factions. The map-editor has a desired limit of no more 8 towns on the map. Again this is a Gameplay-speed issue. So, if you want to have more, then cutting back on ‘animations’ can help. Decorating and filling the map with fixed-objects like rocks, craters, dirt/sand-trees, mountains etc. reduce background processor workload. Just remember; the bigger the map, means more work to make it look good.

Map Editor {overview}

Note*** There is a glitch within the Map Editor that can make the 1st map you open…blur. To get around this, just open the may you want a «second» time. (not reloading) The second time, the map’s surface is always clear.
On the program’s screen, I always have the minimap window at upper right. and the Tool panel at lower right. I toggle back and forth with the Object list panel (left-side) depending on what I am doing at the moment. I only have the Object-List up if I am working on individual objects i.e. color or checking ownership etc.
At the top-right of the M.E. program are 5 tabs. I am only going to list and discuss what I use. ‘File’ Reload I use when I make lighting changes. Edit Rotate-object I use R on the keys. This makes the trigger-cell more or less accessable, depending on what is nearby. Level-Terrain under object I use this for all objects at times but Towns, mines and buildings always. This is good to do at the end of making a map so you ensure the trigger cell (green) can be triggered by a hero. View Show-gridThis is good aid to see the slope of the land surface when using the Smith-tool. Show Passability This reveals the used cells in red and also the ‘green’trigger cells. Masking is also shown in a dull orange color. Tools Center Camera Top Camera To see straight down. At angles in 3D, some things are hidden. All three View buttons are here. for the tool windows.
Note: Use the long toolbar with all of the icons, for any and all of these functions.
Warning: Whenever placing objects on the map, unless it IS for a certain player #, make sure you have not bumped ‘player-none’ to another player-number other than ‘None’. I share this because if you do not watch this constantly, when playing your map for the first time, you could have a team own many more things than they are supposed to start with.

Also when placing objects be warned; sometimes for whatever reason; «Two of that object can be placed». I think I had a crash for this reason. I beat the first monster and a second must have been it. I don’t know what causes it but an extra treasure chest is no big deal but an extra level 7 to fight early on to get an artifact, can be to ‘Balance’…even if your game does not crash.

Map Surface Set-up

Remember to zoom out to see the whole map surface to layout the map as explained in the manual. I like to use the terra-skin ‘weeds’ found under the filter ‘Dirt’ to mark where woods will be, the dormant-grass for hills, and a ‘Rock’ skin under ‘Grass’ or ‘Orcish’ for mountains. At starting out, I also like to mark where towns are going to be with a skin that is distinct so I can easily reference the town to gage distances between towns, portals etc. I like to use one of the ‘sand’ skins like ‘wetsand’ to mark where portals are going to be placed and spots to have a shipyard.(This helps you to easily see these places, you can change them to another skin when you’ve finished)
My first thoughts in making a map are about logistics. Having some balance in the distances that factions have to travel to get to similar places/purposes. Or, if I want a faction to have an advantage or disadvantage in distance, easily seeing the colors of skins on the map helps me quickly gage differences. Using the skins in whatever fashion you choose to associate with map objects, helps you to clearly see the ‘world you’re creating’.

Note: Several map-makers have told me; they like to make maps in Paint etc. to plan the map layout first.
Once I have my skins applied then I think ‘water’. now I know I’ve already said ‘shipyard’. Your order will vary to your preference, the point is do what keeps the ‘big picture’ clearest in your head. To the seasoned veteran map-maker this sort of thing is a no-brainer but I’ve found that I love to make the much larger maps so this fundamental stuff helps me keep things straight. I dislike it when I have a map that is beginning to create me instead of me creating it

Placing Towns

Just want to note a couple of things. You can place the towns first or build the land first but remember to «level terrain under object» when finished. For lighting I have found that 12-15 Z at 25-50 radius works well(you’ll see lighting further on down). Also under the Town’s object properties is a «Ship tile» this sets what tile will be used by heroes to board ships. This is easier then moving a town around near water and trying to find the green-access cell. Under the Town properties, you can dictate what the town will have already built; from nothing to fully built. You can also set what buildings in a town may not be enabled. i.e. If it is a random town out in the middle of nowhere on your map and you just want that town to be a spot to refresh magic and give some more money to the current owner. Also you can have a starting ‘Garrison Hero’ ready to rock, inside the town at the game’s start.

The Land

First notice any tile you click on; it has an XY location and H value = «Height» displayed at bottom right of the map window.
Roads are an important aspect of maps. On different maps, I have placed them in two ways. I recommend placing them «Before» bulking up a map with hills and mountains, so they can be used to guide where the land rises or falls. But it is also valid to make land and then make the roads follow the land , much like what happened for centuries on the earth: but starting out, this is the harder route. Once you are good with tools it does not matter.
You have three very good tools in ‘Bulk’, ‘Dig’ and’Smith’. Bulk and Dig do just what they suggest and Smith is the tool that smooths the land’s surface. Make a little ‘learning map’ to practice on and set the brush to size 7 and ‘Bulk-up’ a big area. How you move the mouse will impact how the land grows. And it grows very uneven. «Zoom-in», at times, to make sure you are seeing what you need to. If you have ‘holes’ that are more shallow, switch to a smaller brush size and build them up, then go back to the larger size. Once you have an area at the height you desire (H) than use the Smith-tool. This evens all the rough stuff. But you have to be careful, because if you want some jagged-edges around a precipice then this tool will knock it off if you go to the edge, so zoom-in to see where to stop ‘Smithing’. (Remember to use the «Grid») If you overshoot and knock off those fangs you wanted? switch to #1 or #3 brush and bulk it back up.
Raise and Lower
‘Raise’ raises the land a notch. You can do this as much as you want. ‘Lower’ just takes it back down again, say, in places you have made a mistake. Raise, I discuss further ‘in Bridges’ and ‘Lower’ I discuss further in the water section.
Note: Brush size can impact what you do. i.e. If you raise one Size 7 square, you will only raise the next smaller size inside it, with the #5 brush and so-on. Same thing going back down.
Note: I use these two functions mostly when making bridge-landings. But I have used them to make step pyramids. I do not use them much for the land because of the lines that appear that cannot be skinned.

Quick, varied Plateaus:

I like to use the #3 or #5 brush size and bulk-up a few different spots to various H-heights/values, in a region that I am elevating. Then I switch to #1 and use 2 or 3 spots on the same mound. One dead center and another midway and the last near the edge. In each case, creating a small block,»with the plateau button and #1 brush» (once you have the three elevations you can switch to larger brush sizes to spread them out) at those different elevations. Since I have put a few of the bulk spots around the region I am working on with an overall picture of the layout in my mind, this approach really makes it easy to get extremely varied landscape elevations… quickly. i.e. I started in the North with snowy elevations at 30-40 H, and stepped down gradually or rapidly in places, taking the land ‘down’ to the southern coast.
Note: Use the ‘smith ‘ button to level off the rough edges. Be careful with this, the different brushes (1-7) sizes work accordingly.

Mountains

Under the object list of «Grass» there are three mountains and two hills. You can put these directly on your mountain range line in random fashion, along where you have targeted the surface with your rock-skin. Place them by remembering to change ‘position’ as they are placed by using the «R» key to rotate into one of four angles. Overlap them at times to make denser areas of the range. Once your mountain range is filled then you can go to the tile-brush again and select from 1-7 size depending how wide the range is and use the «bulk button» to build up each mountains or hills «height». At any time just use the «dig» button to take a little of the top Changing brush size also adds good visual variation. Note: Since there are very few «pre-given mountain objects to place, I tend to use these much later in the process. In other words. I use the ‘plateau method’ above to make my mountains and just ‘cap-off’ here and there with the gimmes. The different ‘rock-skins’ look like mountain-surfaces to me anyway, Even when starting with the gimmes I always came back through and matched connecting terrain to them by using the ‘rock skin’. You can use different rock-skins for different surface textures. The ‘sandrock’ makes great hills and mountains on sand. By the way. There should be a good mixture of grass and dirt hills.
Tip about mountain ranges: Once you have your ranges and have made them create long roadways between Towns, you can, at given points, use the ‘zero’ brush to create a’ tight canyon’. Be warned (save first) it takes your work down to «ground-level» and if you have built very high elevations, zero is a long way down. Guard this passage-way with a Lv7-monster or greater that can only be defeated much later in your game. You can do the same with «dig» but it’s a lot more work.

Water and Bridges.

Adding water to your map can be done in two ways on the surface level. You can select the brush choice ‘lower’ and the brush size 1-7 and remove the land. Water with waves remains to create your rivers and seas. You can also select in the ‘tool-panel’,the tile-brush filter «Rivers», then pick ‘water’,’lava’ or ‘bog’. Using any of these on a land surface (terrain and underground) «lowers the land with the chosen liquid» If you want an area of a «bog» to have a few passable spots then you will need to use the passability check to see where the river or bog is «solid». You may have to ‘erase’ here and there, leaving a few spaces only lightly touched but not enough to make the red-line solid and that leaves places for an adventurer to cross. If you want the river, bog or lava to be a solid barrier, then you have to make sure that the entire thing is two spots of red…wide or use ‘Mask’.
When using the ‘lower’ method, the river/sea bottom will be whatever skin the land was that you lowered. Depending on the lighting of your map you can change the skin of the river bottom to good visual effect. I like to use one of the ‘conquest skins’, they look very good in the sun. If you are going to make the terrain map lighting dark, don’t bother with this. You cannot change the look of water made with the ‘Water’ tool, nor the ‘Lava’. But ‘Bog’ IS impacted some to good effect with the ‘roots’ «skin spotted in here and there under nearby trees» or by changing to lighter or darker ‘dirt’.
Note: If you use both methods on the map, they will not match when they join.
Underground you only have the Water/Lava/Bog tool to use for rivers and sea etc. Remember; The ‘Lower’ tool + #3-size brush is used to lower the land when first starting out underground. ***It is the only one that will do this
Bridges are a little tricky at first. The parts to a bridge are found in ‘Grass Objects’ in two parts, the middle section and end section. There are two different color of bridges to use. Place them directly on land. Use however many middle sections to span (using R) and end cap them. Then at each end, set the brush to size #7 and use the tool ‘raise’ once, at each end of the bridge. I make the white-box showing the brush-cursor, end at the first pylon/statue, outward «away from where the water will be». If you tilt the map with your mouse, you will see the bridge end is still hanging in the air. Switch to brush size#5 and ‘bulk’ up the land under the bridge end several times and then switch to size #3, center and bulk till you see the ground start to overlap the bridge end, Switch the brush to ‘dig’ and click once to lower the land for a clean bridge end. You will need to use the ‘ramp’ tool to ramp the land squares you made so the bridge can be accessed at each end, unless you raise more land on the map. After you’ve done this to both ends, run your river water under all of the middle-bridge-supports.

Connecting the two levels

1. On your map, place Subterra-gates from Object Filter «All terrain objects» wherever you want to go down to the underground.
2.Click on «view underground» on toolbar or under the «view tab». Wherever you have a Gate entrance above, click ‘view underground’and using brush #3 AND ‘lower’ Lower the area under the gate above. Switch to terrain skins and choose ‘subterr’ and change the surface skin of the new area. Now you can see it on your mini-map. Go around and repeat for all gates on the upper level to have a corresponding lower level area. Once you’ve finished you can see where all of the ‘exits’ now need to be for placing the object ‘Subterra gate exits’ Also found in the Filter «All Terrain objects»
3,Now place an exit in each of the new areas.Then make sure you have passability-on. I like to have the upper and lower parts of a gate match at XY. Placing your cursor on the green trigger of an object shows you the location in XY coord. at lower right of your map screen. I make them match by moving my ‘exit’ where it needs to be and also make it face the same direction using the ‘r’ key. This is optional. They will work regardless.
4.Now you have entrances and exits all over the place but they are all by default numbered 0. This means they are not separated into ‘sets’. You have an object properties tab on the toolbar. If you click on it after selecting one of the gates, the value 0 is what will be shown. Keep this simple. If I have two gates, both have a top and bottom (entrance and exit) The first one is in player one’s area. So, I change 0 to 1 for both parts of that gate and change 0 to 2 for the other gate. Rule for me I never use the default 0 because whenever you save your map after working on it, errors are listed. If a gate with a zero comes up on that list, than I know I have a double gate situation and look at the listed XY of the problem gate and I know where to go to delete the extra gate.
5.Strategies of placement are all up to you but I advise you coming up with an easy way for you to keep your gate numbers clear in your mind. Since lots of gates are not usually preferred I will use player numbers to help me keep things straight as I just explained. Lets say I have 4 players on the map and each has 3 gates in their area. Then I label those gates in this fashion 1.11.111, and so on. If the map had 8 factions…same thing. 1,11,111 to 8,88,888. I would have 24 gates all separately identified.

Portals

Portals are different than gates in that they can be on the same level on the map. Also you have ‘two-way’ and ‘one way’. With a two-way you use ‘2’ objects called «Two-way-portal» and for the «One-way portal» you have two parts like a gate does, with an entrance and an exit. The same rules apply in identifying gates. They will be default 0 when first placed. You have to give them a unique number. Make a list of ‘used numbers’ if you need to to refer back to as you go along, whatever to help keep things clear. This can get pretty difficult to track, if you don’t plan well and you have lots of Gates and Portals on your map for different purposes.
Note about Portals. You can have 1 ‘One-way’ entrance and 2 ‘One-way’ exits. or Three ‘Two-ways’ to link 3 spots on the map and much more if you choose. However, in each case you have to identify each by the same number in that group, and use new numbers than all other previously placed groupings.

Underground

I chose this order because if you did the last section you have portals and can now design where they lead. The order is not important. I have also made my entire-underground with all objects and the last thing I did was place ‘gates and portals’. Whatever is easiest for you.
ONLY «#3 brush’ and ‘lower’ will clear away areas. When on the upper map using ‘lower’ will take you down to water. It will not do this in the underground. To have rivers, you have to use the water brush. Lava and Bog are also selections. ‘Crags’ is the 6th Brush Tool at far right of the Tool-panel. You can change the wall texture of the underground in places or all over with one or all of these eight choices. To try it, pick one of the Dwarven 4-8 and move your cursor along the walls and they are changed to that selection.
Note: Some of the Dwarven have spaces that you can put various fire objects inside.(Remember this when you come to the lighting-section)
Underground usage. I have lowered and used almost all of it on some maps while others I will just do small areas for specific purposes. For another Town. Level-up areas. Artifacts or short-cut-passages. Additional resources. Some combination of all of that. It’s up to you how much or how little and for what purpose but remember to place mostly ‘fixed objects’ for better gameplay. Remember also about the Editor having a check-map issue with more than 8 towns on map. I can only assume this is an A.I. issue. But if you have an awesome PC, and want to try having twice that number or even more. Go for it. You can always remove some later if need be.

About Objects

The lower right of the Editor should be the «Tool» panel. If it is not open click ‘View’ and it is 3rd from the bottom. I am only going to say a few things about Objects since you can cursor over all of them and read descriptions. I’ll just make a few points that may be helpful
Objects that have Random boxes for placement are Dwellings for town-creatures, levels 1-3 can be picked but 4-7 are random in last faction-specific dwelling. Towns, Monsters lvs.1-7 and Artifacts 4- Any, Minor, Major, Relic and also «The Tear of Asha» If you place this on your map you will need to place a lot of Obelisks from the ‘All terrain’ list, around the map to slowly reveal the Tear’s location.
Dirt has Swamp Haze, Sand has Pyramid, Grass has Bridge-Parts, Subterra has crystals and torches good for point-lights. Taiga trees look good in Necromancer lands. Treasures has all resources and Chests. I only point this one out because depending on how much you place will affect how your game starts. If you want things to get rolling fast then spread the wealth but if you want a slow build-up then place very little. Another thing that mappers do in lieu of freebies, they will place some like resource at each mine type right by the creature guarding. i.e. at a crystal mine; 1 crystal and a chest or 2 crystals. A chest and a random treasure etc.
The All Terrain Objects is where most of the things you need for your map will be, but explore all of the sections. I.E. the Arena Objects is good place for quite a few things to give variety. (be sure and mask them and check them for passabilty so they will not be Swiss-cheese.)

Note: Many objects can be «resized», If you have the object list panel open and you highlight a tree, you will see “Scale” 100 %. You can change that to 200% and double the tree’s size or go the other way.
Also when looking here notice the line Shared that text is a file description of that particular tree. If you left click on that line and then click that little left box you will see a whole file structure come up with lots of things to choose. Pick the big tree from on down the list a bit in the listing and then click back on the map surface and on the tree again it should change to your latest pick, the big tree.
Thanks again to Gibblets for contributing these two tips.
Warning: There are many things in these files that are not listed normally in the Editor. So I advise saving and then duplicating your map with another name to explore the files. There are all sorts of things here like “glows” “effects” and «Bats».

Note: There are a few objects that are only for show until they are scripted for a purpose. “The King’s Mausoleum, “Tieru’s Dwelling” and a few of the towns listed are “ruins”
One more Object: In the ‘All Terrian’ list are two items that work together just like gates and portals, they are «Hut of the Magi» and the «Eye of the Magi». Most know what these do but they can be used exactly like portals and gates in their assignments. i.e. I put a ‘Hut’ near my starting town and place a few ‘eyes’ around some things/places that I want the player to see quickly. I give that «one hut and all of the eyes the same number». Then, much further out I can do the same thing again; place another ‘hut’ and more ‘eyes’ that reveal things deeper in the game and then I give that whole group a new unique number.

General Map Set-Up

View/ then Map Properties

Under this section you have several tabs.
Artifacts. You can “select All” so all have a chance to appear on the map when placing the ‘Map-Objects’ called “random artifacts”. However if there are no Necromancer towns in your game then those artifacts, i.e “The Amulet” should be unchecked. If there is no water on your map then the “Sextant of the Sea Elves” should not be selected since it is for water use. Another thing to consider is do you want to place an artifact on the map and not leave it up to a random chance? i.e. You put the “Tome of Light Magic” on the map, then you might not want it to be checked here, because you may get more than one. This is no big deal unless your Map’s objective is to go through a series of quests to acquire the “Tome”, then you will not want it showing up in a random fashion. Another thing to consider is how many artifacts will you have on your map and to what purpose? I tend to place all artifacts and leave this section “unchecked” , so I can set-up the factions and their needs in the flow of the map. If you don’t want to sort this out then “check-all” and leave it all to luck and your random map-object artifact boxes. Those boxes represent the four classes of artifacts. Any,Minor, Major and Relic. Relic being the best, as in the Tome example. The «Any» is truly random, since any artifact could appear.
Note: Like all else, in the artifact list, holding the cursor over each one tells you what it does, so make notes to refer back to later.
Spells: I do the ‘check all’ and uncheck “instant travel”. That is my preference because I want heroes traveling roads and not bopping over mountains. You have the same thing here, there could be spells that you don’t want available but that is something you can get to later when designing a map with serious quests etc.
Heroes I click ‘reset’ and that makes only normal faction heroes available to hire. If you check “all” then whatever faction campaign Heroes you have available to your Map Editor Mod files will be selectable too.
Teams U-Pick
Note: Since I make maps initially for ‘single player’ I have found it is a good idea to use the File/SaveAs function to also make a team map out of it as well. When making this second map you may want to make some changes to the map with having allies in mind.
Hero Restriction. I set mine at 35 to give them room to max out but this function does not appear to matter really unless you are intending to follow a campaign and want to limit a hero to progress further on the next map in your series.
Ambient light for upper and lower levels. By switching these and going to File then Reload you can see the light change on the map surface to find one you like. The file-names are not user friendly, so you will need to write them down and try to remember where they are on the list. Some are very dark and you will need to do the point-lights, described further down to get the benefit of very dark settings. There is also fog and settings that favor terrains of different types. You have to experiment.
Rumors You can make some up and save and assign them here.
Note: Underground while I am building a map I will set the ambient underground lighting to ‘Sand’ (at the bottom of the list) that makes everything easy to see while making the surface etc. and then once I start getting close then it’s time to reload my darker settings and see my light-work.
Player Properties. Here you select the player number (1-8) if you want the player to have a main Town, be Human, PC or both (both is good to test with later) and also if you want to generate hero in town.(Yes) unless you have made a «garrison hero»
Map Name Whatever you call it, also add Heroes version to it i.e. (ToE) (HoF)
Note: You can give color to the map-name-text like this; <Color=red>yourmapname. For some reason «text-case» impacts color.
Map Description. Tell players what your map is about, or lie.
Note: The description box is a good place to give players a heads-up if you’ve made a spell N/A so they won’t be looking for it. You can also do the colored text in this area as well. Remember this text is on the screen at the same time as a PWL picture.

Point-lights/Colors

Reminder…What ever «ambient-lighting» you pick for your map (in map properties), it will impact how your work below will appear. You can use some very dark ambient settings or Fog and Night settings, if you introduce your own effective lighting scheme.
Any ‘object’ that you place on the map can be a light source. Open the map properties tab and expand its window to the right about a third of the way across the screen. This enables you to see all cood.-lines-XYZ for entering values. When this view is first opened it displays all map properties but when you click on a single object on the map the list gets very short. In that short list for an object, is a line called «pointlights», Right click and «Add» and you will see «location and color» settings treed in X, Y and Z values. In the first subgroup (Pos.) what value you enter determines the height of the light’s origin. If there is no value in this line not much happens even with color entered below. To give you an idea, I enter 5 at Z for ‘crystals’ in passage-ways in the undergound. I like the way the light shines up but you can choose what ever value you prefer for any object. I use ‘1’ for warrior tombs because they are right on the ground. I use 2or3 at Z for mines and sawmills. I find that 12 is very good for ‘Towns’ as in the Dungeon’s Lady. You just have to zoom in a see how your lighting parameters look on the buildings etc. Chanign the upper values above Z turns the light.
Now I pick my color. I have seen where very long decimal values are given, as (in the RMG) .501961 at «Y» with zero at X & Z and is a Dark Green. But I will just enter .6 and the color is the same. If I enter .8 or 1 then the green becomes brighter. The higher the value the brighter the color. I.E. i like to use ‘white light’ for neutral buildings such as stables or war machine factories. I place the light height at «2 or 3 in the upper Z» and «.7 to 1 values at each X,Y and Z.» The brightest being X=1,Y=1,Z=1. If you use .7 at each, then the light will be a softer white…more gray. The last line under ‘color’ is ‘Radius’ and this determines how many tiles the light will project outward. A normal value is 20-25, say for a crystal but you could use only one and put this value at 100. However I tend to use 15 for mines around towns and for a small object like a sign or or Idol of Fortune a yellow color looks good at a radius of only 5. That makes the object have it’s own color but not affect the objects around it. Unless of course you want that.
Note: For simplicity I tend to just use «1» as an entered value at «color = X-Y-Z». Since we have 8 factions here are my quick colors. Red (X=1,Y=0,Z=0) Blue (X=0,Y=0,Z=1) Green (X=0, Y=1,Z=0) Teal (X=0,Y=1,Z=1) Purple (X=1,Y=0,Z=1) Orange(X=1, Y=.6,Z=0) Yellow(X=1,Y=1,Z=0) and Brown(X=.6,Y=0,Z=0) Changing values changes the light and it is fun to experiment.
Tip from Mike80d: Also in the Map Properties list are the ‘players’. Here, you can set the ‘faction color’. This is indeed splitting hairs but I like to do this regardless. A Wizard has a mostly ‘Teal’ vapor-trail that follows him/her as they level-up. Why not make that faction ‘Teal’ what ever player number it is on my map? Player 6 is Teal by default so if a faction has to be Teal?, then this makes sense to me. Player 1 is Red but I prefer the Inferno to be Red instead.
It is not important ‘what’ you choose to light-up, what matters is the purpose you desire. I will select «Rocks’ from ‘Water Objects’ and use those to light-up dark areas of the high seas. I also like to use the buoys , ships, mermaids or sirens for effect.
Another PL Note: The point-light function can be more than one color and one light source. At the ‘point-light’ line, click «add» (once or twice) and you can try for multiple light-effects coming from the same source. I.E. Orange at -5Z and red at +12 will light the same Fortress Town in 2-staged colors, with the first going down into the ground and the other up high.
Thanks to Gibblets for this addition to lighting.

Masking.

You have a brush-selection called masks. The purpose of this is to make a tile inaccessible. So, if you want to insure that a monster cannot be got past without fighting it or a border guard cannot be side-stepped then mask to the edge of them. Another purpose of masking is making a hero use the winding roads you’ve made. The A.I. will find the shortest route to get where you are telling your hero to go and if that means cutting off through the sparse woods etc. and bypassing the road it will. As I explained about balance in gameplay…distances matter, so «making heroes use your roads» enforces your map layout. Another thing that masking does is keeping heroes from walking up mountain-sides. Unless you want that to be part of the fun, you won’t want it normally. Again, the A.I. will find the shortest route and it does not know those tiles are a mountain.
A very important reason that I mask alot now, has to do with the map’s performance. I have nothing to prove the following theory except for some large maps that seem to play better now, than my older large maps. If the A.I. as I think it does «see’s all playable tiles», then masking in a sense makes tiles «not seen» they are not accessible, so they don’t get counted in the possibilities of movement. Much of a map surface is just divisions like, woods, water mountains etc., obstacles that have to be gone around. So I am guessing that when you mask all of those areas, in a real sense you are making the map smaller. If PC performance is not an issue, a good thing that I’ve learned to do is choose a larger map size so «distance of travel» can be greater to prolong the build-up of Heroes before battle (my desire)and therefore masking a lot more un-needed surface. Whenever you check for «passability» you will see red. When doing this and you have masked you will see the masking In dull-orange too and both combine to show you what can be reached and what cannot. I will mask a «blocking region» first, without an object placed yet. When I use the passability check I can see where the masking is and then I can select grass objects or sand objects etc. and pick some things to go into that masked region to «fill-in-some». I don’t want to use lots of moving objects like grass-trees and bushes since they affect gameplay but I use some and also use lots of non-moving objects. Dirt trees are dead and don’t move. Rocks, bulked up hills, craters, lots of single trees with a few tree-groups here and there, seems to work fine and the result looks acceptable. You have to be careful whenever masking near places to visit. And always take a good look around the map when you’re nearing the end of making it . You don’t want to have artifacts or buildings have masked over trigger-tiles(green). You also want to remember this if you move things for some reason. One other thought. You may have previously masked an entire wood or mountain. You can always go in and unmask a line to a small square and put some goodies there,in an out-of-the-way-place.

Various Issues

1. ‘Creature Stacking’ is easy to do. Have open the object list panel and the window of the panel stretched to the right past «creatures» in that list. Click on the creature you want to make a ‘army’ instead of a single creature. You see the ‘Additonal creatures line’ and then right-click on the line to «Add» to it… a subfolder appears with the creature selection box,..pick the creature you want to add to the first stack. Repeat for more creatures in the one army. Note:Creature names will be different.
Note: You can also edit creature properties. ‘Mood’, ‘Amount’ and ‘amount is fixed or grows’
2. Copying To save time, you can ‘copy objects’. In the case above, if you want balance in «neutrals defending like objects» then copy and paste more of the ‘neutral creature army’ you made. i.e guarding neutral towns or time-saving portals. Be patient, my copy function is fickle so stay with it, like clicking on different spots on the map to ‘reset the paste-function’.
3. Random creature dwellings with random towns. I am still testing to see what will work here.
4. Regions are used for scripting and triggers. I will post the links below.
5. The random map generator is a good time-saver if you want a new map to play quickly. But I advise spending some time on it by tweeking the map. Unless you want your players all having great morale and luck, remove all or most of those ‘bonus objects’ from the RG map. One other issue with me is what I call «rushing». Every map I’ve generated seems to have another built-in condition. Portals between factions are always too close for my tastes. You will need to make a portal map and re-assign them. Unless of course you want things over fast.
6.Using the mouse in making a map is a serious pain. When placing objects on the map; I have to switch back and forth between the objects button and the terrain button. That’s how I reset it to pick something else from the list or to switch to modify an already placed object after…placing objects.
7. Most objects have the «owner box» available in «editable properties». I am not sure why this is with some of them i.e. a fountain or well? I can only guess it may have to do with «scripting» but I always ensure all neutral objects are set to ‘player none’ if only for A.I. reasons/guesses.
8. Level Terrain Function is under Edit or also on toolbar. If you have made a map that has a pretty «sloping surface» in a spot where you want to place an object, you can use this to make it look better on the ground.
9. I tend to make valuble Objects like «Cartographer», «Memory Mentor» or the Spell Merchant well defended but that’s a choice. Making everything on a map free…could be interesting.
10. Spell Shrines I have recently discoverd that these can be set. But just like the Heroes names can be called something eslein the Editor, so can the spells. I will make a list of those and post them if I cannot find an already existing list.
11. When placing objects, to get them to sit closer together on the map surface, enter half numbers on either/both the X or Y axis. i.e X47.5. This makes your eyecandy work look much better.
12. When wanting a specific Hero like «Arantir». Place a «Campaign-Hero» on the map. Open the «Object properties» window. Click on the Hero figure then go to the line «Shared». Click on the inner text and you will see a «New-tab» and a little box to the left of it. Click on that little box and all available heroes are listed for each faction to choose.
13. Reminder…Save-Your-Work-frequently and also keep updating a back-up copy.
14. My default monster strengths for guarding mines etc.
Wood/Ore LvL=1,Resources=LvL 2, Windmill and Bonuses=LvL 3, Abandoned Mines and 1-ups=LvL 4. 1st gold mine LvL5 all others LvL 6 or LvL7. Minor-Artifact=5, Major-Art=6 and Relic-Art=7.
15. Embedding Objects. On land some «arena-objects» need to to be buried a little, so you’ll need to use a <-# at Z >. In the water, you can place an object on land and then «water-tile» the land away. You can do the «reverse» with the sea/ocean rocks and bring land up to them for variety.
16. Tear of Asha When making a map in the Random Map Editor (RMG) «Team victory» will not be possible. What this means in the normal created map, I don’t know for sure but it appears that placing the ‘ToA’ on the map, may override any intended team play/team victory. To this point I had placed it believing that one team member could acquire it and the team victory objective would remain intact. I doubt this now after experiencing the RMG default of the ToA becoming the main objective, just by calling for its placement on a randome map.
Testing ideas. You can test your map by playing a «Hotseat’ game and playing all factions at once. If you have some factions that are A.I. controlled then I recommend placing temporary unguarded cartographers near player-1. Each one visited only reveals all of the land on that map-level. So, I will also make a tempoarary two way portal right next upper «cartographer» and place another «cart.» underground. Doing this makes it possible to see the whole map (except water) first turn. If the map has lots of water than you can do the very same thing with the water cartographers but remember to set their cost to 100 gold in their properties settings.(default is 4000)and provide a free ship.
Heads-up. I’ve seen reviews written at map-sharing-sites like Maps4Heroes and too often they are <IMO> far-too-arrogant. So have a «thick-skin» when sharing a map, dismiss obvious preference’s but seek the ‘constructive negative-feedback’ that will improve you as a map-maker.

Map Pictures

Two picture types are available for the map. ‘PWL’ is the picture on the monitor that is viewed during map-load and ‘thumbnails’ are the small ones that are seen when looking at the map’s description from the custom map selection screen.
El-Chita has provided this link to «The Heroes Round Table site» and the provided guide.Ch Site

Fuir’s guide
http://www.heroesofmightandmagic.com/heroes5/modding_wiki/mapmaking:add_pwl_and_thumbnails

Modding

«All topics»
VokialBG’s thread, «Modding- «Table of Contents»http://www.heroescommunity.com/viewthread.php3?TID=25065

Modding FAQ

Modding Tools

Basic Scripting
http://www.heroesofmightandmagic.com/heroes5/modding_wiki/scripting_tutorial:basic

Lucky_Dwarfs Eye-Candy Thread
http://www.heroescommunity.com/viewthread.php3?TID=30743

Other Material

Curio’s guide
http://www.heroescommunity.com/viewthread.php3?TID=18589

EDIT= Testing ideas, Another Point-Light note 12/19/10, Added — ‘A Few Ideas about Starting’, Added Eye-Candy link, added ‘General Map Set-Up’…’About Objects’…’Placing Towns’ sections, Added #9 and #10 to ‘Various Issues’ and a little more clarification in several places.
1/29/11 «Changed the info concerning the ‘glitch-blur’ in map-loading», Added <11-15> under various issues. Added «Beginning your map» section concerning multiplayer. 2/6/11, Added comment #16 about Tear of Asha in Various issues 2/10/11

function **** (heroname) — Функция (heroname если есть имя героя)
sulfur = GetPlayerResource (1, 4); — surful заменяет get…
if heroname == «Christian» — если имя героя Christian
HasArtefact («имя героя», ID_Артефакта) — условие
then — Если да
ChangeHeroStat («heroname», STAT_EXPERIENCE, 12000) — Дать опыта
elseif GetHeroStat («heroname», STAT_EXPERIENCE) >=20600 — Если нет но есть другое
then MessageBox («/maps/SingleMissions/2cc/ein.txt») — Если да
else MessageBox («/maps/SingleMissions/2cc/ein.txt») — Если нет
end;
end;

SetObjectPosition (objectName, x, y, floor = -1); — переместить обьект
StartCombat (heroname, nil, кол воинов, ID, кол, nil); — начать битву
AddHeroCreatures( heroname, CREATURE_ARCHANGEL, 1 ); — дать войско (архангелы)
SetRegionBlocked(regionName, status, playerID = -1); — Запретить АИ заходить в регион
SetAIPlayerAttractor(objectName, playerID, priority); — заставить АИ идти к обьекту
sleep (5); — задержка
SetObjectEnabled( ‘green’, false ); — назначить обьект неработающим
MoveCamera( 122, 60, 0, 40, 1, 1.145, 0, 0); — Двигать камеру
OpenCircleFog( 122, 58, 0, 20, 1 ); — Открыть карту
LevelUpHero («heroname»); — Поднять уровень
ReamoveArtefact (heroName,artefactID); — Забрать арт
SetPlayerResours (1, 4, GetPlayerResource (1, 4)-10) — забрать рисурсов
ChangeHeroStat («heroname», STAT_EXPERIENCE, 12000); — Дать опыт
StartCombat (heroname, nil, 5, 74, 6, nil); — Начать битву
MessageBox («/maps/SingleMissions/2cc/ein.txt»); — Окно Сообщения
QuestionBox («/maps/SingleMissions/2cc/ein.txt», «**»,»no»); — Окно Сообщения да или нет
ShowFlyingSign («/maps/SingleMissions/2cc/ein.txt»); — Всплывающий текст
Trigger (REGION_ENTER_AND_STOP_TRIGGER, “****”, nil); — Обнулить тригер
SetPlayerStartResources (); — начальное кол-во ресурсов
SetObjectEnabled(“kamilla”, false); — назначить обьект неработающим

Условия
HasArtefact («heroname», ID_Артефакта) — Имеет артефакт
GetHeroStat («heroname», STAT_EXPERIENCE) >=20600 — Уровень(очки опыта)
GetDate (DAY) == — определённый день
GetPlayerResource (player, resourceKind); — кол-во ресурсов
GetDifficulty(), (Рекрут = 0 Герой = 3). — Сложность

Тригеры

Trigger (REGION_ENTER_AND_STOP_TRIGGER, “ein”, “einF” );- войти в зону и остановится
Trigger (OBJECT_TOUCH_TRIGGER, “ein”, “einF” ); — подойти к обьекту
Trigger (NEW_DAY_TRIGGER) — начало дня

FloorID — ID этажа (0 — надземный, обычный уровень; 1 —
подземный)

вот мож кому пригодится

Картостроителям очень поможет русское руководство и справочные сведения по редактору карт для игры «Heroes of Might and Magic 5».

Руководство состоит из трех основных частей:
Часть первая — «Основы работы в редакторе игры HoMM5»
Часть вторая — «Практическое руководство по редактору»
Часть третья — приложение, включающее в себя несколько справочных материалов.

В архиве так же лежит и “Практическое руководство по созданию одиночной миссии для HoMM5”

Всего комментариев: 1

  • Автор: Джованни
    Добавлено 27 марта, 2011 в 21:21

    Русский мануал – вещь неплохая! Ценю!

    Ответить

Оставить комментарий

  • РУКОВОДСТВО ПО СКРИПТАМ ГЕРОЕВ ПЯТЬ.«ОТ ЧАЙНИКА К ЧАЙНИКАМ»

    автор: ogo

    Вступление

    Это руководство предназначено для картостроителей, которые
    хотели бы пользоватьсяскриптовыми функциями в своих картах к Героям
    5, однако не могут этого делать понезнанию механизма их работы и
    программного языка.Не могу сказать, что я сам много знаю, но то,
    что знаю, попытаюсь донести до читателя:максимально доступно
    объяснить и привести примеры.

    Раньше, в тройке, в редакторе карт были стандартные Event’ы. Они
    давали достаточно многоинтересных возможностей и были просты в
    использовании для любого. В четвёртых герояхпоявилась уже
    скриптовая система, однако она заключалась в использовании
    заготовленныхпресетов. Это было гораздо тяжелей, однако и
    возможностей стало гораздо больше. Теперь, впятой части, нам дали
    пользоваться практически неограниченными возможностями,
    однакоотобрали малейшие признаки удобства для неподготовленного
    пользователя.На самом деле, там ничего страшного нету, в этих
    ЛУА-скриптах, однако это только, еслиразобраться. А разбираться
    можно долго и нудно, как это делал я – путём ошибок ибесконечных
    загрузок игра редактор карт. Это руководство призвано упростить
    вашеосвоение в мире скриптов к Героям 5.Настоятельно рекомендую
    обзавестись руководствомпоскриптам многоуважаемого
    Novik65.Практически всё время в этом документе я буду ссылаться на
    него и на официальноеруководство по скриптам от Нивала
    (HOMM5_Script_Functions_rus).Делаться это будет на примерах.
    Педагогических познаний у меня минимум, опыта внаписании подобных
    документов тоже не имеется. Так что не обессудьте, коль чего.

    1. Основы

    Практически всё в этом мире делается с помощью триггеров.
    Выглядит, он, к примеру, так:Trigger(REGION_ENTER_AND_STOP_TRIGGER,
    “kamilla”, “kamillaF” );Триггер будет висеть в игре всё время, и
    реагировать на те «раздражители», которые вы емууказали. Например,
    этот будет реагировать на вход в регион “kamilla” героя и вызывать
    в этовремя функцию “kamillaF”. Рассмотрим этот пример гораздо более
    подробно.

    Вот есть регион:

  • Он назван нежным именем kamilla. Что нужно сделать, чтобы он
    реагировал на то, что в негокто-то вошёл и при этом выдалось
    текстовое сообщение? Правильно, повесить триггер.Смотрим в
    официальное руководство по скриптам от Нивала (находится по адресу:
    «папка сигройEditor Documentation») или в руководство Новика и
    находим наиболее (и единственно)подходящий триггер —
    Trigger(REGION_ENTER_AND_STOP_TRIGGER, sRegionName,
    sProc)(Процедура (sProc) вызывается, когда какой-либо герой
    останавливается в регионе с именемsRegionName).Триггеры
    записываются обязательно в том виде, котором они предложены. То
    есть этот мызапишем так: Trigger(REGION_ENTER_AND_STOP_TRIGGER,
    «теперь в кавычках пишемназвание региона, которое мы ему дали»,
    «имя функции, которая будет вызываться, когда мытуда войдём»), и
    после этого это должно выглядеть так
    -Trigger(REGION_ENTER_AND_STOP_TRIGGER, “kamilla”, “kamillaF”
    );Название функции можете давать любое, но я для удобства даю то
    же, что и у региона (вданном случае), только добавляя буковку
    «F».Откуда взять функцию, которая будет вызываться? Всё очень
    просто – написать её.Вот как это выглядит:

  • (Скрипты вписываются только в Map Properties -> Scripts)Это
    обязательная надпись function, затем название, отмеченное в
    триггере, затем пустыескобки. Зачем? Не знаю, но без них иногда не
    работает.Потом, в следующей строке, идёт собственно команда.
    MessageBox () вызывает окошечко сописанным вами текстом. Для того
    чтобы игра могла прочитать текст, текстовый файл вформате Unicode
    должен находиться в папке с картой по тому адресу, на который
    ссылаетсяскрипт (/Maps/SingleMissions/НАЗВАНИЕ_КАРТЫ) Как туда файл
    положить? Откройтекарту любым архиватором — это обычный zip-архив.
    Вложите файл в конечную папку. Каксделать файл в формате Юникод?
    Скопируйте любой текстовый документ с карты (к примеру,name) и
    сделайте с него копию, а потом вложите обратно уже с новым текстом
    и названием,как было описано выше. Все имена следует давать
    латинскими буквами.Вместо MessageBox можно вписать любую другую
    команду или хоть десять MessageBoxов,все они будут выполняться по
    очереди.

    !Внимание – как именно пользоваться командами достаточно
    подробно описано у Новика и вофициальном руководстве по скриптам от
    Нивала. Поэтому это не входит в задачу
    данногоруководства.Обязательно следите за тем, чтобы команды были
    написаны точно так, как и в подано в

    руководствах. !Помните, большая и маленькая буквы – это разные
    символы! Так же незабывайте после каждой команды ставить точку с
    запятой.В конце обязательно поставьте end;

  • Так же вы можете использовать вместо
    REGION_ENTER_AND_STOP_TRIGGER другойтриггер:
    REGION_ENTER_WITHOT_STOP_TRIGGER – разница в том, что в
    первомварианте герой войдёт и остановится в регионе, во втором
    случае он останавливаться небудет.Вместо MessageBox бывает удобней
    использовать ShowFlyingSign — эта командаотображает отлетающее от
    объекта сообщение.Чаще всего нужно, чтобы функция срабатывала лишь
    однажды, когда герой впервые зайдёт вобусловленный регион. Для
    этого обнулите триггер и, желательно, запишите это в самомначале
    функции (однако можно и в конце – где запишете, там и обнулится).
    Обнуляется онпросто: Trigger(REGION_ENTER_AND_STOP_TRIGGER,
    “kamilla”, nil); то есть вместоимени функции вписывается значение
    nil… Выглядит теперь функция так:

    function kamillaF ()Trigger(REGION_ENTER_AND_STOP_TRIGGER,
    «kamilla», nil );MessageBox («/Maps/SingleMissions/ НАЗВАНИЕ_КАРТЫ
    / НАЗВАНИЕ_ТЕКСТА.txt»);

    end;

    Давайте рассмотрим другой случай. Вместо триггера на то, чтобы
    герой входил в регион,поставим другой, который реагирует на
    прикосновение к объекту на карте. Ищём. Находим
    -OBJECT_TOUCH_TRIGGER — взаимодействие с интерактивным
    объектом.Допустим, поставим его на Дерево Силанны. Назовём дерево
    «kamilla» здесь:

    и впишем значения в триггер — Trigger(OBJECT_TOUCH_TRIGGER,
    “kamilla”, “kamillaF” );

  • И что теперь?Теперь, когда вы заходите в дерево, срабатывает
    функция kamillaF. Правда дерево ещё и опытприносит. Ну что ж… Если
    вас это не устраивает, запишите в скриптах (не в функции, а
    вотдельном поле) следующую строчку:SetObjectEnabled(“kamilla”,
    false); — что можно прочитать как УстановитьОбъектРабочим(камиллу,
    гнусная ложь!). Теперь дерево не будет предлагать повысить
    опыт.

    Подобным образом вы можете использовать любые из описанных в
    названых мноюруководствах триггеры и вписывать любые команды.

    К примеру, там, где заскриптован вход в определённый регион, к
    всплывающему сообщениюможно добавить StartCombat (); (начать битву
    – описание команды в руководстве Нивалаили Новика) и тогда это
    станет похоже на стандартный Event из тройки. Правда тогда
    вампонадобится вписать скриптовое имя героя. Взять его нужно
    здесь:

  • !Если вы не хотите использовать конкретного героя, а
    рассчитываете скрипты на случайного,тогда вам следует вписывать в
    скобки возле названия функции что-то вроде heroname, авместо
    скриптового имени героя впишите то же самое (heroname) – всё без
    кавычек (вместоheroname вы можете вписать любое другое слово – в
    функции оно будет обозначать имяактивировавшего её героя).
    Например:function kamillaF (heroname)

    MessageBox («/Maps/SingleMissions/ НАЗВАНИЕ_КАРТЫ
    /НАЗВАНИЕ_ТЕКСТА.txt»);

    sleep (5);StartCombat (heroname, nil, 5, 74, 6, 74, 4, 81, 4,
    74, 4, 74, 6, nil);Trigger(REGION_ENTER_AND_STOP_TRIGGER,
    «kamilla», nil );

    end;

  • Trigger(REGION_ENTER_AND_STOP_TRIGGER, «kamilla», ‘kamillaF’
    );

    Функция sleep (); здесь особо не нужна. Я её вписал, чтобы
    рассказать о ней. Она играетроль паузы. В данном случае она
    означает, что после того, как вы нажмёте ОК на текстовомсообщении,
    будет пауза в одну секунду и лишь тогда начнётся бой. sleep (); —
    будет означатьпаузу в три секунды (200мс на один sleep). Бывает
    очень полезно, вставлять такие вот паузы –честное слово.

    Итак, я думаю с основами покончено. Из этой части можно вывести
    уроки, как пользоватьсятриггерами, куда вписывать команду, как
    обнулять триггеры, писать функции – то есть самиосновы для
    скриптования карты. У вас уже есть большое поле для действий.
    Переходим наследующий уровень.

    2. Следующий уровень

    К примеру, вы хотите, чтобы герой зашёл в хижину и ему давали
    опыт, но только приопределённых условиях. Условие – наличие
    определённого артефакта у героя. Называемхижину gloria и пишем, как
    и раньше триггер OBJECT_TOUCH_TRIGGER и функциюgloriaF. Вот как это
    будет выглядеть:

  • Появляется загадочное if (если). Его мы в данном случае пишем,
    ибо подразумеваем: Если угероя есть арт (HasArtefact и значения в
    скобках – у кого и какой именно (все ID описаны уНивала в документе
    HOMM5_IDs_for_Scripts_rus), тогда (then) выдаём ему
    текстовоесообщение, затем повышаем ему характеристику опыта на
    12000 единиц. ВместоHasArtefact () вы можете вписать множество
    других интересующих вас параметров:HasHeroSkill (),
    HasHeroWarMachine () и др.else (по-другому, иначе) использовано для
    того, чтобы когда герой заходит в здание безартефакта, игра
    выдавала ему простое текстовое сообщения, мол нету у тебя этого
    добра, ажаль.Уже знакомое обнуление триггера, заметьте,
    использовано только для того случая, если геройвыполнил задание
    (т.е. имел артефакт). Сделано это для того, чтобы не
    повторяласьбесконечная выдача опыта. Однако, в то же время, герой,
    до тех пор пока не придёт с артом,будет сколько душе угодно
    натыкаться на обламывающее сообщение.По желанию можно убрать у
    героя артефакт командой
    ReamoveArtefact(heroName,artefactID).!Обратите внимание, что в
    конце стоит два конца (end; end;). Один, как и раньше,
    закрываетfunction, другой закрывает if. Если вы используете функции
    со значением if – не забывайте обэтой детали.

    Предположим, что вы хотите использовать другое условие. К
    примеру, если герой выше 12-ого уровня, дать ему ещё один уровень.
    Без вопросов, пишем:

  • Мы, в строчке if GetHeroStat («СКРИПТОВОЕ_ИМЯ_ГЕРОЯ»,
    STAT_EXPERIENCE) >=20600 определяем следующее: Если Герой Имеет
    Показатель (имя героя, опыта) больше-равно 20600 единиц, то
    (следующая строчка) тогда Поднять Уровень Героя (имя
    героя),(следующая строчка) обнулить триггер ну и так далее.Узнать
    сколько очков опыта нужно для определённого уровня можно в
    документеHOMM5_Hero_Level_and_Experience_rus.

    Возможно, вы захотите, чтобы если у героя есть 12-ый уровень,
    жилец хижины повышал емууровень на один, но если у героя нет 12-ого
    уровня, однако есть 8-ой, то повышал сразу надва уровня. Не беда.
    Пишем:

    Появляется elseif (иначе если). Выходит, у нас записано
    следующее: Если у героя есть 12-ыйуровень опыта, тогда мы выдаём
    текстовое сообщение, поднимаем уровень героя, обнуляемтриггер.
    Иначе если у героя есть 8-й уровень опыта, тогда мы выдаём
    текстовое сообщение,поднимаем уровень героя, поднимаем уровень
    героя, обнуляем триггер.В начале для красоты добавим текстовое
    сообщение, которое предупреждает о том, какдальше могут развиваться
    события…

    Естественно такого рода пример я привёл, чтобы
    продемонстрировать работу if, else, elseif,double end; и
    обозначений больше-равно. Ещё один такой пример:

  • Trigger( NEW_DAY_TRIGGER, «hello» )

    function hello()if GetDate(DAY) == then

    MessageBox(«/Maps/SingleMissions/777/TEXT05.txt»);OpenCircleFog(
    122, 58, 0, 20, 1 );OpenCircleFog( 38, 25, 0, 30, 2
    );sleep(3);MoveCamera( 122, 60, 0, 40, 1, 1.145, 0,
    0);SetObjectEnabled( ‘green’, false );

    elseif GetDate(DAY) == 3
    thenQuestionBox(«/Maps/SingleMissions/777/TEXT13.txt», ‘chiose1’,
    ‘choise2’);elseif GetDate(DAY) == 4
    thenMessageBox(«/Maps/SingleMissions/777/TEXT07.txt»);elseif
    GetDate(DAY) == 5
    thenMessageBox(«/Maps/SingleMissions/777/TEXT26.txt»);elseif
    GetDate(DAY) == 6
    thenMessageBox(«/Maps/SingleMissions/777/TEXT27.txt»);elseif
    GetDate(DAY) == 7
    thenMessageBox(«/Maps/SingleMissions/777/TEXT28.txt»);elseif
    GetDate(DAY) == 8
    thenMessageBox(«/Maps/SingleMissions/777/TEXT29.txt»);elseif
    GetDate(DAY) == 9
    thenMessageBox(«/Maps/SingleMissions/777/TEXT30.txt»);

    end;end;

    Слегка видоизменённый фрагмент, который взят из моей карты «Одни
    хлопоты». Здесь мызапускаем NEW_DAY_TRIGGER, который будет на
    начале каждого геройского дня запускатьфункцию hello. Вписывать там
    нужно только имя функции. Функция hello имеет в себекоманду
    GetDate(DAY), которая определяет какой сегодня день и если он = =
    тому дню,который вы желаете, скрипты выполнят записанное вами
    действие. Я выдал на второй деньтекстовое сообщение, открыл туман
    (неизведанную область) в двух местах, выдержал паузу втри десятых
    секунды, повёл камеру по заданным координатам и сделал неактивным
    на картеобъект, который перед этим назвал ‘green’. Далее, на
    каждое, указанное иным от первого,значение даты, выскакивают другие
    разнообразные сообщения игроку.

    Главное, что можно вынести из этой части – это создание
    определённых условий, безкоторых команда(ы) не будут работать.

    3. Денежные дела

    Представим себе ситуацию, вы, как герой, заходите в хатку, а
    жилец предлагает поднять вашуровень, но только за оплату. Такое
    бывает сплошь и рядом. Но что делать, чтобы этозаписать
    скриптами?Итак, имеем команду GetPlayerResource(player,
    resourceKind); Будем считать, что торговецопытом неравнодушен к
    сере. Осуществляем:

  • Написав, что sulfur = GetPlayerResource (1, 4); мы уравняли эти
    значения в правах. То есть,если вы запишите, что imiamojejsobachki
    = GetHeroStat (“СКРИПТОВОЕ_ИМЯ_ГЕРОЯ”,STAT_EXPERIENCE); то в
    функции можно будет подставлять вместо
    GetHeroStat(“СКРИПТОВОЕ_ИМЯ_ГЕРОЯ”, STAT_EXPERIENCE); то, что вы
    напишете перед знаком“=”.Значит теперь в нашем случае sulfur
    равняется значению количества определённого ресурса(серы) на момент
    срабатывания функции (GetPlayerResource () как раз призвана
    определятьзначение – читайте рекомендуемые мной руководства).Далее,
    строчкой if sulfur >= 10 мы определяем, есть ли у игрока сульфур
    в достаточномколичестве и только тогда (чтобы не вышло конфуза)
    отнимаем нужное количество,вписывая, что
    УстановитьИгрокуКоличествоРесурса (какому игроку, какой ресурс,
    сколько(добытое число сульфура минус десять).То же самое можно
    делать с любым другим ресурсом. Числовые ID ресурсов есть
    вруководствах.Так же важно отметить такой момент: если вы запишете,
    что local sulfur = GetPlayerResource(1, 4); непосредственно в
    функции, то уровняловка эта будет справедлива только для
    даннойфункции. Без приписки local , после срабатывания функции
    должно записаться значениеsulfur для всех скриптов. Если же вы
    впишете её отдельно от всего, то с самого начала игрыопределится
    количество серы у игрока (на сложности «Ветеран» — 10 мер) и уже
    всю игруsulfur будет равен десяти (естественно, если вы не
    перебьете это значение записью sulfur =GetPlayerResource (1, 4); в
    самой функции).

  • Приведённый выше пример имеет явный игровой недостаток. По
    геймплею он скучный инепонятный. По скрипту: мы заходим в хижину, у
    нас незаметно проверяют значение серы,отбирают её, если находят, и
    повышают уровень. Конечно, там есть несколько сообщений, ноэтого
    мало.

    В этом примере всё гораздо интереснее. Теперь после успешной
    проверки на количество,задаётся вопрос, а не сразу же повышается
    уровень. Мол, уважаемый, согласны ли вы натакую сделку? Если вы
    нажимаете ОК, срабатывает функция “yes” (в которой мы
    старательнозаписали вычитание из казны 10-ти мер серы, лэвэлап
    героя и обязательное обнулениетриггера). Вместо “yes” можно писать,
    что угодно. Первое значение отвечает за согласие,второе – за
    отмену. (Идентичным способом можно вызывать функцию
    используяMessageBox (); , только вот вариант ответа будет, само
    собой, один. Например:MessageBox (Maps/SingleMissions/
    НАЗВАНИЕ_КАРТЫ / НАЗВАНИЕ_ТЕКСТА.txt», ‘yes’); )Если же у нас нет
    столько серы (10 мер), то вопрос не выскочит, сработает else и
    выскочитMessageBox с сожалениями о вашей серной
    несостоятельности.Для того, чтобы установить отличное от
    стандартных, количество ресурсов в начале игры,используйте
    SetPlayerStartResources ();

    В этой части мануала, главной стала возможность вести
    манипуляции с ресурсами припомощи скриптов.

  • ПРИМЕЧАНИЕ: В каждой команде, в скобках, как вы успели заметить,
    прописываютсяопределённые значения. Например, GetPlayerResource (1,
    4) — здесь первая единичка означает,что кол-во ресурсов мы узнаём у
    первого игрока, а четвёрка, обозначает то, о какомресурсе мы
    узнаём. То есть используются прописанные ID. Однако, всё это
    надёжнейпрописать, как GetPlayerResource (PLAYER_1, SULFUR), то
    есть использовать текстовыеидентификаторы (а вдруг ID, которые
    отвечают этим идентификаторам, поменяются, кпримеру, в патче?!). Я
    вот всё равно использую ID – мне так удобней, а потому и объясняю
    вмануале соответственно.

    4. Вопрос – ответ

    Как мне контролировать действия АИ?

    Всмотритесь внимательней в команды
    SetAIPlayerAttractor(objectName, playerID, priority);и
    SetRegionBlocked(regionName, status, playerID = -1); К примеру,
    если вы хотите, чтобыкомпьютерный игрок стремглав мчался к
    какому-то объекту на карте и только поопределённому пути,
    заблокируйте ему другие и повесьте наибольший приоритет на
    тотобъект. Однако не забудьте снять приоритет, как только игрок до
    него дотронется, иначе АИдо конца своих дней будет в него самым
    непристойным образом тыкаться.

    Как скриптами узнать сложность, которую выбрал игрок?

    Для этого есть команда GetDifficulty(), которая выдаёт цифровые
    значения (Рекрут = 0… …Герой = 3).

    Как работать с выдаваемыми заданиями?

    GetObjectiveState( sObjectiveName, nPlayerID = PLAYER_1 ),
    SetObjectiveState(sObjectiveName, nState, nPlayerID = PLAYER_1 ),
    GetObjectiveProgress( sObjectiveName,nPlayerID = PLAYER_1 ),
    SetObjectiveProgress( sObjectiveName, nProgress, nPlayerID
    =PLAYER_1 ), IsObjectiveVisible( sObjectiveName, nPlayerID =
    PLAYER_1 ),SetObjectiveVisible( sObjectiveName, bVisible, nPlayerID
    = PLAYER_1 ).Все они описаны в руководствах. Всюду фигурирует
    sObjectiveName – его мы записываемтам (назван «Francheska»):

  • Как сделать так, чтобы только если определённый герой зайдёт в
    регион, выдавалосьсообщение и начиналась битва?

    Зная детали, о которых говорилось выше, можно придумать
    следующее:

    Регион назовём по старинке – kamilla:

    function kamillaF (heroname)if heroname == “Gottai”then
    MessageBox («/Maps/SingleMissions/ НАЗВАНИЕ_КАРТЫ /

    НАЗВАНИЕ_ТЕКСТА.txt»);sleep (5);StartCombat (“Gottai”, nil, 5,
    74, 6, 74, 4, 81, 4, 74, 4, 74, 6,
    nil);Trigger(REGION_ENTER_AND_STOP_TRIGGER, «kamilla», nil );else
    sleep (1);

    end;end;

    Trigger(REGION_ENTER_AND_STOP_TRIGGER, «kamilla», ‘kamillaF’
    );

  • Ранее уже упоминалось, что в скриптах, напрямую использующих имя
    героя, нужно писатьheroname, однако не вспоминалась возможность
    данной проверки if heroname == “Gottai”then.

    ! Полезный момент: во всех примерах скриптов, приведённых в этом
    мануале, путь ктекстовым файлам записывался примерно так:
    «/Maps/SingleMissions/777/TEXT13.txt»,однако это дело можно
    упростить благодаря команде GetMapDataPath(). Она полностьюзаменяет
    длинное и порой неудобное Maps/SingleMissions/777/… В данном
    примереодиночная миссия называется многозначительно – «777» и пути
    к ней так и прописаны,однако если вы пожелаете сохранить карту под
    другим названием, они (пути) работатьпрекратят и скрипт выдаст
    ошибку (к примеру, если вы сохраните эту карту под именем«888», то
    тексты уже будут лежать в папке Maps/SingleMissions/888/… и игра не
    сможет ихдостать, используя старую строку). С GetMapDataPath()
    этого не произойдёт – с нейкоманда MessageBox () будет выглядеть
    так:

    MessageBox (GetMapDataPath()..»TEXT07.txt»);

    Можно ещё больше упростить себе задачу, сравнив для игры команду
    GetMapDataPath() счем-то совсем коротким, например: dir =
    GetMapDataPath()И тогда достаточно записать: MessageBox
    (dir..»TEXT07.txt»);

  • Послесловие

    1. Руководство будет дополнятся в соответствии с вашими
    пожеланиями, замечаниями,обидами и жалобами ([email protected],
    [email protected], http://ogo-maps.org.ru/).

    2. Настоятельно рекомендую проверять все скрипты
    программойHoMM5MapScriptsEditor.[RC8](автор: Sergei A. Klochkov
    (aka HSerg)). Если она непокажет ошибки, это не является гарантией
    того, что их вообще нет, однакобольшинство недочётов она
    вылавливает.

    3. Внимательно читайте руководство по скриптам Novik 65,
    официальное от Нивала .4. В выведенных мною скриптах я допускаю
    неточности. Я не профи – ошибаюсь часто.

    Однако цель у этого руководства – не предоставить вам готовые
    шаблоны, нопогрузить в процесс, облегчить адаптацию, поделится
    знаниями, объяснить механикуи принципы действий.

    5. Спасибо за внимание.

    Версияруководства1.04

Понравилась статья? Поделить с друзьями:
  • Мотоблок кайман с двигателем субару инструкция по эксплуатации
  • Новеллы руководство для онлайн знакомства
  • Все руководства по эксплуатации станков
  • Агромакс удобрение цена инструкция по применению для томатов
  • Msi g31tm p35 мануал