• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Crash] WE Error?

Status
Not open for further replies.
Level 16
Joined
Jun 24, 2009
Messages
1,409
After saving my map the editor always show me that error:
wmo4ns.jpg

Can this cause something bad with my map? How can I fix it?
 
Level 6
Joined
Apr 1, 2009
Messages
201
From doing some research I've found out where the Units\DestructableMetaData.slk comes from. It comes from the Warcraft 3 listfile.

Theory 1 - So I'm not really sure but it seems that it can't call or read the data from the listfile in the Warcraft Mpq's. Did you do any listfile editing?
Theory 2 - The file might be corrupted, you could try reinstalling whatever program you are using.

I'm not sure at all if either of these are the answers but this is what I could find online. I found out where the Unit\DestructableMetaData.slk was using an MPQ editor and then found a site that calls and reads slk files. I hope this helps in any way possible.
 
You have to show the //! external call that is causing the error. Somewhere in your script, there is a line that accesses the ObjectMerger tool. (look for a line that starts with //! external)

That is what is causing the error.

As for the actual problem, it can be either:
1) The external call does not parse properly/causes syntax errors.
2) For whatever reason, the ObjectMerger cannot access your DestructableMetaData.slk

I recommend that you copy and paste the trigger with the external call into this thread.
 
Level 16
Joined
Jun 24, 2009
Messages
1,409
I haven't changed any of the JASS/vJASS codes when the error occurred. So basically it's just appeared by nothing. It's there since a few days so I guess it must be the game mpq because I downloaded a new one to play on a server.
Anyway, can this cause any problems with the map itself?

Edit:
Well, I found something.
JASS:
//! runtextmacro GEN_ICON("A0", "Castle Shield", "BTNFanOfKnives.blp")
//! runtextmacro GEN_ICON("A1", "Taunt", "BTNHowlOfTerror.blp")
//! runtextmacro GEN_ICON("A2", "Shield Bash", "BTNChainLightning.blp")
//! runtextmacro GEN_ICON("A3", "Battle Roar", "BTNBerserkForTrolls.blp")

//! runtextmacro GEN_ICON("B0", "Phoenix Wave", "BTNCarrionSwarm.blp")
//! runtextmacro GEN_ICON("B1", "Phoenix Strike", "BTNBlink.blp")
//! runtextmacro GEN_ICON("B2", "Phoenix Strength", "BTNBerserkForTrolls.blp")
//! runtextmacro GEN_ICON("B3", "Phoenix Claws", "BTNImpale.blp")

//! runtextmacro GEN_ICON("BX", "Assault", "BTNTaunt.blp")
//! runtextmacro GEN_ICON("BY", "Phoenix Spiral", "BTNBattleRoar.blp")
//! runtextmacro GEN_ICON("BZ", "Fire Stomp", "BTNTaunt.blp")

//! textmacro GEN_ICON takes RAWCODE, NAME, MODEL
    //! externalblock extension=lua ObjectMerger $FILENAME$
    //! i setobjecttype("destructables")
    //! i createobject("YTlb", "B$RAWCODE$0")
    //! i makechange(current, "bfxr", 180.00)
    //! i makechange(current, "bfil", "war3mapImported\\IconBase.mdl")
    //! i makechange(current, "boch", 0.00)
    //! i makechange(current, "btxf", "ReplaceableTextures\\CommandButtons\\$MODEL$")
    //! i makechange(current, "btxi", 32)
    //! i makechange(current, "bshd", "")
    //! i makechange(current, "btar", "")
    //! i makechange(current, "bcpr", 0)
    //! i makechange(current, "bmas", 10.0)
    //! i makechange(current, "bmis", 0.10)
    //! i makechange(current, "bcpd", 0)
    //! i makechange(current, "buch", 0)
    //! i makechange(current, "bptx", none)
    //! i makechange(current, "bsuf", "BTN: $NAME$")
    //! i makechange(current, "bnam", " ")
    
    //! i createobject("YTlb", "B$RAWCODE$1")
    //! i makechange(current, "bfxr", 180.00)
    //! i makechange(current, "bfil", "war3mapImported\\IconBase.mdl")
    //! i makechange(current, "boch", 0.00)
    //! i makechange(current, "btxf", "ReplaceableTextures\\CommandButtonsDisabled\\DIS$MODEL$")
    //! i makechange(current, "btxi", 32)
    //! i makechange(current, "bshd", "")
    //! i makechange(current, "btar", "")
    //! i makechange(current, "bcpr", 0)
    //! i makechange(current, "bmas", 10.0)
    //! i makechange(current, "bmis", 0.10)
    //! i makechange(current, "bcpd", 0)
    //! i makechange(current, "buch", 0)
    //! i makechange(current, "bptx", none)
    //! i makechange(current, "bsuf", "DISBTN: " .. "$NAME$")
    //! i makechange(current, "bnam", " ")
    
    //! endexternalblock 
//! endtextmacro
 
Last edited:
Yep that is it.

