Как заменить BJ-функции?
Хочу взяться за нелёгкое дело, заменить BJ-функции для всех людей на планете Земля, сколько смогу! Коли никто из профессиональных программистов до сих пор за 15 лет на самой известной игре Мира не смог сделать пользу для народа! Заодно это будет неплохой практикой в изучении jass-программирования.
Учебный материал у меня имеется, и какие-то обрывки информации можно найти в интернете. Я не буду спрашивать о каких-то конкретных BJ-функциях, и то, как их исправить, но разъясните мне, новичку, примерную структуру того, как нужно их переписывать и куда конкретно что писать? То есть как сделать это всё в виде библиотеки, чтобы можно было всё подключить одним движением для пользователя? Но на JNGP не желательно думаю, так как там могут быть баги и вирусы (а Я человек суеверный). Прошу обратить внимание что мне нужно чтобы стандартные названия остались, а "внутренняя мякоть" функций вся была переделана и оптимизирована. Как этого добиться?

Лучший ответ:
Похожие вопросы:

» ответ
вопервых ты в 1 и ту же ячейку пытаешся записать 2 значения (location и integer)
во вторых ты создаёш область по кординатам а следующей строчкой находиш эти же кординаты с помощью функций
в 3 ты сохранял точку в хэш и сразу же удалял её
и в 4 ты не инициализировал хэш
function Trig_SlayerUlt_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00V'
endfunction
function Ultaction takes nothing returns nothing
local timer st = GetExpiredTimer()
local integer sid = GetHandleId(st)
local unit su = LoadUnitHandle (udg_Hash, sid, 0)
if IsUnitType(GetEnumUnit(), UNIT_TYPE_STRUCTURE) == false and IsUnitEnemy( GetEnumUnit(), GetOwningPlayer(su)) == true then
call UnitDamageTargetBJ( su, GetEnumUnit(), 210.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
endif
set su = null
endfunction
function UltimateRun takes nothing returns nothing
local timer st = GetExpiredTimer()
local integer sid = GetHandleId(st)
local unit su = LoadUnitHandle (udg_Hash, sid, 0)
local integer suid = GetHandleId(su)
local location suloc = LoadLocationHandle(udg_Hash, sid, 1)
local effect sueff = LoadEffectHandle (udg_Hash, sid, 2)
local real x = GetLocationX( suloc )
local real y = GetLocationY( suloc )
local rect surect = Rect( x - 600.00*0.5, y - 600.00*0.5, x + 600.00*0.5, y + 600.00*0.5 )
local location random = Location (GetRandomReal(x-600*.5,x+600*.5), GetRandomReal (y-600*.5, y+600*.5))
local integer sc = LoadInteger (udg_Hash, sid, 10)
call SetUnitPositionLoc( su, random )
call SetUnitAnimation( su, "attack" )
call AddSpecialEffectLocBJ( random, "Abilities\\Spells\\Human\\Thunderclap \\ThunderClapCaster.mdl" )
call DestroyEffectBJ ( GetLastCreatedEffectBJ() )
call AddSpecialEffectLocBJ( random, "Abilities\\Spells\\Items\\AIil\\AIilTarget.mdl" )
call DestroyEffectBJ ( GetLastCreatedEffectBJ() )
call ForGroupBJ ( GetUnitsInRangeOfLocAll(250.00, suloc), function Ultaction )
set bj_wantDestroyGroup=true
call SaveInteger(udg_Hash,sid,10,sc + 1)
if sc >= 10 then
call SetUnitPositionLoc( su, suloc )
call DestroyEffectBJ( sueff )
call SetUnitPathing( su, true )
call SetUnitInvulnerable( su, false )
call PauseUnitBJ( false, su )
call SetUnitVertexColorBJ( su, 100, 100, 100, 0.00 )
call PauseTimer(st)
call DestroyTimer(st)
call FlushChildHashtable(udg_Hash, sid)
endif
set suloc = null
set random = null
set st = null
set su = null
set sueff = null
endfunction
function Trig_SlayerUlt_Actions takes nothing returns nothing
local timer st = CreateTimer()
local integer sid = GetHandleId(st)
local unit su = GetTriggerUnit()
local integer suid = GetHandleId(su)
local location suloc = GetUnitLoc(su)
local effect sueff
local real x=GetUnitX(su)
local real y=GetUnitY(su)
call AddSpecialEffectTargetUnitBJ ( "hand right", su, "Abilities\\Weapons \\PhoenixMissile\\Phoenix_Missile.mdl" )
set sueff = GetLastCreatedEffectBJ()
call SetUnitPathing( su, false )
call SetUnitInvulnerable( su, true )
call PauseUnitBJ( true, su )
call SetUnitVertexColorBJ( su, 100, 100, 100, 50.00 )
call SaveUnitHandle(udg_Hash, sid, 0, su)
call SaveAgentHandle(udg_Hash, sid, 1, suloc)
call SaveAgentHandle(udg_Hash, sid, 2, sueff)
call SaveAgentHandle(udg_Hash, suid, 0, st)
call SaveInteger (udg_Hash, sid, 10, 1)
call TimerStart( st, .3, true, function UltimateRun )
set suloc = null
set st = null
set su = null
set sueff = null
endfunction
===========================================================================
function InitTrig_SlayerUlt takes nothing returns nothing
set gg_trg_SlayerUlt = CreateTrigger ( )
set udg_Hash=InitHashtable()
call TriggerRegisterAnyUnitEventBJ ( gg_trg_SlayerUlt, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition ( gg_trg_SlayerUlt, Condition( function Trig_SlayerUlt_Conditions ) )
call TriggerAddAction ( gg_trg_SlayerUlt, function Trig_SlayerUlt_Actions )
endfunction
» ответ
Steal nerves:
filterGetUnitsOfTypeIdAll - фильтр, вместо него должно быть написано либо null или Condition( function XXX) Короче зачем нужен фильтр? Фильтр при выборе всех юнитов сразу отсеивает не нужных, если по условию не подходит, то выкидывает.. Вам сразу достается готовая группа с нужными юнитами
А в качестве переменных используй GetFilterUnit, GetFilterPlayer. На гуи по-другому называют MatchingUnit
где XXX - название функции, эта функция возвращает boolean (то есть истину или ложь)
вбей в поиск названии функции, может найдешь ответ
например выделяем все здания UNIT_TYPE_STRUCTURE, а те, кто не является зданием отсеиваем
function XXX takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE)
endfunction
насчет статьи не видел, это придет с пониманием. Главное начать. Сначала тупо конверт, и оптимизация. А дальше можешь сам
что у тебя там не работает скидывай сюда




Просмотров: 1 083

» Лучшие комментарии


XGM Bot #1 - 5 месяцев назад 0

Похожие вопросы:

» ответ
вопервых ты в 1 и ту же ячейку пытаешся записать 2 значения (location и integer)
во вторых ты создаёш область по кординатам а следующей строчкой находиш эти же кординаты с помощью функций
в 3 ты сохранял точку в хэш и сразу же удалял её
и в 4 ты не инициализировал хэш
function Trig_SlayerUlt_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00V'
endfunction
function Ultaction takes nothing returns nothing
local timer st = GetExpiredTimer()
local integer sid = GetHandleId(st)
local unit su = LoadUnitHandle (udg_Hash, sid, 0)
if IsUnitType(GetEnumUnit(), UNIT_TYPE_STRUCTURE) == false and IsUnitEnemy( GetEnumUnit(), GetOwningPlayer(su)) == true then
call UnitDamageTargetBJ( su, GetEnumUnit(), 210.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
endif
set su = null
endfunction
function UltimateRun takes nothing returns nothing
local timer st = GetExpiredTimer()
local integer sid = GetHandleId(st)
local unit su = LoadUnitHandle (udg_Hash, sid, 0)
local integer suid = GetHandleId(su)
local location suloc = LoadLocationHandle(udg_Hash, sid, 1)
local effect sueff = LoadEffectHandle (udg_Hash, sid, 2)
local real x = GetLocationX( suloc )
local real y = GetLocationY( suloc )
local rect surect = Rect( x - 600.00*0.5, y - 600.00*0.5, x + 600.00*0.5, y + 600.00*0.5 )
local location random = Location (GetRandomReal(x-600*.5,x+600*.5), GetRandomReal (y-600*.5, y+600*.5))
local integer sc = LoadInteger (udg_Hash, sid, 10)
call SetUnitPositionLoc( su, random )
call SetUnitAnimation( su, "attack" )
call AddSpecialEffectLocBJ( random, "Abilities\\Spells\\Human\\Thunderclap \\ThunderClapCaster.mdl" )
call DestroyEffectBJ ( GetLastCreatedEffectBJ() )
call AddSpecialEffectLocBJ( random, "Abilities\\Spells\\Items\\AIil\\AIilTarget.mdl" )
call DestroyEffectBJ ( GetLastCreatedEffectBJ() )
call ForGroupBJ ( GetUnitsInRangeOfLocAll(250.00, suloc), function Ultaction )
set bj_wantDestroyGroup=true
call SaveInteger(udg_Hash,sid,10,sc + 1)
if sc >= 10 then
call SetUnitPositionLoc( su, suloc )
call DestroyEffectBJ( sueff )
call SetUnitPathing( su, true )
call SetUnitInvulnerable( su, false )
call PauseUnitBJ( false, su )
call SetUnitVertexColorBJ( su, 100, 100, 100, 0.00 )
call PauseTimer(st)
call DestroyTimer(st)
call FlushChildHashtable(udg_Hash, sid)
endif
set suloc = null
set random = null
set st = null
set su = null
set sueff = null
endfunction
function Trig_SlayerUlt_Actions takes nothing returns nothing
local timer st = CreateTimer()
local integer sid = GetHandleId(st)
local unit su = GetTriggerUnit()
local integer suid = GetHandleId(su)
local location suloc = GetUnitLoc(su)
local effect sueff
local real x=GetUnitX(su)
local real y=GetUnitY(su)
call AddSpecialEffectTargetUnitBJ ( "hand right", su, "Abilities\\Weapons \\PhoenixMissile\\Phoenix_Missile.mdl" )
set sueff = GetLastCreatedEffectBJ()
call SetUnitPathing( su, false )
call SetUnitInvulnerable( su, true )
call PauseUnitBJ( true, su )
call SetUnitVertexColorBJ( su, 100, 100, 100, 50.00 )
call SaveUnitHandle(udg_Hash, sid, 0, su)
call SaveAgentHandle(udg_Hash, sid, 1, suloc)
call SaveAgentHandle(udg_Hash, sid, 2, sueff)
call SaveAgentHandle(udg_Hash, suid, 0, st)
call SaveInteger (udg_Hash, sid, 10, 1)
call TimerStart( st, .3, true, function UltimateRun )
set suloc = null
set st = null
set su = null
set sueff = null
endfunction
===========================================================================
function InitTrig_SlayerUlt takes nothing returns nothing
set gg_trg_SlayerUlt = CreateTrigger ( )
set udg_Hash=InitHashtable()
call TriggerRegisterAnyUnitEventBJ ( gg_trg_SlayerUlt, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition ( gg_trg_SlayerUlt, Condition( function Trig_SlayerUlt_Conditions ) )
call TriggerAddAction ( gg_trg_SlayerUlt, function Trig_SlayerUlt_Actions )
endfunction
» ответ
Steal nerves:
filterGetUnitsOfTypeIdAll - фильтр, вместо него должно быть написано либо null или Condition( function XXX) Короче зачем нужен фильтр? Фильтр при выборе всех юнитов сразу отсеивает не нужных, если по условию не подходит, то выкидывает.. Вам сразу достается готовая группа с нужными юнитами
А в качестве переменных используй GetFilterUnit, GetFilterPlayer. На гуи по-другому называют MatchingUnit
где XXX - название функции, эта функция возвращает boolean (то есть истину или ложь)
вбей в поиск названии функции, может найдешь ответ
например выделяем все здания UNIT_TYPE_STRUCTURE, а те, кто не является зданием отсеиваем
function XXX takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE)
endfunction
насчет статьи не видел, это придет с пониманием. Главное начать. Сначала тупо конверт, и оптимизация. А дальше можешь сам
что у тебя там не работает скидывай сюда

AlexSan #2 - 5 месяцев назад 0
Мне кажется что ты не понимаешь толком что такое BJ функции и зачем близзарды их добавили.
Расскажи, что в твоем понимании есть BJ функция?
Hate #3 - 5 месяцев назад (отредактировано ) 0
а ALL что по вашему?
Но на JNGP не желательно думаю
тогда можешь забыть
Dagger667 #4 - 5 месяцев назад -2
а ALL что по вашему?
Да, думаю как там сделать. Но как конкретно там всё работает, не подскажите? Заметил что там убирается конфликт с анти-BJ, видимо это уже для JNGP. И ещё, когда закидывал на обычный редактор, то не запускалось из-за какой-то нестандартной функции, но это решаемо - поставить стандартную.
тогда можешь забыть
Ну почему же, там так же можно подключать нестандартные библиотеки. Это же для чего-то сделано!? Вообще для начала нужно приспособиться под стандарт, так как мне нужно чтобы те же функции работали, а не придумывать новые названия, но для того только, чтобы в GUI их можно было вызывать безбоязненно через удобный интерфейс. А вот потом можно приспособить и под редактор Пушистика, и под JNGP, это уже второстепенно. AlexSan:
Расскажи, что в твоем понимании есть BJ функция?
Самое главное, что знаю, это то, что есть native-функции, которые изменять нельзя, которые являются базовыми, и BJ-функции, которые как раз таки изменять можно, но в которых большая задержка на вызовы call и много утечек. Не все утечны BJ-функции, но всё равно требуют переделки и оптимизации.
ledoed #5 - 5 месяцев назад -2
оо если взялся давай целый вар мути лутше на каком нить движке
Dagger667 #6 - 5 месяцев назад 0
ledoed, такую тему поднял, про которую Я могу написать тут целую книгу. И не думай что Я не смогу! У меня есть методы как один человек может сделать огромную работу... И мотивы есть интересные... Но давай всё таки не будем отклонятся от этого вопроса, так как возможно, это будет ещё одним аргумент в пользу принятия, или отказа от Warcraft-а!
AlexSan #7 - 5 месяцев назад 0
Не все утечны BJ-функции, но всё равно требуют переделки и оптимизации.
Зачастую проблема не в самих БЖ (хотя они тоже вносят свой вклад в лагодром и утечки), а в плохих алгоритмах, не удалении объектов и не обнулении переменных в коде который пишет сам мап-мейкер.
И вот трансляция GUI в JASS которую делает редактор при сборке карты, как раз таки порождает этот самый плохой код с плохими алгоритмами.
Комбинация JNGP + ALL.j отчасти исправляет это, насколько я знаю. Но что бы все работало идеально, это нужно переписать редактор карт, переписать сам движок варкрафта и что бы все мапмейкеры писали идеальный код.
А еще извини за вопрос, наверное это бестактно, но все же. Сколько тебе лет?
quq_CCCP #8 - 5 месяцев назад 0
Нахрен это кому нужно, вы сами не догадались почему никто гуи не доделывал? Все кто хотели - перешли на jass и забыли про утечки и много кликать, не говоря о том что наработок на jass куда больше.
Dagger667 #9 - 5 месяцев назад -2
проблема не в самих БЖ
Проблема как раз в БЖ! И не важно на jass или на GUI вы пишете!
AlexSan:
И вот трансляция GUI в JASS которую делает редактор при сборке карты, как раз таки порождает этот самый плохой код с плохими алгоритмами.
Если Я ошибусь на jass - компилятор выдаст ошибку, а если ошибусь на GUI - не ошибусь, потому что там всё лишнее закрыто и замуровано. Не встречал ошибок на GUI, кроме одной, когда множество вложенностей оператора if (штук 30) в предыдущие else породили ошибку компилятора, и то, Я просто написал их без вложенности и всё поехало.
AlexSan:
Комбинация JNGP + ALL.j отчасти исправляет это
Я только что в предыдущем вопросе разбирался с этим, ставил JNGP + ALL.j, и с котом решали этот вопрос - НЕ РАБОТАЕТ!
Сколько тебе лет?
Не вижу смысла отвечать, но отвечу если будет смысл. Бывает старик не наигрался, а бывает ребёнок уже большой. И вообще, у нас тут тема программирования а не Клуб Знакомств!
quq_CCCP, Во-первых, есть люди которым трудно даже один простой триггер написать, уровень 5-ти летнего ребёнка. Но почему Warcraft 3 стал популярен и так долго держится? Потому что там есть редактор и возможность что-то творить самому, и лезут те кто не умеет программировать, но которым нужна практика на чём-нибудь попроще. Сам с этого начинал, потом выучил много языков программирования...
Во-вторых, если даже вы пишете на jass, то всё равно непонятно, как вам будут мешать переписанные функции-BJ? Скорее наоборот, не придётся каждый раз думать об утечках даже на jass.
И в-третьих, давайте по существу вопроса!? Я закрою его, но если нечего пока сказать то лучше не надо.
Мне порой даже кажется что это у вас любимая тема, обсуждать что jass лучше GUI. В каждом вопросе меня в этом убеждают! Давайте создадим отдельный вопрос и там будем обсуждать что лучше? Но сейчас Я хочу реальное дело сделать и мне нужна информация про BJ!
Hate #10 - 5 месяцев назад 0
никто в своем уме не использует бж функции делая код на jass, фееричный...
quq_CCCP #11 - 5 месяцев назад (отредактировано ) 0
Бж функции, это функции из Blizzard.j и Blizzard.ai (для кода карты и кода ии соответственно). Находятся эти файлы в war3path.mpq гуи использует бж функции, их там довольно много, многие тупо обертки, другие некоторые механизмы с созданием обьектов (функции для работы с группами, мультибордами) многие имеют много мусора и ненужных действий (к примеру create unit), конвертировать в текст триггер и посмотреть как оно выглядит не сложно, так же не сложно написать в виде текста свой алгоритм (примеры и статьи есть) это не сложно для простых задач, сложные задачи вы бы хрен реализовали на гуи и затратили бы уж точно не меньше времени. По мимо у утечек в гуи не рализовано нормальное использование координат, таймеров, триггеров. В jass можно создать и удалить таймер, на 1 раз чтобы сделать какую то задержку или реализовать спелл, на гуи же
это у вас не получится, придется юзать отдельный триггер + городить массивы...
Так что вы зря тут говорите что проще, а что сложнее.
AlexSan #12 - 5 месяцев назад -1
Проблема как раз в БЖ! И не важно на jass или на GUI вы пишете!
И вот ты снова показываешь свое незнание проблемы. БЖ есть лишь обертка над нативками которая выполняет некоторую работу. Если ты хочешь пораскрывать все БЖ, то эту работу тебе нужно будет каждый раз делать руками.
Создают проблемы лишь те БЖ где утекает объект и/или не обнулена переменная.
Основной источник проблем это неправильные алгоритмы и неправильная работа с памятью (читай утечки которые мапмейкер допускает сам).
Dagger667:
Если Я ошибусь на jass - компилятор выдаст ошибку, а если ошибусь на GUI - не ошибусь, потому что там всё лишнее закрыто и замуровано.
Ты опять таки, сравниваешь две разных вещи. Да, в ГУИ допустить ошибку в синтаксисе просто, но синтаксические ошибки есть лишь малая часть ошибок.
Что касается алгоритмических ошибок, то в Джассе их допускать немного сложнее, так как ты явно видишь что и когда вызывается, обнуляется и так далее.
Dagger667:
НЕ РАБОТАЕТ!
У всех работает, а у тебя нет?
Проблема в тебе и твоих кривых руках.
Dagger667:
отвечу если будет смысл
Твое упорство, самоуверенность и игнорирование всего что ты не понимаешь очень смахивает на то как ведут себя маленькие дети (и некоторые так и не выросшие не дети).
Dagger667:
потом выучил много языков программирования
Что-то не верится.
Dagger667 #13 - 5 месяцев назад (отредактировано ) -2
не использует бж функции делая код на jass
Потому что они утечны и непродуманны, но стоит их переделать, как предпочтения изменятся. Потому что проще написать одну строку вызова функции чем городить...
quq_CCCP:
Находятся эти файлы в war3path.mpq
Они-то находятся там, то можно ли их заменить в нестандартном коде, в подключаемой библиотеке?quq_CCCP:
сложные задачи вы бы хрен реализовали на гуи
Почему нет? ... Да, на GUI не хватает базовых возможностей, таких как прибавление белого и зелёного урона, таймеров, многомерных массивов, создание героя из обычных юнитов, и прочего, но что мешает потом сделать эти функции, когда всё стандартное будет подправлено? Пушистик же занимается этим!? Я бы мог потом присоединиться к нему, когда сделанная работа будет внушительной. Или мог бы пойти по другому пути, есть идеи... И вообще, знаете, одни пытаются маленькой корявой отвёрткой построить самолёт, и делают это долго и мучительно, каждый раз борясь с утечками и прочим, а другие предпочитают поменять сам инструмент, что значительно ускорит и упростит работу, а в некоторых случаях и вообще перейдёт в новое качество! Туда так же можно добавить алгоритмы которые вообще не сравнятся с работай и миллиона модмейкеров! AlexSan:
Основной источник проблем это неправильные алгоритмы и неправильная работа с памятью
Ну, в BJ-функции.
AlexSan:
Да, в ГУИ допустить ошибку в синтаксисе просто,
Видимо опечатка, в jass.
AlexSan:
алгоритмических ошибок
Возможно. На этот случай jass остаётся. Всегда есть возможность, для особо дотошных, написать запутанный клубок кода на jass. Но одно другому не мешает!
AlexSan:
У всех работает, а у тебя нет?
У всех не работает! Я много читал на разных форумах как люди жаловались. Автор этого творения даже спорил на HIVEWORKSHOP о том что 100% или не 100% рабочая библиотка, так как vJass и cJass по разному работают. Хотя Я честно не понимаю причём тут это.
AlexSan:
Твое упорство, самоуверенность и игнорирование всего...
Так пишешь ложное! Все знают что проблема в BJ-функциях!
AlexSan:
Что-то не верится.
Не важно... Пусть не верится.

quq_CCCP, твой ответ жду особенно!
quq_CCCP #14 - 5 месяцев назад 0
Dagger667, а зачем ты спрашиваешь если не знаешь? Разумеется нужен хак редактора, чтобы что то там использовать по другому, не так как у близзардов - гуишник который упрямится слезть с гуи не сделает этого, работы там много и знаний нужно много, а не вялые познания там или тут утечка.
Пытаться что то там сделать - глупость, это никому не надо (тебе это тоже не надо, ты даже не сможешь), те кто делали руссификаторы и расширенные гуи тоже это поняли, их используют единицы и внезапно делают все те же костыли с утечками и вейтами + дурью. Отказ от развития есть деградация. Пошаришся по бж функциям и до тебя дойдет.
Переписать кару на jass не долго, особенно если тебе ничего нового выдумывать ненужно (футманы же у тебя, там дел на пару дней)
Hate #15 - 5 месяцев назад 0
Потому что они утечны и непродуманны, но стоит их переделать, как предпочтения изменятся. Потому что проще написать одну строку вызова функции чем городить...
Все знают что проблема в BJ-функциях!
да никто не использует бж функции если знает jass! ало!
делают свои функции, и это не занимает много времени
зачем лезть туда где вы абсолютно невежественны?
Dagger667 #16 - 5 месяцев назад -4
quq_CCCP, да на карту наплевать! Я её могу вам отдать за так, делайте с ней что хотите! Она была как "разведка боем"! Меня интересует более серьёзный проект, даже не игрушки уже... Скажи только куда выложить её, и правьте сами, если хотите.
Я хочу только обратить твоё внимание на то, чтобы уточнить. Я имею ввиду что мне нужно подстроиться под стандартный GUI, что не менять названия функций, что в GUI всё останется как есть и ничего не трогаем, и что Я хочу переделать чисто нутро каждой функции, чтобы при вызове GUI вызывал свою функцию, но попадал на её "замену-двойника"! И что эти "двойники" должны быть в библиотеке, и будут ли они подгружаться от туда как стандартные? Вот что Я хотел узнать у тебя!
А hack редактора используется только если что-то принципиально новое хочу добавить, и это понятно, оставим это для варианта с модом.
Hate, это замкнутый круг, непонятно? Не делают потому что не работают они как надо! Но функция, сама по себе, уже готовая, лучше чем самому городить, не важно, BJ или MJ на конце названия функции.
Hate:
да никто не использует бж функции если знает jass! ало!
Вот именно что ало! Подсунь толпе другие функции-BJ и она изменит свои предпочтения!

Что, никому не понятно что в корень надо бить, а не ловить этих тараканов когда они расползлись?
Даже вам, не проще ли переписать сердце, и вместо этих слов писать код, нежели каждому тут расписывать что вот, мол, никак нельзя сделать, и нужно переделывать, и бла-бла-бла? Те же буквы, только на другом языке и в другом месте!

quq_CCCP, обрати внимание, хак и подстройка, это разные вещи! Жду ответ.
Hate #17 - 5 месяцев назад (отредактировано ) 3
Вот именно что ало! Подсунь толпе другие функции-BJ и она изменит свои предпочтения!
да эта толпа даже не знает что они существуют! а кто знает просто их не использует ввиду бессмысленности.
не догоняете? это никому не нужно
уже один человек сделал AntiLeakLibrary которая делает точно то что вы хотите, что в итоге? вы даже не догнали как с ней обращаться! а такие наполеонские планы уже строите
Даже вам, не проще ли переписать сердце, и вместо этих слов писать код, нежели каждому тут расписывать что вот, мол, никак нельзя сделать
а как ты думаешь, что делают те кто знает jass? правильно, делают свои функции и не используют бж. потому что это проще гораздо чем пытаться засунуть непонятно что непонятно куда ради ГУИ
да никому не нужно это бже ты мой
Dagger667 #18 - 5 месяцев назад -2
вы даже не догнали как с ней обращаться!
Под вашим руководством всё делал, не Наполеон а солдат!
Hate:
это никому не нужно
Ну как не нужно? Есть у людей карты, которые были построены на стандартном редакторе (за 15 лет их набралась туча), но которые лагают. Загрузили библиотеку - всё заработало без лагов. Но не надо меня, с моим аналитическим мышлением, сравнивать с тем кто делал ту библиотеку!
Hate #19 - 5 месяцев назад (отредактировано ) 1
из всех кого я знал использующих ALL - только у вас она "не работает"
так что я бы помолчал про "аналитическое мышление"
Загрузили библиотеку - всё заработало без лагов
Anti Leak Library в помощь....
Dagger667 #20 - 5 месяцев назад (отредактировано ) -4
Ну группу обрамил тегами и удаляет, скриншот делал, что ещё нужно? Аналитическое мышление не работает там где всё против логики.
Она работает, когда событий мало, но её не тестировали при большом количестве событий.
Hate, вот смотрел, на сайте того автора, который сделал эту библиотеку, пользователь его библиотеки написал ему красным текстом мат о том что его библиотека не работает! Он делал карту несколько лет, и после загрузки его библиотеки, и добавлении тегов, всё перепуталось. Ну что, у всех всё работает по прежнему? Кривые руки у того кто делал эту библиотеку! Пользователь не должен добавлять даже теги, "загрузил и забыл", а уж добавив теги куда надо, под твоим Hate контролем, и всё равно убедившись что не работает, вопросы о качестве библиотеки снимаются окончательно!
ScopteRectuS #21 - 5 месяцев назад (отредактировано ) 1
Зачем что-то делать для GUI, если при сохранении карты это всё превращается в чистый JASS? Не проще ли сразу написать на JASS, при этом полностью контролируя, что пишите. Писать на JASS быстрее, легче и понятнее. Зачем тогда вообще нужен GUI?
ну разве что тем, кто не желает учиться JASS'y.
Dagger667 #22 - 5 месяцев назад 2
ScopteRectuS, Вы будете переписывать 15.000 карт? Или Вы кинете их в топку и начнёте опять писать 15.000 карт? В некоторых даже космос сделан, переделан интерфейс, очень всё красиво сделано, другие как РПГ, годами строились... Или Вы переделаете несколько функций-BJ, таких как "Unit in Range...", "Unit Create At...", или "Wait", загрузите их через библиотеку и выложите на XGM или HIVEWORKSHOP? Что Вам подсказывает Ваш Разум?
ScopteRectuS #23 - 5 месяцев назад (отредактировано ) 0
ЛОЛ, Dagger667, зачем мне переделывать 15000 карт, если они не мои? Все хорошие карты защищены, если их взломать, то там не будет никакого GUI! Если Вы хотели сделать доброе дело и оптимизировать 15000 карт одной своей библиотекой для GUI, которого не будет во взломанных картах, то удачи!
Dagger667 #24 - 5 месяцев назад 0
ачем мне переделывать 15000 карт, если они не мои
А это очень важный момент! Потому что если мы не будем друг другу помогать, то скатимся к деградации и пустоте в картостроении!
И возможно, лично Вы не сыграете во что-то интересное!
Hate #25 - 5 месяцев назад 1
вейт ты никак не переделаешь на таймеры банальной библиотекой
ScopteRectuS #26 - 5 месяцев назад 1
А это очень важный момент!
это не важный момент!
Важный момент в том, что во всех этих картах Вы не увидите никакого GUI. Потому что все оптимизаторы его удаляют!
Dagger667 #27 - 5 месяцев назад 0
вейт ты никак не переделаешь на таймеры банальной библиотекой
-Почему?
-А другие значит можно?
ScopteRectuS:
во всех этих картах Вы не увидите никакого GUI. Потому что все оптимизаторы его удаляют!
Всмысле? Когда пройдёт компиляция карты? Значит Вы не поняли что Я написал.
AlexSan #28 - 5 месяцев назад 1
Значит Вы не поняли что Я написал.
Нет, это ты сам не понимаешь почему то о чем тебе все говорят не есть возможно/не есть нужно.
И повторюсь.
Твое упорство, самоуверенность и игнорирование всего что ты не понимаешь очень смахивает на то как ведут себя маленькие дети (и некоторые так и не выросшие не дети).
Dagger667 #29 - 5 месяцев назад (отредактировано ) 0
AlexSan, да ладно не бузи. Я знаю что маленькие дети несут истину всегда, потому что их намерения чисты. Не думай что они такие простые и глупенькие, а ты, взрослый, самый умный.
Короче, раз идёт такая массированная бомбардировка, причём единогласная, значит дальнейшие выпытывания информации бессмысленны. Вопрос пора закрывать. Для себя Я всегда сделаю BJ-функции в файле Blizzard.j.
Borodach #30 - 5 месяцев назад 7
Dagger667, Да тут "глупые" людишки не шарят и отмахиваются что никому не нужно. Но ты делай, мы все с нетерпением будем ждать правленые бж-функции. Мы до сих пор так мучались с ними... и вот наконец отважный гений положит этому конец.
Doc #31 - 5 месяцев назад (отредактировано ) 1
Хорошие или плохие - пользоваться ими на джассе никто особо не будет, большинство функций бж - однострочные врапперы. Весь их смысл - поддерживать гуи со всяким говном типа lastCreatedUnit етц. Твои старания будут тратой времени, т.к. ничего лучше и менее костыльнее чем all.j ты по факту не сделаешь.
all.j требует обрамления всех глобалок и мест где есть ожидание в ALL_REMOVE = false/true. Т.е. ты не можешь просто вставить её в карту и наслаждаться меньшим количеством утечек. Но по-другому просто не получится на клиентском уровне, лучшее решение - написать тулзу которая парсит жасс и анализирует скоуп переменных в коде, автоматически удаляя те, что не выходят из локальных скоупов. Прямо как делает компилятор для нормальных языков.
quq_CCCP #32 - 5 месяцев назад 0
Dagger667, у тебя нету 15000 карт как и нужны что то там делать. Это раз, два серьезный проект в 2018 на гуи? чет не веристя, дота лтд с гуи спрыгнули году этак в 2006-2008 полностью. Кастл файты и ютд изначально на jass писались и уровень там весьма высокий, по сей день эти карты популярны и известны. У тебя есть или нет карты, пишим на jass и улыбаемся, конвертируй триггер в текст и посмотри какой там мусор и кавардак от твоего гуи. Это еще с вашими вейтами и утечками лагать будет и игроки будут в мультиплеере отваливаться.
Гуи создан для кампаний и небольших аркад, не больше - сами близзарды не спроста писали гран при азерота и бомбардировщики чисто на jass.