Try this:
Create a variable called RedsGold (or whatever you prefer), Variable-type: Integer, set the initial value to 0 (make one of these for each player).
Then make this trigger
-
GoldBuilding is Built
-
Events
-
Unit - A unit owned by Player 1 (Red) Finishes construction
-
Conditions
-
(Unit-type of (Triggering unit)) Equal to GoldBuilding
-
Actions
-
Set RedsGold = (RedsGold + 1)
Where GoldBuilding is the building that produces the gold
Then make another:
-
Periodic Gold
-
Events
-
Time - Every x seconds of game time
-
Actions
-
Player - Add (RedsGold x 10) to Player 1 (Red) Current gold
-
Player - Add (BluesGold x 10) to Player 2 (Blue) Current gold
-
Player - Add (TealsGold x 10) to Player 3 (Teal) Current gold
-
etc.
Change 10 to the amount of gold you want the building to periodically give, per building, and x to how often you want the gold to be given.
This is assuming that the buildings wont die, or you want the income to be permanent. If you want to make them destroyable, and the income to stop when they are destroyed, also make this:
-
GoldBuilding is Destroyed
-
Events
-
Unit - A unit owned by Player 1 (Red) Dies
-
Conditions
-
(Unit-type of (Triggering unit)) Equal to GoldBuilding
-
Actions
-
Set RedsGold = (RedsGold - 1)
You will have to make multiple copies of the first and third trigger, one for each player, as well as one variable for each player.
I have a funny feeling that there is a more efficient way to do this, but this is the only way I can think of being able to do it. I'll try and think of a better way, or maybe someone else can lend their thoughts.