Skip to content

H-vjass Framework

What is H-vjass?

H-vjass is a Warcraft 3 map development framework that runs on the windows platform. It combines the YDWE operating environment, in the original operating environment added the author's framework concept, making the production of Warcraft 3 maps more convenient and fast. Thus, there is no need to use the T trigger to create maps.

h-vjass

Getting the framework

You directly download the leanest code package here

h-vjass tiny code package

also go to GitHub for

GitHub#h-vjass

Documentation and Dependencies

Checking the documentation and introducing dependencies into the project is a must, you can check out the technical support document

Framework Structure

├── h-vjass.j - the entry file, your main file needs to contain it
├── hSync.j - Synchronisation method, handles functions that can't be paused (no pausing within structures)
├── hMain.j - a simple example to include this main file in F4. And main needs to include h-vjass.j
├── hTest.j - one of the test codes
├── demo.w3x - *For reference only, it is best to take ‘ Practice Wheel of Time TD ’ secondary development directly
└── lib
    ├── abstract - load other function modules
    ├── ability - basic skills
    ├── attrbuteIds - IDs of skills used for basic attributes.
    ├── attrbute - Attribute system, attack, armour, movement, toughness, etc.
    ├── attrbuteEffect - Attribute system for damage effects.
    ├── attrbuteNatural - Natural Attribute System
    ├── attrbuteHunt - Hurt system
    ├── attrbuteUnit - Unit and Attribute System Module
    ├── award - Award module, used to control the player's gold wood experience
    ├── camera - The camera module, used to control the player's camera.
    ├── console - Simple debugging and printing module.
    ├── effect - Effect module
    ├── effectString - A nice string for some common effects (you can use the string directly in effect and ignore this)
    ├── enemy - The enemy module, used to set the enemy player and assign units automatically.
    ├── env - environment module, randomly generates decorations and surface textures for areas
    ├── event - event module, custom events, including item splits/blasts, precision attack capture, etc.
    ├── filter - Group filter, mainly used for unit group conditions.
    ├── group - Unit group
    ├── hero - hero/hero module, including click/pub selection, repick/random function, etc.
    ├── is - Judgement module * Commonly used
    ├── item - Item module, seamlessly integrates with attribute system, synthesis/split function, etc.
    ├── itemMix - item mixing sub-module
    ├── lightning - Lightning chain
    ├── logic - Logic module
    ├── mark - Mask module
    ├── media - Sound module
    ├── message - message/floating word module
    ├── multiboard - Multiboard, includes its own attribute system
    ├── player - player
    ├── rect - Region
    ├── skill - Advanced skills
    ├── time - time/timer * Commonly used
    ├── unit - Units
    └── weather - Weather

Preparing in advance

Turn off the editor's ‘counter’ triggers.

Advanced - Game Balance Constants - Set all attribute related items to 0 (unless you need them).

Code Editor

The editor is recommended to use Vscode and follow vJass related plugins.

Visual Studio Code

Create a new map of yours using WE

Open the map Press F4 to open the trigger editor

Add a ‘New Trigger’ in the first position at the top.

Select the new trigger and click on the menu [Edit] to convert it to custom text, as follows:

function Trig_[YOUR_TRIGGER]_Actions takes nothing returns nothing
endfunction

//===========================================================================
function InitTrig_[YOUR_TRIGGER] takes nothing returns nothing
set gg_trg_[YOUR_TRIGGER] = CreateTrigger(  )
call TriggerAddAction( gg_trg_[YOUR_TRIGGER], function Trig_[YOUR_TRIGGER]_Actions )
endfunction

These default functions are useless, delete all of them, leaving a [blank text area]

At the top of the text area include h-vjass root directory file h-vjass.j, pay attention to the relative path to be correct, to your [YDWE.exe] relative to the directory shall prevail (it is not recommended that the path exists in Chinese)

If you have completed the above steps, then the text area should now look like this:

include "[relatively_path]/h-vjass/h-vjass.j"

These default functions are useless, delete all of them, leaving a [blank text area]

At the top of the text area include h-vjass root directory file h-vjass.j, pay attention to the relative path to be correct, to your [YDWE.exe] relative to the directory shall prevail (it is not recommended that the path exists in Chinese)

If you have completed the above steps, then the text area should now look like this:

include "[relatively_path]/h-vjass/hMain.j"

The h-vjass library only provides some functions to help map authors to make maps more easily.

h-vjass library does not guarantee that completely correct, no bugs, high efficiency, so if necessary, please modify the source code for the game production, but here is a way to give!

h-vjass library lib/attribute* series of methods is a set of attribute system, if you do not use it, please close, if you use it, please according to the demo map to see the corresponding attribute setting method.

It is recommended to use demo.w3x directly as a template to develop your map, of course you can also create your own, but pay attention to the thing, you need to introduce all the files in the ui folder in F12, and modify the path as follows:

File -> Custom Path
boold2.blp -> boold2.blp
CommandFunc.txt -> units\CommandFunc.txt
war3mapMisc.txt -> war3mapMisc.txt
war3mapskin.txt -> war3mapskin.txt

At the same time you have to create all the skills and item templates required by the system, please check the demo for details, due to the very tedious process of autonomy, it is highly recommended to use demo.w3x for secondary development!

Expand the example map

Expansion Map hyper-space-td will write some business to guide you through the learning process.

Managing Projects with the History Tool

You should use versioning code history management tools (Git, Svn, etc.) to manage your development projects.You can use third-party hosting platforms (e.g., GitHub, GitLab, Gtiee, Bitbucket), or self-built (e.g., Gogs) management tools, and please at least use the tools locally to build a local version.No one knows when they're going to make a mistake. Code history allows you to view every change, roll back versions, and back up results.

All publicly available technologies are released under the AGPL3 licence.