при замене инициализации карты на 1сек. elapsed time, все работает, но как мне вернуть, чтоб все работало с инициализации?
При инициализации не запускаются функции, которые не могут работать корректно или вообще не работать при инициализации "Map Initialization". В этих функциях описано внизу, что они не работают при "Map Initialization". Эти функции работают в потоках триггеров, которые были запущены от событий ну (или в jass, в функциях, вызванных потоком таймера).
И вообще лучше покажите код или скриншот того триггера, который инициализирует всё.
Steal nerves, по сути хендл как бы указатель(дескриптор), UINT32 или UINT64 в зависимости от арх. проц. ВМ. Он хранить адрес памяти вроде на переменную типа, в данном случае на декорацию. Просто молнию удаляли по указателю, потом это метелица исправила. В общем через этот баг удаляло декорацию по адресу, что возможно опасный вызов..
Так что тебе придётся рыться в этом мусоре и перепиливать на лад патча 1.26+, в данном случае можно будет использовать UserData и hashtable; Вот кеш(gamecache) не рекомендую.
Save\Load$type$Handle() Для хендл типов destructable. unit и т.д. (скорее всего ты знаешь)
GetHandleId(handle) обратно не вернёшь.
А есть же Get\SetUnitUserData || Set\GetItemUserData, и такая вещь как структура с ними тоже хорошая манипулаяция. Есть такая штука, которой не нужен хеш, ну допустим образно "GetHandleId() - HANDLE_POS_UNIT (0x100000). " и получает индекс массива к которому был закреплён юнит. Но зачем такой изврат? Когда есть хеш таблица, или структура и UserData...
Казалось бы, теперь ширина всего multiboard должна быть равна 50%, (т. к. это ширина самой широкой строки). Но на деле мы имеем multiboard , ширина которого равна 10%. Потому что, ширина multiboard высчитывается по ширине первой строки.
А что мешает высчитать процентное соотношения для 1 символа, а почему бы не с делать и 1 строку 25% 25%. И просчитывать сколько символов нужно допустить для 5%, если ты конечно хочешь чтобы слова так же сокращались, так же как при пяти 5%. Ибо нет такой функции которая бы тупо меняла ширину именно всей доски.
nvc123, получилось) в ро его не видно, теперь появилась новая проблема карта загружается медленнее слк, варкрафт долго загружает, я всего то вытащил из War3Patch.mpq - Units\AbilityData.slk и импортировал внутри карты
Ужс, достаточно было 1-ой строки в slk, которая бы скрывала сие данную абилку. А вы загрузили всё вместе со стандартом..... Всё равно сначала все загружается из War3Patch, а потом из карты...
Для начала измените настройки в доп. ландшафте. Да так чтобы галочка оставалась. Потом сохранить. Рекомендую перезагрузить карту или WE после таких действий.
1.
Запустите JPNG и нажмите на пункт меню "Edit Tileset" в разделе Extensions
2.
Нажмите на кнопку ок, полсе того как выберите нужные тайлсеты. После этого не нажимайте кнопку сохранить, иначе можете сбить сохр. настройки сделанные через Extensions->Edit Tileset; Затем просто закройте WE JPNG
3.
Заново запускаем WE JPNG, открываем — и вот итог наших действий.
Правильно ли я понял, что если настроить ширину первой строки на 0.25, то ширину второй строки не сделать больше 0.25? Можно как-то пофиксить?
В GUI SetItemWidth делает ширину для каждой ячейки.
// MultiboardSetItemsWidth(multiboard,real) - устанавливает для всех ячеек одну ширину.
call MultiboardSetItemsWidth(udg_MyBoard,0.25)
// MultiboardSetItemWidth(multiboarditem, real) - для 1 ячейки..
code тип принимающий только наименовании функция через ключ function;
ей не требуется знать возвращает ли функция булево или нет. Она тупо отсылку к функции поставляет. Проще говоря он передаёт ссылку на функцию.
Однако для фильтра(условия(condition)) нужна только функция с логическим типом, ведь он проверяет допускать ли предмет или боевую единицу для перечня или согласованна ли она для выполнения триггера по событию, которое содержит данный фильтр.
По сути тупо ей нужен логический тип для подтверждения дальнейший действий.
Поэтому лучше не извращаться с этим, если вы не применяете для каких либо значимых целей. А для исполнения действий нужна чисто без параметров и чтобы не возвращала ничего, например для TimerStart, TriggerAddAction
И как сказал quq_CCCP, такая ваша конструкция может сделать ошибку или прервать поток.
И да это ошибка уже парсера(как сказал quq_CCCP~~) самого JASS. Т.к. те проверяются из-за того, что те функции служебные, а ваша простая.
Лучше сделайте так:
function abc takes nothing returns boolean
return not IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) // к примеру или другой ваш пример...
endfunction
Это вам надо пилить системку, которая будет отлавливать пустышки(дамми) - показывать % готовности перед выходом наёмника, и потом уж выпускать нанятого на свободу. Это вам не обыкновенный наём единицы. Ну можно ещё замутить дамика с отменой найма единицы.
ClotPh, Вот такая функция есть, только она распространяется на все иконки героев, подконтрольных игроку.
Хотя на вряд ли это будет вам полезно.
// Совместимо с GetLocalPlayer(), вне его скроются у всех игроков иконки своих героев.
call SetReservedLocalHeroButtons(1) = показать
call SetReservedLocalHeroButtons(-1) = скрыть
или уберите:
local boolexpr b = Condition(function Trigger_Conditions)
call DestroyBoolExpr(b)
set b = null
Замените call TriggerAddCondition(TRIGGER, b) на call TriggerAddCondition(TRIGGER, Condition(function Trigger_Conditions))
Это помогло. Но почему так? Там же утечка создаётся.
Дело в том, что вы удаляли то, что проверяло условие. Это вам не ректы и локи для региона.
если вы используете одно и тоже условие для триггеров то лучше сделать глобальным.
boolexpr BXPR_0000 = null
где-нибудь создаёте.
И добавляете в каждый нужный триггер, если не хотите расходовать лишнюю память на одно и тоже условие.
Ну есть и другой способ добавить в Trigger_Actions
if (условие) then
код вызова внутри
endif
private function Trigger_Actions takes nothing returns nothing
if return LoadStr(HASHTABLE, GetSpellAbilityId(), StringHash("abil_id")) != null then
call BJDebugMsg(RAW2S(GetSpellAbilityId()) + "str != null")
call ExecuteFunc(LoadStr(HASHTABLE, GetSpellAbilityId(), StringHash("abil_id")))
endif
endfunction
Конечно это хорошо, но лучше было бы сразу конвертом в *.tga. И вообще зачем данные об отладке pbd?
Я просто пользуюсь двумя программами gimp'ом с blplab делаю один fullscreen.blp 512x512 ну или 1024x1024 сопрягаю уже с готовой спец. loadscreen.mdx... И ничего не нарезаю и вес поменьше, чем суммарный.
Поскольку в посте упоминается именно C++, то тут все-же лучше анрил. А юнити это шарпы и совсем другая песочница.
Понятно. Хотя я иногда видел посты "противостоянием" фракций «unity» и «unreal» в других источниках. Если отбросить разницу в песочницах, и прочем. А по общему показателю они равны, или один из них - всё таки лучше.
На счёт kJass: Я просто хотел более менее упростить. Хотя пока я пришел к выводу: Что это не нужно, изобретения велосипеда. Прежде чем делать всё это я решил пока ещё обдумать и взвесить:
Что мы имеем на данный момент:
На хайве вышла новая сборка 1.5f ~ месяц назад.
Близзарды выпустили патч 1.27б с на 1 зубок,
Нужность изготовления нового парсера псевдоскрипта равна нулю (лишь возможно что хотя бы 10%)
Взесив vJass и cJass + надобность написания kjass'а || результам голосования и здешним рассуждением от других пользователей, + своя голова на плечах.. Не особо нужно... может сделать что-то нибудь другое...
.~ELB359,
PS: Чуть не забыл, в сJass есть эмуляция FormatString(строка формата) aka C++,
См. пункт 6.3.2 в руководстве от автора cJass.
KingMaximax, лучше бы потратил время с пользой и запилил полноценный редактор кода с контекстным автодополнением и генерацией часто используемых конструкций по шаблонам. Это куда больше времени экономит, чем издевательство над синтаксисом. А еще лучше - учил бы Unreal Engine.
Что-то вроде вбил в поля названия, а программа генерировала конструкцию? Может вы имели ввиду Unity, а не Unreal Engine. Или всё-таки ареал?
Идея прекрасная, но почему бы не придерживаться си-подобного синтаксиса? Что еще за "flo", "str"?
Можно придерживаться, но у меня мысль как бы облегчить для быстрого настрачивания строк кода. Хотя может можно и не писать. + Я ещё точно не решил..
Догадаться не сложно: float string
Заканчивался 2016 год, поколение ютуюба избавлялось от скобочек в вызове функций без параметров... В jass... ничего личного, поколение ютуба упомянуто исключительно для придания большей красочности высказыванию
basic jass тогда какой-то получается...
Не-а, дело в часто-вызываемых функциях, не во всем же избавляться от скобок. Со скобками - это дело каждого. Если все бы было так одинаково, но нет. Все разное, и не может быть одинаковым -такова воля отца восьми царей мироздания.
Полный рофл без намека на смысл. Единственная адекватная надстройка над джассом это wurstscript в котором в частности есть и всякие расширители дефолтных типов которые позволяют делать unit.getHandleId() и т.д.
Вот эту вот "pak+id+action" гирлянду уже 10 лет как изобрели в cjass.
Ты про Define гирлянду, или при обработке компилятором ключа "scope", если не указано имя скопе?
.getHandleId() - длинно дак ещё скобочки)) я проще буду unit.Handle без скобочек на конце)) так же как и с unit.Data, Item.Data Get[Unit/Item]UserData;
Все равно хочется больше простоты и удобности)))
Первый годный текст. Теперь бы словарный запас расширить. И я даже ждать буду.
Не знаю, получиться или нет. Обнадёживать не буду. Я стараюсь больше употреблять слова, ближе к рус. яз., а не пришедшие из вне. Ох уж эта этимология и орфоэпия.
Набросал недавно некоторые тексты, но они как кусочки разорванного рисунка, который нужно собрать по частям да так, чтобы образовалось точное изображение.
Можно сделать с нужных атак обнуление урона в константах где сопротивление брони от урона; И что самое интересное урон не пройдёт, но будет единица урона. Однако можно орудовать одной лог. глоб переменной) Оставляем лишь 1 чистый урон, который даёт юнитам леща по полной. Правда там мороки много, придётся для каждой брони делать своё сопротивление к урону, а так же без формул не обойтись. Одной особой переменной или ещё чем-то будешь с помощью условия просто сводить наносимый урон к 0.
Правда это геморрой.
» WarCraft 3 / не срабатывают триггеры инициализации (или вообще триггеры)
» WarCraft 3 / Как конвентировать эти функции, чтобы заработали?
» WarCraft 3 / Как конвентировать эти функции, чтобы заработали?
А есть же Get\SetUnitUserData || Set\GetItemUserData, и такая вещь как структура с ними тоже хорошая манипулаяция. Есть такая штука, которой не нужен хеш, ну допустим образно "GetHandleId() - HANDLE_POS_UNIT (0x100000). " и получает индекс массива к которому был закреплён юнит. Но зачем такой изврат? Когда есть хеш таблица, или структура и UserData...
» WarCraft 3 / не срабатывают триггеры инициализации (или вообще триггеры)
- Не было выхода цикла внутри функции инициализации
- Возможно вы поставили отрицательное значение индексу массива
- Скорее что-то дизсенхронизировало и обломало потоки
Если просто гуиТо некоторые функции не работают при инициализации триггера ( используйте однократный таймер с периодом 0.00 или 2.00 )
» WarCraft 3 / multiboard
» WarCraft 3 / Как скрыть определенный нест.обьект в world editor?
Ред. Волчачка
» WarCraft 3 / Количество текстур
Ред. Волчачка
» WarCraft 3 / multiboard
» WarCraft 3 / Триггерные заклинания
Ред. Волчачка
» WarCraft 3 / про boolexpr, filterfunc...
ей не требуется знать возвращает ли функция булево или нет. Она тупо отсылку к функции поставляет. Проще говоря он передаёт ссылку на функцию.
Поэтому лучше не извращаться с этим, если вы не применяете для каких либо значимых целей. А для исполнения действий нужна чисто без параметров и чтобы не возвращала ничего, например для TimerStart, TriggerAddAction
И да это ошибка уже парсера(как сказал quq_CCCP~~) самого JASS. Т.к. те проверяются из-за того, что те функции служебные, а ваша простая.
Ред. Волчачка
» WarCraft 3 / Герой и обычный юнит
» WarCraft 3 / Не мгновенный найм юнита
» WarCraft 3 / Скрыть иконку героя сверху или удалить с него геройность
Хотя на вряд ли это будет вам полезно.
» WarCraft 3 / как изменить время суток в редакторе варкрафт 3 ледяной трон
Если это стоит JPNG с XGM то никак, всегда будет ночь.
Со стандартным JPNG хайва можно.
» WarCraft 3 / Ошибка в коде
если вы используете одно и тоже условие для триггеров то лучше сделать глобальным.
boolexpr BXPR_0000 = null
где-нибудь создаёте.
И добавляете в каждый нужный триггер, если не хотите расходовать лишнюю память на одно и тоже условие.
Ну есть и другой способ добавить в Trigger_Actions
if (условие) then
код вызова внутри
endif
Ред. Волчачка
» WarCraft 3 / Ошибка в коде
Ещё бывает что значение из хеш-таблицы строкового показывало "(null)";
Ред. Волчачка
» WarCraft 3 / Ошибка в коде
Ред. Волчачка
» WarCraft 3 / Нарезалка LoadingScreen'а (теперь с интерфейсом!)
Я просто пользуюсь двумя программами gimp'ом с blplab делаю один fullscreen.blp 512x512 ну или 1024x1024 сопрягаю уже с готовой спец. loadscreen.mdx... И ничего не нарезаю и вес поменьше, чем суммарный.
» Кузня Волчачки / [Заметка №3] Черновик Kjass
Что мы имеем на данный момент:
PS: Чуть не забыл, в сJass есть эмуляция FormatString(строка формата) aka C++,
См. пункт 6.3.2 в руководстве от автора cJass.
» Кузня Волчачки / [Заметка №3] Черновик Kjass
Может вы имели ввиду Unity, а не Unreal Engine. Или всё-таки ареал?
» Кузня Волчачки / [Заметка №3] Черновик Kjass
Догадаться не сложно: float string
Ред. Волчачка
» Кузня Волчачки / Пишу для себя компилятор kjass
Не-а, дело в часто-вызываемых функциях, не во всем же избавляться от скобок. Со скобками - это дело каждого. Если все бы было так одинаково, но нет. Все разное, и не может быть одинаковым -такова воля отца восьми царей мироздания.
Ред. Волчачка
» Кузня Волчачки / Пишу для себя компилятор kjass
Все равно хочется больше простоты и удобности)))
Ред. Волчачка
» Кузня Волчачки / Потрошение XGM: Туманные события
Ред. Волчачка
» WarCraft 3 / Вопрос насчет "бессмертия" с EventDamage
Правда это геморрой.