3ICE’s Sliding System for RoC is a two dimensional, coordinate-based movement system for Warcraft III RoC and TFT. It is the perfect one step solution for creating Ice/Sliding Mazes in both Reign of Chaos and The Frozen Throne without having to take advanced physics in school. (Because developing your own would require that!) It is the only decent system around and it even works in RoC, is lagfree, perfectly optimized, fast and reliable. The included TerrainKill feature frees you from the tedious task of creating a thousand kill-regions.
Features:
- RoC compatible!
- Slides any number of objects (Tested with 600+ sliding units, though most people will only need 11.)
- Slides anything: units, buildings, and even doodads.
- One click install
- No settings needed at all. Everything works automatically.
- Advanced options are available for those who like to tweak things.
- Lagfree (My system can handle hundreds of units without any loss of performance.)
- Optimized code
- No JASS knowledge is required. Although the system was written in JASS, settings are kept in a separate GUI trigger.
- Built-in TerrainKill, you will never have to make kill-regions in the future.
- Faster than any other sliding system (Direct access to X and Y coordinates > working with positions)
- Used in great maps like 3ICE's Maze Designer, 3ICE's Realistic Sliding.
- Comes with an easter egg (realistic sliding mode)
- Oh, and it's Free
Get your copy today: 3ICE’s Sliding System for RoC v3.w3m (It is worth a try even if you aren't a map maker)
This following description is available inside the map too:
3ICE: Hello! You: Hi, what do I do with this? 3ICE: First of all, you should press CTRL+F9 to test this map and see if it suits your needs. 3ICE: If it does, then use(import) it: You should have two maps open: This and Your own map. In the MAIN window of the World editor, navigate to: File ==> Preferences... ==> General Find "Automatically create unknown variables while pasting trigger data" It is not checked by default, but you might have already enabled it previously. Check it now. (It creates all the variables my system will use (Slide, TerrainKill, Speed and H)) Switch back to the Trigger Editor and right click the category labeled "3ICE's Sliding System" Select Copy Switch to your map using Window ==> YourMap.w3m Paste the category anywhere you want, I would place it on the top. CONGRATULATIONS! Additional things you might want to do: You: I want to slide monkeys/cows/bunnies. Can I do that? 3ICE: Yes you can! Here's how it's done: 3ICE: Look at the trigger called Setup1 3ICE: Every unit that is added to the "H" unit group will slide on ice and die on snow. 3ICE: So if your heroes aren't Demon Hunters, you will have to change H: 3ICE: Set H = (Units of type Monkey/Cow/Bunny) You: Sliding is too slow, can I make it go faster? 3ICE: You can. The default speed factor is 4.00 3ICE: Very slow: 1.50 Slow: 2.30 Normal: 4.00 Fast: 5.50 Very Fast: 6.50 Extreme: 8.00 3ICE: Additionally you can set Speed to 0.00 to freeze units on ice :) You: Omg what is all that code in the Setup2 trigger? 3ICE: It is JASS, but you will have no trouble understanding it. You: I doubt I will ever... 3ICE: Don't worry I'll help: 3ICE: If you have your map's tileset (Advanced ==> Modify Tileset...) set to Northrend 3ICE: And you used Ice for Sliding and Snow for killing... 3ICE: Then you don't even have to change anything in Setup2 because those are the default values! 3ICE: In case you have an other tileset, fear not! 3ICE: Let's say you have Lordaeron Summer Grass for killing: 3ICE: Customizing my system is as simple as changing: 3ICE: set udg_TerrainKill = 'Nsnw' 3ICE: to 3ICE: set udg_TerrainKill = 'Lgrs' You: What's up with this Nsnw and Lgrs? 3ICE: Nsnw stands for Northrend Snow and Lgrs stands for Lordaeron Grass. 3ICE: You can find more codes in the Setup2 trigger's header comments. You: What if the terrain I used isn't there? 3ICE: Further help is available at: http://www.3ice.hu/u/help (Make a new topic, stating your question) You: Thanks. 3ICE: No problem, I am always happy to help. FAQ: Q: Why is Setup1 disabled? A: It isn't. It just contains disabled actions. Q: How can I turn on disabled actions? A: Right click ==> Enable function Q: What if I don't need the disabled actions? A: Right click ==> Delete Q: May I delete comments and this ReadMe? A: Yes, but you must keep the credits unchanged. I'd also appreciate if I was credited on the loading screen: Sliding triggers by 3ICE • http://www.3ice.hu/slide/ Q: Can you make me a personalized sliding system for my knockback spell, etc? A: Yes, I might. Go to http://www.3ice.hu/u/help and make a new topic, stating your question Q: I don't want terrainkill! A: Remove the two marked lines from the "Slide" trigger. (Advanced users may also remove the TerrainKill variable) Q: Can I force players to buy a pair of IceSkates before they could steer? A: No, but let me know if you really need this feature and I'll make you a customized system. Go to http://www.3ice.hu/u/help and create a new topic Q: Can buildings slide? A: Yes, changed their pathing map to none and add them to the "H" unit group. Q: What will happen if I set the speed factor to 9999.99? A: Nothing dangerous. Units will jump to the map corner they are facing Q: Can I change the sliding speed during the game? A: Yes, simply use "Set Speed = 4.00". Q: Can I change the TerrainKill tile during the game? A: Yes, use: "Custom script: set udg_TerrainKill = 'Nsnw'" You can change the Slide terrain too. This will make your map require TFT, so if you are making a maze to RoC players convert your trigger to JASS: Edit >> Convert to Custom Text Q: Can't I use a regular GUI function for changing the TerrainKill tile? A: No. You must use Custom Script or a trigger converted to JASS. Q: How much better is your system than others? A: I use precalculated constants instead of PolarProjectionBJ() (Point With Polar Projection). The code is fully optimized. It doesn't create any memory leaks. No processing power is wasted on Locations like in all other systems. I work directly with the UnitX and UnitY values. This makes my system the best. Q: How can I stress test this system? A: Remove all snow except the edges, place 100 Demon Hunters all over the place and test the map. It won't lag. Q: My computer is very bad. Can I do anything? A: Yes, change the periodic timer in the "Slide" trigger from 0.01 to 0.03: call TriggerRegisterTimerEvent(gg_trg_Slide,0.01,true) to call TriggerRegisterTimerEvent(gg_trg_Slide,0.03,true) and triple the Speed factor: Set Speed = 4.00 to Set Speed = 12.00 Q: I heard there was a cool realistic mode you invented! A: Yes, remove the line "call IssueImmediateOrder(u,"stop")" from the "Slide" trigger and let the result amuse you. --3ICE
Download: 3ICE’s Sliding System for RoC v3.w3m (This is the same link as the one at the top. It is provided only for convenience and easy access)
December 8th, 2008 at 9:51 pm
Read previous comments at http://www.3ice.hu/blog/3ice-sliding-system-for-roc/#comments (For v1 and v2)
Put new comments here!
January 31st, 2009 at 1:27 pm
Can you make a non-jass version please? Because I want to make other ice terrains, but I cant read jass.
And I'd also like to place death-regions to allow diagonal terrain.
Edited by 3ICE: Merged triplepost. + Fixed grammar. + Removed useless sentences. + Fixed sentence structure so that they make sense now.
January 31st, 2009 at 10:17 pm
There is no reason to make a GUI version of this system. Comments (the lines starting with "//") explain everything. Read the comments.
February 24th, 2009 at 7:09 pm
how do you make it work on many tilesets att once? ex if i want to slide on every tile except one
February 24th, 2009 at 7:20 pm
In the Slide trigger, replace the line
if(t==udg_Slide)then
with
if(t!=udg_Slide)then
and in the Setup2 trigger set usg_Slide to the terrain you don't want to slide on.
In the Steer trigger, replace the lines
if(GetTerrainType(x,y)==udg_Slide)and(IsUnitInGroup(u,udg_H))then
with
if(GetTerrainType(x,y)!=udg_Slide)and(IsUnitInGroup(u,udg_H))then
and that was all.
March 25th, 2009 at 9:15 am
On the Steer theirs 2 with if(GetTerrainType(x,y)==udg_Slide)and(IsUnitInGroup(u,udg_H))then
do i change both?
March 25th, 2009 at 9:25 am
Yes, change both. (Function Turn is for right clicking on units, and function Steer is for right clicking on terrain.)
March 25th, 2009 at 9:28 am
What if you want only two types of terrains to be slideable at the same time?
March 25th, 2009 at 9:30 am
In the Slide trigger, replace the line
if(t==udg_Slide)then
with
if(t==udg_Slide)or(t==udg_Slide2)then
// Slide2 is the second terrain type you want to slide on. It has to be created (Variable Editor) and
// initialized (Setup2 trigger) exactly like the Slide variable.
In the Steer trigger, replace the lines
if(GetTerrainType(x,y)==udg_Slide)and(IsUnitInGroup(u,udg_H))then
with
if((GetTerrainType(x,y)==udg_Slide)or(GetTerrainType(x,y)==udg_Slide2))and(IsUnitInGroup(u,udg_H))then
// It might be faster to introduce a new local variable now,
// local t=GetTerrainType(x,y)
// and use that instead of calling GetTerrainType(x,y) twice, but only do this if you know JASS.
// It is too small improvement to be important to you.
March 26th, 2009 at 6:17 am
Thanks for the help it really work.What do you mean about ( local t=GetTerrainType(x,y) )? What will that do or.. help with?
March 26th, 2009 at 7:42 am
I told you to ignore it if you don't know JASS.
March 27th, 2009 at 4:17 am
How can I open 2 maps at the same time?
Edited by 3ICE: Removed useless words, fixed capitalization and sentence structure. Added "the".
March 27th, 2009 at 4:26 am
If you can open one, you can open two. If you can't, then you shouldn't use my Sliding System.
March 27th, 2009 at 4:37 am
Please help me… How can you open 2 maps at the same time? When I click on the 2nd map, it says that worldedit is already opened.
Never mind, I did something else and it worked.. Thanks for the fast answer! (Please remove my posts.)
Nice system =)
Edited by 3ICE: Merged doublepost. + Fixed grammar. + Removed useless sentences. + Fixed sentence structure.
And I will not remove your comments, because they are funny (even after I fixed your grammar).
April 16th, 2009 at 2:14 am
Nice Sliding System! I used it in many maps.
May 9th, 2009 at 3:14 am
I have been thinking on making a maze map, and jus needto now some triggers but i want to make a tft map but i wan to play it on ROC…
I wunder if u cud helpme anyone. (: it wud b lovely coz i rely wana prove my mates wrong coz they sayd i shit at mapp making
But I made dialogs few patrols a jass death regins
Collison i need to know
unit spewn i have
viziblity i have form limiter
and some more others trigger plzz… (:
PS: PLZZZ HELPPPP!!! (:
May 9th, 2009 at 3:44 am
Your mates are right. However with lots of practice and tutorial-reading you can improve.
A few things to note:
• You shit at [sic] spelling and grammar too.
• If you got the Visibility trigger from LimiteR's tutorials, then why didn't you get the Collision trigger as well? Its the second item on the list…
• Making TFT maps playable in RoC is pointless.
• You live in Sheffield, UK don't you?
• i usuly corect others's speelling, butt urs is was justt to much too ahndle.
May 15th, 2009 at 6:34 pm
Is there a way so i can have two types of ice at the same time? For example, one that only allows sliding in one direction and another that you can steer on
May 15th, 2009 at 7:35 pm
Yes, there is. Just combine the stuff from my previous comments.
May 30th, 2009 at 5:11 pm
I don't understand how to make more units able to slide.
Set H = (Units of type grunt)
Set H = (Units of type peon)
That doesn't work for me. Please help.
Edited by 3ICE: Removed unnecessary "to be", capitalized both sentences, fixed spelling of "dont" and "dosnt", removed a self bashing statement and his obviously fake email address and website. You don't need to fill everything in. :)
May 30th, 2009 at 5:13 pm
Instead of setting H to a new group every time (thus erasing your previous settings), use the actions I already provided:
Unit Group - Add Unit to H
Unit Group - Add Unit Group to H
Good luck!
May 30th, 2009 at 5:14 pm
Thanks!
Edited by 3ICE: Removed obviously fake email address, website, and the excess amount of exclamation marks.
June 4th, 2009 at 4:36 pm
Thank you so much for this! You are right when saying that the // comments explain everything, I even figured out how to make 2 types of ice with different speed myself.
I will put your name and link into the loading screen, even though I probably wont use the map on Battle.net.
Edited by 3ICE: Fixed spelling/capitalization of "i", "figued", "difrent", another "i", and "battlenet".
July 19th, 2009 at 6:17 am
How would you, fortel, make backwards ice? I tried making the slide speed to negative, but you weren't able to go onto the ice, because it instantly pushed you back. How would i fix this?
July 19th, 2009 at 7:13 am
Wtf is "fortel"?
This has already been discussed (and solved twice) here. Look at post #1133 on page 2, then at post #1130 on page 1.
July 19th, 2009 at 9:34 am
And doesn't this system leak alot of points? i dont see you setting your local variables to null after either, are you hiding them somwhere, or am i missing somthing?
July 19th, 2009 at 12:02 pm
Learn to spell!
"alot" –> a lot
"i" –> I
"dont" –> don't
"somwhere" –> somewhere
"somthing" –> something
Even thinking that I could release a system with memory leaks in it offends me. Don't do it again.
Did the thought to check whether my system uses points at all occur to you in the first place? Because I don't see any points anywhere except
local location p=GetUnitLoc(GetOrderTargetUnit())
, which is nulled properly;set p=null
.July 24th, 2009 at 4:30 am
3ICE is right there, I looked myself and theres only one/1 null sentence.
Nice system though 3ICE.
PS: Any new maps lately?
July 28th, 2009 at 7:28 pm
There I go gives me all kinds of script errors when starting the game: (
July 29th, 2009 at 7:06 am
@Thurst4blood: Because I am only using only one/1 (What is the point of saying it that way?) leaky variable. The rest are integers and reals, which do not leak. This is one of the many reasons why my system is better than others.
@Nike2008: Your comment does not help with anything whatsoever. I cannot see any script errors, because you forgot to post them. I cannot tell you what you messed up, because you haven't told me anything meaningful about it. Why don't you try?
August 16th, 2009 at 4:55 pm
How do you make color trigger and name trigger?
Edited by 3ICE: Changed colour into color.
August 17th, 2009 at 5:39 am
All of the coloring functions from Maze Designer:
function color1 takes nothing returns nothing
call SetUnitColor(GetEnumUnit(),GetPlayerColor(Player(S2I(SubString(GetEventPlayerChatString(),7,9))-1)))
endfunction
function color2 takes nothing returns nothing
call SetUnitVertexColor(GetEnumUnit(),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),7,10))),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),10,13))),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),13,16))),255)
endfunction
function color3 takes nothing returns nothing
call SetUnitVertexColor(GetEnumUnit(),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),7,10))),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),10,13))),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),13,16))),R2I(2.55*(100-(S2R(SubString(GetEventPlayerChatString(),16,19))))))
endfunction
Name function from my old JASS experiments:
function name takes nothing returns nothing
call SetPlayerName(GetTriggerPlayer(),SubString(GetEventPlayerChatString(),7,StringLength(GetEventPlayerChatString())))
endfunction
Did you forget how to google?
August 25th, 2009 at 2:43 am
I dont understand JASS =( Please help ASAP.
Best Regards
————–
Thurst4blood
August 31st, 2009 at 5:19 pm
Did you make the 'ICE Slide maker' map it was a map where you could make your own slide online with your friends
August 31st, 2009 at 6:15 pm
If you mean "3ICE's Maze Designer", then yes.
But if you are sure it was called "ICE Slide maker", then i don't know what you are talking about, because no such map exists in any map database indexed by Google.
October 9th, 2009 at 12:09 am
I made all those things that you wrote too mike, but it do not work. The system all time stops loading at "variables". I made one more variable and that is "slide2" and one more trigger, a copy of slide. I need more variables or need another trigger to change? Pls post an answer for me,
Y.Ess [mby you still know me from gaming]
Edited by 3ICE: Removed quote, did not bother fixing grammar.
October 9th, 2009 at 8:04 pm
Your comment makes no sense…
November 29th, 2009 at 12:34 am
OMG ty 3ICE (still best creator :D) it worked alot you (still) ROCK!
bye for now
kawan333 (your buddy :D)
June 10th, 2010 at 2:11 am
How would I go about editing this system to make units slide when they enter regions instead of entering terrain types?
Actually, I'd like to keep the terrain type slide functionality as well for a different part of the map. (Not sure if this matters.. just thought I'd let you know.)
Edited by 3ICE: Merging doublepost.
August 24th, 2010 at 4:51 am
Can I ask, how to make it so that if the hero isnt on the slide terrain, he doesn't stop either?
Basically what i mean is, How to make a hero keep sliding without stopping on Example; Cityscape - Grass?
It would be most kind if you helped.
February 4th, 2011 at 2:45 am
hey 3ICE its faith, can you please code it so i can ctrl c ctrl v to control the "tightness" of your terrain kill? i love this very much however the "regions" are to tight to were i cant go diagnol unless i have a double path witch seems to still not work out to great.
<3 your body SHiNNiNG_faiTH.
P.S. Come and JOIN MY GOD DAMN CLAN! CHANNEL CLAN MwMs ATLEAST COME CHILL!!
June 13th, 2011 at 8:52 pm
you just rock o:
Edited by 3ICE: Deleting doublepost, removing forged email and url
June 13th, 2011 at 8:53 pm
Thank you.
July 25th, 2011 at 10:34 pm
3ICE,
I was wondering.. Is it possible to make your terrain kill an adjustable one, like offsets? and change the offset to a real array for players to type like -killdistance ##??
July 25th, 2011 at 10:37 pm
Yes, it is possible. Basic JASS knowledge required.
July 25th, 2011 at 10:39 pm
I know some jass, it's just working out how to make such a thing possible. :D thanks for the fast reply O_O
-
Alright i've made a slight change in your slide trigger, i've added these bits of text:
local real playeroffset
instead of local real x=GetUnitX(u) and local real y=GetUnitY(u) ive done this:
local real x=GetUnitX(u) * playeroffset
local real y=GetUnitY(u) * playeroffset
Would this work?
-
nah it aint working, confused like hell lol..
Edited by 3ICE: Merged triplepost. Please use my forum for longer discussions.
November 8th, 2011 at 1:58 am
Edited by 3ICE: You have been banned for spamming.
October 18th, 2019 at 3:29 pm
Useful link for valid values you can change TerrainKill's Nsnw to. It has all other tile possibilities: https://github.com/wurstscript/WurstStdlib2/blob/master/wurst/_wurst/assets/Tiles.wurst