HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Hero Selection - DotA style.

04-21-2008, 04:32 AM#1
drowelf
Hello all, it's been a long time since I've posted anything here and I'm only recently getting back into the swing of things. I've been trying to develop my own sort of hero battle map (as seems to be a popular thing these days for any noob like myself). I've had some ideas flowing but I find one hindering problem, hero selection.

Now I've found a few systems laying around that allow me to pick heros, most having a hero sitting on the map that you either click or bring a wisp to, or something along those lines. But, as the title of the thread suggests, I'm looking for a more DotA-style system.

After many failed combinations of triggers and some time spent looking into trigger discussions I realized that the "make unavailable for construction/training" trigger fails to work with shops. Another realization was that shops were the only way to offer everyone the same hero pool (unless I wanted to make barracks for every person, which would get crowded if I had more than 12 heros).

So now, the request comes out: Can someone show me a way to get a DotA style hero selection where there are shops that people buy heroes from that only allow one of each hero to be sold?

Thanks in advance,
Mike.
04-21-2008, 05:23 AM#2
rulerofiron99
Set each Hero's Shop - Replenish Interval to 999999 (shift+enter the field)

That way the hero becomes purchasable again in about 10 hours - and I doubt any game will last that long.

DotA arrays them all in complex and laggy trigger functions, but my simple fix will be quite adequate for the job. The only problem with it is that it gives the map a feeling of "unpolishedness" - but that's okay.

Please note: many mapmakers, especially at this site, do not condone DotA, so when asking help, just say you want to make an 'aos-style' map.
04-21-2008, 06:34 AM#3
DioD
dota deny unit for players if it selected, easy and fast way.
04-21-2008, 06:39 AM#4
TheDamien
I assume you are using GUI.

Trigger:
Trigger
Collapse Events
Unit - A unit Sells a unit
Conditions
Collapse Actions
Collapse Player Group - Pick every player in (All players) and do (Actions)
Collapse Loop - Actions
Player - Make (Unit-type of (Sold unit)) Unavailable for training/construction by (Picked player)

This works on taverns, I tested just then.
04-21-2008, 02:03 PM#5
drowelf
Quote:
Originally Posted by rulerofiron99
Set each Hero's Shop - Replenish Interval to 999999 (shift+enter the field)

That way the hero becomes purchasable again in about 10 hours - and I doubt any game will last that long.

DotA arrays them all in complex and laggy trigger functions, but my simple fix will be quite adequate for the job. The only problem with it is that it gives the map a feeling of "unpolishedness" - but that's okay.

Please note: many mapmakers, especially at this site, do not condone DotA, so when asking help, just say you want to make an 'aos-style' map.
I tried that, but it changed my number to 3600. I'll try doing shift+enter like you said.

Also, I'll remember to not use "dota" in my threads anymore

Quote:
Originally Posted by DioD
dota deny unit for players if it selected, easy and fast way.
I'm sorry, I don't seem to understand what you said there >.<

Quote:
Originally Posted by TheDamien
I assume you are using GUI.

Trigger:
Trigger
Collapse Events
Unit - A unit Sells a unit
Conditions
Collapse Actions
Collapse Player Group - Pick every player in (All players) and do (Actions)
Collapse Loop - Actions
Player - Make (Unit-type of (Sold unit)) Unavailable for training/construction by (Picked player)

This works on taverns, I tested just then.
Odd... I tried that code, someone suggested it. Maybe it was something with my conditions, I'll give it a shot though.


Thanks for all of your suggestions!

EDIT:
@TheDamien: I tried that trigger again, and it didn't work for me. It's odd you should get it to work O.o Could it be something different in our editors? I'm using the basic one, if you're not then perhaps that could be the problem.

@RuleofIron: I tried what you suggested, and I got it to work. Thanks. It'll do well enough. The actual "polishness" of the map isn't really my concern. Hell: to limit people one hero I may end up making a requirement of an altar named "You may only choose one hero." >.<


All input is appreciated, thanks again all!
04-21-2008, 06:35 PM#6
TheDamien
Quote:
Originally Posted by drowelf
EDIT:
@TheDamien: I tried that trigger again, and it didn't work for me. It's odd you should get it to work O.o Could it be something different in our editors? I'm using the basic one, if you're not then perhaps that could be the problem.

I used the default WE.

That trigger works. I think you must have destroyed the (All players) group somewhere along the line under the assumption that it was leaking (it is not a leak). That is the only thing I can think of.

See if it works for you in this map:

DisableSellTest.w3x
Attached Files
File type: w3xDisableSellTest.w3x (16.4 KB)
04-21-2008, 06:58 PM#7
Salbrismind
Quote:
Originally Posted by rulerofiron99
Please note: many mapmakers, especially at this site, do not condone DotA, so when asking help, just say you want to make an 'aos-style' map.

