• 🏆 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!

Editor bug? ..or am i missing something

Status
Not open for further replies.
Level 1
Joined
Sep 4, 2017
Messages
5
Hello guys. I am working on my first advanced WC3 map that involves tower defense elements combined with classic "war chasers" playstyle. Ive encountered several issues but thx to this awesome forum i managed to solve most of them just by reading. But still some things puzzle me like this current problem.

I have assigned action to my triggers that should spawn special effect at target point (temp variable). It worked up until today, that is until it just stoped showing any point attached animations for some reason. I didnt change anything to the trigger. In fact it all started while i was working on my creep spawner. I wanted to add spawn special effect but it was kinda bugged. Certain animations either died to fast or stayed in infinite loop (even though i destroyed last created effect along side with point variable). I dont know what i am missing. Any help is much appreciate.
Code:
TheCitadelChoseHero Copy
    Events
        Unit - A unit Sells a unit
    Conditions
        And - All (Conditions) are true
            Conditions
                ((Sold unit) is A Hero) Equal to True
                (Selling unit) Equal to The Citadel 0001 <gen>
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Owner of (Sold unit)) Equal to Player 1 (Red)
            Then - Actions
                Set TempHeroP1SpawnPoint = (Center of Player 1 Hero Spawn <gen>)
                Special Effect - Create a special effect at (Center of Player 1 Hero Spawn <gen>) using Abilities\Spells\Other\Awaken\Awaken.mdl
                Special Effect - Destroy (Last created special effect)
                Unit - Move (Sold unit) instantly to TempHeroP1SpawnPoint
                Custom script:   call RemoveLocation(udg_TempHeroP1SpawnPoint)
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Owner of (Sold unit)) Equal to Player 2 (Blue)
            Then - Actions
                Set TempHeroP2SpawnPoint = (Center of Player 2 Hero Spawn <gen>)
                Special Effect - Create a special effect at TempHeroP2SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
                Special Effect - Destroy (Last created special effect)
                Unit - Move (Sold unit) instantly to TempHeroP2SpawnPoint
                Custom script:   call RemoveLocation(udg_TempHeroP2SpawnPoint)
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Owner of (Sold unit)) Equal to Player 3 (Teal)
            Then - Actions
                Set TempHeroP3SpawnPoint = (Center of Player 3 Hero Spawn <gen>)
                Special Effect - Create a special effect at TempHeroP3SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
                Special Effect - Destroy (Last created special effect)
                Unit - Move (Sold unit) instantly to TempHeroP3SpawnPoint
                Custom script:   call RemoveLocation(udg_TempHeroP3SpawnPoint)
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Owner of (Sold unit)) Equal to Player 4 (Purple)
            Then - Actions
                Set TempHeroP4SpawnPoint = (Center of Player 4 Hero Spawn <gen>)
                Special Effect - Create a special effect at TempHeroP4SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
                Special Effect - Destroy (Last created special effect)
                Unit - Move (Sold unit) instantly to TempHeroP4SpawnPoint
                Custom script:   call RemoveLocation(udg_TempHeroP4SpawnPoint)
            Else - Actions
        Player Group - Pick every player in (All players) and do (Actions)
            Loop - Actions
                Player - Make (Unit-type of (Sold unit)) Unavailable for training/construction by (Picked player)
                Player - Make CitadelHeroes[1] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[2] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[3] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[4] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[5] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[6] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[7] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[8] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[9] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[10] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[11] Unavailable for training/construction by (Owner of (Sold unit))
                Player - Make CitadelHeroes[12] Unavailable for training/construction by (Owner of (Sold unit))
        Camera - Pan camera for (Owner of (Sold unit)) to (Position of (Sold unit)) over 1.00 seconds
        Selection - Clear selection for (Owner of (Sold unit))
        Selection - Add (Sold unit) to selection for (Owner of (Sold unit))
 

Jampion

