XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
влад10011

offline
Опыт: 2,337
Активность:
Manager of color functions(подсветка пользовательских функций в JNGP)
Недавно я узнал, что можно подсвечивать свой список функций(засунув его в папку includes), но меня не устроило то, что компилятор читает только синтаксис(объявления функции) на jass2 и выпадают в списке функций, даже их нет в карте.
И я решил сделать "компилятор" который позволяет парсить подсвечиваемые функции прямо из кода, составляя отдельно скомпилированный список функций в файл.
С помощью меню, которое вы увидите после установки этой программы, вы можете:
  1. Установить свой оператор для подсветки функций(по умолчанию colored)
  2. Разумеется выбрать имя создаваемого файла
  3. С помощью программы "Function_List_Manager" вы можете с лёгкостью устанавливать\удалять списки функций(похоже на установку аддона на скайрим)
Как оно работает:
  1. Вы обводите подсвечиваемую функцию, например:
((код jass
Если оператор colored
!colored
void DoNothing(int i) {
DoNothing(i+1)
}
!endcolored
))
  1. Если в меню стоит галочка на флаге Enable, после сохранения игры компилятор создаст файл списка подсвечиваемых функций в папке FunctionList.
  2. Далее вы с помощью "Function_List_Manager"(или вручную) переносите файл в папку tesh\includes\ и удаляете ненужные списки.
  3. И на конец, перезапустите JNGP(функции подгружаются в WE при загрузке).
  4. Все нужные вам функции подсвечиваются и появляются в списке функций.
Как установить:
  1. Скачиваете
  2. Кидаете всё в папку с JNGP
  3. Открываете файл wehack.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)
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
function ah_execupdate()
wehack.execprocess("adichelper\\AHupdate.exe")
end
ah_update = MenuEntry:New(ah_menu,"Check for updates now",ah_execupdate)
wehack.addmenuseparator(ah_menu)
function ah_about()
wehack.execprocess("adichelper\\adichelper.exe")
end
ah_aboutm = MenuEntry:New(ah_menu,"About AdicHelper ...",ah_about)
end
-- /cJass#1
))
Выше вставляете:
((код
have_fl=grim.exists("FunctionList.exe")
if have_fl then
if string.len(grim.getregpair(confregpath,"fl_color"))>0 then
fl_color=grim.getregpair(confregpath,"fl_color")
else
fl_color=""
end
if string.len(grim.getregpair(confregpath,"fl_filename"))>0 then
fl_filename=grim.getregpair(confregpath,"fl_filename")
else
fl_filename=""
end
fl_m=wehack.addmenu("Function_List")
fl_enable=TogMenuEntry:New(fl_m,"Enable Colored Function",nil,true)
function fl_opcolor()
fl_color=wehack.inputbox("Установите оператор для подсветки функций:","Function List","colored")
grim.setregstring(confregpath,"fl_color",fl_color)
end
fl_opcolor_m=MenuEntry:New(fl_m,"Set operator color",fl_opcolor)
function fl_Set_filename()
fl_filename=wehack.inputbox("Установите имя файла подсведки функций","Function List","functionlist")
grim.setregstring(confregpath,"fl_filename",fl_filename)
end
fl_filename_m=MenuEntry:New(fl_m,"Set name of created file",fl_Set_filename)
function fl_Function_Manager()
wehack.execprocess("Function_List_Manager.exe")
end
fl_Function_m=MenuEntry:New(fl_m,"Open Function List Manager",fl_Function_Manager)
wehack.addmenuseparator(fl_m)
end
))
Далее находим примерно такие строки:
((код
function compilemap_path(mappath)
if mappath == "" then
showfirstsavewarning()
return
end
map = wehack.openarchive(mappath,15)
wehack.extractfile("jasshelper\\common.j","scripts\\common.j")
wehack.extractfile("jasshelper\\Blizzard.j","scripts\\Blizzard.j")
wehack.extractfile("war3map.j","war3map.j")
wehack.closearchive(map)
wehack.runprocess2("repCode\\gg.exe".." war3map.j "..mappath)
-- wehack.execprocess("Defines\\SwapLog.bat "..mappath.." WayMap")
-- wehack.runprocess2("Defines\\Project2.exe")
-- wehack.runprocess2("Defines\\Project2.exe")
if cmdargs ~= "" then
local cmdtable = argsplit(cmdargs)
-- local len = table.getn(cmdtable)
-- for i = 1, len do
-- cmdtable[i] = removequotes(cmdtable[i])
-- end
-- wehack.rungrimextool(cmdtable)
grim.log("running tool on save: "..cmdargs)
wehack.runprocess(cmdargs)
cmdargs = ""
end
-- cJass#2
if have_ah and ah_enable.checked then
cmdline = "AdicHelper\\AdicHelper.exe"
if jh_debug.checked then
cmdline = cmdline .. " /dbg"
end
cmdline = cmdline .. " /mappars=\ .. mappath.."\
adicresult = wehack.runprocess2(cmdline)
if adicresult == 1 then
mapvalid = false
return
end
end

-- /cJass#2
if havejh and jh_enable.checked then
cmdline = "jasshelper\\jasshelper.exe"
if jh_debug.checked then
cmdline = cmdline .. " --debug"
end
if jh_disable.checked then
cmdline = cmdline .. " --nopreprocessor"
end
if jh_disableopt.checked then
cmdline = cmdline .. " --nooptimize"
end
cmdline = cmdline .. " jasshelper\\common.j jasshelper\\blizzard.j \ .. mappath .."\
toolresult = 0
-- if jh_fast ~= nil and jh_fast.checked then
-- toolresult = wehack.runjasshelper(jh_debug.checked, jh_disable.checked, "jasshelper\\common.j", "jasshelper\\blizzard.j", mappath, "")
-- else
toolresult = wehack.runprocess2(cmdline)
-- end
if toolresult == 0 then
-- cJass#3
if have_ah and ah_enableopt.checked then
wehack.runprocess2("AdicHelper\\AdicHelper.exe /mapoptz=\ .. mappath.."\)
end
))
Сразу после этого кода вставляете:
((код
if(fl_enable.checked) then
if(fl_color==nil) then fl_color="" end
if fl_filename~="" and fl_filename~=nil then
wehack.runprocess2("FunctionList.exe "..fl_filename.." "..fl_color)
else
wehack.runprocess2("FunctionList.exe ".."void "..fl_color)
end
end
))
))
Что хочу потом сделать:
  1. Поддержка public функций.
  2. Описание функций в любом месте кода
  3. Поддержка Define
Прикрепленные файлы
Тип файла: rar Color Function.rar (297.8 Кбайт, 2 просмотров )

Отредактировано влад10011, 22.05.2013 в 20:29.
Старый 15.05.2013, 20:23
youtube
сктыщь
offline
Опыт: 8,025
Активность:
кат
>> смотреть сюда
текст под катом
<<
» смотреть сюда
текст под катом
Старый 15.05.2013, 20:47
влад10011

offline
Опыт: 2,337
Активность:
Ну как я вижу никому не нужно, но всё-таки:
Добавил фильтрацию мусора, добавляя только функции.
Так же подсвечивает всё что в include файлах и текстмакро
Если нужно подсветить сразу все функции в Шапке карты введите !colored
Подсветка дефайнов, описанных вне своего места(пока так)
Старый 22.05.2013, 20:33
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 15:50.