RedLegion, Эмм опен лтд в помощь, в гугле бан дали?
Утечек небудет если не юзать ГУИ, а сам процесс смены там примитивен - сокрытие всех юнитов игрока в области где доступно строительсво и создание ходящих и аьакующих аналогов, каждую новую волну. Прочее типо Ии, таблицы, способностей крипов реализуются по вкусу. В оригинальном лтд код не шибко крут, с утечками и ГУИ, но работает.
Эмм, разве у зданий не стандартный угол поворота 270 градусов?
У деревьев есть 1 проблема, они не проигрывают альтернейт анимацию если у них нету скилла пустить корни, но это можно решить установив тег анимации.
Clamp, что есть "проинициализированность переменной" ? х)
Clamp, чем отличаются структуры (которые есть только на момент их написания, но их попросту не существует в скрипте) от массивов (которые просто есть и точка)?
Интерфейсом и системой слежения за тем занята или свободна та или иная ячейка + защита от переполнения массива, не хотите vjass пишите все сами...
У обычных массивов от переменной, то там индекс не такой большой (от -8192 до 8192). Нельзя туда ни хэндлы всунуть, ни равкоды. Равкод к счастью можно заменить на тип переменную как тип юнита. А в хэш-таблицу все влезает, и норм. Обычные массивы неудобны еще тем, что там нельзя аттачить, приходится делать более сложные конструкции с пробегом цикла и проверками, чтобы найти нужный индекс. А вот в хэше можно сразу лепить аттач (по хэндлу юнита).
Различны способы хранения - (удобно когда массивов больше - удобно сделать сложную конструкцию). В более простых конструкциях этого не нужно.
А и ненужно в массивы засовывать хендлы, структуры vjass'a чуть чуть побыстрее, ну и малость удобнее в написании, писанины чуть меньше, если ты работаешь с тучей данных а не 3-5 переменных типа кастер, урон, расстояние...
Есть системы без хештаблицы, но они не такие уж универсальные, и нужны реально в редких случаях, но можно юзать для тех же спеллов, пример такой системы Xattach (гугл в помощь), там целлая группа массивов.
Нет Нельзя, можно только имя и вызывать Execute Func
JASS api нагуглите и смотрите что можно а что нет, функции и синтаксис там описан.
Code можно вызвать только функциями каллбеками (ForGroup, ForForce...) блин ну неужели не нашлось инфы об этом
Вот ссылка xgm.guru/p/wc3/179535
Так же можно скрывать скилл для игрока, но подходит такой способ только если у игрока 1 такой Юнит.
Изменять кд скилла по своему хотению можно только с помощью мемхака.
bj_groupEnumOwningPlayer это переменная, точно такая же глобалка которые создаешь ты, но эта создана близзардами.
потом тебе нужно юзать функцию
call GroupEnumUnitsInRange( группа, х,у, радиус, Condition( function функция фильтра ))
Потом чтобы сделать действия с юнитами в группе:
function SomeFunc takes nothing returns nothing
//твои действия с каждыйм юнитом в группе, чтобы найти юнита которого сейчас обрабатывает движок в группе юзай GetEnumUnit()
endfunction
call ForGroup( группа, function SomeFunc) //можешь называть функцию как угодно
Ну, в гуях каждый раз создается группа при действии с поиском юнитов в радиусе или ректе, что самое по себе убого.
Создадим одну группу и запишем её в глобальную переменную, на гуях просто создай глобалку TempGroup (название неважно, в гуях в перменную сразу же записывается группа), потом нам потребуется фильтр, ибо нужно отсеять всех ненужных юнитов для этого нужно создать новую функцию, которая не берет аргументов и возвращает boolean,
function EnemyFilter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
return GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) > 0.405 and IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and not( IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MAGIC_IMMUNE ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MECHANICAL ) or IsUnitInvulnerable( bj_lastFilterUnit ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_TAUREN ) )
endfunction
Вот пример фильра, функция GetFilterUnit() -возвращает юнита которого сейчас проверяет фильтр, ну а все остальное функции проверки, обрати внимаение на то что аргументы в фильтр мы передает глобальными переменными, в данном случаи игрок bj_groupEnumOwningPlayer
Весь код можно посмотреть тут WoLLFeR, кстати вот держи
function IsUnitDead takes unit u returns boolean
return IsUnitType( u, UNIT_TYPE_DEAD ) or GetUnitTypeId( u ) < 1
endfunction
Это заменитель IsUnitAliveBJ, только она вернет true если юнит мертв (несуществует), так же проверять наличие жизны можно проверяя хп юнита:
((код jass
GetUnitState( юнит, UNIT_STATE_LIFE ) > 0.405
))
Если здоровье больше 0.405 то юнит жив, иначе мертв.
задавался уже такой вопрос
пока герой под станом, сам с себя он его снять никак не может
разве что в мемхак и отлавливать нажатие.юз предмета
Нет все гораздо проще, DracoL1ch, уже написал ответ - приказы проходят сквозь стан но юнит их не выполняет, просто проверяем что юнит отдал приказ каста и снимаем стан с юнита.
Lenivex, Сам memory hack это I2C и Сломманый массив, все.
Остальное это реализация API тех функций которые есть в варкравте а так же новые, которые будут релизованы по средстам импорта библиотек.
Что конкретно вам нужно? Опишие.~Doc:
разве нельзя !nocjass заюзать?
Увы не помогает, cjass что то не то делает с мемхаком, да у меня вовсе с ним были одни проблемы, поэтому memhack == no cjass, уже лень было разбиратся что к чему, если у вас есть желания найти и исправить все конфликты пожалуйста, остальные пусть пишут на jass\vjass там все работает исправно, без вылетов на ровном месте (кое как разобрались)...
Ах да, совсем забыл -pjass.exe прикреплен не просто так в теме с мемхаком, с прочими версиями будут баги или карта вовсе не запустится, не забываем про это плз.
Просто многие функции требуют доработок и внимания, в той теме что я скинул к примеру поправлен кд чаннелингов и кое чего другого.
Мемхак везде один, не тупите - разный только набор функций, вот и ищите нужные вам функции. Все что нужно сломанный масиив и ретурнбаг все остальное это функции для чего либо, увы у всех авторов свои представления об API мемхака и своя реализация тех или иных вещей, все и сразу вам никто не даст. Lenivex, Что конкретно вас интересует и что не работает в тему о РБ задавайте вопросы.
Ну и самое главное не ко всем функциям есть комментарии касательно их ограничений, разобраны только самые популярные.
Зачем нам форсы? У вас каждую игру уникальные враги? Нет? Создаем 2 форса (или сколько их у вас) и все, мы знаем кто враги а кто союзники.
Ну а если очень хочется то перебираем всех игроков в форсе bj_forceAllPlayers и ищем тех кто враг, попутно делая для них нужные действия.
вот пример кода
function MyFunc takes nothing returns nothing
local player pl = GetEnumPlayer( )
if GetPlayerSlotState( pl ) == PLAYER_SLOT_STATE_PLAYING and IsPlayerEnemy( pl, bj_groupEnumOwningPlayer ) then
call BJDebugMsg(GetPlayerName(pl)+" - враг для - "+GetPlayerName(bj_groupEnumOwningPlayer))
// ваши действия
endif
endfunction
...
set bj_groupEnumOwningPlayer = Player(0)
call ForForce( bj_FORCE_ALL_PLAYERS, function MyFunc )
...
Мемхак один, новые могут только оформленные функции, с cjass н еработает, дело в пасере, есть спец тема для этого так что все там.
xgm.guru/p/wc3/179535 вот тема на мемхак, готовый для импорта а функции лежать на хайве, самые новые ну или пишутся конкретными людьми и выкладываются в паблик.
Реализация не гуи недает в полной мере определить это, столкновение рассчитывается при каждом такте смещения юнита ибо проверкой что цель двигается дальше неможет (край карты и тому подобное).
» WarCraft 3 / Отмена приказа предмета
» WarCraft 3 / Юниты как в LTD
Утечек небудет если не юзать ГУИ, а сам процесс смены там примитивен - сокрытие всех юнитов игрока в области где доступно строительсво и создание ходящих и аьакующих аналогов, каждую новую волну. Прочее типо Ии, таблицы, способностей крипов реализуются по вкусу. В оригинальном лтд код не шибко крут, с утечками и ГУИ, но работает.
» WarCraft 3 / Ancient Protector (Башня)
У деревьев есть 1 проблема, они не проигрывают альтернейт анимацию если у них нету скилла пустить корни, но это можно решить установив тег анимации.
» WarCraft 3 / Хеш-таблица против обуза глобальных массивных переменных
» WarCraft 3 / Хеш-таблица против обуза глобальных массивных переменных
» WarCraft 3 / Хеш-таблица против обуза глобальных массивных переменных
» WarCraft 3 / Хеш-таблица против обуза глобальных массивных переменных
» WarCraft 3 / Хеш-таблица против обуза глобальных массивных переменных
» WarCraft 3 / Хеш-таблица против обуза глобальных массивных переменных
Есть системы без хештаблицы, но они не такие уж универсальные, и нужны реально в редких случаях, но можно юзать для тех же спеллов, пример такой системы Xattach (гугл в помощь), там целлая группа массивов.
Ред. quq_CCCP
» WarCraft 3 / Можно ли на jass записать функцию внутри глобальной переменной?
JASS api нагуглите и смотрите что можно а что нет, функции и синтаксис там описан.
Code можно вызвать только функциями каллбеками (ForGroup, ForForce...)
блин ну неужели не нашлось инфы об этом
» WarCraft 3 / Как сохранить перезарядку при удалении спэлла.
Так же можно скрывать скилл для игрока, но подходит такой способ только если у игрока 1 такой Юнит.
Изменять кд скилла по своему хотению можно только с помощью мемхака.
Ред. quq_CCCP
» WarCraft 3 / Как сохранить перезарядку при удалении спэлла.
» WarCraft 3 / Утечки
» WarCraft 3 / Утечки
потом тебе нужно юзать функцию
Ред. quq_CCCP
» WarCraft 3 / Утечки
Создадим одну группу и запишем её в глобальную переменную, на гуях просто создай глобалку TempGroup (название неважно, в гуях в перменную сразу же записывается группа), потом нам потребуется фильтр, ибо нужно отсеять всех ненужных юнитов для этого нужно создать новую функцию, которая не берет аргументов и возвращает boolean,
WoLLFeR, кстати вот держи
))
» WarCraft 3 / Утечки
Если использовать группы нормально, а не как нам предлагает гуи, не будет ни утечек, ни проблем.
» WarCraft 3 / Ребят, а как сделать пассивку Тролля из дота 2?
» WarCraft 3 / Абилки которые можно кастовать сквозь стан
Ред. quq_CCCP
» WarCraft 3 / (Memory Hack) 2 вопроса
Остальное это реализация API тех функций которые есть в варкравте а так же новые, которые будут релизованы по средстам импорта библиотек.
Что конкретно вам нужно? Опишие.~Doc:
Ах да, совсем забыл -pjass.exe прикреплен не просто так в теме с мемхаком, с прочими версиями будут баги или карта вовсе не запустится, не забываем про это плз.
» WarCraft 3 / (Memory Hack) 2 вопроса
Мемхак везде один, не тупите - разный только набор функций, вот и ищите нужные вам функции. Все что нужно сломанный масиив и ретурнбаг все остальное это функции для чего либо, увы у всех авторов свои представления об API мемхака и своя реализация тех или иных вещей, все и сразу вам никто не даст.
Lenivex, Что конкретно вас интересует и что не работает в тему о РБ задавайте вопросы.
Ну и самое главное не ко всем функциям есть комментарии касательно их ограничений, разобраны только самые популярные.
» WarCraft 3 / Функция противники игрока не работает и создает утечки
Ну а если очень хочется то перебираем всех игроков в форсе bj_forceAllPlayers и ищем тех кто враг, попутно делая для них нужные действия.
вот пример кода
» WarCraft 3 / (Memory Hack) 2 вопроса
» WarCraft 3 / Как отследить?