Triggered Spell Issue

P

PegaLeveBrZ

Guest
In a nutshell: Player Variable defining issue, thus the spell won't work

Hi guys, yet another spell for a map I'm making which works by triggers but there is something strange going on here...
It's a stealing spell. You use it to gain an amount of the enemy player's gold (for test purposes, the whole gold), but it doenst work and you can only steal "0" gold (bug.)

I kinda made a debug system for the map so It would display as a text message some variables, and TempPlayer remains as an empty Player Variable after using the spell.

Here it is:
triggerjq3.jpg


Thanks in advance for helping :D
 

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
Certain things like "Target unit of ability being cast" don't work after Waits. If you moved that action to before the Wait, it would probably work.

Be aware, though, that using global variables with waits in between makes the spell non-MUI. And the way you have it set up, it will not be MPI either. (May or may not be an issue for you.)

Also, there are a couple of leaks.
 
P

PegaLeveBrZ

Guest
That was it (the waiting). I can go back to finishing the spell now ^^ Thanks

I know there may be some multiplayer issues but I plan to use Integer arrays (if needed) to solve this... making players change the variable with the array number (Player Number of Triggering Player).

Also, there are a couple of leaks.
Damn, is it the integer? How to get rid? Custom Script "call_remove_udg_TempInteger" or something like that?
 

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
No, integers don't leak, so you don't ever have to worry about them.

The leaks are the player groups:
Code:
Game - Display to [COLOR="Red"](Player Group((Owner of (Triggering Unit))))[/COLOR] the text...

This occurs in 3 places. You can set it to a Player Group variable and then destroy it afterwards.

Also, I think the Special Effect leaks. I'm not 100% sure, but you can add "Destroy last created special effect" to be safe.
 
P

PegaLeveBrZ

Guest
Ok well.. there's another problem with this spell..
I want it to give it 10% (+2% each level) of the victims gold to the thief, but I am suspecting warcraft can't use fractions in integers (I mean numbers like 0.10 = 10%)
Thus, when I try to set TempInteger (Gold stealed), It ends up as 0 because "8 + level / 100) = 0.1

Set TempInteger = ((TempPlayer Current gold) x ((8 + ((Level of Roubar for (Triggering unit)) x 2)) / 100))

I changed the "/ 100" to "/ 10" and It worked, but you would steal all of the gold though :eek:

--Edit--
Also, I tried something like this
Set TempInteger = ((TempPlayer Current gold) / 100) x ((8 + ((Level of Roubar for (Triggering unit)) x 2))
But I would just round down numbers like 2.35 (out of 235 gold) into 2.00, so, It kinda didn't have the effect I was looking for.

Please help
 

darkbeer

Beer is Good!
Reaction score
84
use a variable of type real, it will allow you fractional values^^ like 0.1
you could also use the convert integer to real function, then calculate the number and convert it to integer again, should work as well
 

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
Yeah, like darkbeer said...

Code:
Set TempReal = ((Real(((TempPlayer) Current gold))) x (0.08 + ((Real((Level of Roubar for (Triggering unit)))) x 0.02)))
 
P

PegaLeveBrZ

Guest
Thanks, It works 100% now! Leet ;)
I kinda have to realize small details count a LOT.
 
General chit-chat
Help Users

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top