I Lol'd only because its true and so funny. One person sees "dota" and a million flags go up all saying NOOB!
04-21-2008, 10:01 PM#8
Anitarf
You might want to check out this tutorial.
04-22-2008, 05:17 AM#9
drowelf
@TheDamien: Wow dude.. what the hell O.o Works fine in your map, yet in mine, it doesn't want to function properly at all. What confuses me the most is I made this map out of a basic map without deleting anything. Infact, I made a new hero to be the "nearby patron" for the tavern, a new tavern to function as said tavern, and a new hero to be purchasable. I figured if i went through these lengths it'd be the safest, yet you've made a map with the only unit modification being that there is no stock delay time. The only thing I can think of is that I copied the trigger information from another map that someone else gave me. It was supposed to be, basically, what you showed me right here. Maybe that map had something wrong with the group (it being destroyed as you suggested).

Thanks! I appreciate you clearing this up for me. I had read in some tutorial recently that, supposedly, the unavailable trigger function didn't work with shops, so I assumed it was the problem >.< Your aidence was much appreciated

@Salbrismind: Yeah, I was kinda fearing that. It's a very touchy subject to bring up, any sign that you might want to remake or use aspects from it, your tagged as a noob who can't come up with something original... or who just sucks at DotA and wants to make one he can win at. (Although I do suck at DotA, this was not my intention, haha)

@Anitarf: I took a look, but it seems as though he suggests the same thing I've been trying here. Though, that did remind me about the LoS blockers I wanted to use here, so thanks.

Thanks to all who have helped me with this issue!

EDIT: Oh, I'm not sure if any of you have noticed, but I have given +rep to all who have helped me out with this! Thanks ^_^
04-22-2008, 07:06 AM#10
TheDamien
Try using this and then see what it prints:

Trigger:
Disable Unit
Collapse Events
Unit - A unit Sells a unit
Conditions
Collapse Actions
Game - Display to (All players) for 60.00 seconds the text: Running...
Collapse Player Group - Pick every player in (All players) and do (Actions)
Collapse Loop - Actions
Game - Display to (All players) for 60.00 seconds the text: Looping...
Player - Make (Unit-type of (Sold unit)) Unavailable for training/construction by (Picked player)

When a unit buys a hero from a tavern, it should print "Running..." once, then it should print "Looping..." once for each player. If it prints "Running..." but not "Looping..." then chances are very high that the (All players) group has been destroyed somewhere.

Check the triggers in your map. If any of them are setting a variable to (All players), then it is probably being destroyed later.
04-22-2008, 05:05 PM#11
Valdez
Ok.. wait for the magic fingers... here they come.. zomg.. I can see it...

BAM!!

Trigger:
Hero Selection
Collapse Events
Unit - A unit Sells an item (from shop)
Collapse Conditions
Collapse Or - Any (Conditions) are true
Collapse Conditions
Collapse And - All (Conditions) are true
Collapse Conditions
(Owner of (Buying unit)) Equal to Player 1 (Red)
PlayerHasHero[1] Equal to 0
Collapse And - All (Conditions) are true
Collapse Conditions
(Owner of (Buying unit)) Equal to Player 2 (Blue)
PlayerHasHero[2] Equal to 0
Collapse And - All (Conditions) are true
Collapse Conditions
(Owner of (Buying unit)) Equal to Player 3 (Teal)
PlayerHasHero[3] Equal to 0
Collapse And - All (Conditions) are true
Collapse Conditions
(Owner of (Buying unit)) Equal to Player 4 (Purple)
PlayerHasHero[4] Equal to 0
Collapse And - All (Conditions) are true
Collapse Conditions
(Owner of (Buying unit)) Equal to Player 5 (Yellow)
PlayerHasHero[5] Equal to 0
Collapse And - All (Conditions) are true
Collapse Conditions
(Owner of (Buying unit)) Equal to Player 6 (Orange)
PlayerHasHero[6] Equal to 0
Collapse And - All (Conditions) are true
Collapse Conditions
(Owner of (Buying unit)) Equal to Player 7 (Green)
PlayerHasHero[7] Equal to 0
Collapse And - All (Conditions) are true
Collapse Conditions
(Owner of (Buying unit)) Equal to Player 8 (Pink)
PlayerHasHero[8] Equal to 0
Collapse Actions
Unit - Remove (Buying unit) from the game
Unit - Move (Sold unit) instantly to (Center of Hero Start <gen>)
Neutral Building - Remove (Unit-type of (Sold unit)) from all marketplaces
Camera - Pan camera for (Owner of (Buying unit)) to (Center of Hero Start <gen>) over 0.50 seconds
Set PlayerHasHero[(Player number of (Owner of (Buying unit)))] = 1

Just need an interger array = to the number of players and a rect where you want the heros to start at.. And if you want to have them repick just reset the "PlayerHasHero" variable to 0.. Sadly you won't be able to return their Hero choice.

I think that should cover ya :P
04-22-2008, 09:37 PM#12
Anitarf
Valdez, why didn't you just make your condition like this:
Trigger:
Conditions
PlayerHasHero[(Player number of (Owner of (Buying unit)))] equal to 0
04-22-2008, 09:57 PM#13
Valdez
Not really shure..but heh that would work too..