|
Thread: Getting a homemade map into the game?! | This thread is pages long: 1 2 · NEXT» |
|
Teller
Tavern Dweller
|
posted March 25, 2020 09:50 PM |
|
|
Getting a homemade map into the game?!
Hi everyone!
I'm starting to think something is wrong with my game somehow! But probably I've missed something!
I haven't been map-editing for ages in HOMM4 and started on a campaign yesterday!
When I wanted to test if what I'd made so far worked, I couldn't find the map in-game.
I've:
Saved the map in the correct folder, along with all other original and "homemade" maps.
I've name the campaign under "Campaign properties"
And I've named the first two maps in the campaign in the respective "Map properties".
What am I doing wrong?
I have another single-map and a campaign map saved, which I made ages ago. And those I can find, no problem!
Anything I've missed?!
Thanks in advance!
____________
Best regards
Rikke - Denmark
|
|
FirePaladin
Promising
Legendary Hero
DoR Modder
|
posted March 25, 2020 10:33 PM |
|
|
Gonna investigate right now!
Edit: You made a campaign with maps?... (I didn't play too much H4, so I don't really know how that goes and how you made two maps in a campaign etc.)
Edit 2: Weird... I don't see it either... Specifics? Players, towns, etc.?
Edit 3: Now I see it, after adding towns and players to them. It's probably because your map is unplayable if it has no towns or players.
|
|
Teller
Tavern Dweller
|
posted March 25, 2020 11:06 PM |
|
|
FirePaladin said: Gonna investigate right now!
Edit: You made a campaign with maps?... (I didn't play too much H4, so I don't really know how that goes and how you made two maps in a campaign etc.)
Edit 2: Weird... I don't see it either... Specifics? Players, towns, etc.?
Edit 3: Now I see it, after adding towns and players to them. It's probably because your map is unplayable if it has no towns or players.
Hm, HOMM4 usually isn't too 'picky', but you might be hitting the problem here, as there's no win condition yet (you are supposed to get to a specific place, which I haven't made yet)! Maybe… I'll try it out!
Currently, there's two players - red/enemy and purple/human.
Well, the campaign is supposed to be several maps following each other with careover heroes, so yes, there's got to be two or more maps :-) Right now I have the ambitious idea to tell a story from a book in the campaign, so it's quiet a project I've thrown on myself here :-o
|
|
FirePaladin
Promising
Legendary Hero
DoR Modder
|
posted March 25, 2020 11:08 PM |
|
|
Nice. There was also a guy who made The Hobbit into a H3 map recently. Anyway, tell me the results after putting a win condition. You can also just make a place to test it first, to see if that's it, the problem.
|
|
Teller
Tavern Dweller
|
posted March 25, 2020 11:16 PM |
|
|
FirePaladin said: Nice. There was also a guy who made The Hobbit into a H3 map recently. Anyway, tell me the results after putting a win condition. You can also just make a place to test it first, to see if that's it, the problem.
It worked! Thank you so much!
Either it was the win-condition, or it was because I deleted the second map (which I'd done nothing to, so the map was empty - no towns, trees or even heroes or creatures - that might also have been a problem! :-) ).
Thank you so much again! I was getting kinda frustrated and desperate, as I'd already used quiet some time on doing the storytelling and thought it'd turned out alright, even if it is sorta 'rubbish', as you are not going to use an equivalent of 1000 pages on telling the story in-game, LOL.
Yeah, I think I saw it on the maps4heroes webpage? Haven't tried it so far :-) I'm working on the Dragonlance Chronicles. Whether it is going to turn out to be possible, time will show!
____________
Best regards
Rikke - Denmark
|
|
FirePaladin
Promising
Legendary Hero
DoR Modder
|
posted March 25, 2020 11:30 PM |
|
|
Good luck! Well-made story-driven maps and campaigns are awesome! Gonna check on Dragonlace Chronicles, see what it is about.
I'm also creating a story map, for H3, but its story is not extremely serious (even tho the events are serious) and does contain jokes, silly quests and other stuff, since I'm making it especially to play it together with my family in allied hotseat. It should be playable with friends too, since it's not "that" silly to the point it's just too much.
|
|
Teller
Tavern Dweller
|
posted March 25, 2020 11:58 PM |
|
|
FirePaladin said: Good luck! Well-made story-driven maps and campaigns are awesome! Gonna check on Dragonlace Chronicles, see what it is about.
I'm also creating a story map, for H3, but its story is not extremely serious (even tho the events are serious) and does contain jokes, silly quests and other stuff, since I'm making it especially to play it together with my family in allied hotseat. It should be playable with friends too, since it's not "that" silly to the point it's just too much.
Exactly! That's why I love the (original) HOMM4 campaigns, I love the story lines! :-) Especially "The Price of Peace" and "A "Pirate's Daughter" - possibly the undead campaign, too, but the plot is so twisted! ;-)
And do check on Dragonlance if you love fantasy! I find the stories really good!
Well, as long as a map has a good gameplay, with awesome opportunities of developing your heroes, then I love it! Of course, HOMM3 is a bit less on that last bit, compared to HOMM4 :-)
Hm, just tested the map - seems I've forgotten how to make a placed event delete an adventure object… Have to look further into this!
|
|
FirePaladin
Promising
Legendary Hero
DoR Modder
|
posted March 26, 2020 12:08 AM |
|
|
I do love fantasies!
H3 does lack scripting, that's true (and I sometimes find it annoying, but I manage to do it somehow, like making it possible to destroy rocks blocking passages, etc.). I'll try to make the map as balanced and interesting as possible (including gameplay), by testing it, so I'll release it after a while, even though almost the entire map itself without some quests and events is already finished (80% surface 100% underground done).
There's a script to make the purchase of a Megadragon possible, if you're interested. I can send you a link to it. Here's the link: Megadragon Dwelling
Edit: You don't especially love SpAzZ MaTiCuS and his mad quest to rule the world?! That's heresy!
|
|
Teller
Tavern Dweller
|
posted March 26, 2020 12:41 AM |
|
|
FirePaladin said: I do love fantasies!
H3 does lack scripting, that's true (and I sometimes find it annoying, but I manage to do it somehow, like making it possible to destroy rocks blocking passages, etc.). I'll try to make the map as balanced and interesting as possible (including gameplay), by testing it, so I'll release it after a while, even though almost the entire map itself without some quests and events is already finished (80% surface 100% underground done).
There's a script to make the purchase of a Megadragon possible, if you're interested. I can send you a link to it. Here's the link: [url=https://www.mediafire.com/file/9y7gdbk0zd58im7/wb_megadragon_dwelling_wow.h4c/file]Megadragon Dwelling[/url]
Edit: You don't especially love SpAzZ MaTiCuS and his mad quest to rule the world?! That's heresy!
Then def. delve into Dragonlance! There's a huge amount of books, though I def. favor those written by Margaret Weis and Tracy Hickman! Starting with the Chronicles series (Dragons of Autumn Twilight I believe the first book of the Chronicles is called in English?). Then the legends and there's more to come :-)
It is confusing - the series are compromised of series of several books each… But this is a good start:
https://www.amazon.com/Dragonlance-Chronicles-Trilogy-Gift-Set/dp/0786926813
It is a huge universe, not as perfectly build up as Tolkien's, but def. very good and the characters all have their own unique and sometimes very interesting personalites (I love trying to understand a said mage called Raistlin Majere, but I'll leave it at that). And there's dragons, always a good thing! :-D It based in the Dungeons and Dragons universe, though I've know clue about that, except I believe it is some kind of role play :-)
Sorry, just got myself started, I'm in the middle of rereading at least parts of the (good parts of the) series :-D
And no, I am NOT a fan of Spazz Maddicus or Erutan Revolver or any of those - I don't even remember anything from these campaigns, except… Wood is hard to come by in the first elven campaign map. And the chaos guy (I believe that was Spazz) walks around a very annoying dessert at some point!
At least the Gathering Storm did have a somewhat thrilling story, I've played that one twice, after all :-)
And thank you for the mega dragon dwelling link! I might very well look into that! I've missed that dwelling, thought it weird they hadn't made one, even if they didn't use one themselves!
(by the way - solves my "delete object" problem, I'd made some major and silly mistakes + must have forgotten to save the game at some point, as something had disappeared).
____________
Best regards
Rikke - Denmark
|
|
FirePaladin
Promising
Legendary Hero
DoR Modder
|
posted March 26, 2020 12:58 AM |
|
|
The thing with Spazz Maticus was just a relatively recent meme. To be honest, the campaign itself is not that good, only the heroes are hilarious.
I don't mind you getting all happy talking about what you like, because I'm just the same Definitely gonna buy the books, though.
I also have a link to a site full of H4 scripts... I downloaded the Megadragon one from there, but in the original only the AI could buy MD, so I changed it a little so the player could buy them too.
Edit: This is only a link with only some of those scripts (I still have to search for the exact page) looks like there weren't that many: https://www.celestialheavens.com/viewpage.php?id=112
Anyway, I hope you'll find them useful!
Edit 2: Advanced H4 editor
|
|
iliveinabox05
Honorable
Famous Hero
|
posted March 26, 2020 11:13 PM |
|
|
Hi there! Always good to see another H4 map creator. If you have questions regarding scripting, don't hesitate to ask, especially if you want to create something complicated, such as your own special abilities.
Thanks for linking my H4 Advanced Map editor FirePaladin. If you plan on doing some extensive scripting and map making, you should definitely give it a try, as it can do many things the actual H4 editor cannot do, which significantly reduce the amount of time it takes to create an H4 map (for example, copying events or scripts between maps).
Here is a link to the thread on CH: here
|
|
Teller
Tavern Dweller
|
posted March 28, 2020 10:28 PM |
|
|
Hi guys!
Thanks for your links! :-) Tried looking a bit on them, but didn't really find an answer to my question :-)
Well, yeah, I already have one more question!
If you want the player to be in a specific place (e.g. a quest hut) within x amount of days, or they'll loose. Would it be able to disable this lose condition, if they make it to this place and they'd be able to play on afterwards?
I know I can make it as a conditional action:
Day 20
"If"
Current player XX
'And'
Not
has artifact
Then
Current player XX lose
Else
Nothing
But I basically just want the Guest Hut to not give anything, but to disable the timed loose condition?
I've been trying to look into it, but hasn't found a solution. I guess I'll have to give the hero an artifact or something at the guest hut to make it work…
There is the one called "Clear Loose Condition Description", but it doesn't sound right and it puzzles me, if it should work, as I am not to choose any event/timed even (loose condition).
I hope this makes sense?
____________
Best regards
Rikke - Denmark
|
|
FirePaladin
Promising
Legendary Hero
DoR Modder
|
posted March 28, 2020 11:17 PM |
|
|
You know, I'm not really good at H4 scripting (actually, not at all). I would have gladly helped you create such a script, if I knew how.
Maybe you can ask NimoStar about this. He likes H4 and he might know how to do it, but I can't guarantee anything.
|
|
iliveinabox05
Honorable
Famous Hero
|
posted March 29, 2020 03:36 AM |
|
|
H4 scripting has variables you can set and use to do what you want.
Once you give the quest, set a numeric variable to be the current day. then you'll have a timed event that checks everyday to see if the current day is equal to your saved numeric variable + 20. If the day is equal to you saved day + 20, and the player hasn't accomplished what they were supposed to, then you can display a message, followed by the "lose" script, which will end the game.
Here is a little psuedo scripting to help you out:
--------------------------------------------
Timed Event for initializing variables, start Day 1 and only run once-
set boolean variable isQuestActivated = false
set boolean variable isQuestComplete = false
set numeric variable startQuestDay = -1
remove script
Timed Event for quest, start Day 1 -
if ( isQuestComplete )
{
remove script
}
if ( isQuestActivated )
{
if ( current day = ( startQuestDay + 20 ) AND NOT isQuestComplete)
{
Display "You lose"
lose
}
}
Placed Event (or other type of event) to start the quest -
set numeric variable startQuestDay to current day
set boolean variable isQuestActivated to true
remove script
Placed event (or other type of event) when quest is completed -
isQuestComplete = true
//These next two aren't necessary, but I like to set all variables to a correct state
set boolean variable isQuestActivated to false
set numeric variable startQuestDay to -1
remove script
--------------------------------------------
I may have missed some things, but that is the gist of what you'll want to do.
Let me know if you have any other questions.
Edit. The clear win/loss condition scripts are just meant to clear any text associated with the win / loss conditions when viewing these in the menu during a game. Some of those scripts may be bugged, but I don't remember which ones have issues.
|
|
Karmakeld
Responsible
Supreme Hero
|
posted March 29, 2020 10:26 AM |
|
|
iliveinabox05 said:
Edit. The clear win/loss condition scripts are just meant to clear any text associated with the win / loss conditions when viewing these in the menu during a game. Some of those scripts may be bugged, but I don't remember which ones have issues.
I believe you can use the 'set new loss condition' to change the loss condition. I used multiple win/loss conditions in some of the maps in my campaign so I could go and check to be 100% certain. Also nice to see a fellow Dane in here
As for the Mega Dragon Dwelling you may want to look in my object package, as McIric and I are currently working on making a unique Mega Dragon Dwelling adventure object, which isn't just a preset quest hut but an actual dwelling for this crrature.
____________
|
|
Teller
Tavern Dweller
|
posted March 29, 2020 06:18 PM |
|
|
iliveinabox05 said: H4 scripting has variables you can set and use to do what you want.
Once you give the quest, set a numeric variable to be the current day. then you'll have a timed event that checks everyday to see if the current day is equal to your saved numeric variable + 20. If the day is equal to you saved day + 20, and the player hasn't accomplished what they were supposed to, then you can display a message, followed by the "lose" script, which will end the game.
Here is a little psuedo scripting to help you out:
--------------------------------------------
Timed Event for initializing variables, start Day 1 and only run once-
set boolean variable isQuestActivated = false
set boolean variable isQuestComplete = false
set numeric variable startQuestDay = -1
remove script
Timed Event for quest, start Day 1 -
if ( isQuestComplete )
{
remove script
}
if ( isQuestActivated )
{
if ( current day = ( startQuestDay + 20 ) AND NOT isQuestComplete)
{
Display "You lose"
lose
}
}
Placed Event (or other type of event) to start the quest -
set numeric variable startQuestDay to current day
set boolean variable isQuestActivated to true
remove script
Placed event (or other type of event) when quest is completed -
isQuestComplete = true
//These next two aren't necessary, but I like to set all variables to a correct state
set boolean variable isQuestActivated to false
set numeric variable startQuestDay to -1
remove script
--------------------------------------------
I may have missed some things, but that is the gist of what you'll want to do.
Let me know if you have any other questions.
Edit. The clear win/loss condition scripts are just meant to clear any text associated with the win / loss conditions when viewing these in the menu during a game. Some of those scripts may be bugged, but I don't remember which ones have issues.
Ugh, I am def. in too deep… I basically do not understand, what I am supposed to do to make it work?
I have to make two timed events? But I cannot set a Variable, in a Sequence - which is needed, if I have to make to "set booleans" in one of the timed events?
And you say on the second timed event...
If
- is questactivated
What am I supposed to chose here in the roll-down-thingy (sorry, my English came to its limits here)? I am at a loss? There's nothing called "is" or "current day"? And how with the thre "if"?
The heroes start in the down left of the map and has to get to the Quest Hut (in the middle left) within 20 days from day 1 or they'll loose.
Right now I've tried making an imperfect version, that should work, though, even if it means hiding a town somewhere on the map. The timed event is like this:
Timed Event on day 20:
If
Red Player owns the town named "Xak Tsaroth"
Then:
Nothing
Else:
Purple Player Loses
The Quest: Conditional Action:
If
Current Player is Purple
Then
Sequence
"Trigger custom event named "Change owner" (I have made it as a "Triggerable event" in said town "Change owner")
"Display message"
"Remove script"
Else
Nothing
I do, though, remember having a lot of trouble with the change owner-scripting in the past, why I believe it might not work, but I haven't tried it out yet. And I'd also like a more... elegant solution :-)
Is it in any ways possible you can set it up a bit more like the above? Else it is alright, if you don't have time
Thanks!
____________
Best regards
Rikke - Denmark
|
|
Teller
Tavern Dweller
|
posted March 29, 2020 06:20 PM |
|
|
Karmakeld said:
iliveinabox05 said:
Edit. The clear win/loss condition scripts are just meant to clear any text associated with the win / loss conditions when viewing these in the menu during a game. Some of those scripts may be bugged, but I don't remember which ones have issues.
I believe you can use the 'set new loss condition' to change the loss condition. I used multiple win/loss conditions in some of the maps in my campaign so I could go and check to be 100% certain. Also nice to see a fellow Dane in here
As for the Mega Dragon Dwelling you may want to look in my object package, as McIric and I are currently working on making a unique Mega Dragon Dwelling adventure object, which isn't just a preset quest hut but an actual dwelling for this crrature.
Nice, you're a dane, too!
I so seldom meet anyone, who still play these games, it is usually "they used to"! So cool!
"have to restrain myself from writing in Danish"
____________
Best regards
Rikke - Denmark
|
|
iliveinabox05
Honorable
Famous Hero
|
posted March 29, 2020 11:09 PM |
|
|
Yes, I listed out the different events you should create to do what you want to do.
Why can you not set a boolean variable in a sequence? You just click "new" under scripts for the event and then select "set boolean (true/false) variable", enter the name of the variable (isQuestActivated), and then set the value (true). Since you want the first day to activate your quest, you'll set the "isQuestActivated" variable to true in your initialization timed event.
You'll do the same thing for your "startQuestDay" variable, except you'll want to pick "Set numeric variable" from the list of scripts. When setting the value, you will scroll up to the top where you should see "current day" and use that to set your variable.
That was all for your first timed event.
For the second timed event, you should set it to start on the second day so you don't have to worry about correctly naming your timed events so that they execute in the correct order (they go alphabetically if I remember correctly).
To get the following into a script:
if ( isQuestActivated )
Do the following:
Under the script tab of your event, click "new", then select "conditional action". Next, click "edit" to the right of the "if" block, and then select "variable". If you have already created the initialization timed event, then you will be able to select any boolean variables you have created from the drop down menu here. Select "isQuestActivated". Now you can go into the true branch and add the things I mentioned in my previous post.
You can ignore the other events I wrote about (the ones saying "placed event or other type") since you are starting things on day 1. You should only need the two timed events to do what you want.
You should be able to use these tips to do the rest of the scripting I wrote out in my previous post
|
|
Teller
Tavern Dweller
|
posted March 30, 2020 10:41 PM |
|
|
iliveinabox05 said: Yes, I listed out the different events you should create to do what you want to do.
Why can you not set a boolean variable in a sequence? You just click "new" under scripts for the event and then select "set boolean (true/false) variable", enter the name of the variable (isQuestActivated), and then set the value (true). Since you want the first day to activate your quest, you'll set the "isQuestActivated" variable to true in your initialization timed event.
You'll do the same thing for your "startQuestDay" variable, except you'll want to pick "Set numeric variable" from the list of scripts. When setting the value, you will scroll up to the top where you should see "current day" and use that to set your variable.
That was all for your first timed event.
For the second timed event, you should set it to start on the second day so you don't have to worry about correctly naming your timed events so that they execute in the correct order (they go alphabetically if I remember correctly).
To get the following into a script:
if ( isQuestActivated )
Do the following:
Under the script tab of your event, click "new", then select "conditional action". Next, click "edit" to the right of the "if" block, and then select "variable". If you have already created the initialization timed event, then you will be able to select any boolean variables you have created from the drop down menu here. Select "isQuestActivated". Now you can go into the true branch and add the things I mentioned in my previous post.
You can ignore the other events I wrote about (the ones saying "placed event or other type") since you are starting things on day 1. You should only need the two timed events to do what you want.
You should be able to use these tips to do the rest of the scripting I wrote out in my previous post
Sorry, yes you did, I wasn't very well at communicating at all, I am SO sorry.
I don't know why I could not find the Booleans in the "Sequence" yesterday, but I did today! So I have made the first "Timed event" script now.
Problem is also, I have never worked with the variables, so I got utterly confused reading your scripting. So thank you for pointing that bit a bit more out.
What confuses me now, is this second timed event, where you have placed 3 "if". I cannot make a "sequence" in an "if"?
Or is it because I have to make it in a "sequence" initially and thereby be able to make 3 "conditional actions"? But then I do not understand the middle-if...
But in that case I do not understand the 2nd "if", as there's nothing "then"?
***
Timed Event for quest, start Day 1 -
if ( isQuestComplete )
{
remove script
}
if ( isQuestActivated )
{
if ( current day = ( startQuestDay + 20 ) AND NOT isQuestComplete)
{
Display "You lose"
lose
}
}
***
I do hope my question make sense?
____________
Best regards
Rikke - Denmark
|
|
iliveinabox05
Honorable
Famous Hero
|
posted March 31, 2020 07:28 PM |
|
|
You can't make a sequence in the actual "if" block (the top of the three). That is where your actual condition goes, which is what I put inside the parentheses in my example.
The second block going down is for when the condition is true, and the third for when it is false. In these two blocks they do start out with a sequence script, so you just click new and add the necessary scripts. So when you click new, you add another conditional, which will give you a second "if" statement.
I do not show "then" or "else" to make the pseudo script code cleaner. In programming, the general syntax is:
if (condition)
{
// path for condition is true
// this is the equivalent of the "then" block in the editor
}
else
{
// path for condition is false
}
There is nothing in the else blocks for what you want to do because you don't need to take any action in them.
If you are instead asking how to put more than one script for the condition (my third if statement), then you start with the "equals" script in the condition. Edit the top block and select variable, and set it to current day. Edit the lower block and select "plus", which will bring up another dialog. Edit the top block and select your startQuestDay variable. Edit the bottom block and select "number" and set it to 20.
Either way, you should probably read this scripting guide thoroughly, which covers all the basics.
|
|
|
|