• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • 💡 We're thrilled to announce that our upcoming texturing contest is in the works, and we're eager to hear your suggestions! Please take this opportunity to share your ideas in this theme discussion thread for the Texturing Contest #34!
  • 🏆 Hive's 7th HD Modeling Contest: Icecrown Creature is now open! The frozen wastes of Icecrown are home to some of Azeroth’s most terrifying and resilient creatures. For this contest, your challenge is to design and model a HD 3D monster that embodies the cold, undead, and sinister essence of Icecrown! 📅 Submissions close on April 13, 2025. Don't miss this opportunity to let your creativity shine! Enter now and show us your frozen masterpiece! 🔗 Click here to enter!

viable Cjass/Vjass editor

Level 5
Joined
Mar 22, 2009
Messages
172
Is there any currently functional tools to allow saving of maps that already use Cjass? I have several old maps, and can no longer get Newgenpack + Adichelper to save them in a functional state, because it just errors out, or fails to make a runnable map. Or do I just have no option but to manually translate everything?
Error is the unrecognized Pjass error, or an error related to just not having cjass and/or vjass.

Also, I can't get newgen to compile other, pre-cjass mapseven without cjass, and can't get wex to run at all. What, if anything, is the current third party editor addon currently used?

I haven't bought reforged, if that matters.

The maps do run, and open fine, but you can't save them without it breaking. So probably if I had the same kind of enviornment I had 5 or so years ago, it would probably still work, and still produce a functional map, but that was like 2 computers ago, and fresh installs of the tools aren't working.

Maybe there is a way to get the older versions?
 
Last edited:
If you're modding for the recent patches (e.g. above 1.26), I think most folks are just using the default editor for most non-scripting parts. Most of the JNGP features have been included into the latest editor (including JassHelper--you can enable it in the Trigger Editor).

But the default editor still doesn't have any syntax highlighting, so there's a big assortment of build environments that folks are using. A lot of people will dev their code in vs-code (or something similar) and then use tools to inject the code into the map (e.g. Ceres for Lua [discontinued tho], I think wurstscript has its own tool, etc.). Or you can just copy & paste.

...but that is probably not very helpful for your current issue. cJASS doesn't have much support anymore (as far as I know), so IMO your best options are:
  1. You could try cJass2Lua. I haven't personally used it but it may be a good option if you decide to translate it anyway. I also highly recommend going through this tutorial (A comprehensive guide to Mapping in Lua) if you decide to use Lua for your maps going forward. There are a lot of utility systems that take a lot of the pain away (especially since most lua typos and such get exposed at run-time rather than compile-time).
  2. ... or you could export the internal war3map.j. If your map runs, it contains the compiled JASS code. You could take that and slowly migrate it over to vJASS. It will likely be pretty ugly code, but it'd probably be faster to use that than to translate it line-by-line yourself. The main issues you'll probably run into are: (1) the triggers (stored internally in the wtg) are still going to be cJASS, and (2) getting all the globals/initializers set up properly. So I'd recommend making a copy of your map and clearing the war3map.j & copying over a blank war3map.wtg to start with. Then I'd start with copying the globals into a big globals block. And then you can migrate your code over trigger by trigger (assuming the war3map.j is somewhat intelligible).
  3. I have no clue whether Adichelper still works, but if it is just pjass that is failing, you could try using a more updated version of pjass and seeing if that gives you any better success: PJass updates
 
Level 5
Joined
Mar 22, 2009
Messages
172
//===========================================================================
// Trigger: Decal
//===========================================================================
//TESH.scrollpos=0
//TESH.alwaysfold=0
///////////////////////////////////////////////////////
/// Decal
/// Strilanc's Delayed Call Library
/// Version: 1.04
/// Last Updated: February 27, 2009
///////////////////////////////////////////////////////
/// Description:
/// - Provides an easy way to run functions after a delay.
/// Explanation:
/// - Reuses internal timers to wait out the delay.
/// - Stores information in timers' duration for attachment.
/// Usage:
/// - Use schedule(Action.function, real delay) to schedule a function with no arguments.
/// - Use schedule(Action_type.function, real delay, type arg) to schedule a function with an argument.
/// - Example: call schedule_unit(Action_unit.KillUnit, 5.0, GetTriggerUnit()) //kills triggering unit after 5.0 seconds
/// - Default available arg types: integer, boolean, real, unit, destructable, item, rect, handle
/// - If the argument type you need is not supported, you can add an 'AddType' line [see end of library].
///////////////////////////////////////////////////////
library Decal
private hashtable timerData = InitHashtable()

//! textmacro Decal_AddType takes com0, com1, type
$com0$ function interface Action takes nothing returns nothing
$com1$ function interface Action_$type$ takes $type$ arg returns nothing

private struct Ticker_$type$
$com0$ private Action action
$com1$ private Action_$type$ action
$com1$ private $type$ arg
private timer ticker

///Catches expiring tickers and runs their action
private static method stop takes nothing returns nothing
local Ticker_$type$ this = LoadInteger(timerData, 0, GetHandleId(GetExpiredTimer()))
$com0$ call .action.evaluate()
$com1$ call .action.evaluate(.arg)
$com1$ set .arg = Ticker_$type$(-1).arg //clear .arg
call .destroy()
endmethod

///Schedules a function to run in the future
$com0$ public static method start takes Action action, real dt returns nothing
$com1$ public static method start takes Action_$type$ action, real dt, $type$ arg returns nothing
local Ticker_$type$ this = Ticker_$type$.create()
if this == 0 then
call BJDebugMsg("Decal Error: Too many Tickers.")
return
endif
if .ticker == null then
set .ticker = CreateTimer()
endif
set .action = action
$com1$ set .arg = arg
call SaveInteger(timerData, 0, GetHandleId(.ticker), integer(this))
call TimerStart(.ticker, dt, false, function Ticker_$type$.stop)
endmethod
endstruct

$com0$ function schedule takes Action action, real delay returns nothing
$com1$ function schedule_$type$ takes Action_$type$ action, real delay, $type$ arg returns nothing
$com0$ call Ticker_$type$.start(action, delay)
$com1$ call Ticker_$type$.start(action, delay, arg)
endfunction
//! endtextmacro

//0 arguments
//! runtextmacro Decal_AddType("","//", "void")
//1 arguments
//! runtextmacro Decal_AddType("//","", "integer")
//! runtextmacro Decal_AddType("//","", "boolean")
//! runtextmacro Decal_AddType("//","", "real")
//! runtextmacro Decal_AddType("//","", "unit")
//! runtextmacro Decal_AddType("//","", "destructable")
//! runtextmacro Decal_AddType("//","", "item")
//! runtextmacro Decal_AddType("//","", "rect")
//! runtextmacro Decal_AddType("//","", "handle")
//! runtextmacro Decal_AddType("//","", "effect")
//! runtextmacro Decal_AddType("//","", "lightning")
//! runtextmacro Decal_AddType("//","", "trigger")
//! runtextmacro Decal_AddType("//","", "timer")
endlibrary
For the
private hashtable timerData = InitHashtable()
Expected: "type", "struct", "interface", "function", "keyword" or "scope

Not actually sure if the syntax changed, or something is running wrong,


Using Jass newgen rebuild Jass New Gen Pack - Rebuild 1.4 - WarCraft 3 / Моддинг - XGM

Pointed it at warcraft III classic folder.
only settings are enable jasshelper, debug mode, adic parser, and module compatability mode.
 
Top