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

Trouble with system

Status
Not open for further replies.
Level 7
Joined
Apr 1, 2010
Messages
289
Hi I am working on making a system, that for advanced workers, ie something for city building games where you have jobs like farming, smithing, etc i have the movement triggers done, but the unit isn't moving, I have no clue clue why so any help would be appreciated
  • Pickup
    • Events
    • Conditions
    • Actions
      • Custom script: local unit udg_LocalUnit = udg_OrderedUnit
      • Custom script: local location udg_LocalPoint = udg_Pickup1
      • Custom script: local handle udg_LocalHandle = udg_Handle
      • Hashtable - Save True as (Key busy) of (Key LocalHandle) in (Last created hashtable)
      • Unit - Order LocalUnit to Move To LocalPoint
      • Wait until ((Distance between (Position of LocalUnit) and LocalPoint) Less than or equal to 30.00), checking every 1.00 seconds
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Hero - Give (Random item in (Region centered at LocalPoint with size (150.00, 150.00)) matching ((Item level of (Matching item)) Equal to 12)) to LocalUnit
      • Hashtable - Save False as (Key busy) of (Key LocalHandle) in (Last created hashtable)
      • Custom script: call RemoveLocation(udg_LocalPoint)
  • Dropoff
    • Events
    • Conditions
    • Actions
      • Custom script: local unit udg_LocalUnit = udg_OrderedUnit
      • Custom script: local location udg_LocalPoint = udg_DropOff1
      • Custom script: local handle udg_LocalHandle = udg_Handle
      • Hashtable - Save True as (Key busy) of (Key LocalHandle) in WorkersWorking
      • Unit - Order LocalUnit to Move To LocalPoint
      • Wait until ((Distance between (Position of LocalUnit) and LocalPoint) Less than or equal to 30.00), checking every 1.00 seconds
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Hero - Drop the item from slot (Integer A) of LocalUnit
      • Hashtable - Save False as (Key busy) of (Key LocalHandle) in WorkersWorking
      • Custom script: call RemoveLocation(udg_LocalPoint)
  • Forge
    • Events
    • Conditions
    • Actions
      • Custom script: local unit udg_LocalUnit = udg_OrderedUnit
      • Custom script: local unit udg_LocalUnit2 = udg_TargetUnit
      • Custom script: local unit udg_LocalUnit3
      • Custom script: local location udg_LocalPoint
      • Custom script: local handle udg_LocalHandle = udg_Handle
      • Hashtable - Save True as (Key busy) of (Key LocalHandle) in WorkersWorking
      • Set LocalPoint = (Position of LocalUnit2)
      • Unit - Order LocalUnit to Move To LocalPoint
      • Wait until ((Distance between (Position of LocalUnit) and LocalPoint) Less than or equal to 30.00), checking every 1.00 seconds
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Hero - Drop the item from slot (Integer A) of LocalUnit
          • Hero - Give (Random item in (Region centered at LocalPoint with size (150.00, 150.00)) matching ((Item level of (Matching item)) Equal to 12)) to LocalUnit2
      • Unit - Create 1 Timer for (Owner of LocalUnit) at LocalPoint facing Default building facing degrees
      • Set LocalUnit3 = (Last created unit)
      • Unit - Add a 4.99 second Generic expiration timer to LocalUnit3
      • Wait until ((LocalUnit3 is dead) Equal to True), checking every 5.00 seconds
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Set Item = (Item carried by LocalUnit2 in slot (Integer A))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Item level of Item) Equal to 12
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Item-type of Item) Equal to Iron
                • Then - Actions
                  • Hero - Create Forged Iron and give it to LocalUnit2
                • Else - Actions
            • Else - Actions
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Hero - Drop the item from slot (Integer A) of LocalUnit2
          • Hero - Give (Random item in (Region centered at LocalPoint with size (150.00, 150.00)) matching ((Item level of (Matching item)) Equal to 13)) to LocalUnit
      • Set LocalUnit = No unit
      • Set LocalUnit2 = No unit
      • Set LocalUnit3 = No unit
      • Hashtable - Save False as (Key busy) of (Key LocalHandle) in (Last created hashtable)
      • Custom script: call RemoveLocation(udg_LocalPoint)
  • Anvil
    • Events
    • Conditions
    • Actions
      • Custom script: local unit udg_LocalUnit = udg_OrderedUnit
      • Custom script: local unit udg_LocalUnit2 = udg_TargetUnit2
      • Custom script: local unit udg_LocalUnit3
      • Custom script: local location udg_LocalPoint
      • Custom script: local handle udg_LocalHandle = udg_Handle
      • Hashtable - Save True as (Key Is busy) of (Key LocalHandle) in (Last created hashtable)
      • Set LocalPoint = (Position of LocalUnit2)
      • Unit - Order LocalUnit to Move To LocalPoint
      • Wait until ((Distance between (Position of LocalUnit) and LocalPoint) Less than or equal to 30.00), checking every 1.00 seconds
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Hero - Drop the item from slot (Integer A) of LocalUnit
          • Hero - Give (Random item in (Region centered at LocalPoint with size (150.00, 150.00)) matching ((Item level of (Matching item)) Equal to 12)) to LocalUnit2
      • Unit - Create 1 Timer for (Owner of LocalUnit) at LocalPoint facing Default building facing degrees
      • Set LocalUnit3 = (Last created unit)
      • Unit - Add a 4.99 second Generic expiration timer to LocalUnit3
      • Wait until ((LocalUnit3 is dead) Equal to True), checking every 5.00 seconds
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Set Item = (Item carried by LocalUnit2 in slot (Integer A))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Item level of Item) Equal to 12
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Item-type of Item) Equal to Forged Iron
                • Then - Actions
                  • Hero - Create Iron Sword and give it to LocalUnit2
                • Else - Actions
            • Else - Actions
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Hero - Drop the item from slot (Integer A) of LocalUnit2
          • Hero - Give (Random item in (Region centered at LocalPoint with size (150.00, 150.00)) matching ((Item level of (Matching item)) Equal to 13)) to LocalUnit
      • Set LocalUnit = No unit
      • Set LocalUnit2 = No unit
      • Set LocalUnit3 = No unit
      • Hashtable - Save False as (Key Is busy) of (Key LocalHandle) in (Last created hashtable)
      • Custom script: call RemoveLocation(udg_LocalPoint)
  • WorkingLoop
    • Events
      • Time - Every 2.50 seconds of game time
    • Conditions
    • Actions
      • Set Workers = (Units in (Playable map area) matching ((Unit-type of (Matching unit)) Equal to Citizen))
      • Unit Group - Pick every unit in Workers and do (Actions)
        • Loop - Actions
          • Set HasJob = (Load (Key HasJob) of (Key (Picked unit)) from WorkersWorking)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HasJob Equal to False
            • Then - Actions
              • Game - Display to (All players) the text: ! worker has starte...
            • Else - Actions
              • Set Unitready = (Load (Key busy) of (Key (Picked unit)) from WorkersWorking)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Unitready Equal to True
                • Then - Actions
                • Else - Actions
                  • Game - Display to (All players) the text: a worker has starte...
                  • Set WorkersJob = (Load (Key Job) of (Key (Picked unit)) from WorkersWorking)
                  • Set ResetAction = (Load (Key Steps) of (Key (Picked unit)) from WorkersWorking)
                  • Set TargetUnit = (Load (Key target) of (Key (Picked unit)) in WorkersWorking)
                  • Set Handle = (Picked unit)
                  • Set TargetUnit2 = (Load (Key target2) of (Key (Picked unit)) in WorkersWorking)
                  • Set Pickup1 = (Load (Key pickup1) of (Key (Picked unit)) in WorkersWorking)
                  • Set DropOff1 = (Load (Key dropoff1) of (Key (Picked unit)) in WorkersWorking)
                  • Trigger - Run (Load WorkersJob of (Key Handle) in WorkersWorking) (ignoring conditions)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • WorkersJob Equal to ResetAction
                    • Then - Actions
                      • Hashtable - Save 1 as (Key Job) of (Key (Triggering unit)) in WorkersWorking
                    • Else - Actions
                  • Set WorkersJob = (WorkersJob + 1)
                  • Hashtable - Save WorkersJob as (Key Job) of (Key (Picked unit)) in WorkersWorking
                  • Custom script: call RemoveLocation( udg_Pickup1)
                  • Custom script: call RemoveLocation( udg_DropOff1)
  • Pickup1
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Pickup point
    • Actions
      • Set Pickup1 = (Target point of ability being cast)
      • Hashtable - Save Handle OfPickup1 as (Key pickup1) of (Key (Triggering unit)) in WorkersWorking
  • Dropoff1
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to DropOff
    • Actions
      • Set DropOff1 = (Target point of ability being cast)
      • Hashtable - Save Handle OfDropOff1 as (Key dropoff1) of (Key (Triggering unit)) in WorkersWorking
  • SetForge
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Set Forge
    • Actions
      • Hashtable - Save Handle Of(Target unit of ability being cast) as (Key target) of (Key (Triggering unit)) in WorkersWorking
  • SetAnvil
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Set Anvil
    • Actions
      • Hashtable - Save Handle Of(Target unit of ability being cast) as (Key target2) of (Key (Triggering unit)) in WorkersWorking
  • JobSmith
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Blacksmith
    • Actions
      • Set Unitready = True
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Unitready Equal to True
        • Then - Actions
          • Hashtable - Save True as (Key HasJob) of (Key (Triggering unit)) in WorkersWorking
          • Hashtable - Save 4 as (Key Steps) of (Key (Triggering unit)) in WorkersWorking
          • Hashtable - Save 1 as (Key Job) of (Key (Triggering unit)) in WorkersWorking
          • Hashtable - Save False as (Key busy) of (Key (Triggering unit)) in WorkersWorking
          • Hashtable - Save Handle OfPickup <gen> as 1 of (Key (Triggering unit)) in WorkersWorking
          • Hashtable - Save Handle OfForge <gen> as 2 of (Key (Triggering unit)) in WorkersWorking
          • Hashtable - Save Handle OfAnvil <gen> as 3 of (Key (Triggering unit)) in WorkersWorking
          • Hashtable - Save Handle OfDropoff <gen> as 4 of (Key (Triggering unit)) in WorkersWorking
          • Game - Display to (All players) the text: This unit has taken...
        • Else - Actions
          • Game - Display to (All players) the text: You need to set all...
      • Custom script: call DestroyGroup(udg_Group)
And here is the map
View attachment AdvancedworkerSystem.w3x
 
Level 7
Joined
Apr 1, 2010
Messages
289
Where are your events for the four first triggers?
they are run by the loop trigger by the command
  • Trigger - Run (Load WorkersJob of (Key Handle) in WorkersWorking) (ignoring conditions)
or are supposed to be anyway

You're also leaking locations, unit group, and region.
What locations?, i'll get rid of the region and unit group leaks. thanks:ogre_haosis:

but what i need to know is why it doesn't make the worker move.

edit: oh, the wait until position of unit is distance from point leak?
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
In WorkingLoop trigger, in the last else:

  • Set OrderedUnit = (Picked unit)
  • Trigger - Run (Load WorkersJob of (Key (Picked unit)) in WorkersWorking) (ignoring conditions)
And remove these since you need the locations in pickup and dropoff:
  • Custom script: call RemoveLocation( udg_Pickup1)
  • Custom script: call RemoveLocation( udg_DropOff1)
You leak the Workers group.
 
Status
Not open for further replies.
Top