Похоже на то, что легких+быстрых+чистых решений нет. Постараюсь научить друга вызывать функции с глобалками в аргументах. Заставлять его лезть в реестр, или делать какие-то сложные шаги, кроме как скопировать файлик, или запустить что-то одно, — не вариант, он просто психанет и бросит.
Скрипт был бы идеальным решением. Недавно наткнулся на StormLib, но он на С. Есть варианты и на луа, но они работают с luarock, а это вообще не вариант. Мне нужно маленькое простое и портативное решение. В общем, как я себе нафантазировал: конечная цель использовать StormLib с помощью луа скриптов исполняемых портативным LuaBinaries. Без знаний С, мне нужно сделать из StormLib какую-то особенную dll которая подходит для LuaBinaries. Как я себе представляю, то нужно просто обернуть функции из оригинала, каким-то специфичным образом. Пожелайте мне удачи.
quq_CCCP, Я много чего хочу сделать. =) Во многих механиках которые я хочу реализовать используются конечные автоматы, разумеется, мне нужно как-то переключать им состояние и крутить код. Возьмем к примеру ИИ. В каждого игрока есть несколько колонистов, которым он может давать задачи. У них есть глобальная задача, например, рубить дрова. Также есть локальная задача - найти дерево, срубить дерево, поесть, сбежать от волка, атаковать волка... Вот я и хочу разузнать различные нюансы, чтобы решить, как лучше всего это реализовать.
На данный момент склоняюсь к тому, чтобы на каждое состояние создать цикл и группу. Если отключать таймер для пустых груп, то вроде будет норм, да и состояние нужно обновлять не часто, 0.3-0.5 сек должно быть норм. А еще можно разбить на несколько груп со сдвигом в 0.1 секунды, чтобы распределить нагрузку, лишь бы не наложились таймеры с других механик.
fenathesnake, Спасибо. Дальше вопрос не обязательно к тебе, но в контексте данного ответа.
Мне не нужно полноценное ООП, а только более быстрый способ вызвать функцию по ссылке (чем бы эта "ссылка" не была). Разве нет ничего кроме ExecuteFunc и TriggerEvaluate (ну и утекающего TriggerEvaluate)? Фильтры вроде можно класть в массив, есть ли способ вызвать фильтр через мемхак?
Если и в правду нет других способов, то, по моим не очень проверенным данным, TriggerEvaluate самый быстрый (в среднем) способ. Есть такие у кого другое мнение? Буду рад вас услышать.
Ну и возвращаясь к функциям из мемхака. У меня есть ряд задач, где нужно много однотипных вычислений над массивами или хеш-таблицами размером, грубо скажем, 70 000 элементов. Насколько будет сложной задача, для незнающего человека, написать функцию на С и внедрить её в карту? Этому где-то учат? =)
Зайди в триггер ItemAPI или как-то так и с помощью ctrl + f ищи Icon/Path/Image, ничего сложного. Я уже давно не смотрел в мемхак, но там всё было интуитивно понятно из названий
Мне нужно изменить иконку СПОСОБНОСТИ, а не предмета. Я хочу реализовать инвентарь, типа так: есть несколько слотов (руки, голова, торс...), очевидно, что в каждый слот можно экипировать соответсвующий предмет. Далее мне нужно решить, каким образом и где отображать экипированные предметы. Я решил сделать юнита-инвентаря, в которого есть по способности на каждый слот, когда игрок открывает инвентарь какого-то юнита, ему селектит юнита-инвентаря, в которого на каждый слот есть по способности, если слот пуст - то это пассивка с иконкой слота, а если там есть предмет, то нужна активная способность (снять предмет) у которой будет название, описание и иконка экипированного предмета. Раньше я делал такую способность на каждый предмет, но предметов стало очень много, нужно новое решение. В мемхаке от анрайза 1.4 есть функции на подмену имени и описания, но нет функции на подмену иконки.
Итераций и выполнений ровно десять, более того это одно и то же. Посмотрите внимательней, вы начинаете с нуля.
i во время проверки: 0 1 2 3 4 5 6 7 8 9 10
i после проверки: 1 2 3 4 5 6 7 8 9 10 11
Можно ссылку на вики хотябы дать ru.wikipedia.org/wiki/IEEE_754-2008
Там есть два нуля и две бесконечности, а ещё NaN, флоат можно записывать в scientific notation, короче, можно многое открыть для себя и читателей)
А в джассе разве такое есть? Я то знаю, что такое есть во многих языках програмирования, я немного учил джаву, но зачем это картоделам на джассе и виджассе?
У меня в профиле наглядная картинка есть, как работает IEEE 754. Можешь забрать в статью. Чем дальше от нуля или от целого числа, тем меньше точность.
Если честно, я сам толком не разобрался в теме чисел с плавающей точкой. Поэтому написал, как сам всё понял. Если я написал где-то откровенную глупость, то укажите мне на нее, пожалуйста. А если вы хотите, чтобы я добавил больше информации, то у меня не хватит на это сил. Максимум, что я мог бы добавить, это объяснение, что такое двоичная система счисления и как устроены числа с плавающей точкой по битам. Но на мой взгляд, смысла в этом нет, я лично ни разу не стыкался с какими-то проблемами с точностью.
Весь мой код в ближайшее время будет вызывать утечки, сейчас просто нет смысла с ними бороться. На мой взгляд, их можно изучить потом, а сейчас они лишь раздуют код и увеличат смысловую нагрузку. По моему плану, мы сначала изучим конструкции языка и основные API, а уже потом утечки. Их можно вместить в один урок, после которого все примеры уже будут без утечек. Если есть какие-то мысли, замечания или предложения по этому поводу, я готов их выслушать.
Так вставьте этот код в гуи, каждую строчку в отдельный скрипт. Только там в первой строке опечатка, нужно так: if (IsUnitIllusion(GetTriggerUnit())) then
jass_dev, Делается не так, уже обсуждали - триггер со всеми возможными событиями и екзекутом функции из базы данных, функция находится по ID. не быстрее чем по 1 триггеру на кадую способность, но экономит оперативку и гораздо удобнее.
jass_dev, да у меня нет стандартных способностей по ИД есть только 'A000; и дальше. Массив способностей как сделать.?
Создайте масив триггеров
Для каждой способности создайте триггер без событий, но с действием которое нужно выполнить во время каста способности.
Во время инициализации карты, добавьте в массив все такие триггеры, вписав в индекс [Ид способности] - 'A000'.
Создайте триггер с событием UNIT_CASTER_EVENT_SPELL_EFFECT. И в нём запускайте тот триггер, который лежит в массиве по индексу [Ид использованной способности] - 'A000'
Торможения будут зависеть от количества таких скилов, если их мало, то особой разницы не будет. Первый способ более производительней чем второй. В первом у тебя вызывается одна функция (условие) для всех ифов, а во втором для каждого ифа вызывается функция (условие).
Но если тебе важна производительность, то тебе не стоит использовать столбы ифов вовсе. Я бы рекомендовал сделать хеш-таблицу, где в качестве основного ключа выступал бы ИД способности. Ты бы сохранял туда триггеры без событий, но с функциями которые нужно выполнить при использовании способности. А потом, в одном триггере с событием UNIT_CASTER_EVENT_SPELL_EFFECT ты доставал по ИД способности нужный триггер и выполнял его. Если у тебя нет стандартных способностей и все ИД ровные 'A000', 'A021'... Можно сделать еще производительней, сохраняя нужный триггер не в хеш-таблицу, а в массив.В таком случае, индекс в массиве для нужной способности будет равен ID - 'A000'.
К сожалению, xgm очень часто напоминает мне старый анекдот:
Американский форум: задал вопрос — получил ответ. Израильский форум: задал вопрос — получил вопрос. Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
Всё конечно утрировано, но суть примерно та же. Во всяком случае, лично у меня такой именно опыт и речь сейчас не об этом курсе. Когда-то давно я пытался учить джасс на xgm, но мой интеллектуальный уровень был ниже, и статей было мало. В общем не получилось, а потом я подучил английский. Сперва я гуглял вопросы на русском языке и попадал на хгм, альтернатив так-то особо нет. Лишь когда ответов не было, я уходил на хайв. Скажу вам так, между русскоговорящей и англоговорящей аудиторией колоссальная разница. И дело не в размерах сообществ, хоть это и играет определенную роль, а в подходе к новикам. В русскоязычных сообществах новичка будут отговаривать от его затеи, говорить что слишком сложно, так сделать нельзя и т.д. В англоязычном сообществе, мало того, что всегда есть ответ или альтернатива, так еще есть и ответы на вопросы, но которые не смогли ответить в русскоязычном комьюнити.
Такой же опыт был у меня и с игровым конструктором game maker. Так что дело именно в русскоязычной культуре в целом, а не конкретном ресурсе.
Также практически весь материал, который большей частью еще находиться у меня в голове, взят с англоязычных источников или их переводов. А это про что-то да и говорит. Не ну я бы и рад их прочитать на русском, но их почти нет. С последнего я нашел только парочку обсуждений об агентах и утечках, что было полезно, но это была не статья.
А теперь два момента.
К чему я это всё. Для того чтобы популяризировать "Развитие", думаю, нужно доказать то, что оно того стоит. Просто я не особо понимаю, а чего вы хотите? Не все способны и хотят делать крутые проекты, некоторые просто фанятся. Мы же вам не мешаем, да и вроде я не Моргенштерн, который портит молодые умы. Напишите статьи о ЛУА, я тоже посмотрю, может мне понравится. Я если честно не вникал в него, вообще не вкурсе фича ли это рефорджа, или его можно и в старых версиях беспроблемно использовать (это действительно важно). А то мы как в советском союзе, всё о светлом будущем, а в магазине у нас туалетной бумаги не найти.
Откуда же взяться приверженцам ваших идей, если они нигде не были изложены в достаточном объеме? Вот все якобы и деградируют.
У меня лишних денег на рефордж нет, желания его покупать тоже нет, надеюсь по понятным причинам. У моих читателей ситуация аналогичная, осуждать их за это не стоит. Вообще-то варкрафту уже давно пора на помойку истории с такими рассуждениями, но только ситхи возводят всё в абсолют. Он Heroes 3 и Age of empire снова популярны в 2021 то году и ничего страшного. Там даже кастомки есть, а они еще страшнее чем в варкрафте.
Я понимаю, что меня и мою статью вроде уже оставили в покое, да особо и не задевали. Но сложно сдержатся и не вмешаться, когда у тебя за окном разгорается холивар. =)
Много людей играют и делают карты на старых версиях по разным причинам. Если есть спрос, то должно быть и предложение
Нет это не спрос, это неизбежность, статей по другим языкам нет, но а по джасу их слишком много, джас ужасен стар и гремуч, нового вы о нем ничего не расскажите. Люди все по прежнему ждут мануала по джасу для VSCode и режим папки в 1.26. Делать стать по джасу - тоже самое, что делать товердефенс в варкрафте, а не кажется ли вам что этого г предостаточно?
Я не поленился и вбил в поисковую строку xgmа слово "jass". Пролистав 36 страниц, я нашел четыре обучающие статьи о джассе, в которых сохранилось содержимое. Я даже дам ссылки на них: 1, 2, 3, 4.
А теперь прочитайте их и ответьте мне на вопрос, действительно ли они предоставляют полную информацию о JASS? Прочитайте комментарии, понятны ли они всем новичкам?
Да, еще есть статьи про vJASS, сJASS, и ZINC. Но они по сути перевод документации, а она не совсем подходит новичкам.
Опять же, существующие предложение не способно удовлетворить спрос. А если я чего-то не знаю, то откройте мне и многим новичкам тайну, где хранятся все эти заветные статьи по джассу? Но вообще, реально, без шуток, если они есть, то покажите их.
» WarCraft 3 / Как быстро подключать собственные функции в GUI? (желательно модульно)
» WarCraft 3 / Как быстро подключать собственные функции в GUI? (желательно модульно)
Ред. jass_dev
» WarCraft 3 / Как эффективно реализовать полиморфизм? (мемхак+)
Ред. jass_dev
» WarCraft 3 / Как эффективно реализовать полиморфизм? (мемхак+)
» WarCraft 3 / Как эффективно реализовать полиморфизм? (мемхак+)
» WarCraft 3 / Как изменить инконку у способности во время игры?
» WarCraft 3 / Как изменить инконку у способности во время игры?
» WarCraft 3 / Как изменить инконку у способности во время игры?
» RenderEdge / [RenderEdge] Memory Hack
Ред. jass_dev
» Программирование / Природа Выполнений в цикле While
i во время проверки: 0 1 2 3 4 5 6 7 8 9 10
i после проверки: 1 2 3 4 5 6 7 8 9 10 11
» WarCraft 3 / Рексар (Gachi)
» WarCraft 3 / Огр в маске (Gachi)
Ред. jass_dev
» WarCraft 3 / Крестьянин качок (Gachi)
» WarCraft 3 / Подробней о real и integer
» WarCraft 3 / Подробней о real и integer
» WarCraft 3 / Локальные переменные
» WarCraft 3 / Локальные переменные
» WarCraft 3 / Можно-ли триггерно проверить является ли Triggering Unit клоном?
» Программирование / 1-но событие для функций или несколько событий для каж.функции?
Ред. jass_dev
» Программирование / 1-но событие для функций или несколько событий для каж.функции?
» Программирование / 1-но событие для функций или несколько событий для каж.функции?
» WarCraft 3 / Курс JASS + vJASS
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
» WarCraft 3 / Курс JASS + vJASS
» WarCraft 3 / Курс JASS + vJASS