This is like THE issue with my map, the only thing that really discourages me from working on it. I would hail anyone who could help me like a god. Here are two pics, look at them carefully:
Basically I need a fullproof anti-walling solution for my Pick Your Defense remake. There is some info on the pics above below, read it carefully:
X's are unit spawns
T's are transporters that teleport the units that move into them instantly to the other side.
Each red line represents the path the units will take from their spawn point to their end point, and they work both ways. The central lanes are shorter because they effectively skip most of the map by teleporting. They all follow a linear path and should never take the long way around the terrain because someone blocked.
If you walled off on one end (use the cyan line as an example) the monsters would have to follow the yellow or purple line, depending on where they were sent to, which is what I'm trying to prevent. In order to activate my anti walling trigger, the player would need to make the cyan wall AND the blue wall.
If you block one side of your building space off, the anti-blocking trigger wont fire because there is still a viable path (the long way around the platform) available. It will only fire if both sides are blocked off. I've tried multiple things, skipping the antiblocking trigger all together and just having the units attack your buildings and continue along their path afterwards (to discourage it) and while that works they will still take the long way around instead if only half their path is blocked. One wave will continue as they should (if only one side is blocked off) and the other wave will follow the first waves lead, because their path is blocked.
I know it's confusing, so maybe if you test my map out you will see the problem and maybe help me come up with a fix. Download the attached map and play it a few times. When in-game just block off one side, and then watch what happens. After, restart and do it with both sides. Currently they will attack both sides which is fine, but if only one side is blocked the units that should be following that path do not even try to go over there. They already know that it's blocked and automatically attempt to take the long way around. Currently if I am to keep the current system where they attack you I'm going to need to disable the smart pathing they have so they only follow the linear path they're given and not deviate from it.
So that's my current question and if thats not possible any other viable way of doing it is fine, but overall I need help with this shit...
Oh btw, the terrain is a little bit different in the pictures as I took them awhile back, but it's the same concept just different textures now + more awesome looks.
Noob here, just an idea. Could you make strips down one (or both) sides of a path wherein any unit is transported back to their player's assigned point of defense? It could go down the middle, too.
Of course, this doesn't let you make mazes with units, so if that's what you're going for (which is way fun) this isn't really a solution.
The best way to do this as far as I'm aware is to make all units flying but collide with buildings (some... how...).
It's more so of a pathing problem if you think about it. I just need to stop them from going the long way around the platform, really. If I can find out where the building is and pinpoint it on the map, then block off part of the map to see if the building is blocking that should work, but the process is confusing... if anyone could figure out a full proof trigger thats works for sure on my map omg id give you a cookie.
It runs the trigger but nothing happens. Also, would be better if it was linked to the creation of a building so it checks whenever a new building is created to make sure no walling is going on ever. Ill check out the trigger, some insight wold be helpful tho.
updated and fixed a small mistake so make sure you get the new one!
Make sure you are typing Block Test 1 or Block Test 2, etc, i just tested every player and it works fine.
I spawn a unit and tell it to run to a specific point, say from Player 1 to Player 6
If the unit crosses into Player 5's region then i know it is going around the opposite way
No text is displayed. I wall in both sides of the building space, and type "Block Test 1" I can see in the trigger debugger that it's running properly, but the trigger does nothing to fix the problem. Nothing happens visually, no building destroyed no problem solved.
Or is it that you just didn't add the end result in (e.g. unblocking the map) to the triggers? And if so, where would I add it.
@ST4RKiLL3R: Go It doesnt detect if both are blocked only if one is, i thought you said you already knew how to detect if both were blocked.
No I can't that's what I need, what you made is also useful but it's not what I need. The units cant take the long way, and not even one of the players should be blocking at any one time because then every path relating to their lane will become screwed up. I need a system to detect if any point on the map is blocked and kill the blocking building. Some other system I was thinking of, maybe you could help me with if the one your thinking of doesn't work, basically I create 5 pathing blockers in the middle of the map. I only create the ones necessary depending on where the initial building is and check from there. So I block off the long way and if the short way's pathing cost is whatever that number was (655336 or something, probably close to that) then it's blocked and i kill the building. It would check on the buildings creation.
let me try to finish what i am making then you can see if it meets your needs, i think what you are talking about might work but i'll have to think about it
let me try to finish what i am making then you can see if it meets your needs, i think what you are talking about might work but i'll have to think about it
Alright I'll start on the thing I'm thinking of while you do that.
On what I was working for, basically I cut out parts of the map from the game so that it thinks there is only one linear path the units can take, then I check pathing and if it returns the magic number I kill the building and refund. Then I kill the blockers that we're cutting of the map. All this happens pretty quick, and I haven't tested it yet but it should work. I'm doing all the work by hand and not taking shortcuts such as 'pick each integer' as I'm afraid the trigger wont work if I use them because 8 players are going to use it for one, and if I use pick each integer the thing is going to fire 8 times in a row which will cause errors and become annoying. even if it is faster. I don't know you could try attempting it too. Here's what I have so far:
BuildingisCreatedEventsUnit-AnyUnitcreatesaunitwithabilityProbe-Build(Probe)orbehaviorNoGameLinkUnit-AnyUnitcreatesaunitwithabilitySCV-Build(SCV)orbehaviorNoGameLinkUnit-AnyUnitcreatesaunitwithabilityDrone-MorphUnit(Drone->ZergBuildings)orbehaviorNoGameLinkLocalVariablesConditionsActionsGeneral-If(Conditions)thendo(Actions)elsedo(Actions)If((Createdunit)isinP1)==trueThenVariable-SetBlockerPositions[1][0]=Point031Variable-SetBlockerPositions[2][0]=Point032Variable-SetBlockerPositions[3][0]=Point033Variable-SetBlockerPositions[4][0]=Point034Variable-SetBlockerPositions[5][0]=Point035Variable-SetBlockerPositions[6][0]=Point011Variable-SetBlockerPositions[7][0]=Point012Variable-SetBlockerPositions[8][0]=Point013Variable-SetBlockerPositions[9][0]=Point014Variable-SetBlockerPositions[9][0]=Point015Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[1][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[2][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[3][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[4][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[5][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[6][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[7][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[8][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[9][0]usingdefaultfacing(IgnorePlacement)Unit-Create1DynamicPathingBlocker2x2forplayer0atBlockerPositions[10][0]usingdefaultfacing(IgnorePlacement)General-If(Conditions)thendo(Actions)elsedo(Actions)IfOrConditions((CenterofA1)and(CenterofB1)areconnectedbypathing)==false((CenterofC1)and(CenterofD1)areconnectedbypathing)==falseThenUnit-Kill(Createdunit)UI-Display"Do not wall."for(Allplayers)toSubtitleareaElseUnitGroup-Pickeachunitin(DynamicPathingBlocker2x2unitsin(Entiremap)ownedbyplayerAnyPlayermatchingExcluded:Missile,Dead,Hidden,withatmostAnyAmount)anddo(Actions)ActionsElse
And yes I'm going to change the events pretty soon. Just realized it wasn't the one I was looking for lol.
Why don't you just take away the building pathing footprint? I just tested it - units will not try to take the long way around other units that lack pathing footprints. DO keep the placement pathing footprint, however.
Just leave it to the building's collision to block units' progresses.
The blocker position variables are useless get rid of them. The only problem i see is that if they cant be placed because another unit is there, or will be placed in the wrong position
EDIT: @ OneSoga, if the buildings can still block then its still a problem
ST4RKILL3R, where are you walling off so i know where the problem is, on the map with my triggers
The blocker position variables are useless get rid of them. The only problem i see is that if they cant be placed because another unit is there, or will be placed in the wrong position
EDIT: @ OneSoga, if the buildings can still block then its still a problem
ST4RKILL3R, where are you walling off so i know where the problem is, on the map with my triggers
I'm walling off within the player's build space (the large square of grass your given). Specifically I wall off right outside the spawns, a straight line preventing the units from getting out of the spawn. It shouldn't matter where I wall off though. If I did the same thing on the other side of the map it means the same thing, the units would still be blocked so long as they cant get to their destination. I might change the variables soon, depends.
Edit: The trigger I made works, both sides block off fine, I just need to make more efficient and work out a few kinks. Still I'm not 100% sure that it will work the right way when it's fully implemented right now it only works for P1. Here I'll attach the map. See if you can refine it. The trigger & variables are in a folder named 'Antiwall' in the triggers section.
like i said before the point variables are useless, they will only take up more space in your map. Another problem is that the buildings are only checked if they are within the player's region so if they build out side of the grass the trigger wont work properly
like i said before the point variables are useless, they will only take up more space in your map. Another problem is that the buildings are only checked if they are within the player's region so if they build out side of the grass the trigger wont work properly
This I realize. I plan to add unbuildable pathing there so you can only build on the alloted grass spaces. I'll remove the variables after I eat dinner. I'll be back in maybe a few minutes if your still willing to help me.
Upon further testing I figured out that the trigger doesn't even need the pathing blockers to work, which is fine, but I also found out that if you spam building say a pylon in a spot it would normally kill the pylon (because it's blocking) it will allow the pylon to build. Almost like the trigger cant keep up and skips a few buildings. And that causes problems. Need to find a way to fix that. Try working on it if you want brb in a few srry lmao...
This is like THE issue with my map, the only thing that really discourages me from working on it. I would hail anyone who could help me like a god. Here are two pics, look at them carefully:
Basically I need a fullproof anti-walling solution for my Pick Your Defense remake. There is some info on the pics above below, read it carefully:
X's are unit spawns
T's are transporters that teleport the units that move into them instantly to the other side.
Each red line represents the path the units will take from their spawn point to their end point, and they work both ways. The central lanes are shorter because they effectively skip most of the map by teleporting. They all follow a linear path and should never take the long way around the terrain because someone blocked.
If you walled off on one end (use the cyan line as an example) the monsters would have to follow the yellow or purple line, depending on where they were sent to, which is what I'm trying to prevent. In order to activate my anti walling trigger, the player would need to make the cyan wall AND the blue wall.
If you block one side of your building space off, the anti-blocking trigger wont fire because there is still a viable path (the long way around the platform) available. It will only fire if both sides are blocked off. I've tried multiple things, skipping the antiblocking trigger all together and just having the units attack your buildings and continue along their path afterwards (to discourage it) and while that works they will still take the long way around instead if only half their path is blocked. One wave will continue as they should (if only one side is blocked off) and the other wave will follow the first waves lead, because their path is blocked.
I know it's confusing, so maybe if you test my map out you will see the problem and maybe help me come up with a fix. Download the attached map and play it a few times. When in-game just block off one side, and then watch what happens. After, restart and do it with both sides. Currently they will attack both sides which is fine, but if only one side is blocked the units that should be following that path do not even try to go over there. They already know that it's blocked and automatically attempt to take the long way around. Currently if I am to keep the current system where they attack you I'm going to need to disable the smart pathing they have so they only follow the linear path they're given and not deviate from it.
So that's my current question and if thats not possible any other viable way of doing it is fine, but overall I need help with this shit...
Oh btw, the terrain is a little bit different in the pictures as I took them awhile back, but it's the same concept just different textures now + more awesome looks.
Noob here, just an idea. Could you make strips down one (or both) sides of a path wherein any unit is transported back to their player's assigned point of defense? It could go down the middle, too.
Of course, this doesn't let you make mazes with units, so if that's what you're going for (which is way fun) this isn't really a solution.
The best way to do this as far as I'm aware is to make all units flying but collide with buildings (some... how...).
It's more so of a pathing problem if you think about it. I just need to stop them from going the long way around the platform, really. If I can find out where the building is and pinpoint it on the map, then block off part of the map to see if the building is blocking that should work, but the process is confusing... if anyone could figure out a full proof trigger thats works for sure on my map omg id give you a cookie.
@ST4RKiLL3R: Go
BAMP, use 'Block Test "Player Number"' to Test
EDIT: small mistake on player 8 will update in a few minutes
It runs the trigger but nothing happens. Also, would be better if it was linked to the creation of a building so it checks whenever a new building is created to make sure no walling is going on ever. Ill check out the trigger, some insight wold be helpful tho.
@ST4RKiLL3R: Go
updated and fixed a small mistake so make sure you get the new one!
Make sure you are typing Block Test 1 or Block Test 2, etc, i just tested every player and it works fine.
I spawn a unit and tell it to run to a specific point, say from Player 1 to Player 6
If the unit crosses into Player 5's region then i know it is going around the opposite way
No text is displayed. I wall in both sides of the building space, and type "Block Test 1" I can see in the trigger debugger that it's running properly, but the trigger does nothing to fix the problem. Nothing happens visually, no building destroyed no problem solved.
Or is it that you just didn't add the end result in (e.g. unblocking the map) to the triggers? And if so, where would I add it.
@ST4RKiLL3R: Go It doesnt detect if both are blocked only if one is, i thought you said you already knew how to detect if both were blocked.
No I can't that's what I need, what you made is also useful but it's not what I need. The units cant take the long way, and not even one of the players should be blocking at any one time because then every path relating to their lane will become screwed up. I need a system to detect if any point on the map is blocked and kill the blocking building. Some other system I was thinking of, maybe you could help me with if the one your thinking of doesn't work, basically I create 5 pathing blockers in the middle of the map. I only create the ones necessary depending on where the initial building is and check from there. So I block off the long way and if the short way's pathing cost is whatever that number was (655336 or something, probably close to that) then it's blocked and i kill the building. It would check on the buildings creation.
Idk sounds confusing.
@ST4RKiLL3R: Go
let me try to finish what i am making then you can see if it meets your needs, i think what you are talking about might work but i'll have to think about it
Alright I'll start on the thing I'm thinking of while you do that.
@ST4RKiLL3R: Go
finished tell what you think
Doesn't seem to work still :/
On what I was working for, basically I cut out parts of the map from the game so that it thinks there is only one linear path the units can take, then I check pathing and if it returns the magic number I kill the building and refund. Then I kill the blockers that we're cutting of the map. All this happens pretty quick, and I haven't tested it yet but it should work. I'm doing all the work by hand and not taking shortcuts such as 'pick each integer' as I'm afraid the trigger wont work if I use them because 8 players are going to use it for one, and if I use pick each integer the thing is going to fire 8 times in a row which will cause errors and become annoying. even if it is faster. I don't know you could try attempting it too. Here's what I have so far:
And yes I'm going to change the events pretty soon. Just realized it wasn't the one I was looking for lol.
Why don't you just take away the building pathing footprint? I just tested it - units will not try to take the long way around other units that lack pathing footprints. DO keep the placement pathing footprint, however.
Just leave it to the building's collision to block units' progresses.
@ST4RKiLL3R: Go
The blocker position variables are useless get rid of them. The only problem i see is that if they cant be placed because another unit is there, or will be placed in the wrong position
EDIT: @ OneSoga, if the buildings can still block then its still a problem
ST4RKILL3R, where are you walling off so i know where the problem is, on the map with my triggers
I'm walling off within the player's build space (the large square of grass your given). Specifically I wall off right outside the spawns, a straight line preventing the units from getting out of the spawn. It shouldn't matter where I wall off though. If I did the same thing on the other side of the map it means the same thing, the units would still be blocked so long as they cant get to their destination. I might change the variables soon, depends.
Edit: The trigger I made works, both sides block off fine, I just need to make more efficient and work out a few kinks. Still I'm not 100% sure that it will work the right way when it's fully implemented right now it only works for P1. Here I'll attach the map. See if you can refine it. The trigger & variables are in a folder named 'Antiwall' in the triggers section.
@ST4RKiLL3R: Go
like i said before the point variables are useless, they will only take up more space in your map. Another problem is that the buildings are only checked if they are within the player's region so if they build out side of the grass the trigger wont work properly
This I realize. I plan to add unbuildable pathing there so you can only build on the alloted grass spaces. I'll remove the variables after I eat dinner. I'll be back in maybe a few minutes if your still willing to help me.
Upon further testing I figured out that the trigger doesn't even need the pathing blockers to work, which is fine, but I also found out that if you spam building say a pylon in a spot it would normally kill the pylon (because it's blocking) it will allow the pylon to build. Almost like the trigger cant keep up and skips a few buildings. And that causes problems. Need to find a way to fix that. Try working on it if you want brb in a few srry lmao...
@ST4RKiLL3R: Go
Back lol.