Code Reviewer
Level 15
Joined
Mar 25, 2016
Messages
1,327
You can use [trigger]...[/trigger] instead of [code]...[/code]. It's a lot easier to read:

  • TheCitadelChoseHero Copy
    • Events
      • Unit - A unit Sells a unit
    • Conditions
      • And - All (Conditions) are true
        • Conditions
          • ((Sold unit) is A Hero) Equal to True
          • (Selling unit) Equal to The Citadel 0001 <gen>
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Owner of (Sold unit)) Equal to Player 1 (Red)
        • Then - Actions
          • Set TempHeroP1SpawnPoint = (Center of Player 1 Hero Spawn <gen>)
          • Special Effect - Create a special effect at (Center of Player 1 Hero Spawn <gen>) using Abilities\Spells\Other\Awaken\Awaken.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Move (Sold unit) instantly to TempHeroP1SpawnPoint
          • Custom script: call RemoveLocation(udg_TempHeroP1SpawnPoint)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Owner of (Sold unit)) Equal to Player 2 (Blue)
        • Then - Actions
          • Set TempHeroP2SpawnPoint = (Center of Player 2 Hero Spawn <gen>)
          • Special Effect - Create a special effect at TempHeroP2SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Move (Sold unit) instantly to TempHeroP2SpawnPoint
          • Custom script: call RemoveLocation(udg_TempHeroP2SpawnPoint)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Owner of (Sold unit)) Equal to Player 3 (Teal)
        • Then - Actions
          • Set TempHeroP3SpawnPoint = (Center of Player 3 Hero Spawn <gen>)
          • Special Effect - Create a special effect at TempHeroP3SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Move (Sold unit) instantly to TempHeroP3SpawnPoint
          • Custom script: call RemoveLocation(udg_TempHeroP3SpawnPoint)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Owner of (Sold unit)) Equal to Player 4 (Purple)
        • Then - Actions
          • Set TempHeroP4SpawnPoint = (Center of Player 4 Hero Spawn <gen>)
          • Special Effect - Create a special effect at TempHeroP4SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Move (Sold unit) instantly to TempHeroP4SpawnPoint
          • Custom script: call RemoveLocation(udg_TempHeroP4SpawnPoint)
        • Else - Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Player - Make (Unit-type of (Sold unit)) Unavailable for training/construction by (Picked player)
          • Player - Make CitadelHeroes[1] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[2] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[3] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[4] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[5] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[6] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[7] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[8] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[9] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[10] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[11] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[12] Unavailable for training/construction by (Owner of (Sold unit))
      • Camera - Pan camera for (Owner of (Sold unit)) to (Position of (Sold unit)) over 1.00 seconds
      • Selection - Clear selection for (Owner of (Sold unit))
      • Selection - Add (Sold unit) to selection for (Owner of (Sold unit))
So only the special effects do not show up, but the units are moved correctly?
 
