Staredit Network > Forums > Modding Assistance > Topic: Unit Building Restrictions
Unit Building Restrictions
Feb 2 2017, 9:58 pm
By: tehkain  

Feb 2 2017, 9:58 pm tehkain Post #1



Hello, all. In a mod on which I am working, I wanted to add some hero units of which you can only build one.

Unfortunately, FireGraft's dat requirements do not have a 'Not' operand, and I cannot really think of a way to do it in a reasonable 'hacky' way.
Is it necessary to mess with it using plugins? Any ideas?



Master of something, master of not all.
-George H.W. Washington

"Ah, what beautiful bunker defenses I have here."
A wild 20 hydralisks appeared!

Feb 15 2017, 8:07 pm DirectShift Post #2



Hey, I thought of a partial solution for your problem if you haven't solved it yet.

Make the heroes belong to another race. So for instance, you play as a terran and then your available heroes are only 2: one zerg and one protoss, but make them occupy 200 of unit supply.

Yes, you can only make two...

Ugh, sorry, not a great solution now that I think about it.

However, have you managed to solve it? I will keep thinking about it.



None.

Feb 15 2017, 8:13 pm Corbo Post #3

ALL PRAISE YOUR SUPREME LORD CORBO

Oh, there's just so many ways.
And I could probably write up a quick plug in for you to use but before answering I want to know a few things:

Is your unit creation instant? If it isn't do you want to prevent them from starting to being built or you just do not want 2 of that unit in the map at the same time?

The first one (not even being allowed to click the button) might be harder but I could see a solution if the unit required certain upgrade and then it's just a matter of unresearching said upgrade so you cannot build the unit anymore. The supply thing is also a nice solution but I assume you're using all three races.

The latter option, it's very easy, you can just use triggers to remove the last created duplicate unit and refund the player the minerals, or a solution via plug in would be fairly easy too.




Mar 26 2017, 5:41 am tehkain Post #4



This is super late but...
Quote from DirectShift
Hey, I thought of a partial solution for your problem if you haven't solved it yet.

Make the heroes belong to another race. So for instance, you play as a terran and then your available heroes are only 2: one zerg and one protoss, but make them occupy 200 of unit supply.

Yes, you can only make two...

Ugh, sorry, not a great solution now that I think about it.

However, have you managed to solve it? I will keep thinking about it.
Causes reeeeeeal big problems when you get Dark Archons involved. Also, no, and I'm not really sure it IS possible at all.

Quote from Corbo
Oh, there's just so many ways.
And I could probably write up a quick plug in for you to use but before answering I want to know a few things:

Is your unit creation instant? If it isn't do you want to prevent them from starting to being built or you just do not want 2 of that unit in the map at the same time?

The first one (not even being allowed to click the button) might be harder but I could see a solution if the unit required certain upgrade and then it's just a matter of unresearching said upgrade so you cannot build the unit anymore. The supply thing is also a nice solution but I assume you're using all three races.

The latter option, it's very easy, you can just use triggers to remove the last created duplicate unit and refund the player the minerals, or a solution via plug in would be fairly easy too.
The idea was that only one unit could possibly be made at any time. It'd be sort of like the merc compound in that the units would instantly be built. Triggers wouldn't work in any case, because it's intended for a mod and not a single map (or small set of maps). The upgrade thing could be possible, but I haven't yet delved into plugins and I'm not entirely sure of their capabilities.



Master of something, master of not all.
-George H.W. Washington

"Ah, what beautiful bunker defenses I have here."
A wild 20 hydralisks appeared!

Mar 27 2017, 12:49 am Corbo Post #5

ALL PRAISE YOUR SUPREME LORD CORBO

Quote from tehkain
The idea was that only one unit could possibly be made at any time. It'd be sort of like the merc compound in that the units would instantly be built. Triggers wouldn't work in any case, because it's intended for a mod and not a single map (or small set of maps). The upgrade thing could be possible, but I haven't yet delved into plugins and I'm not entirely sure of their capabilities.