I can't really see any errors at the moment, but the fix is to just create the objects manually. Instead of generating all these icons:
JASS:
//! runtextmacro GEN_ICON("A0", "Castle Shield", "BTNFanOfKnives.blp")
//! runtextmacro GEN_ICON("A1", "Taunt", "BTNHowlOfTerror.blp")
//! runtextmacro GEN_ICON("A2", "Shield Bash", "BTNChainLightning.blp")
//! runtextmacro GEN_ICON("A3", "Battle Roar", "BTNBerserkForTrolls.blp")

//! runtextmacro GEN_ICON("B0", "Phoenix Wave", "BTNCarrionSwarm.blp")
//! runtextmacro GEN_ICON("B1", "Phoenix Strike", "BTNBlink.blp")
//! runtextmacro GEN_ICON("B2", "Phoenix Strength", "BTNBerserkForTrolls.blp")
//! runtextmacro GEN_ICON("B3", "Phoenix Claws", "BTNImpale.blp")

//! runtextmacro GEN_ICON("BX", "Assault", "BTNTaunt.blp")
//! runtextmacro GEN_ICON("BY", "Phoenix Spiral", "BTNBattleRoar.blp")
//! runtextmacro GEN_ICON("BZ", "Fire Stomp", "BTNTaunt.blp")

You can just make a new destructible with the appropriate fields. Then just copy and paste it for each one, modifying the fields you need to. (the name and replaceable texture)

Once you have them created (or if you already have them created), then you can just erase the code or add comment delimiters around them:
JASS:
/*
//! runtextmacro GEN_ICON("A0", "Castle Shield", "BTNFanOfKnives.blp")
//! runtextmacro GEN_ICON("A1", "Taunt", "BTNHowlOfTerror.blp")
//! runtextmacro GEN_ICON("A2", "Shield Bash", "BTNChainLightning.blp")
//! runtextmacro GEN_ICON("A3", "Battle Roar", "BTNBerserkForTrolls.blp")

//! runtextmacro GEN_ICON("B0", "Phoenix Wave", "BTNCarrionSwarm.blp")
//! runtextmacro GEN_ICON("B1", "Phoenix Strike", "BTNBlink.blp")
//! runtextmacro GEN_ICON("B2", "Phoenix Strength", "BTNBerserkForTrolls.blp")
//! runtextmacro GEN_ICON("B3", "Phoenix Claws", "BTNImpale.blp")

//! runtextmacro GEN_ICON("BX", "Assault", "BTNTaunt.blp")
//! runtextmacro GEN_ICON("BY", "Phoenix Spiral", "BTNBattleRoar.blp")
//! runtextmacro GEN_ICON("BZ", "Fire Stomp", "BTNTaunt.blp")

//! textmacro GEN_ICON takes RAWCODE, NAME, MODEL
    //! externalblock extension=lua ObjectMerger $FILENAME$
    //! i setobjecttype("destructables")
    //! i createobject("YTlb", "B$RAWCODE$0")
    //! i makechange(current, "bfxr", 180.00)
    //! i makechange(current, "bfil", "war3mapImported\\IconBase.mdl")
    //! i makechange(current, "boch", 0.00)
    //! i makechange(current, "btxf", "ReplaceableTextures\\CommandButtons\\$MODEL$")
    //! i makechange(current, "btxi", 32)
    //! i makechange(current, "bshd", "")
    //! i makechange(current, "btar", "")
    //! i makechange(current, "bcpr", 0)
    //! i makechange(current, "bmas", 10.0)
    //! i makechange(current, "bmis", 0.10)
    //! i makechange(current, "bcpd", 0)
    //! i makechange(current, "buch", 0)
    //! i makechange(current, "bptx", none)
    //! i makechange(current, "bsuf", "BTN: $NAME$")
    //! i makechange(current, "bnam", " ")
    
    //! i createobject("YTlb", "B$RAWCODE$1")
    //! i makechange(current, "bfxr", 180.00)
    //! i makechange(current, "bfil", "war3mapImported\\IconBase.mdl")
    //! i makechange(current, "boch", 0.00)
    //! i makechange(current, "btxf", "ReplaceableTextures\\CommandButtonsDisabled\\DIS$MODEL$")
    //! i makechange(current, "btxi", 32)
    //! i makechange(current, "bshd", "")
    //! i makechange(current, "btar", "")
    //! i makechange(current, "bcpr", 0)
    //! i makechange(current, "bmas", 10.0)
    //! i makechange(current, "bmis", 0.10)
    //! i makechange(current, "bcpd", 0)
    //! i makechange(current, "buch", 0)
    //! i makechange(current, "bptx", none)
    //! i makechange(current, "bsuf", "DISBTN: " .. "$NAME$")
    //! i makechange(current, "bnam", " ")
    
    //! endexternalblock
//! endtextmacro
*/

Like that. (the /* */ will make them be considered comments and therefore unread by the compiler)

It's there since a few days so I guess it must be the game mpq because I downloaded a new one to play on a server.

That may be the problem. Just create the objects manually instead of using the textmacro and it should compile just fine.

Anyway, can this cause any problems with the map itself?

It shouldn't. The generation is an editor only thing. When it is run by Warcraft 3 or put in the normal editor, the generation will be seen as simple comments that the compiler will ignore. :)
 
Status
Not open for further replies.
Top