Level 1
Joined
Sep 4, 2017
Messages
5
You can use [trigger]...[/trigger] instead of [code]...[/code]. It's a lot easier to read:

  • TheCitadelChoseHero Copy
    • Events
      • Unit - A unit Sells a unit
    • Conditions
      • And - All (Conditions) are true
        • Conditions
          • ((Sold unit) is A Hero) Equal to True
          • (Selling unit) Equal to The Citadel 0001 <gen>
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Owner of (Sold unit)) Equal to Player 1 (Red)
        • Then - Actions
          • Set TempHeroP1SpawnPoint = (Center of Player 1 Hero Spawn <gen>)
          • Special Effect - Create a special effect at (Center of Player 1 Hero Spawn <gen>) using Abilities\Spells\Other\Awaken\Awaken.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Move (Sold unit) instantly to TempHeroP1SpawnPoint
          • Custom script: call RemoveLocation(udg_TempHeroP1SpawnPoint)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Owner of (Sold unit)) Equal to Player 2 (Blue)
        • Then - Actions
          • Set TempHeroP2SpawnPoint = (Center of Player 2 Hero Spawn <gen>)
          • Special Effect - Create a special effect at TempHeroP2SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Move (Sold unit) instantly to TempHeroP2SpawnPoint
          • Custom script: call RemoveLocation(udg_TempHeroP2SpawnPoint)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Owner of (Sold unit)) Equal to Player 3 (Teal)
        • Then - Actions
          • Set TempHeroP3SpawnPoint = (Center of Player 3 Hero Spawn <gen>)
          • Special Effect - Create a special effect at TempHeroP3SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Move (Sold unit) instantly to TempHeroP3SpawnPoint
          • Custom script: call RemoveLocation(udg_TempHeroP3SpawnPoint)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Owner of (Sold unit)) Equal to Player 4 (Purple)
        • Then - Actions
          • Set TempHeroP4SpawnPoint = (Center of Player 4 Hero Spawn <gen>)
          • Special Effect - Create a special effect at TempHeroP4SpawnPoint using Abilities\Spells\Other\Awaken\Awaken.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Move (Sold unit) instantly to TempHeroP4SpawnPoint
          • Custom script: call RemoveLocation(udg_TempHeroP4SpawnPoint)
        • Else - Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Player - Make (Unit-type of (Sold unit)) Unavailable for training/construction by (Picked player)
          • Player - Make CitadelHeroes[1] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[2] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[3] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[4] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[5] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[6] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[7] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[8] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[9] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[10] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[11] Unavailable for training/construction by (Owner of (Sold unit))
          • Player - Make CitadelHeroes[12] Unavailable for training/construction by (Owner of (Sold unit))
      • Camera - Pan camera for (Owner of (Sold unit)) to (Position of (Sold unit)) over 1.00 seconds
      • Selection - Clear selection for (Owner of (Sold unit))
      • Selection - Add (Sold unit) to selection for (Owner of (Sold unit))
So only the special effects do not show up, but the units are moved correctly?

Correct. Units are moving as they should. Both in my creep spawner and here as well. Its really strange.
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,178
Before wasting an excessive amount of time trying to find a bug that possibly does not even exist, try restarting your computer. This must be a restart, and not a shutdown because shutdown in Windows 8 and 10 means hybrid shutdown. Hybrid shutdown causes all drivers to be restored to the same state they were on "shutdown" rather than being freshly loaded so will not solve the problem.

It seems some graphic drivers get into a bugged state after excessive running time resulting in visual artefacts in Warcraft III such as some models and special effects failing to be displayed. This is a fairly common problem, reported at least half a dozen times so far this year.
 
Level 1
Joined
Sep 4, 2017
Messages
5
Before wasting an excessive amount of time trying to find a bug that possibly does not even exist, try restarting your computer. This must be a restart, and not a shutdown because shutdown in Windows 8 and 10 means hybrid shutdown. Hybrid shutdown causes all drivers to be restored to the same state they were on "shutdown" rather than being freshly loaded so will not solve the problem.

It seems some graphic drivers get into a bugged state after excessive running time resulting in visual artefacts in Warcraft III such as some models and special effects failing to be displayed. This is a fairly common problem, reported at least half a dozen times so far this year.
I did the reset after a while since i couldn't find any obvious reason why the animations are not showing. Still with no luck. I did not shutdown my win10 but reset. My drivers were up to date as far as i could tell. But what i did was complete shutdown. I left my PC to rest for copula hours (usually i put it in sleep mode) and than turned on again. Now the animations work as they should. Thank you for you replays.

Since i already opened this thread maybe i can ask one more question regarding my TD creep spawners.
Ive set 4 locked spawn areas from where creeps should spawn and follow trigger orders. Classics TD spawner and wave triggers. Its for 4 players so that each should take care of one lane. There are four themed sets of creeps that require different towers to penetrate armor. I want to randomize each starting creep spawner position so that lets say player 1 get always random creep set (out of pool of 4 sets). Also when less than 4 players are playing i still want to keep randomizing but to also be able to turn off one lane(one for each player not playing). I would like to do this in most efficient manner, with least memory leak. Any ideas would be welcomed. Thank you in advance :)
 