You can use triggers, that is how map modes are done (melee, ctf, etc) what you cannot use is locations but even so there is a trigger enabler and a location unlocker for mods. They were some old plug ins but I think they are in our DB.




Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[06:25 pm]
m.0.n.3.y -- Here's another question. I'm using switch randomization for powerups. There are 9 powerups, and I only want any of the powerups to appear only about 30% of the time. So I was just going to use 5 switches for a total of 32 options and have the other 23 results restart the randomization process. Is there a better way to do this?
[06:04 pm]
m.0.n.3.y -- NudeRaider
NudeRaider shouted: m.0.n.3.y Pro and Demon already gave correct answers, but let me add a pretty elegant way: Have the detection trigger owned by whoever is convenient for you. A single computer player, a force, all players - it doesn't matter. Now detect for the arbiter in conditions - also doesn't really matter how. In actions just set a dc to 1 for all players or the force that should have the text displayed. It will set the dc for each player to 1 individually. Because of this you can make a 2nd trigger that checks for the dc for current player and remove the dc for current player afterwards.
Ok that makes perfect sense NudeRaider
NudeRaider shouted: This method also has a bonus use: If you detect the arbiter in conditions for current player (set trigger owned accordingly!) then you can do the following: Add 1 to dc for current player AND add 1 to dc for all players. And in your 2nd trigger you can distinguish between players that just are informed and the player that actually had it, because their dc will be 2 instead of 1. So you can give them an additional reward or something dynamically.
Wow that's awesome! I'll definitely be doing this. Thanks for the tip, that's really cool
[05:29 pm]
NudeRaider -- This method also has a bonus use: If you detect the arbiter in conditions for current player (set trigger owned accordingly!) then you can do the following: Add 1 to dc for current player AND add 1 to dc for all players. And in your 2nd trigger you can distinguish between players that just are informed and the player that actually had it, because their dc will be 2 instead of 1. So you can give them an additional reward or something dynamically.
[05:27 pm]
NudeRaider -- m.0.n.3.y
m.0.n.3.y shouted: NEW QUESTION: How is it possible to show text to all players when something occurs? EX: Player 1 builds an Arbiter. Trigger says, When player 1 builds an Arbiter, do something, then remove the Arbiter. Now, I'd like text to show for all other players when P1 builds an Arbiter that says "P1 built an arbiter!". But how is this possible when the the original trigger that detects if P1 built an Arbiter then removes the Arbiter in it's actions? Like, the Arbiter is detected as built, then Action occurs for P1, then Arbiter is removed. So how can you detect if the Arbiter is built to show text to the other plays saying "P1 built an Arbiter" if the other trigger quickly removes the Arbiter? Does that make sense?
Pro and Demon already gave correct answers, but let me add a pretty elegant way: Have the detection trigger owned by whoever is convenient for you. A single computer player, a force, all players - it doesn't matter. Now detect for the arbiter in conditions - also doesn't really matter how. In actions just set a dc to 1 for all players or the force that should have the text displayed. It will set the dc for each player to 1 individually. Because of this you can make a 2nd trigger that checks for the dc for current player and remove the dc for current player afterwards.
[05:22 pm]
NudeRaider -- that's why the All Players thing is neat: When one player runs a wait, their copy of hypers will actually be blocked. But the hyper effect will not be disrupted because the hypers of all the other players are still running.
[05:21 pm]
NudeRaider -- *running at the same time for the same player.
[05:20 pm]
NudeRaider -- m.0.n.3.y
m.0.n.3.y shouted: Mini Moose 2707 Shit. Ok what are the exact circumstances where using wait triggers causes wait blocks and messes things up? EX: If player 8 is a computer and has hyper triggers at the bottom of his list, can I use a few of triggers on each human player 1-6 with a few waits each lasting 50 - 1000ms? I've read the articles in SEN Wiki but still not super clear on it :/
simple: 2 waits running at the same time. Hyper triggers constantly block each other, but they have no other purpose than to force another trigger loop, and stay in that "blocking each other" state as long as possible (=NEO)
[05:17 pm]
NudeRaider -- Dem0n
Dem0n shouted: It's recommended to never use waits if you have hyper triggers.
yes and no. If you have to ask: yes. If you know what you're doing, you can use them in a non-disruptive manner.
[05:15 pm]
NudeRaider -- m.0.n.3.y
m.0.n.3.y shouted: ALSO: @NudeRaider for your "other setup" you mean give the hypers to the "All Players" player checkbox, not to each player individually, right?
That's equivalent. At the start of a game sc parses triggers and creates copies of triggers owned by player groups (forces and all players) to each player that is part of that group. During runtime there's only individual trigger owners.
[04:04 pm]
m.0.n.3.y -- Dem0n
Dem0n shouted: That won't work. And it's one extra trigger with 2 actions. Hardly extra work.
You're right. Thank you!
Please log in to shout.


Members Online: Roy, m.0.n.3.y, Wing Zero