// This is not a substitute for initializing libraries,
// because you can not specify which of these
// functions will be called earlier.
//
// Also it will be called after all libs and scopes init.
callback onInit () {
printf ("Hello World!")
}
// Be called on every spells cast.
callback onUnitSpellCast () {
printf ("foo")
}
// Be called on 'AHfs' spell cast.
callback onUnitSpellCast ('AHfs') {
printf ("bar")
}
Скачать стабильную версию, использовать инсталятор, руками заменить исполняемый файл. Ругается на небольшую функцию в языке интерпритаторе, которая вводит в возможности редактора создание меню с эмуляцией radiobutton. Альтернатива - убрать связанное с этим, принципе это не критично.
+ for and forp loops
+ for loop to pick units
+ reworked locals variables processing
+ /alf flag - automaticle flush locals (without "flush locals" instruction)
+ in functions static variable
+ fixed bug with locals, declared in "static if" block
+ and more in next stable release!
Sample of code:
unit fx () {
real x, y, r
unit pal = CreateUnit (Player(0), 'Hpal', 0., 0., 0.)
for (unit u; UnitsInRange(x, y, r)) {
KillUnit (u)
}
for (unit u; UnitsInRange(x, y, r)) {
for (unit t; UnitsInRange(x, y, r)) {
KillUnit (t)
}
}
return pal
}
nothing fx () {
static int i = 0
for (int i = 0; i < 16; i++) {}
forp (int i = 0; i < 16; i++) {}
for (int i = 0; i < 16) {}
forp (int i = 0; i < 16) {}
for (int i = 0) {}
}
Also recommend to edit exehack.lua:
-- cJass#1
have_ah = grim.exists("adichelper\\adichelper.exe")
if have_ah then
ah_menu = wehack.addmenu("cJass")
ah_enable = TogMenuEntry:New(ah_menu,"Enable AdicParser",nil,true)
ah_enableopt = TogMenuEntry:New(ah_menu,"Enable AdicOptimizer",nil,true)
-- Flags
wehack.addmenuseparator(ah_menu)
ah_opt_remove = TogMenuEntry:New(ah_menu,"Remove unused code",nil,true)
ah_alf_flag = TogMenuEntry:New(ah_menu,"Locals auto flush",nil,true)
ah_igno_cjbj = TogMenuEntry:New(ah_menu,"Compile for default cj and bj",nil,true)
-- Game version switch
wehack.addmenuseparator(ah_menu)
ah_version = MenuEntryGroup:New(ah_menu,"Game version switch")
ah_ver23m = SwitchMenuEntry:New(ah_version,"Compile for game version 1.23")
ah_ver24m = SwitchMenuEntry:New(ah_version,"Compile for game version 1.24+",true)
-- Updater items
wehack.addmenuseparator(ah_menu)
if (grim.getregpair(confregpath,"First launch passed") ~= "yes") then
ah_firstlaunch = true
end
if ah_firstlaunch then
if (wehack.runprocess2("AdicHelper\\AHupdate.exe /ask") == 6) then
ah_enableupdate = true
end
grim.setregstring(confregpath,"First launch passed","yes")
if ah_enableupdate then
grim.setregstring(confregpath,"Enable AutoUpdate","on")
else
grim.setregstring(confregpath,"Enable AutoUpdate","off")
end
end
ah_enableupdate = TogMenuEntry:New(ah_menu,"Enable AutoUpdate",nil,false)
if ah_enableupdate.checked then
wehack.execprocess("adichelper\\AHupdate.exe /silent")
end
ah_update = MenuEntry:New(ah_menu,"Check for updates now", function() wehack.execprocess("adichelper\\AHupdate.exe") end)
ah_updateopt = MenuEntry:New(ah_menu,"AutoUpdate settings", function() wehack.runprocess2("adichelper\\AHupdate.exe /options") end)
-- About box
wehack.addmenuseparator(ah_menu)
ah_aboutm = MenuEntry:New(ah_menu,"About AdicHelper ...",function() wehack.execprocess("adichelper\\adichelper.exe") end)
end
-- /cJass#1
-- cJass#2
if have_ah and ah_enable.checked then
cmdline = "AdicHelper\\AdicHelper.exe"
if ah_version.checked == 1 then
cmdline = cmdline .. " /v23"
else
cmdline = cmdline .. " /v24"
end
if jh_debug.checked then
cmdline = cmdline .. " /dbg"
end
if ah_alf_flag.checked then
cmdline = cmdline .. " /alf"
end
if ah_igno_cjbj.checked then
cmdline = cmdline .. " /ibj=\"0\" /icj=\"0\""
end
cmdline = cmdline .. " /mappars=\"" .. mappath.."\""
adicresult = wehack.runprocess2(cmdline)
if adicresult == 1 then
mapvalid = false
return
end
end
-- /cJass#2
bb:Вы обсуждаете бред: null это 0 для handle, который указывает, что объекта нет; для скалярного числового типа, где 0 - вполне легальное значение использовать null совершенно бессмысленно, более того это может ломать логику кода.
Функция не рабочая - видно же что будет всегда срабатывать условие выхода из второго цикла (b == 0). Я вообще не пойму, мои посты никто не видит? Я же тут описал, как это должно быть сделано.
Я считаю dragonforce слишком переоцененной группой. При вобщем то неплохой технике, демонстрируемой на студийных работах (ходят слухи, что в живую они лажают) их музыка совершенно не интересна. Happy метал для гламурных металистов. Мне их приводили в пример, как не надо играть power и метал вообще.
cJass display syntax error because it process textmacros like #define instruction - you cannot use in textmacros or defines unclossed library or scope (and also closed, but unopened, in cJass you may use private define, so it must process scope and library before define and textmacro).
Try it:
//! textmacro itemstacking takes itemA, itemB, type
scope stack$type$ initializer I
// ...
Or it:
scope stacka initializer I
//! runtextmacro itemstacking("'desc'","'I007'")
endscope // remove endscope instruction in textmacro
function stacka___f takes nothing returns boolean
local unit mu=GetManipulatingUnit()
local integer inve=0
local item itm=null
if inve!=6 then
set itm=null
call SetItemCharges(itm,GetItemCharges(itm)+1)
else
call UnitAddItemById(mu,0x49303037)
endif
set mu=null
return false
endfunction
function stacka___Init takes nothing returns nothing
endfunction
function stackb___f takes nothing returns boolean
local unit mu=GetManipulatingUnit()
local integer inve=0
local item itm=null
if inve!=6 then
set itm=null
call SetItemCharges(itm,GetItemCharges(itm)+1)
else
call UnitAddItemById(mu,0x49303037)
endif
set mu=null
return false
endfunction
function stackb___Init takes nothing returns nothing
endfunction
As I know u can't change style of cJass syntax highlighting. Project HORUS (highlight cJass syntax in TESH) is unofficial addon to it (TESH autors miss their sources -_-), VanDamm (HORUS autor) can't find, where this style is changed.
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
Кинул багрепорт адику ;)
» WarCraft 3 / cJass - дополнение к языку JASS
Вот кстати интересный пост с фидбека
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
1.4.2.21
+ for loop to pick units
+ reworked locals variables processing
+ /alf flag - automaticle flush locals (without "flush locals" instruction)
+ in functions static variable
+ fixed bug with locals, declared in "static if" block
+ and more in next stable release!
» Музыка и Звук / RocK
» WarCraft 3 / Библиотека функций
» Музыка и Звук / RocK
» Музыка и Звук / RocK
» Музыка и Звук / RocK
» Музыка и Звук / RocK
» Музыка и Звук / Black Metal/Death Metal
» WarCraft 3 / Библиотека функций
» Музыка и Звук / RocK
» WarCraft 3 / XGM Spell Contest 3 завершён!
» WarCraft 3 / cJass - дополнение к языку JASS
local unit mu=GetManipulatingUnit()
local integer inve=0
local item itm=null
if inve!=6 then
set itm=null
call SetItemCharges(itm,GetItemCharges(itm)+1)
else
call UnitAddItemById(mu,0x49303037)
endif
set mu=null
return false
endfunction
function stacka___Init takes nothing returns nothing
endfunction
function stackb___f takes nothing returns boolean
local unit mu=GetManipulatingUnit()
local integer inve=0
local item itm=null
if inve!=6 then
set itm=null
call SetItemCharges(itm,GetItemCharges(itm)+1)
else
call UnitAddItemById(mu,0x49303037)
endif
set mu=null
return false
endfunction
function stackb___Init takes nothing returns nothing
endfunction
» WarCraft 3 / cJass - дополнение к языку JASS
» Музыка и Звук / RocK
» Музыка и Звук / RocK
» Музыка и Звук / RocK