HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

A way to pick 1 unit from unit group.

04-06-2007, 03:04 AM#1
Melshisedek1
I made this leaderboard that is influenced by the fact that a human computer controlled unit is witness to a crime (killing) then you loose 1 point.

I have made this trigger where 1 random unit is picked from unit group in range 2400 of dying unit.

Then I check if the pick unit is human etc then substract 1 from leaderboard.

The problem comes from that: Even if there are like 5 unit really witness, it only picks a random unit, and sometimes the randomisation picks no one. So the leaderboard does not change.

If I change the trigger to pick units in range of.... etc. Then it counts all pick units and influences the leaderboard like crazy, and if there are five witness you loose 5 points. I want it to loose only 1 point.

Can you show me how to do this so it works.

Here is a text copy of the trigger.

Trigger:
PolicePatrol Copy
Events
Unit - A unit Dies
Conditions
((Owner of (Dying unit)) Equal to Neutral Passive) and ((Race of (Dying unit)) Equal to Human)
Actions
Set L43 = (Position of (Dying unit))
Set UnitGroup16 = (Random 1 units from (Units within 2400.00 of L43 matching (((Owner of (Matching unit)) controller) Not equal to User)))
Unit Group - Pick every unit in UnitGroup16 and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Race of (Picked unit)) Equal to Human
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Race of (Killing unit)) Equal to Human
Then - Actions
Game - Display to (All players matching (((Owner of (Killing unit)) controller) Equal to User)) the text: |cffFF0080Criminal ...
Set Infraction = (Infraction - 1)
Leaderboard - Change the value for (Owner of (Killing unit)) in LawAndOrder to (10 + Infraction)
Set LeaderScore3 = (Real((10 + Infraction)))
ugh formating not preserved, you'll want to copy it again and put it in the trigger tags
04-06-2007, 08:03 AM#2
blu_da_noob
Use [trigger] tags in future for GUI stuff. I'll put them in for you now.

Basically you'll want to change the condition on your group thing to something like this:
Trigger:
Set UnitGroup16 = (Random 1 units from (Units within 2400.00 of L43 matching (((Owner of (Matching unit)) controller) Not equal to User) And ((Race of (Matching unit)) Equal to Human)))
Roughly like that. Basically do your condition checks in the group loop instead of after you have picked the unit.
04-06-2007, 10:21 PM#3
Melshisedek1
I will try it and let you know how it worked. Thks
04-12-2007, 07:01 PM#4
Melshisedek1
Problem solved. First the condition was counting the dying unit has witness. Then I used bolean=false, bolean= true if condition where met to change leaderboard.