How do i make regular units to be purchased like mercenaries.

Discussion in 'World Editor Help' started by sunshinex3, Sep 30, 2016.

  1. sunshinex3

    sunshinex3 You can change this now in User CP.

    Ratings:
    +4 / 0 / -0
    o great
     
  2. jonas

    jonas Member

    Ratings:
    +41 / 4 / -0
    By the way, you should try to make your code table driven.
     
  3. sunshinex3

    sunshinex3 You can change this now in User CP.

    Ratings:
    +4 / 0 / -0
    this is the condition that is wrong any one know whats wrong?
    Trigger:
    • (Number of units in (Units owned by (Owner of (Dying unit)) of type Spawning Pool (zerg))) Equal to 0
     
  4. Accname

    Accname 2D-Graphics enthusiast

    Ratings:
    +1,549 / 4 / -4
    It is wrong in which way? (I also recommended not using Dying unit and switching to Triggering unit instead)
     
  5. sunshinex3

    sunshinex3 You can change this now in User CP.

    Ratings:
    +4 / 0 / -0
    ( I tried changing it to owner of triggering unit, it had no effect)
    sry the condition is the only thing preventing the trigger from working.

    Trigger:
    • (Number of units in (Units owned by (Owner of (Dying unit)) of type Spawning Pool (zerg))) Equal to 0


    i know their are leaks and i will get to those but first i need this to work.(and i feel as if i were really close)

    the event of the trigger is a unit dies
    and essentially it is supposed to remove the units sold(units sold are placed in buildings by add triggers, which works good)

    the two conditions say:
    Trigger:
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Spawning Pool (zerg)
      • (Number of units in (Units owned by (Owner of (Dying unit)) of type Spawning Pool (zerg))) Equal to 0


    can't imagine why the second condition is preventing the actions

    actions:
    Trigger:
    • Then - Actions
      • Player - Make Zerg Egg (zergling) Available for training/construction by (Owner of (Dying unit))
      • Player - Make Zerg Egg (zergling colony) Available for training/construction by (Owner of (Dying unit))
      • Player - Make Zerg Egg (zergling Hive) Available for training/construction by (Owner of (Dying unit))
      • Unit Group - Pick every unit in (Units owned by (Owner of (Dying unit)) of type Hatchery (zerg)) and do (Actions)
      • Loop - Actions
      • Neutral Building - Remove Zerg Egg (zergling) from (Picked unit)
      • Unit Group - Pick every unit in (Units owned by (Owner of (Dying unit)) of type Colony (zerg)) and do (Actions)
      • Loop - Actions
      • Neutral Building - Remove Zerg Egg (zergling) from (Picked unit)
      • Unit Group - Pick every unit in (Units owned by (Owner of (Dying unit)) of type Hive (zerg)) and do (Actions)
      • Loop - Actions
      • Neutral Building - Remove Zerg Egg (zergling) from (Picked unit)
     
  6. Accname

    Accname 2D-Graphics enthusiast

    Ratings:
    +1,549 / 4 / -4
    Because a dead unit still exists. Its still on the field. If you count all units of type then the dying unit is counted too because it still exists. If it didnt exist you wouldnt be able to get its type and whatnot.
    What you really want to do is count the living units of that type.
     
  7. sunshinex3

    sunshinex3 You can change this now in User CP.

    Ratings:
    +4 / 0 / -0
    awsome, yep works as intended, now i need to look into these memory leaks caused by unit groups...


    accname ty so much for you help in this on going endeavor
     
  8. sunshinex3

    sunshinex3 You can change this now in User CP.

    Ratings:
    +4 / 0 / -0
    okie dokie i followed instruction on:
    Triggers - Memory Leaks and Custom Scripts
    Tutorial By emjlr3

    came up with this for both the add trigger and then the sold trigger to get rid of the leaks

    Trigger:
    • Then - Actions
      • Player - Make Zerg Egg (zergling) Unavailable for training/construction by (Owner of (Constructed structure))
      • Player - Make Zerg Egg (zergling colony) Unavailable for training/construction by (Owner of (Constructed structure))
      • Player - Make Zerg Egg (zergling Hive) Unavailable for training/construction by (Owner of (Constructed structure))
      • Set temphatcherygroup = (Units owned by (Owner of (Constructed structure)) of type Hatchery (zerg))
      • Unit Group - Pick every unit in temphatcherygroup and do (Actions)
      • Loop - Actions
      • Neutral Building - Add Zerg Egg (zergling) to (Picked unit) with 4 in stock and a max stock of 4
      • Custom script: call DestroyGroup (udg_temphatcherygroup)
      • Set tempcolonygroup = (Units owned by (Owner of (Constructed structure)) of type Colony (zerg))
      • Unit Group - Pick every unit in tempcolonygroup and do (Actions)
      • Loop - Actions
      • Neutral Building - Add Zerg Egg (zergling) to (Picked unit) with 5 in stock and a max stock of 5
      • Custom script: call DestroyGroup (udg_tempcolonygroup)
      • Set temphivegroup = (Units owned by (Owner of (Constructed structure)) of type Hive (zerg))
      • Unit Group - Pick every unit in temphivegroup and do (Actions)
      • Loop - Actions
      • Neutral Building - Add Zerg Egg (zergling) to (Picked unit) with 6 in stock and a max stock of 6
      • Custom script: call DestroyGroup (udg_temphivegroup)


    and for sold

    Trigger:
    • Then - Actions
      • Player - Make Zerg Egg (zergling) Available for training/construction by (Owner of (Dying unit))
      • Player - Make Zerg Egg (zergling colony) Available for training/construction by (Owner of (Dying unit))
      • Player - Make Zerg Egg (zergling Hive) Available for training/construction by (Owner of (Dying unit))
      • Set temphatcherygroup = (Units owned by (Owner of (Dying unit)) of type Hatchery (zerg))
      • Unit Group - Pick every unit in temphatcherygroup and do (Actions)
      • Loop - Actions
      • Neutral Building - Remove Zerg Egg (zergling) from (Picked unit)
      • Custom script: call DestroyGroup (udg_temphatcherygroup)
      • Set tempcolonygroup = (Units owned by (Owner of (Dying unit)) of type Colony (zerg))
      • Unit Group - Pick every unit in tempcolonygroup and do (Actions)
      • Loop - Actions
      • Neutral Building - Remove Zerg Egg (zergling) from (Picked unit)
      • Custom script: call DestroyGroup (udg_tempcolonygroup)
      • Set temphivegroup = (Units owned by (Owner of (Dying unit)) of type Hive (zerg))
      • Unit Group - Pick every unit in temphivegroup and do (Actions)
      • Loop - Actions
      • Neutral Building - Remove Zerg Egg (zergling) from (Picked unit)
      • Custom script: call DestroyGroup (udg_temphivegroup)


    every thing seems to be working perfectly i just wanted to make sure i have gotten rid of all the leaks.
    btw
    the two triggers above are repeated 3 more times (each) to make 8 triggers in all 2 for adding and removing zergling egges, hydrolisk eggs, scanthid, and ultralisk eggs.

    if you think this may cause a problem plz let me know.
     
  9. Accname

    Accname 2D-Graphics enthusiast

    Ratings:
    +1,549 / 4 / -4
    Your conditions can leak too. You have only shown us the actions. In your previous trigger you also had leaks in your conditions.
    By the way: you can use the same variable for each of the groups, you dont need to have 3 different temporary group variables for cleaning up leaks unless you are actually going to use all 3 of them simultaneously as in 3 nested loops.
     
  10. sunshinex3

    sunshinex3 You can change this now in User CP.

    Ratings:
    +4 / 0 / -0
    oh... Jeeez, i didn't even know conditions could leak how am i even supposed to fix those? with variables as well?

    Trigger:
    • Conditions
      • And - All (Conditions) are true
      • Conditions
      • ((Unit-type of (Dying unit)) Equal to Spawning Pool (zerg)) or (((Unit-type of (Dying unit)) Equal to Den (Zerg)) or (((Unit-type of (Dying unit)) Equal to Nest (Zerg)) or ((Unit-type of (Dying unit)) Equal to Lair (Zerg))))


    and one of these for each; if all conditions are true (action).(4 in all)
    Trigger:
    • And - All (Conditions) are true
      • Conditions
      • (Unit-type of (Dying unit)) Equal to Spawning Pool (zerg)
      • (Number of living Spawning Pool (zerg) units owned by (Owner of (Dying unit))) Equal to 0
     
    Last edited: Nov 24, 2016
  11. Accname

    Accname 2D-Graphics enthusiast

    Ratings:
    +1,549 / 4 / -4
    Your condition will only leak if unit groups or locations are created inside.
    If they do you move them inside of your trigger actions and leave the triggers condition block empty.

    If you dont use any unit groups or locations inside your condition then you can leave it as it is.
    (player groups, special effects, regions and some other data types leak too, but unit groups and locations are the most common)
     

Share This Page