Level 15
Joined
Jul 9, 2008
Messages
1,552
its not going to fix your special effect problem but you haven't used your variable for player 1 (red)

  • Special Effect - Create a special effect at (Center of Player 1 Hero Spawn <gen>) using Abilities\Spells\Other\Awaken\Awaken.mdl
also all of these 1-12 dont have to be in the playergroup loop
  • Player - Make CitadelHeroes[1] Unavailable for training/construction by (Owner of (Sold unit))[/tigger]
 
Level 1
Joined
Sep 4, 2017
Messages
5
its not going to fix your special effect problem but you haven't used your variable for player 1 (red)

  • Special Effect - Create a special effect at (Center of Player 1 Hero Spawn <gen>) using Abilities\Spells\Other\Awaken\Awaken.mdl
I was sure that i saved just before i changed target region to target point variable. Guess not. :p Thank you for bringing it up.
 
Level 1
Joined
Sep 4, 2017
Messages
5
Could you post one of your triggers for your creep spawning and their orders? It'll help us give more specific advice. :)
Here you have creep spawner and first wave (for the first creep set/theme):

Spawner no1
  • WSpawnerThiefClanA
    • Events
    • Conditions
    • Actions
      • Set TempSpawnPoint = (Center of ThiefClanSpawn <gen>)
      • Unit - Create CreepsThiefLV1Born UnitTypeLv1Thief for Player 12 (Brown) at TempSpawnPoint facing Default building facing degrees
      • Custom script: call RemoveLocation(udg_TempSpawnPoint)
Wave 1 out of 30 (per set; should be 4 sets) / time event can and probably will be changed after testing to action: run trigger
  • Wave1
    • Events
      • Time - Elapsed game time is 15.00 seconds
    • Conditions
    • Actions
      • Set CreepsThiefLV1Born = 5
      • Set UnitTypeLv1Thief = Thief Militia Lv1 Thief Clan
      • Trigger - Run WSpawnerThiefClanA <gen> (ignoring conditions)
      • Custom script: call DestroyTrigger(GetTriggeringTrigger())
Movment/Orders

  • EnterSpawn
    • Events
      • Unit - A unit enters ThiefClanSpawn <gen>
    • Conditions
      • (Owner of (Triggering unit)) Equal to Player 12 (Brown)
    • Actions
      • Set TempThiefGroup = (Units in ThiefClanSpawn <gen> owned by Player 12 (Brown))
      • Set TempTestBuildingArea = (Center of TestBuildingArea <gen>)
      • Set TempThiefEnterEffect = (Position of (Triggering unit))
      • Special Effect - Create a special effect at TempThiefEnterEffect using Objects\Spawnmodels\Undead\UCancelDeath\UCancelDeath.mdl
      • Special Effect - Destroy (Last created special effect)
      • Wait 1.00 seconds
      • Unit Group - Pick every unit in TempThiefGroup and do (Actions)
        • Loop - Actions
          • Unit - Order (Picked unit) to Attack-Move To TempTestBuildingArea
          • AI - Ignore (Picked unit)'s guard position
      • Custom script: call DestroyGroup(udg_TempThiefGroup)
      • Custom script: call RemoveLocation(udg_TempTestBuildingArea)
      • Custom script: call RemoveLocation(udg_TempThiefEnterEffect)
I made several spawners for different creep variations. So each set has totally different creeps and variations. Aprox as of now around 20 spawners per set. After first wave fires off i can just put wait action and activate second wave. So by disabling/enabling all of the wave triggers for one particular set i could controll which lane is spawning. But i am not sure whats best way to do it so that i can achieve what i asked in my previous post.
 
Status
Not open for further replies.
Top