YDWE PK (World Editor)

This bundle is marked as pending. It has not been reviewed by a staff member yet.
I present to you the best map editor for WC3

Allows make map in 1.26 or Reforged mode, but only if you have never saved your map in the Reforged Editor before.
Regardless of whether you make a map with features from Reforged or not, you must have Warcraft 1.26 or 1.27. This is required for YDWE to work.
You can use my pure Warcraft 3 1.26 from Eurobattle

Compatibility of maps created in YDWE PK: 1.26 - Reforged same as JNGP
Supported languages: JASS, vJASS, Zinc (no cJass)
YDWE PK
will not launch you have previously run the reforged world editor. First you need to run Fix after reforged editor.reg in ydwe folder

Features:
  • SLK - optimization before map test (can greatly reduce loading speed of large maps) comparison of speed on the old version of my RPG
  • Supports multi-opening (you can open several YDWE or YDWE + JNGP)
  • Allow warcraft 3 multi-launch
  • Additional multi-window map test mode
  • Best built-in text coloring plugin
    268810-b51dc1e3d78a1ee019ad9c773642306c.png
  • Includes latest pjass and TESH (newer than in JNGP but older than the latest TESH for Reforged Editor)



  • Optimization and anti-leaks for default GUI function like BJ and Swapped. Note: Many standard bj functions have built-in leaks that you cannot fix if you simply use these GUI/JASS functions in other editors.
    Before

    After

    Before

    After
  • Parsing unknown GUI functions, thanks to which you can open maps with unknown for YDWE functions.
  • Powerful custom GUI.
    • Core YDWE GUI (Unbelievable section)
      - Local variables that do not need to be declared at the top of the code and cleared at the end of the function
      - Local timers: Which do not force you to specify another trigger, and also automatically transfer [Unbelievable] Local Variables through a hash table.
      - Local triggers: Same capabilities as local triggers.
      - Comfortable Hashtable analogue "Custom Value" which does not require an integer id, you can specify the object itself, and allows you to specify a string as a key, which is then automatically converted to an integer, but unlike StringHash there will never be collisions.

      - Selection units in AoE without new function (Unit loop from jass)
    • Additional functions from Jass. (Ability to create objects in X/Y coordinates and much more)
    • Advanced custom GUI
      - Ability to insert Jass code anywhere in the GUI function. You don't need to break the function's GUI wrapper if you need to use Jass code.

      - Comment box (for ease of sorting)
      - Functions to delete objects after some time without having to create a timer manually.
      - Creating objects in "Сalls" Which allows you to immediately set variables and place objects in them. It also allows you to do handy things like this:

      - "Multi-functions" that allow you to do some actions faster. Allows you to quickly copy and paste a function to change 1 parameter and not re-specify all the others
      - "Hashtable By Code" Which have functions for save/load/checking if there is saved data/remove, for each data type. In addition, these functions allow you to specify any keys (integer/StringHash/jass code/use #defines)
      - Custom script code is highlighted in a separate color.

      - Rect/Region/Location types are properly named (no more Points)
    • Complete systems with automatic creation of objects and removal if you no longer use this functions. Additionally, these systems don't put their many global variables into your GUI global variables section, creating unnecessary clutter there.
      - Damage Engine
      - Custom Stats Systems
      - Test Commands Activate
      - Debuff Duration System
      - Additional Item Slots
      - Movement System
      - Save System
  • Unlocked 76 hidden game constants
    268809-d2dfffcfcd5ee50923e821845694b5e7.png

    List:
    Color of Lava Spawn
    Point Order Indicator Color(Attack)
    Point Order Indicator Color(Common)
    Info Panel - Attack Speed - Very Slow
    Info Panel - Attack Speed - Fast
    Info Panel - Attack Speed - Medium
    Info Panel - Attack Speed - Slow
    Info Panel - Buff Icon Fade Point
    Info Panel - Buff Icon Fade Alpha Minimum
    Info Panel - Buff Icon Fade Alpha Maximum
    Info Panel - Max Melee Attack Range
    Info Panel - Quest Indicator Duration
    Info Panel - Move Speed - Fast
    Info Panel - Move Speed - Medium
    Info Panel - Move Speed - Slow
    Info Panel - Move Speed - Very Slow
    Item - Item Shadow
    Item - Item Shadow Offset
    Item - Item Shadow Size
    Selection Circle Z Offset When Passing Destructable
    Floating Text - Bonus - Text Color
    Floating Text - Bonus - Fade Point
    Floating Text - Bonus - Font Size
    Floating Text - Bonus - Life Span
    Floating Text - Bonus - Move Speed
    Floating Text - Critical Strike - Text Color
    Floating Text - Critical Strike - Fade Point
    Floating Text - Critical Strike - Font Size
    Floating Text - Critical Strike - Life Span
    Floating Text - Critical Strike - Move Speed
    Floating Text - Gold - Text Color
    Floating Text - Gold - Fade Point
    Floating Text - Gold - Font Size
    Floating Text - Gold - Life Span
    Floating Text - Gold - Velocity
    Floating Text - Lumber - Text Color
    Floating Text - Lumber - Fade Point
    Floating Text - Lumber - Font Size
    Floating Text - Lumber - Life Span
    Floating Text - Lumber - Velocity
    Floating Text - Mana Burn - Text Color
    Floating Text - Mana Burn - Fade Point
    Floating Text - Mana Burn - Font Size
    Floating Text - Mana Burn - Life Span
    Floating Text - Mana Burn - Velocity
    Floating Text - Attack Miss - Text Color
    Floating Text - Attack Miss - Fade Point
    Floating Text - Attack Miss - Font Size
    Floating Text - Attack Miss - Life Span
    Floating Text - Attack Miss - Velocity
    Floating Text - Shadow Strike - Text Color
    Floating Text - Shadow Strike - Fade Point
    Floating Text - Shadow Strike - Font Size
    Floating Text - Shadow Strike - Life Span
    Floating Text - Shadow Strike - Velocity
    Minimap Signal - Attacked Signal Color
    Minimap Signal - Completed Signal Color
    Minimap Signal - Waypoint Signal Color
    Minimap Signal - Suggested Signal Color
    Font Size - Inventory Title
    Font Size - Icon Corner Number
    Font Size - Chat Input Font Size
    Font Size - Leaderboard And Multiboard
    Font Size - Life And Mana
    Font Size - Score Screen - Large Font
    Font Size - Score Screen - Normal Font
    Font Size - Score Screen - Player Name
    Font Size - Toolbar - Cost
    Font Size - Toolbar - Description
    Font Size - Toolbar - Name
    Font Size - Floating Window - Description
    Font Size - Floating Window - Name
    Font Size - Chat Message
    Font Size - Game Message
    Font Size - Upkeep Message
    Font Size - Trigger Message
  • Allows easily add almost any systems in GUI interface.
  • Jass Runtime Debug
    Every time you launch wc3 1.26-1.27 via YDWE in any way, the game will report some errors that are usually not detected when saving the map.
    For example:
    [Operation Limit]

    [An attempt to use a variable that does not yet have any (even null) value]

    You will find not only bugs of your map during testing, but also bugs from other maps that you decide to play by launching wc3 through the YDWE (Launch Warcraft 3) config menu. This also works when watching replays, or if the map was slk optimized.
    When a bug is found, a windows window will be created with a description of the error and a pointer to the name of the function in which the error occurred.
    If you close this window, your wc3 will also close, be careful.
    As a rule, the discovery of such bugs means that all subsequent actions in this function, starting from the place where the bug is located, simply will not work, the function will end here.
  • Boost Preprocessor
    More information here
    You can use some directives like: #define #endif #else #if #ifdef #ifndef #include /etc
    #define is a macros, example of using: use this anywhere in code #define print(s) call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 10, s)
    Now you can use print("any text") for fast debug message to all players in 10 seconds, even without using "call"
    Green part will convert into red part after map saving.
    Some other examples for using:

    #define Skill_Invul 'Avul' skill id
    #define Order_Move 851986 order id
    #define Hash_Dmg_Taken 10 hashtable key
    Also you can make constructions like this:
    JASS:
    // This is just my defines
    #define Max_Players 9
    #define print(s) call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 10, s)
    function AfterStart takes nothing returns nothing
        local integer i = 0
        local integer count = 0
        #ifdef TestMode
            globals
                integer Control = 0
                integer GTU = 0
                integer FogTestInt = 0
                fogmodifier FogTest
                trigger TriggerSelectUnit = CreateTrigger()
                unit SelectedUnit = null
                group TestUnits = CreateGroup()
            endglobals
            call TriggerRegisterPlayerUnitEvent(TriggerSelectUnit, P[0], EVENT_PLAYER_UNIT_SELECTED, null)
            call TriggerAddAction(TriggerSelectUnit, function SelectUnitAct)
            set FogTest = CreateFogModifierRect(P[0], FOG_OF_WAR_VISIBLE, bj_mapInitialPlayableArea, true, false)
            call FogModifierStart(FogTest)
            set FogTestInt = 1
            call InitTrig_Select()
            call GroupEnumUnitsInRect(TestUnits, gg_rct_All_Heroes, function TestUnits_Filter)
            print("Test Mode")
        #else
            // Check solo game
            loop
                exitwhen i > Max_Players
                if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(Player(i)) == MAP_CONTROL_USER then
                    set count = count + 1
                endif
                set i = i + 1
            endloop
            if count < 2 then
                set i = 0
                loop
                    exitwhen i > Max_Players
                    call CustomDefeatBJ(Player(i), "No solo game")
                    set i = i + 1
                endloop
            endif
        #endif
    endfunction
    If you have #define TestMode in your code, will created some test feathures, but if not, instead of test stuff will created classic condition for RPG - no solo game.
    For #if need red value, like "#define TestMode 1" but for #ifdef #ifndef - no.
    Also you can import your code from external files with using #include
    Exapmle: #include "C:\Users\user\Desktop\Jass for vs\Glory\Events\Chat Event.j"
    All directives will work for code inside YDWE and from import files
    Current best way to work with code outside of YDWE is vscode plugin
  • Lua Preprocessor
    More information here
    You can not only create objects but also perform various operations with future jass-code, but this does not work in game runtime, only before map save.


    You can create and change objects from object editor by using lua code.
    Start block: <?
    End block: ?>
    Example:
    JASS:
    <?
        local slk = require 'slk'
        local o = slk.ability.AIbk:new('PA00')
        o.DataA1 = 9999999.0
        o.DataB1 = 1.0
        o.Rng1 = 9999999.0
        o.Hotkey = "B"
        --o.Buttonpos_1 = 3
        --o.Buttonpos_2 = 1
        o.Cool1 = 0.0
        o.Name = 'YDWE - Test Blink'
    ?>
    This code will create skill based on 'AIbk' with new rawcode 'PA00'
    This is a blink with 9999999.0 range and 0.0 sec cd.
    All parameters taked from object editor fields with ctrl + D
    Changed parameters will updating/rewrite after map save.
    "ability" can be changed to unit/etc.
    This is a very good way to easy changing stats for balancing units/etc.
    Also, without lags with editing some fields/creating new objects in object editor.
    When you specify a new ravcode for units, depending on the register first case, will created hero or normal unit.
    local o = slk.unit.Hpal:new('pA06') = unit based on paladin
    local o = slk.unit.Hpal:new('PA06') = hero based on paladn
    This way you can quickly copy, for example, the appearance and voice of a unit in order to make it a hero.
    When converting a hero into a unit and vice versa, unnecessary fields from the object editor will be deleted, that is, you will not be able to make a hero without basic stats, etc.
    Here you can also use #define to make reading/writing more easier
    JASS:
    #define _Lua_Base local slk = require 'slk'
    #define _Lua_Unit_Damage o.dmgplus1
    #define _Lua_Unit_Name o.Name
    <?
        _Lua_Base
        local o = slk.unit.hfoo:new('PU00')
        _Lua_Unit_Damage = 999
        _Lua_Unit_Name = 'YDWE - Test Footman'
    ?>
  • Can use functions from Reforged
    You can not:
    • Use any reforged objects from object editor (new abilities/etc).
    • Use reforged Lua as main programming language, only Jass.
    • Edit map with hd models mode.
    • Add more player slots than 12. But you can use additional slots from Reforged through functions, for example to give a unit to computer player.
    • What are you getting:

    - Taking advantage of all the other benefits of YDWE:
    • Advanced GUI
      • Additional functions from jass.
      • Core-YDWE functions like (local variables, hashtable analugues, automatic local timers/triggers, etc.
      • Advanced GUI features (you can insert Jass code anywhere in gui function/etc).
      • Embedded systems with automatic creation of the necessary objects (Damage engine/Custom Stats System/etc)
      • Literally all functions from Reforged, even those that were not added to reforged as gui (frames/etc).
    • Bullit-in slk-optimization.
    • BJ functions optimization.
    • Anti leak optimization.
    • Boost preprocessor.
    • Pseudo lua.
    • All Jass functions are highlighted by TESH.
    - Map remains in compatibility mode based on version 1.26 but can use functions from reforged.
    This means that you can transfer map to any editor without problems. Unlike reforged editor, which binds the map to new (reforged) versions.
    You can also use any old programs without problems, for example w3x2lni or other slk optimizers.
[About PK edition]
This is more smoothest version compared to the classic YDWE.
PK edition aims to optimize and reveal full, or atleast more YDWE potential.
I tried to reduce gap between GUI and JASS users, by adding new GUI functions/capabilities, as well by optimization of final code and remove leaks.
JASS is still the best method for create map, however situation now looks like this: [JASS] > [YDWE PK GUI] > [YDWE GUI] > [GUI]
Even just re-save map in YDWE PK edition will make your map more optimized than after JNGP or other editor with default GUI

Discord server

[Difference between YDWE 1.32.15 En 1.1 and YDWE PK Edition 1.0]
  • YDWE now insert into the map only those additional functions/variables/other stuff, that you use.
  • Removed DZAPI and JAPI functions
  • Improved GUI translation
  • Returned and translated additional game constants (like Critical Strike tag text duration/color/etc)
  • Fixed missing we strings
  • Removed all languages exept English
  • Removed/changed a lot of functions and systems from classic YDWE.
Some functions will return in future.
  • Some functions has been marked as [Not Recomended]
  • Added preprocessor keywords for TESH: #define,#ifdef,#ifndef,#elif,#include
  • Fixed bj optimization and bj anti-leak optimization bugs
  • Removed all old and added new [Demo Maps] to demonstrate GUI functions, and preprocessor commands/pseudo lua
  • Added option to supporting reforged functions, what does it mean:
You can save a map that uses functions from reforged.
However, you cannot test map using YDWE, you will have to do it manually via wc3 reforged.
Also, at the moment in YDWE no reforged GUI functions and JASS highlighted functions in TESH.
Also, map will be saved as classic 1.26, this means that objects from object editor will be from version 1.26.
But you get the opportunity to make a map using reforged functions as well as YDWE functionality such as its own functions and systems, as well as preprocessor and pseudo-lua commands, which is very important if you can understand this.

New GUI functions:
  • Create Special Effect (XY) [R]
  • Create Spell Effect By Id (XY) [R]
  • Create Spell Effect By Id (Location)
  • Create Spell Effect By Id (Unit) [R]
  • Hashtable save and load by code/integer/string
  • Get Distance Between (units/items/destructables/locations/rects/coordinates)
  • Get Angle Between (units/items/destructables/locations/rects/coordinates)
New systems:
  • Debuff Duration System (by Enemy1PK)
  • Activate Test Commands (by Enemy1PK)
  • Damage Engine (by Bribe)
[YDWE PK Edition 1.1]
  • DDS:
    Fixed bug with UnitAlive function.
    Added abilities for immunity to debuffs.
    Added test ability with clear all debuffs effect
  • Minor changes config description about map saving as 1.26/1.36
[YDWE PK Edition 1.2]
  • Added missing text of some YDWE trigger errors
[YDWE PK Edition 1.3]
  • Fixed a bug when some object parameters in the object editor were not displayed (like skill tech/sounds/text/stats)
  • Added some missing text (like description when open map with unknown GUI for YDWE
[YDWE PK Edition 1.4]
  • Added preprocessor keywords for TESH: #undef
  • Deleted old TESH functions and added new
  • Changed visual color for GUI categories [Not Recomended] / [Unknown UI] / Custom Code
  • Added new GUI category [Has Better Analogues]
  • GUI categories [Not Recommended] and [Has Better Analogues] is sorted to the bottom
  • Added "Null" GUI presets for (Timer/Region/Location/Fogmodifier/Ubersplat/Group/Trigger/Quest/Player Group/Player/Leaderboard/Image/Hashtable/Multiboard/Unit Pool/Item Pool/Dialog/Text Tag/Lightning/Effect/Timer Dialog/Multiboard Item/Trackable/Quest Item/Terrain Deformation/Weather Effect/Button)
  • GUI Function Get Angle Between [PK] added to degree category same as real
  • Fixed bugs in [Systems] - Custom Stats System
  • Fixed bugs in [Systems] - Test Commands Activate
  • New Demo Map - How avoid dialog problem
  • New System: Additional Item Slots (By Enemy1PK)

Added defines as default:
  • #define print(s) call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 10, s)
  • #define prints(s, t) call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, t, s)
  • #define break exitwhen true
Also added in TESH

Added new multi-functional functions:
  • Unit Add/Remove Ability
  • Unit Add/Remove Category
  • Set Unit X/Y
These functions do not require additional functions like bj
They use native functions depending on your choice
Old functions marked as [Has Better Analogues]

Added new GUI functions which now set varriables like "last created unit" for replace this functions:
  • Create Special Effect (XY) [R]
  • Create Unit (Location)
  • Create Unit (XY)
  • Create Item (XY)
Old functions marked as [Has Better Analogues]

New GUI functions:
Actions
  • Timer Remove (unit/effect/text tag/lighting/destructable/item)
  • End Game
  • Create Lightning Effect (XY)
  • Create Lightning Effect (XYZ)
  • Create Destructible (XY)
  • Create Dead Destructible (XY)
  • Create Text Tag (XY)
Calls
  • Create Lightning Effect (Location)
  • Create Item (Location)
  • Create Destructable (XY)
  • Create Destructable (Location)
  • Create DeadDestructable (XY)
  • Create DeadDestructable (Location)
  • Have Saved Integer By Code
  • Have Saved Real By Code
  • Have Saved String By Code
  • Have Saved Boolean By Code
  • Have Saved Handle By Code
  • Get Destructable Type Id
  • Get Player By Player Id
[YDWE PK Edition 1.5]
  • Fixed conflicts between core YDWE systems and Reforged mode.
  • Literally all functions from Reforged added to GUI, even those that are not in the Reforged world editor in GUI form.
    • All new types for variables and other related things have also been added.
    • If you don’t see functions for creating objects (for example CreateFrame), then they are located not in “Actions” but in “Calls”
    • To use you need to create a variable and then set it as "CreateFrame/etc"
    • This is done specifically because some native functions have no bj analogues which can set global varriables like "last created unit".
    • Also note that new types currently cannot be used for core YDWE functions like [Unbelievable Local Variable].
  • The [R] mark has been removed from all old functions/constants.
    • Now the [R] mark means functions that are only available for Reforged.
  • YDWE PK config option "Allow Reforged Functions" Now adds Reforged GUI Functions, adds all Reforged functions in TESH (Jass syntax highlighting) and allows you to run the map for testing through Warcraft 3 reforged. Requires restarting YDWE PK.
    • Because some names are too long, the following constants are placed in TESH under abbreviated names.
    • You can use both short and long versions in your code, however TESH will only highlight the short versions.
    • List:
    • Short Name [ABILITY_RLF_MANA_REGEN_BONUS_AS_FRACTION_OFNORMAL] Original Name [ABILITY_RLF_MANA_REGENERATION_BONUS_AS_FRACTION_OF_NORMAL]
    • Short Name [UNIT_WEAPON_RF_ATTACK_AREA_OF_EFFECT_MEDIUM_DAMAG] Original Name [UNIT_WEAPON_RF_ATTACK_AREA_OF_EFFECT_MEDIUM_DAMAGE]
  • Launching Warcraft 3 from the config menu via the "Lauch Warcraft 3" button will now launch the Reforged version if the appropriate mode is selected
  • Added file "ReforgedPath.txt"
    • If you are going to test the map in Reforged mode, you need to specify the path to Warcraft III.exe in it.
    • In the future I plan to add the path to Warcraft 3 Reforged to the config menu.
  • Added "null" GUI preset for String (because "empty string" and "null" are not the same thing)
  • Added GUI preset JASS_MAX_ARRAY_SIZE for integer.
  • Fixed leak in reforged function "CreateBuildCommandButtonEffectBJ"
  • 3 Reforged bj functions has been optimized.
  • Added hidden extra icons and models. 112 icons/130 models. In fact, this is a fix for an error that was made during translation; this stuff was originally supposed to be in YDWE
  • Changed GUI functions:
    • [Unbelievable] Local Timer - Clear. Added "PauseTimer" before "DestroyTimer"
    • As some people have noticed, if you don't pause the timer before destroying, sometimes bugs can happen.
    • [Systems] Activate Test Commads - Added commands:
    • -ci Create item by rawcode
    • -cu Create unit by rawcode
    • -aa Add ability by rawcode
    • -ra Remove ability by rawcode
  • Added Saves counter on World Editor screen. Explanation:
    • All editors created on the basis of World Editor crash after several saves, which is why you lose the progress of the last save.
    • The number of possible saves differs from map to map and depends on its "size" (objects, triggers, etc)
    • This counter will help you understand when it is time to restart YDWE PK.
[YDWE PK Edition 1.5.1]
  • Fixed bug with map testing in Reforged mode.
  • YDWE PK on startup now will create empty map.
  • Define changed name: break > breakJassLoop
  • Fixed some gui functions not from "Reforged" which still used the [R] flag.
  • Gui Function "get frame handle id" now available only in Reforged mode.
  • Changed GUI functions:
- [Systems] Custom stats system:
- Added boolean call "Custom Stat System - Last Stat Change Was Successful"
- Added integer call "Custom Stat System - Get Bonus Limit"
- System has been rewritten.
- For "clear" functions has been added boolean parameter "removeAbilities" which determines whether abilities need to be removed from unit or just cleared the hash table.
(If you remove a unit from the game, it will lose all abilities in any case, for this you do not need to force the cleanup function to recalculate the parameters once again)
- Fixed bug when stats were calculated incorrectly when using negative values. At the moment this is the only existing version of CSS that correctly counts negative and positive stats.
- No longer creates abilities that are greater than the limit.
- New stats limits:
Attack speed: -8.192 +8.191
Sight Range: -8.192 +8.191
Attack: -1.073.741.824 +1.073.741.823
Armor: -8.388.608 +8.388.607
Str: -524.288 +8.388.607
Int: -524.288 +8.388.607
Agi: -524.288 +8.388.607
Mana regen: -4.194.304 +4.194.303
Health regen: -8.388.608 +33.554.431
Health max: -8.388.608 +67.108.863
Mana max: -8.388.608 +67.108.863
This is the maximum limit for wc3 to avoid bugs with stats.

[YDWE PK Edition 1.6]

  • Fixes:
    • Fixed another bug with map test from YDWE PK while Reforged mode. (was specified Incorrect path to YDWE PK directory)
    • Gui function [Activate Test Commands] Added crit-safe mechanism for cases when the specified player id is lower than 1
    • Tesh: Fixed wrong parameters with Custom Stats System functions
  • System "Additional Item Slots" max bags amount 10 > 100
  • For GUI call "Triggered Event Is [YDWE]" added missing Reforged events.
  • For GUI functions with coordinates like "Distance Between" "Angle Between" added new presets:
    • Spell Target
    • Order Point
    • Portal Destination
    • Camera Target
    • Camera Eye
It's more convenient and faster than specify XY coordinates each time.
  • Added new GUI Systems:
    • Movement System
      • Designed for smooth movement of units (Like Mirana's jump from Dota)
      • This is not just a set of presets like functions from the old YDWE, this system is more like a set of tools to implement as many different user needs as possible.
    • Save System
      • This is a save/load system that uses a loading code which is created in the game folder and that must be entered into the chat.
      • Works on any version of warcraft 3
      • Parameters:
        • Can save only integer values
        • Requires manually adding each item and unit to the save list
        • Up to 8192 different items and 8192 units can be added to the save list
        • If length of the code is greater than the limit for entering into the chat, creates additional codes
        • Supports up to 5 total sub-systems
          • For example, u can use system #1 to save hero/gold/wood/whatever else. And use an additional system #2 for saving the player achievements/unlocked heroes/rank/etc.
          • You'll essentially be using the same system, but you can give them different alphabets, which will make them different and the code from system #1 won't work on system #2.
        • Max length of saved value is 9 (example: 999999999)
        • Max saved values for each sub-system: 999
        • Up to 30 additional codes
        • Adding new parameters to save does not invalidate old codes
          • You must use the same order when saving and loading values
          • You can load new codes into old versions of map and vice versa
  • Added new GUI functions:
    • Presets:
      • [Systems] Move System - Move Unit Reached Final Point
      • [Systems] Move System - Get Last Unit Ended Movement
      • [Systems] Move System - Get Last Detected Unit
      • [Systems] Move System - Get Last Unit Which Detect
      • [Systems] Move System - Get Last Unit Proc Timer Period
      • [Systems] Save System - Event System Number
      • [Systems] Save System - Total Save Codes Count
      • [Systems] Save System - Event Player
    • Actions:
      • [Game] Preload Gen Clear
      • [Game] Preload Gen Start
      • [Game] Preload Gen End
      • [Game] Preload Refresh
      • [Game] Preload Start
      • [Game] Preload End Ex
      • [Item] Add Ability To Item
      • [Unit] Fly Enable
      • [Systems] Additional Item Slots - Get Current Bag Number
      • [Systems] Move System - Range
      • [Systems] Move System - Target
      • [Systems] Move System - Homing
      • [Systems] Move System - Stop
      • [Systems] Move System - Set Unit Homing Target
      • [Systems] Move System - Set Unit Start X
      • [Systems] Move System - Set Unit Start Y
      • [Systems] Move System - Set Unit Final X
      • [Systems] Move System - Set Unit Final Y
      • [Systems] Move System - Set Unit Move Speed
      • [Systems] Move System - Set Unit Timer Period
      • [Systems] Save System - Init System
      • [Systems] Save System - Add Unit Type To Save List
      • [Systems] Save System - Add Item Type To Save List
      • [Systems] Save System - Add Ability Type To Save List
      • [Systems] Save System - Save Type of Unit
      • [Systems] Save System - Save Type of Item
      • [Systems] Save System - Save Type of Ability
      • [Systems] Save System - Save Value
      • [Systems] Save System - Set Errors Text
      • [Systems] Save System - Start Saving
      • [Systems] Save System - Start Loading
    • Calls:
      • Remove Color Codes
      • [Systems] Is XY Walkable
      • [Systems] Move System - Is Unit In Movement
      • [Systems] Move System - Get Unit Homing Target
      • [Systems] Move System - Get Move Type From Unit
      • [Systems] Move System - Get Unit Start X
      • [Systems] Move System - Get Unit Start Y
      • [Systems] Move System - Get Unit Final X
      • [Systems] Move System - Get Unit Final Y
      • [Systems] Move System - Get Unit Move Speed
      • [Systems] Move System - Get Unit Timer Period
      • [Systems] Save System - Load Unit Type
      • [Systems] Save System - Load Item Type
      • [Systems] Save System - Load Ability Type
      • [Systems] Save System - Load Value
      • [Systems] Save System - Get Save Code
    • Events:
      • [Systems] Move System - Any Unit End Movement
      • [Systems] Move System - Moving Unit Detect Unit
      • [Systems] Move System - Timer Period Proc
      • [Systems] Save System - Save 1
      • [Systems] Save System - Save 2
      • [Systems] Save System - Save 3
      • [Systems] Save System - Save 4
      • [Systems] Save System - Save 5
      • [Systems] Save System - Load 1
      • [Systems] Save System - Load 2
      • [Systems] Save System - Load 3
      • [Systems] Save System - Load 4
      • [Systems] Save System - Load 5
      • [Systems] Save System - Successful Save 1
      • [Systems] Save System - Successful Save 2
      • [Systems] Save System - Successful Save 3
      • [Systems] Save System - Successful Save 4
      • [Systems] Save System - Successful Save 5
  • Added new GUI demo maps:
    • Add Ability To Item
    • Movement System
    • Save System
  • Added new GUI lessons:
    • Get Local Player
[YDWE PK Edition 1.7]
  • Plugin [Jass Runtime Debug] error text translated into English
  • Fixed memory leak of reading and writing objects
  • Fixed compatibility with wrust
  • Fixed Blizzard functions "TriggerRegisterEnterRectSimple" and "TriggerRegisterLeaveRectSimple" Which incorrectly affected coordinate checking such functions as: RectContainsUnit / -RectContainsCoords / etc
    • It looks like this: Event "unit enters Rect" If you enter from the left or from below, the functions that determine that the unit is inside the Rect assume that you are already inside, but if you enter from above or from the right, they assume that you are not yet inside.
      In fact, the problem is in native function "RegionAddRect" which Makes the Region larger than the initially specified Rect, to the right and top sides (Max X, Max Y)
      To these two problematic functions, added solution where Region becomes the same size as Rect.
  • [Unbelievable] "Local Varriables" and "Custom Values" now supports setting the value to "null"
  • GUI function "Pick Every Unit In Unit Group And Do Multiple Actions" no longer creates special YDWE local variables that are not needed for this function
  • GUI function "Exit From Loop" no longer inserts the stub function "DoNothing" before itself
  • Added GUI triggers category [Will Be Removed]
    • Which will contain old YDWE functions for which analogues have appeared. These functions will be removed in the following patches, so if you use them, you should replace them before switching to new versions of YDWE so that the map opens and save without errors.
      Added file "Will Be Removed.txt" in main ydwe folder, it contains the names of jass functions that will be removed in next patches.
  • Now almost all GUI functions which create objects like "Create Unit" do not use bj functions for set bj variables like "bj_lastCreatedUnit"
    • Instead, they immediately set the variable like this: set bj_lastCreatedUnit = CreateUnit()
      Old functions marked as [Will Be Removed]
  • System [Damage Engine] changes:
    • Function "Damage Engine - Damage Target" boolean parameter "anti-recursion" has been changed.
      Recursion is when you decide to deal new damage in a damage event, resulting in an infinite loop (unit takes damage - deal damage - unit takes damage)
      Classic Damage Engine allowed only disable damage event for the next damage dealt.
      Now damage event is not disabled for the next damage, but next damage cant launch another next damage in damage event, and despite the fact that next damage will work before old damage completely completes its actions, old damage parameters (damage type/damage) are now saved.
      Which allows for correct damage calculations and damage types for the first and second damage dealt.
  • Some names of GUI functions that were the same or similar have been slightly changed
  • Added new GUI functions:
    • Events
      • [Unit] Unit Enters or Leaves Rect
        Each time you use the "Enters/Leaves. Rect" event, you create a new Region for which the specified Rect will be used
        So if you need both events for the same Rect, you can use this function and save on creating one Region. It is also faster than specifying the same region twice
      • [Unit] Any Unit Moves Item In Inventory
    • Actions:
      • [Unbelievable] Select All Units In Rect
    • Calls:
      • Create Sound
      • Create Sound Filename With Label
      • Create Sound From Label
    • Presets:
      • [Integer] Item Moved In Inventory - Start Slot Number
      • [Integer] Item Moved In Inventory - Target Slot Number
      • [Item] Last Item Moved In The Inventory
  • Added new GUI lessons:
    • Stack & Unstack Items
  • Demo map "Damage Engine" has been updated
  • Added null gui presets:
    • No Fog State
  • Added categories for conditions
    • Sound
    • Item Pool
    • Unit Pool
    • Player Group
    • Special Effect
    • Timer Dialog
    • Unit Group
    • Leaderboard
    • Multiboard
    • Text Tag
    • Lightning
    • Image
    • Fog State
    • For Modifier
    • Quest
    • Quest Item
I think it's cringe if you can't even determine "group == null" or not



  1. Items created in JNGP have "EditorSuffix" parameter, which is not in YDWE and Reforged editor.
    Therefore, when using pseudo lua to create objects, an error will be thrown until you delete the object and recreate it in YDWE.
  2. Sometimes some icons stop displaying until YDWE is restarted.
  3. Under some conditions the built-in slk-optimization may not work.
  4. Under some conditions, a message about creating/modifying/deleting objects via pseudo lua may appear every time the map is saved.
Contents

YDWE PK Edition (Binary)

Level 10
Joined
Jan 26, 2019
Messages
90
Thanks to one person, were able to compile the original YDWE and gain access to all the functionality and some changes from the old author that we did not have.

[YDWE PK Edition 1.7]
  • Plugin [Jass Runtime Debug] error text translated into English
  • Fixed memory leak of reading and writing objects
  • Fixed compatibility with wurst
  • Fixed Blizzard functions "TriggerRegisterEnterRectSimple" and "TriggerRegisterLeaveRectSimple" Which incorrectly affected coordinate checking such functions as: RectContainsUnit / -RectContainsCoords / etc
    • It looks like this: Event "unit enters Rect" If you enter from the left or from below, the functions that determine that the unit is inside the Rect assume that you are already inside, but if you enter from above or from the right, they assume that you are not yet inside.
      In fact, the problem is in native function "RegionAddRect" which Makes the Region larger than the initially specified Rect, to the right and top sides (Max X, Max Y)
      To these two problematic functions, added solution where Region becomes the same size as Rect.
  • [Unbelievable] "Local Varriables" and "Custom Values" now supports setting the value to "null"
  • GUI function "Pick Every Unit In Unit Group And Do Multiple Actions" no longer creates special YDWE local variables that are not needed for this function
  • GUI function "Exit From Loop" no longer inserts the stub function "DoNothing" before itself
  • Added GUI triggers category [Will Be Removed]
    • Which will contain old YDWE functions for which analogues have appeared. These functions will be removed in the following patches, so if you use them, you should replace them before switching to new versions of YDWE so that the map opens and save without errors.
      Added file "Will Be Removed.txt" in main ydwe folder, it contains the names of jass functions that will be removed in next patches.
  • Now almost all GUI functions which create objects like "Create Unit" do not use bj functions for set bj variables like "bj_lastCreatedUnit"
    • Instead, they immediately set the variable like this: set bj_lastCreatedUnit = CreateUnit()
      Old functions marked as [Will Be Removed]
  • System [Damage Engine] changes:
    • Function "Damage Engine - Damage Target" boolean parameter "anti-recursion" has been changed.
      Recursion is when you decide to deal new damage in a damage event, resulting in an infinite loop (unit takes damage - deal damage - unit takes damage)
      Classic Damage Engine allowed only disable damage event for the next damage dealt.
      Now damage event is not disabled for the next damage, but next damage cant launch another next damage in damage event, and despite the fact that next damage will work before old damage completely completes its actions, old damage parameters (damage type/damage) are now saved.
      Which allows for correct damage calculations and damage types for the first and second damage dealt.
  • Some names of GUI functions that were the same or similar have been slightly changed
  • Added new GUI functions:
    • Events
      • [Unit] Unit Enters or Leaves Rect
        Each time you use the "Enters/Leaves. Rect" event, you create a new Region for which the specified Rect will be used
        So if you need both events for the same Rect, you can use this function and save on creating one Region. It is also faster than specifying the same region twice
      • [Unit] Any Unit Moves Item In Inventory
    • Actions:
      • [Unbelievable] Select All Units In Rect
    • Calls:
      • Create Sound
      • Create Sound Filename With Label
      • Create Sound From Label
    • Presets:
      • [Integer] Item Moved In Inventory - Start Slot Number
      • [Integer] Item Moved In Inventory - Target Slot Number
      • [Item] Last Item Moved In The Inventory
  • Added new GUI lessons:
    • Stack & Unstack Items
  • Demo map "Damage Engine" has been updated
  • Added null gui presets:
    • No Fog State
  • Added categories for conditions
    • Sound
    • Item Pool
    • Unit Pool
    • Player Group
    • Special Effect
    • Timer Dialog
    • Unit Group
    • Leaderboard
    • Multiboard
    • Text Tag
    • Lightning
    • Image
    • Fog State
    • For Modifier
    • Quest
    • Quest Item
I think it's cringe if you can't even determine "group == null" or not
 
Level 10
Joined
Jan 26, 2019
Messages
90
Is it normal that when saving a map with YDWE 3 YDWE windows open? or is it just me?
This is a bug that I encountered once, unfortunately I don’t remember what the reason was.
Perhaps the fact is that you renamed the main YDWE folder or YDWE.exe
Anyway u can try new version 1.7
Trying the test map ''Damage engine'' I could notice that the critical strike condition has no effect, is there any error there? or as it should go in the condition ''(Get Event Damage Type) not equal to Crit''
Damage changed to x2. but missing setting the damage type as "Crit" itself. Updated.
When reviewing new events I saw one that makes reference to the trackable, is there a Gui action that allows you to create a trackable? or should I create it as in Jass?
If the necessary functions for creating objects are not in "Actions", they can still be in "Calls"
You can create such objects by setting global/local variables as "Create Object"
trackable.png
This is due to the fact that for Jass functions that are not on the default GUI there are no variables like "bj_lastCreatedUnit"
Accordingly, if you create an object without setting it to a variable, you will not be able to reference it in any way.
This can be changed, but it makes too little sense to waste time.
If the functions you need are not available anywhere, you can report this.
 
Level 11
Joined
Mar 17, 2022
Messages
24
This is a bug that I encountered once, unfortunately I don’t remember what the reason was.
Perhaps the fact is that you renamed the main YDWE folder or YDWE.exe
Anyway u can try new version 1.7

Damage changed to x2. but missing setting the damage type as "Crit" itself. Updated.

If the necessary functions for creating objects are not in "Actions", they can still be in "Calls"
You can create such objects by setting global/local variables as "Create Object"
View attachment 512803
This is due to the fact that for Jass functions that are not on the default GUI there are no variables like "bj_lastCreatedUnit"
Accordingly, if you create an object without setting it to a variable, you will not be able to reference it in any way.
This can be changed, but it makes too little sense to waste time.
If the functions you need are not available anywhere, you can report this.
Thank you for your response, I would like to continue using your editor, although some unknown errors still appear.
  • The 3 tabs still open when saving, I extracted YDWE as is without modifying anything, but that's the least of it.
  • The actions that refer to the movement system does not work, the map is saved normally but I can not test it or open it in the game until I remove the use of the system, I did as it is in the demo even copied it and nothing. Or is it only available for reforged?
 
Level 10
Joined
Jan 26, 2019
Messages
90
The actions that refer to the movement system does not work, the map is saved normally but I can not test it or open it in the game until I remove the use of the system, I did as it is in the demo even copied it and nothing. Or is it only available for reforged?
I was testing something and forgot to return it. Currently you should get an error even when you try to save a map with functions from this system.
Reuploaded with fix.
The 3 tabs still open when saving, I extracted YDWE as is without modifying anything, but that's the least of it.
Need a video and more information.
Version wc3, windows/path into wc3 and ydwe/settings from config/everything that can be related to wc3.
And send files from "log" folder. After bug appear
war3.log
ydwe.log
 
Last edited:
Level 10
Joined
Jan 26, 2019
Messages
90
In version 1.7 I already fixed the different size for Rect and Region, but I found a new problem: sometimes If you move a unit using SetUnit X/Y via a Rect, it will trigger the event but the Unit will not be in that Rect at that moment.
In the end it turned out that the most reliable way to determine which Rect triggered the Enter/Leave event is function "GetTriggeredRegion"
YDWE has this function in gui, but it is still too difficult for gui users to use regions, so events unit enter/leave Rect now save Region in Rect handle id. Also added gui function "Get Region From Rect"

This is just a solution to a small problem, if it bothers you, you can download these files and move them to the YDWE folder with replacement.
 

Attachments

  • RectFromRegion.rar
    1.7 MB · Views: 2
Level 4
Joined
May 14, 2007
Messages
36
I tried to open my map saved with 1.31 World Editor but it gave me "Level info data missing or invalid". So, I assume this tool doesn't work with 1.31 and beyond? Honestly, I could see some people switching from Reforged to this if their map that were already saved with Reforged editor work with this tool.
 
Level 34
Joined
May 14, 2021
Messages
1,597
I tried to open my map saved with 1.31 World Editor but it gave me "Level info data missing or invalid". So, I assume this tool doesn't work with 1.31 and beyond? Honestly, I could see some people switching from Reforged to this if their map that were already saved with Reforged editor work with this tool.
If you saved your map using the vanilla WE that comes with Reforged copy, you can't. That's why you should read this notice before using this WE:
Screenshot 2025-03-20 160443.png
 
Top