Welcome to the community where modding your favorite game can be possible, and supported by a nice and warm community. Here you will find resources which will help you to develop your projects faster. Additionally you can show your projects and share with a growing community, even be part of the Blizzard Modding Network, which aims to gather all the projects and clans around this game.
JNGP 2.0.9 is live!!!! Fellow WC3 modders & mappers:
It's an honor to announce the release of the new version of JNGP: 2.0.9. With this new pack, I've added the most recent mods for WE and other features that will help you in the mapping process.
Among the main features added in this version, we can find the new WC3 patcher, which allows to set your WC3 installation in any version different from 1.27, this is needed to allow multiplayer emulation to work properly.
Some tools has been updated to the latest version:
This snippet is a replacement to the BJ function GetRandomSubGroup with the advantage of being able to directly enumerate random number of units in a group instead of creating another subgroup of an already existing group. Notice that this is not the same as GroupEnumUnitsInRangeCounted in which case the enumerated units are not random but is based on which units are picked first.
Useful system especially in making an MUI spell which uses timers. Instead of saving the spell data in a hashtable with the handleid of the timer as the parent key, you can just use normal arrays with the timerid as the index. This also allows you to pass custom data (integer) to timers.
Indexed timers (Array safe, 1-8190 but can also be customized to be 8190+) NEW
Timer custom data (integer) attachment [NEW]
Timer double free protection
Automatic timer replacement (Useful safety feature which automatically replaces timers belonging to this system with a timer of the same timerid and handleid when destroyed)
debugcall Debug("Total number of timers created: " + I2S(i))
debugcall Debug("Timer stock count is complete")
privatestruct S extendsarray
v1.2 - Added more functionalities such as attaching custom timer data, now the system comprises all but is not limited to the main functionalities of Vexorian's TimerUtils - Optimized the code especially in the part in updating the timer stack - Fixed some bugs
v1.1 - Added the possibility for users to configure the timer stock size above 8190 - Some fixes
This system allows you to register a code that will run every specified timeout. Note that this system only uses one timer for all registered codes. Therefore, codes with periods indivisible by 0.03125 doesn't run with a constant time interval. Although the difference will not exceed 0.03125, you probably don't want it to be that way. But this will not be much of a problem for codes with low frequency period such as those with timeouts greater than 2 seconds since the difference wouldn't be so noticeable.
In short, this works best for codes with timeout divisible by 0.03125 seconds.
v1.3 - Fixed a minor error concerning the index of a registered code in the RunLoop not being decremented by 1 when a code is removed from the loop.
v1.2 - Replaced TriggerEvaluate() with .evaluate() through the use of function interface - Added an option to the configuration whether or not the system will automatically adjust the code timeout in case the entered timeout is lesser than the minimum supported timeout - Removed the requirement Table. Instead, uses arrays which were made possible through using interface functions as the index.
v1.1 - Fixed the bug regarding the incorrect unregistering and re-registering codes to the loop - Uses a TableArray instead of two separate tables