Absol, наверняка есть, но я не занимаюсь разработкой или распространением софта, предназначенного для взлома карт. Поддержка slk данной утилитой планируется, но это наверняка не то что вам нужно.
Какие требования к онлайну? Для тестов могу по хостить - IP белый, а вот со стабильностью канала бывают проблемы в последнее время, не говоря уже о том чтобы держать его онлайн 24/7.
По поводу хамачи - это эмулятор локальной сети через интернет, не требует белого IP.
ScorpioT1000, так и сделаю, надо только придумать чем заменить } для текстовых описаний (именно на этот символ плохо реагирует WE при загрузке файла - он просто игнорирует все что идет после него)
Но этот подход чреват неудобствами, связанными с неоднородностью синтаксиса.
horhy123, напрямую - нет, для этого нужно с помощью утилиты собрать в базу все данные по модификаторам атаки, а затем написать систему, вычисляющую атаку на основании этих данных.
Фильры не корректно работают с переключением между режимами сортировки и страницами в списке проектов. Вернее переключение между страницами работает только с клавиатуры. В общем халтура, как по мне. На главной таких проблем нет, но перезагрузка страницы пугает - прикрутили бы аякс чтоли.
А так - нововведению жирный плюс за идею.
Введена в тестовом режиме приятная возможность получить доступ к объекту по его строковому равкоду, полученному из поля другого объекта.
Для начала объявим шаблонную переменную
<assign somethg = "A000">
Как видите, это строковая переменная. Ее поведение полностью соответствует ожиданиям - при использовании в выражениях будет возвращено строковое значение со всеми вытекающими последствиями.
До сегодняшнего дня попытка обратиться к полям такой переменной приводила к возникновению ошибки библиотеки FreeMarker, но с недавних пор есть возможность превратить такую строковую переменную в ссылку на соответствующий объект, что позволит обращаться к полям этого объекта. На данный момент такое преобразование происходит при использовании конструкции "категория.переменная" и выполняется успешно только при условии принадлежности объекта к категории.
Обращение к полям объекта можно производить как сразу в конструкции категория.переменная, так и записав ссылку на объект в переменную.
<assign x = "A000">
${abilities.x.name}
равнозначно
<assign x = "A000">
<assign x = abilities.x>
${x}
ScorpioT1000, с каких пор на мобильные яблочные устройства можно поставить джаву? в любом случае в магазин свой они на джаве не принимают ничего, а вот адобовцы научились компилировать AIR приложения чуть ли не в нативный код iOS и такое решение меня более чем устраивает, вопрос только в сертификации приложений при попытке их протолкнуть на продажу - когда я с этим разбирался ничего еще не было ясно на эту тему.
Escapist, запили на iOS что-нибудь на джаве, а я на тебя посмотрю. Ну не прижилась на яблочных девайсах эта технология.
Как вариант - я уже предлагал портировать на Flash, который в виде Adobe AIR идет на отлично (не путать с Flash Player который конфликтует с браузером), но это достаточно много геморроя.
Beta 0.2 доступна для скачивания. Также был обновлен раздел "руководство пользователя" - добавлена статья, посвященная созданию учебного примера по применению утилиты.
Ввиду несовместимости формата хранения данных в файле wts и шаблонов библиотеки FreeMarker из утилиты временно убирается поддержка текстовых описаний объектов, остаются только шаблоны в коде.
Возможен переход на другую библиотеку компиляции шаблонов или изменение синтаксиса для шаблонов в текстовых описаниях.
В ближайшее время выложу обновленную версию утилиты. Пока нет интерфейса, зато она стала очень быстрой и очень модульной. Заодно был наведен порядок в файлах - теперь данные вынесены в отдельную папку и не пересекаются с файлами самой утилиты.
Ввиду малого количества свободного времени работы над утилитой продвигается достаточно медленно, но все-же продвигается. К примеру, недавно был закончен плагин, отвечающий за добавление в модель категорий и категорий с параметрами.
На данный момент конструкция "категория.объект" позволяет проверить принадлежит ли объект к категории(путем неописуемых извращений стало возможным в качестве ссылки на объект использовать в этой конструкции не только равкод, но и шаблонные переменные). Дополнительные параметры, присвоенные объектам через категории, доступны обычным способом - через конструкцию "объект.категория".
Синтаксис задания категорий и параметров объекта через поле "suffixEditor" в РО выглядит так:
Категории в списке могут быть разделены пробелами или заключены в квадратные скобки. Название категории от параметра отделяется двоеточием. На данный момент допускается только один параметр для каждой категории.
При попытке получить значение поля suffixEditor будет возвращен только текст до символа @, обозначающего начало списка категорий.
Также немного изменился синтаксис доступа к обычным полям объекта. Для полей, не имеющих уровня все осталось по прежнему, а вот для тех, что могут принимать различные значения на разных уровнях был принят синтаксис "объект.поле[уровень]", как для обращения к элементам массива. Также, в случае если уровень полей объекта заведомо ограничен первым, все поля первого уровня становятся доступными через обычную конструкцию для доступа к полям без уровня: "объект.поле".
Добавлена возможность получать как TRIGSTR_ версию текстовых полей, так и их подлинный текст. Для обращения к подлинному тексту используется конструкция "объект.поле_STR".
Добавлена дополнительная компиляция шаблонов при использовании циклических ссылок первого уровня вложенности. Это позволяет избежать казусов со ссылками в текстовых полях на другие текстовые поля, использующие шаблоны (в таком случае шаблоны из импортированного текстового поля не компилировались). Возможно, в дальнейшем будет введен параметр, отвечающий за глубину обработки циклических ссылок на текстовые поля, позволяющий задать больший допустимый уровень вложенности (каждый уровень вложенности это дополнительный проход по файлу в поисках шаблонов).
И так, работа с плагинами практически завершена, в частности доступ к данным в формате РО осуществляется через набор плагинов, каждый из которых отвечает за отдельный файл с данными. Более того, для основных типов плагинов разработаны абстрактные классы, содержащие базовую функциональность, что позволяет минимизировать объем кода непосредственно в классах самих плагинов.
пример класса файлового плагина
public class UnitLoader extends AbstractDataLoaderPlugin {
private static final int PLUGIN_ID = 100;
private static final String PLUGIN_MESSAGE = "unit loader is here";
private static final Path FILE_PATH = FileSystems.getDefault().getPath("fly", "war3map.w3u");
private static final DataObjectType OBJECT_TYPE = DataObjectType.UNIT;
private static final boolean IS_EXTENDED = false;
@Override
public String getMessage() {
return PLUGIN_MESSAGE;
}
@Override
public int getId() {
return PLUGIN_ID;
}
@Override
public Path getPath() {
return FILE_PATH;
}
@Override
public boolean isExtended() {
return IS_EXTENDED;
}
@Override
public DataObjectType getType() {
return OBJECT_TYPE;
}
}
Осталось уточнить некоторые особенности формирования модели, используемой библиотекой FreeMarker при обработке шаблонов.
alexprey, малое количество метаданных можно разместить и в существующих полях, не нарушая целостность данных объекта (естественно при условии что известен способ достать эти метаданные), а список полей в РО можно и расширить, на сколько я знаю.
Doc, опять не согласен - пока я не разберусь как дополнять список полей в РО, не вызывая конфликтов с UMSWE, ручками придется дописывать все поля, которые не удастся записать в РО.
Статья ничего так. Но было бы неплохо добавить вариант без vjass, и еще сказать пару слов о хештаблицах - при грамотном применении они будут работать быстрее чем поиск по массиву (не путать со слоупочным кешем, хештаблицы отстают от массивов по скорости обращения примерно в полтора раза, на сколько я помню - иногда одно обращение к таблице будет куда лучше чем десяток обращений к массиву и тонна арифметических операций).
П.С. Нет, я не призываю отказаться от структур и перейти на голые хештаблицы. Doc, почему прошлый век? наоборот, грамотно построенная база данных гармонично дополняется извлечением данных из РО. Моя утилита предоставляет только инструмент, позволяющий достать данные, а как их сохранить в коде, это уже головная боль мапмейкера.
Распараллелил загрузку данных из файла. Стало чуть быстрее, но как-то не очень ощутимо. Попробую выпилить большую часть логирования, должно стать быстрее.
Так и есть, чертов логгер тормозил. Выпилю все лишнее логирование - будет летать.
Все, оставил только самые важные записи в логе. Срабатывает моментально. На все про все уходит меньше секунды.
Первая версия, работающая с плагинами, успешно протестирована. На очереди перенос существующего функционала в плагины.
» Fly Data Processor / Fly Data Processor
» DGLaboratory / Сервер
» DGLaboratory / Сервер
» DGLaboratory / Сервер
» Battle Mages / Battle Mages
» Fly Data Processor / Fly Data Processor beta 0.2
» Fly Data Processor / Учебный пример
» XGM Team / Тематики проектов
А так - нововведению жирный плюс за идею.
» Fly Data Processor / WIP
Для начала объявим шаблонную переменную
<assign somethg = "A000">
Как видите, это строковая переменная. Ее поведение полностью соответствует ожиданиям - при использовании в выражениях будет возвращено строковое значение со всеми вытекающими последствиями.
Обращение к полям объекта можно производить как сразу в конструкции категория.переменная, так и записав ссылку на объект в переменную.
<assign x = "A000">
${abilities.x.name}
равнозначно
<assign x = "A000">
<assign x = abilities.x>
${x}
» Spin Deluxe / Обзор!
» Spin Deluxe / Обзор!
» Spin Deluxe / Обзор!
» Fly Data Processor / Fly Data Processor
» Fly Data Processor / Fly Data Processor beta 0.2
» Fly Data Processor / Fly Data Processor beta 0.2
» Fly Data Processor / Учебный пример
» Fly Data Processor / Fly Data Processor
» Fly Data Processor / WIP
На данный момент конструкция "категория.объект" позволяет проверить принадлежит ли объект к категории(путем неописуемых извращений стало возможным в качестве ссылки на объект использовать в этой конструкции не только равкод, но и шаблонные переменные). Дополнительные параметры, присвоенные объектам через категории, доступны обычным способом - через конструкцию "объект.категория".
Синтаксис задания категорий и параметров объекта через поле "suffixEditor" в РО выглядит так: Категории в списке могут быть разделены пробелами или заключены в квадратные скобки. Название категории от параметра отделяется двоеточием. На данный момент допускается только один параметр для каждой категории.
Добавлена возможность получать как TRIGSTR_ версию текстовых полей, так и их подлинный текст. Для обращения к подлинному тексту используется конструкция "объект.поле_STR".
Добавлена дополнительная компиляция шаблонов при использовании циклических ссылок первого уровня вложенности. Это позволяет избежать казусов со ссылками в текстовых полях на другие текстовые поля, использующие шаблоны (в таком случае шаблоны из импортированного текстового поля не компилировались). Возможно, в дальнейшем будет введен параметр, отвечающий за глубину обработки циклических ссылок на текстовые поля, позволяющий задать больший допустимый уровень вложенности (каждый уровень вложенности это дополнительный проход по файлу в поисках шаблонов).
» Fly Data Processor / WIP
» WarCraft 3 / Базы данных
» WarCraft 3 / Базы данных
» WarCraft 3 / Базы данных
» WarCraft 3 / Базы данных
П.С. Нет, я не призываю отказаться от структур и перейти на голые хештаблицы.
Doc, почему прошлый век? наоборот, грамотно построенная база данных гармонично дополняется извлечением данных из РО. Моя утилита предоставляет только инструмент, позволяющий достать данные, а как их сохранить в коде, это уже головная боль мапмейкера.
» WarCraft 3 / Базы данных
» Fly Data Processor / WIP
Так и есть, чертов логгер тормозил. Выпилю все лишнее логирование - будет летать.
Все, оставил только самые важные записи в логе. Срабатывает моментально. На все про все уходит меньше секунды.
Первая версия, работающая с плагинами, успешно протестирована. На очереди перенос существующего функционала в плагины.