- 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
And here is the map
View attachment AdvancedworkerSystem.w3x
-
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
-
Loop - Actions
- 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
-
Loop - Actions
- 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
-
Loop - Actions
- 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
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
-
If - Conditions
-
Loop - 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
-
Loop - Actions
- 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
-
Loop - Actions
- 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
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
-
If - Conditions
-
Loop - 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
-
Loop - Actions
- 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
-
If - Conditions
- 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)
-
If - Conditions
-
If - Conditions
-
Loop - Actions
-
Events
-
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
-
Events
-
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
-
Events
-
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
-
Events
-
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
-
Events
-
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...
-
If - Conditions
- Custom script: call DestroyGroup(udg_Group)
-
Events
View attachment AdvancedworkerSystem.w3x