So I have started work on a save system using only a single string.
If a mission hasn't been completed then its value is 0, if it's been completed in victory then the value is 1, if its been failed then the value is 2.
So if mission one was failed, mission two, and three were completed, and the player is currently on mission four...
Then the string would look like this: 2 1 1 0
Now, once the string is made, its very easy to get the information I want. I can just use Word of String to know the past outcome of any given mission.
So if I want to know if the player failed mission three, I could just ask If Word 3 of String == 2.
The problem I am having is saving the string. It doesn't seem like there is a Word of String function to save to just one specific part of a string.
I have to load each part of the string separately from the bank, and then re-save the entire string each time I want to update a single part of it.
And I need a different trigger for every mission since it's a different word in the string for each mission.
Saving each mission to it's own key seems tedious, but my main concern is it might exceed the file size limit for banks, so I am trying to avoid that. In addition to missions I also have weapons, items, and unlocks I want to save. So it's important that it's compressed as much as possible.
There has got to be a better way. If anyone has any advice it would be very helpful. Even if it's an entirely different way to go about it. Thanks.
Basically using variables in events never works out. For instance, if you have a periodic event that happens every x seconds, if you change x it won't change how often it occurs.
Instead you would use a variable wait in the actions.
It's just the way it is :/
With data, you would want an ability that when you press the hotkey it would swap the ability with a second one which uses it on your hero.
Then you either select the target for the first ability, or push the hotkey again to use the second swapped ability.
@SoulTaker916: Go
Yup, I was taking the absolute wrong, I think at one point I had it setup this way but I had changed it back because it still wasn't working exactly right.
@CorruptionOfLOL: Go
Looking at your attached map really helped a lot.I had never used Modulo before, I doubt I would have came up with this solution on my own.
Also the description of how each part works was very useful in understanding what was going on. I was able to make it on my own because of that rather then just copy/paste your code. Thank you very much.
You could re-upload the map every day and manually set the current day as a variable.
Then check to see the difference between the manually set variable and the one stored in the players bank is.
Kinda heinous, and definitely hardcore but it would work.
I have been working on this project for awhile now, and while there is always other stuff to work on, I keep coming back to this problem trying to fix it and I keep getting stuck. It's very important to the gameplay that it functions properly and it's been about a week now and I can't seem to figure it out so I've decided to see if anyone can help solve this one for me.
Now what I want is to make my units turn to the Angle I choose at a constant rate using triggers.
I am using this action to make the turns:
Unit-MakeUnitfaceAngleoverXseconds
So ideally if tell the unit to turn 180 degrees, it should take say, 3 seconds. And if I tell it to turn 60 degrees it should take 1 second.
My first attempt at modifying the action looked like this:
The problem I am running into with this: If say the Angle is say -90 and the unit is facing 90. It takes the absolute of both, and 90 - 90 = 0, and turns it instantly.
If I remove the absolute, then I run into other problems like: (-90degrees - 90degrees) / 60 = -3. Often times the game doesn't enjoy turning units in a negative amount of time. Or (180 - -180) / 60 = 6. So if you are slightly to the left it takes 6 seconds to turn, but if you are slightly to the right, it's instantly.
My other variation that seems like it has promise is instead of controlling the time it takes to make a turn, I am limiting the distance it is allowed to turn per interval.
That idea looks like this:
With Turn Speed being the number of degrees at which it should increment toward the Angle I want.
This works pretty well, it adds Turn Speed to the direction it's facing in increments of .1 seconds. Making the turn rate consistent.
However it has it's own issues.
If say, my unit is facing -175 degrees, and I want it to face the Angle of 170. In-game that is only appears 15 degree's apart, however mathematically -175degrees is less then 170degrees. So instead of going the 15 degrees I want, it goes the full 345 degrees in the opposite direction. Which is not awesome.
And for this variation, if I use absolute to solve the above problem, then it can't tell if the Angle I want is on the right or the left side since they both return positive and it usually ends up only making left turns.
If anyone can offer up a fix to either of these, or has a different suggestion entirely it would be great. As I said, I have been coming back to this problem for awhile and it's becoming apparent hat I can't get it to function on my own. Any help would be very much appreciated.
With the Missile Redirect effect you could just place some persistents at offsets around your unit and keep redirecting it until your ready to launch it or do whatever with it.
Might need to change its turn rate/lateral acceleration to make it seem more like a rotation and not a choppy point a to point b thing.
Now, if you want a decaying orbit or whatnot, you just need to adjust distance. So if unit accelerates, increase Distance, if it decelerates, decrease Distance. Unless I am missing something, you should already have the ability to emulate the effects of gravity by modifying the angle, distance, and speed.
Yah, unfortunately I don't think there is any trigger way to change inventory hotkeys. And I would have no idea where to find the defaults in the data editor... if it's even there.
I recently had quite the difficult time adjusting the physics and gravity of a map. I wanted to add a more interesting way to deflect projectiles. Come to find out every mover has it's own setting for how much gravity effects it and it's basically impossible to change it on the fly.
Maybe someone else will be able to help ya. Anyhow, best of luck.
Of course if the item you want to use is instant like the marines stim pack or whatever, then you wont need a second trigger to select a target.
Second way would be to simply give the ability you want the unit to cast to the actual unit holding the item through the "equip" option of items, then set a button with a hotkey and allow the unit to cast the ability itself as though it had it. But that's not really a trigger solution.
There might be other ways, but those are the two I can think of.
Just simply record everything a unit does as it does it and set it as a variable and store it to the bank.
So if you get a kill, add 1 to a variable and store it. If your unit gains exp, store it. If your unit gains a behavior, then set a variable to true and store it, if the behavior can stack multiple times then use an integer variable, add 1 and store it. Ect...
You'll need to do this for every aspect of your unit.
Then next time the game loads, you'll want to set each variable as the stored value for each bank key and apply them to the unit again. Then you can go on adding kills/exp and such to the variables.
I like to store information as it happens so I can have the most up-to-date information for my units and have the game be as close as possible to where it was when the player left off. Alternatively you can have a periodic event that will store all the unit information every few seconds.
If you want to record many units, like 100's, 1000's or even like 30 or more, then DO NOT bank them. Simply tell your players to use "resume from replay" that they added in HoTS. It's basically like banking the entire game without any work and an amazing way to pick up where you left off in a single player map.
I believe this is a data editor fix not a trigger one.
Make sure and check the fields
Movement: Acquire Leash Reset Radius
and
Movement: Acquire Leash Radius
and
Sight Radius
The first two should be the value of -1 for infinite chasing. You also need to make sure they have enough vision radius. If they can't see a unit they will stop chasing it as well.
0
I had no idea that was a way to use substrings. You just drastically improved my quality of life.
0
So I have started work on a save system using only a single string. If a mission hasn't been completed then its value is 0, if it's been completed in victory then the value is 1, if its been failed then the value is 2.
So if mission one was failed, mission two, and three were completed, and the player is currently on mission four... Then the string would look like this: 2 1 1 0
Now, once the string is made, its very easy to get the information I want. I can just use Word of String to know the past outcome of any given mission. So if I want to know if the player failed mission three, I could just ask If Word 3 of String == 2.
The problem I am having is saving the string. It doesn't seem like there is a Word of String function to save to just one specific part of a string. I have to load each part of the string separately from the bank, and then re-save the entire string each time I want to update a single part of it. And I need a different trigger for every mission since it's a different word in the string for each mission.
Saving each mission to it's own key seems tedious, but my main concern is it might exceed the file size limit for banks, so I am trying to avoid that. In addition to missions I also have weapons, items, and unlocks I want to save. So it's important that it's compressed as much as possible.
There has got to be a better way. If anyone has any advice it would be very helpful. Even if it's an entirely different way to go about it. Thanks.
0
Basically using variables in events never works out. For instance, if you have a periodic event that happens every x seconds, if you change x it won't change how often it occurs. Instead you would use a variable wait in the actions. It's just the way it is :/
0
With data, you would want an ability that when you press the hotkey it would swap the ability with a second one which uses it on your hero. Then you either select the target for the first ability, or push the hotkey again to use the second swapped ability.
0
@SoulTaker916: Go Yup, I was taking the absolute wrong, I think at one point I had it setup this way but I had changed it back because it still wasn't working exactly right.
@CorruptionOfLOL: Go Looking at your attached map really helped a lot.I had never used Modulo before, I doubt I would have came up with this solution on my own.
Also the description of how each part works was very useful in understanding what was going on. I was able to make it on my own because of that rather then just copy/paste your code. Thank you very much.
0
You could re-upload the map every day and manually set the current day as a variable. Then check to see the difference between the manually set variable and the one stored in the players bank is.
Kinda heinous, and definitely hardcore but it would work.
0
I have been working on this project for awhile now, and while there is always other stuff to work on, I keep coming back to this problem trying to fix it and I keep getting stuck. It's very important to the gameplay that it functions properly and it's been about a week now and I can't seem to figure it out so I've decided to see if anyone can help solve this one for me.
Now what I want is to make my units turn to the Angle I choose at a constant rate using triggers.
I am using this action to make the turns:
So ideally if tell the unit to turn 180 degrees, it should take say, 3 seconds. And if I tell it to turn 60 degrees it should take 1 second.
My first attempt at modifying the action looked like this:
The problem I am running into with this: If say the Angle is say -90 and the unit is facing 90. It takes the absolute of both, and 90 - 90 = 0, and turns it instantly.
If I remove the absolute, then I run into other problems like: (-90degrees - 90degrees) / 60 = -3. Often times the game doesn't enjoy turning units in a negative amount of time. Or (180 - -180) / 60 = 6. So if you are slightly to the left it takes 6 seconds to turn, but if you are slightly to the right, it's instantly.
My other variation that seems like it has promise is instead of controlling the time it takes to make a turn, I am limiting the distance it is allowed to turn per interval. That idea looks like this:
With Turn Speed being the number of degrees at which it should increment toward the Angle I want.
This works pretty well, it adds Turn Speed to the direction it's facing in increments of .1 seconds. Making the turn rate consistent. However it has it's own issues. If say, my unit is facing -175 degrees, and I want it to face the Angle of 170. In-game that is only appears 15 degree's apart, however mathematically -175degrees is less then 170degrees. So instead of going the 15 degrees I want, it goes the full 345 degrees in the opposite direction. Which is not awesome.
And for this variation, if I use absolute to solve the above problem, then it can't tell if the Angle I want is on the right or the left side since they both return positive and it usually ends up only making left turns.
If anyone can offer up a fix to either of these, or has a different suggestion entirely it would be great. As I said, I have been coming back to this problem for awhile and it's becoming apparent hat I can't get it to function on my own. Any help would be very much appreciated.
0
With the Missile Redirect effect you could just place some persistents at offsets around your unit and keep redirecting it until your ready to launch it or do whatever with it. Might need to change its turn rate/lateral acceleration to make it seem more like a rotation and not a choppy point a to point b thing.
0
So, for a basic orbit, you don't need anything complex.
Just need to throw this in a loop and set your Distance. Add in whatever delay you want to make it smooth.
Now, if you want a decaying orbit or whatnot, you just need to adjust distance. So if unit accelerates, increase Distance, if it decelerates, decrease Distance. Unless I am missing something, you should already have the ability to emulate the effects of gravity by modifying the angle, distance, and speed.
0
Under the Weapon for the Carrier: Carrier - Interceptor Launch go into Options+ and uncheck Only Fire While Attacking. That might do it.
May also need the Flag - Transient checked on the Hangar ability.
Sadly I am not too familiar with the Arm Magazine abilities, but I am pretty sure the solution your after is somewhere in the Options+.
0
When you begin to cast some spells like fungal growth for instance, it creates a splat actor that follows your mouse cursor until you select a target.
If you could find a way to track the position of a actor/model you might be able to use cursor splats to track the mouse cursor exactly.
0
Yah, unfortunately I don't think there is any trigger way to change inventory hotkeys. And I would have no idea where to find the defaults in the data editor... if it's even there. I recently had quite the difficult time adjusting the physics and gravity of a map. I wanted to add a more interesting way to deflect projectiles. Come to find out every mover has it's own setting for how much gravity effects it and it's basically impossible to change it on the fly.
Maybe someone else will be able to help ya. Anyhow, best of luck.
0
Only ways that I personally know to get that effect is to bypass it entirely. First way I know of is to use something like this...
Of course if the item you want to use is instant like the marines stim pack or whatever, then you wont need a second trigger to select a target.
Second way would be to simply give the ability you want the unit to cast to the actual unit holding the item through the "equip" option of items, then set a button with a hotkey and allow the unit to cast the ability itself as though it had it. But that's not really a trigger solution.
There might be other ways, but those are the two I can think of.
0
Just simply record everything a unit does as it does it and set it as a variable and store it to the bank. So if you get a kill, add 1 to a variable and store it. If your unit gains exp, store it. If your unit gains a behavior, then set a variable to true and store it, if the behavior can stack multiple times then use an integer variable, add 1 and store it. Ect... You'll need to do this for every aspect of your unit.
Then next time the game loads, you'll want to set each variable as the stored value for each bank key and apply them to the unit again. Then you can go on adding kills/exp and such to the variables.
I like to store information as it happens so I can have the most up-to-date information for my units and have the game be as close as possible to where it was when the player left off. Alternatively you can have a periodic event that will store all the unit information every few seconds.
If you want to record many units, like 100's, 1000's or even like 30 or more, then DO NOT bank them. Simply tell your players to use "resume from replay" that they added in HoTS. It's basically like banking the entire game without any work and an amazing way to pick up where you left off in a single player map.
0
I believe this is a data editor fix not a trigger one. Make sure and check the fields Movement: Acquire Leash Reset Radius and Movement: Acquire Leash Radius and Sight Radius
The first two should be the value of -1 for infinite chasing. You also need to make sure they have enough vision radius. If they can't see a unit they will stop chasing it as well.