|
Thread: Heroes 5 Modding: Map Scripting | This thread is pages long: 1 2 3 4 · NEXT» |
|
VokialBG
Honorable
Legendary Hero
First in line
|
posted February 05, 2008 12:29 PM |
|
Edited by VokialBG at 12:48, 05 Feb 2008.
|
Heroes 5 Modding: Map Scripting
This thread is for discussing the Map Scripting in Heroes 5.
What belong to this threads: Small guides and examples, not long enough for separate thread; Theoretical possibilities in H5 Modding; Work in progress; Generally discussion about the Map Scripting;
Modding Thread Group:
3D Attempts and Theories|Sounds and Music|Map Scripting|Texture Editing|Texts and Interface|XDB Modding
____________
|
|
Disturbed-Gnu
Supreme Hero
Pro Bacon Vodka Brewer
|
posted February 05, 2008 03:56 PM |
|
|
Quote: This thread is for discussing the Map Scripting in Heroes 5.
What belong to this threads: Small guides and examples, not long enough for separate thread; Theoretical possibilities in H5 Modding; Work in progress; Generally discussion about the Map Scripting;
Modding Thread Group:
3D Attempts and Theories|Sounds and Music|Map Scripting|Texture Editing|Texts and Interface|XDB Modding
I love to make maps full of scripts and fun ideas, and make them fun for every one, but i can't do it in Heroes 5 editor!
It was very easy to do in heroes 3, but i qess that is because you didn't have many options to deal with
And I loved Heroes 4 map editor, and all the script options you had there, it was a little bit difficult, but possible to learn, and i made some very cool maps..
But but, i can't do it in H5," The quest hut for an example! In Heroes 4 you had "Greater than or equals" and "Number" or a required artifact for trading and all that, how can i do such things in H5?
Sorry for my bad english, but what can i do?
____________
|
|
sfidanza
Promising
Supreme Hero
|
posted February 05, 2008 08:30 PM |
|
|
There are two issues here:
- H5 scripting really requires learning lua, which is a real programming language. It's not a problem by itself, since it really opens many ;ore possibilities, but it's harder to learn. The real problem is that there are no assistant/wizards that could produce bits of code automatically for classic things like quest huts.
- Adding scripts through the editor is a pain. This should have been much easier. And even if you get the editing window, there is still no debugger. You have to test in game. At least, you can reload dynamically a script from the console, so you don't have to restart the game with every change. But all in all, it's easier to add and edit the script manually, with an external code editor.
|
|
ulfara
Adventuring Hero
Rhaaaaaaaaaa
|
posted February 21, 2008 07:46 PM |
|
|
I know how to script in Heroes 5, but I don't know how to create a objective, I tried "SetObjectiveProgress", "SetObjectiveState",
"SetObjectiveVisible". I created the message for the objective in "SaveFilenames". Should i do it somewhere else. If yes, then why? .
Could anyone help me?/
|
|
Uncle_Zhuge
Tavern Dweller
|
posted January 17, 2009 06:12 AM |
|
|
I was reading through some of the game manuals installed with the game and I realized that there is one manual about scripting. I tried dabbling with one of them and it doesn't work at all. Its about adding creatures to your or enemy side during combat. (Kind of like the last scenario for the Academy Campaign, the one where you fight the Demon Sovereign.) The command given by the manual was as follow:
AddCreature (side, type, number, x = -1, y = -1);
So I tried typing in the following command into the map script:
AddCreature (ATTACKER, 106, 100, x = -1, y = -1);
When I typed this command in the scripting command, the map editor says that the function AddCreature is not defined. I believe the command given by the manual could have been incorrect. If anyone can help me in this, I will gladly appreciate it.
By the way, many of the commands don't work if you just simply type that one line according to the manual given.
____________
|
|
Warmonger
Promising
Legendary Hero
fallen artist
|
posted January 17, 2009 07:23 AM |
|
|
Quote: So I tried typing in the following command into the map script:
Try rhinking first. How is the game supposed to know which specific combat do you have in mind?
You have to put that line in the combat script of the specific fight. To do that, either choose the script in properties of the single stack or add it by map properties bar and refer to it with StartCombat function.
Also, this thread appears dead since some years.
|
|
Disturbed-Gnu
Supreme Hero
Pro Bacon Vodka Brewer
|
posted January 17, 2009 11:35 AM |
|
|
LUA scripting shouldn't be a problem if you own Garry's Mod 10 and like making weapons.
^^
Thats sadly a lie! I can't make anything work in heroes!! But i made tons of stuff to Gmod9 & 10
|
|
Asheera
Honorable
Undefeatable Hero
Elite Assassin
|
posted January 17, 2009 01:20 PM |
|
|
Quote: When I typed this command in the scripting command, the map editor says that the function AddCreature is not defined. I believe the command given by the manual could have been incorrect. If anyone can help me in this, I will gladly appreciate it.
The Map Editor error-checking is flawed, don't trust it Just test in game and see if it works
Also you wrote it wrongly. You wrote:
AddCreature (ATTACKER, 106, 100, x = -1, y = -1);
And it should be:
AddCreature (ATTACKER, 106, 100);
OR
AddCreature (ATTACKER, 106, 100, -1, -1);
OR
AddCreature (ATTACKER, 106, 100, x, y);
In the last case, you should provide the X and Y coordinates, of course. What it says in the manual with "x=-1" means that it's not necessary to supply an X and Y value, they will have a default value of -1.
____________
|
|
Uncle_Zhuge
Tavern Dweller
|
posted January 18, 2009 03:18 PM |
|
|
Quote:
Quote: So I tried typing in the following command into the map script:
Try rhinking first. How is the game supposed to know which specific combat do you have in mind?
You have to put that line in the combat script of the specific fight. To do that, either choose the script in properties of the single stack or add it by map properties bar and refer to it with StartCombat function.
Also, this thread appears dead since some years.
Ok, so I tried adding a few more parameters to the script. It still doesn't work. This is what I tried:
function Start ( heroname );
if heroname == "Biara" then
AddCreature (ATTACKER, 106, 130, -1, -1);
The function that you said "StartCombat" appears to only allow me to add creatures to the defending player. I want to be able to add to the attacker and the defending player as well.
Grrr, triggers in Heroes 5 is so tough. X_X
|
|
Warmonger
Promising
Legendary Hero
fallen artist
|
posted January 18, 2009 03:27 PM |
|
|
Quote: The function that you said "StartCombat" appears to only allow me to add creatures to the defending player
Fiist of all it allows you to run combat script, which is something different than map script and stored in a separate file you have to create.
|
|
Uncle_Zhuge
Tavern Dweller
|
posted January 18, 2009 03:34 PM |
|
|
Quote:
Quote: The function that you said "StartCombat" appears to only allow me to add creatures to the defending player
Fiist of all it allows you to run combat script, which is something different than map script and stored in a separate file you have to create.
Wow... So there is a map script and a combat script to code?? This thing is even tougher than I thought.
Maybe someone can just help me out with this trigger by telling me what to type. I am just getting headaches figuring out what to type...
|
|
Warmonger
Promising
Legendary Hero
fallen artist
|
posted January 18, 2009 03:41 PM |
|
|
1.Click a creature or a static hero you want to fight against.
2.Find "combat script" property.
3.Click "new"
4.Voila! You can edit it.
For the reference check data\data.pak\scripts diectory or original campaign maps.
This script will trigger automatically when the army is attacked.
With StartCombat function you may trigger any other scipt, for example in a building or timed event. Unfortunatelly I din't use it yet so you have to try it on your own.
|
|
Uncle_Zhuge
Tavern Dweller
|
posted January 18, 2009 09:01 PM |
|
|
Alright, so I found the data for the Sovereign fight. But when I did what you said, it still doesn't work. I tried configuring, copying and pasting and nothing works. This is what I did:
1. Put Biara (Player 1) as hero for player 1.
2. Put Ghost (Player 2) as hero for player 2.
3. Edit Biara's Combat Script and insert the following inside:
function Prepare()
EnableCinematicCamera(nil);
sleep(15);
end
function Start()
EnableAutoFinish(nil);
sleep(20);
AddCreature(DEFENDER, 28, 2, 12, 3);
sleep(20);
AddCreature(DEFENDER, 28, 2, 12, 12);
sleep(20);
AddCreature(DEFENDER, 28, 2, 12, 8);
sleep(20);
AddCreature(DEFENDER, 23, 35, 13, 5);
sleep(20);
AddCreature(DEFENDER, 22, 25, 13, 10);
sleep(20);
EnableCinematicCamera(not nil);
end
Yet when I start the game, I tried making Player 1 attack player 2, doesn't work. I let Player 2 attack Player 1 and it still doesn't work. I changed the AddCreature to the original SummonCreature that is used in the script for the Sovereign fight and it still doesn't work. No creatures were summoned whatsoever.
|
|
Asheera
Honorable
Undefeatable Hero
Elite Assassin
|
posted January 18, 2009 09:20 PM |
|
|
If you have the console you can check what error it gives.
Try writing 1 instead of "DEFENDER"
Like:
AddCreature(1, 28, 2, 12, 3)
____________
|
|
Uncle_Zhuge
Tavern Dweller
|
posted January 19, 2009 05:27 AM |
|
|
Ok, I think I know why none of the commands work. Apparently I have been playing the map in multiplayer and it disables all combat script commands. X_X I tried it in single player and it worked.
By the way, is there any way to do this same thing for multiplayer games as well?
|
|
Asheera
Honorable
Undefeatable Hero
Elite Assassin
|
posted January 19, 2009 02:12 PM |
|
|
In Multiplayer all scripts are disabled except the Map Script. That's most probably a flaw in their design (since pre-TotE all scripts were disabled in multi, and they enabled the Map Script but forgot about the others)
I have a theory (never tested so not sure if it works) for an alternative to do it manually. You have to disable the normal interaction with the monster, then set a trigger to take action when you interact with the monster and use combat starting functions when that event triggers. All of this in the Map Script (that works in the multiplayer mode as well)
Example:
function Combat1(hero, monster)
-- start combat and do other custom combat things here
end
function Combat2(hero, monster)
-- likewise
end
-- and so on until last custom monster combat function
for i = 1, numMonsters do
SetObjectEnabled("Monster"..i, nil)
Trigger(OBJECT_TOUCH_TRIGGER, "Monster"..i, "Combat"..i)
end
In that example numMonsters is obviously the number of monster objects on the map, and they must be named like "Monster1", "Monster2", and they should be consecutively.
____________
|
|
alduen
Tavern Dweller
|
posted June 20, 2009 06:20 AM |
|
|
I need some help with a script function for hero teleporting. I have a map which has "dungeon crawls" in it. so I'm attempting to use other object other than the typical gateways or stairwells to move heroes to other points on the map.
I've tried on-touch and a small 2 square zone mark by the object to teleport and it doesn't seem to work out. I'd also like to add a conformation msg to the function "would you like to enter yes/no" if possible.
I know some C+ but the specific commands for heroes elude me on this, if they are even possible.
|
|
mirthless_one
Tavern Dweller
|
posted June 21, 2009 07:01 PM |
|
|
Quote: In Multiplayer all scripts are disabled except the Map Script. That's most probably a flaw in their design (since pre-TotE all scripts were disabled in multi, and they enabled the Map Script but forgot about the others)
I have a theory (never tested so not sure if it works) for an alternative to do it manually. You have to disable the normal interaction with the monster, then set a trigger to take action when you interact with the monster and use combat starting functions when that event triggers. All of this in the Map Script (that works in the multiplayer mode as well)
Example:
function Combat1(hero, monster)
-- start combat and do other custom combat things here
end
function Combat2(hero, monster)
-- likewise
end
-- and so on until last custom monster combat function
for i = 1, numMonsters do
SetObjectEnabled("Monster"..i, nil)
Trigger(OBJECT_TOUCH_TRIGGER, "Monster"..i, "Combat"..i)
end
In that example numMonsters is obviously the number of monster objects on the map, and they must be named like "Monster1", "Monster2", and they should be consecutively.
Unfortunately, you idea does not seem to work.
I've contacted Nival developer and he said that they disabled combat scripts in multiplayer on purpose, because they coudn't overcome desync problems.
Somewhere (can't remember where) i heard a guy mentioned a way to make game treat multiplayer game as a single player thou allowing all script types execution, but it might just be a hoax.
|
|
Mirthless
Tavern Dweller
|
posted July 07, 2009 10:51 PM |
|
|
Hi, wanted to ask if someone tried to use HERO_TOUCH_TRIGGER introduced in 3,1 ToTe patch in multiplayer game.
For me it causes disconects or game crashes often enought to make script unusable in real game.
(Script does the following: Trigger catches the moment when two heroes meet, modifies heroes parameters and finally starts standart interaction.).
What do you think. How could i better synchronize it in multiplayer or probably avoid using it for described task?
And the other thing. Has someone been able to remove huge slowdown on big maps when using AddObjectCreatures/AddHeroCreatures commands?
Any reply would be greatly appreciated.
|
|
Seiat
Hired Hero
|
posted July 08, 2009 11:33 PM |
|
Edited by Seiat at 02:05, 09 Jul 2009.
|
I'm just starting out on map scripting for heroes 5... reminds me of Dungeon Keeper scripting, but more features and no real pointers X.X
Does anyone have any idea how I can implement special effects (like haste/weakness/etc.) to either the hero creatures or the enemy creatures when a battle begins? I've tried a couple things but it didn't work. Any suggestions?
P.S. if you suggest I quit map scripting you will be subject to evil nasty spam in ur e-mail
Better yet, does anyone know how to change a map from Single player to Multi player so I don't have to mess around with scripting? lolz
____________
|
|
|
|