Shortcut2ELF - Метка на эльф. Эльф обеспечивает возможность запуска других эльфов по метке.
Эльф из серии невыгружаемых. Запустив один раз он ждет вызова метки со специальным кодом (0x0000FF10). И вообще выгружать его опасно.
Я позволил себе непозволительную роскошь - выделил ивент 0xFF10 под свои нужды :). Но вы так НЕ ДЕЛАЙТЕ! :)
Реализовано 2 типа запуска через метку:
1) BY_NAME. Запускается эльф из папки по-умолчанию (задается в DB) имя файла которого прописано в имени метки (с расширением!)
2) BY_ID. Запускается все эльфы (баг) с заданным id. id и путь задаются в DB.
3) Есть также команды эльфу (на данный момент только одна) через метку. [top secret :P]
База эльфов с id читается в таком порядке:
"/b/Elf/sc2elf.db"
"/b/sc2elf.db"
"/a/sc2elf.db"
"/c/sc2elf.db"
В итоге будет прочитана и использована последняя база из тех, что найдется. Если все 4 пути правильные, то будет использоваться 4й путь. Сделано для счастливых необладателей карты памяти для телефона :).
----------------
База эльфа. Структура.
Пока это бинарник (Мне читать удобнее).
Заголовок:
1) 4 байта 0x73634442 - чтобы не пытались левый файл подсунуть. А вообще чтоб было :).
2) 4 байла кол-во структур-описаний.
Заголовок занокчился.
Блок описаний.
3) 4 байта - id эльфа. Значение 0x0000FFF1 зарезервировано для параметра эльфа "папка по-умолчанию" откуда будут запускаться эльфы методом BY_NAME.
4) 4 байта - офсет относительно начала блока строк.
Повторяются эти 8 байт столько, сколько указано по оффсету 0x4 файла (пункт 2).
Блок строк
5) Строки в кодировке Unicode. Заканчивается строка двухбайтным символом ноль (0x0000). Вобщем заканчивается так, как и должна заканчиваться строка.
----------------
Метки. Структура метрки на эльф. SEEM 0002.
1) оффсет 0x1 - 1 байт означает тип запуска (см. 2 типа запуска через метку). (0=BY_NAME, 1=BY_ID, 2=SYS)
2) оффсет 0x4 - 4 байта ивент, по которому вызыывется эльф. Должно быть 0x0000FF10.
3) оффсет 0x8 - 4 байта на id эльфа, который должен запуститься. (для метода BY_ID).
4) оффсет 0x20 - строка в кодировке Unicode. Имя метки. Вам это ненужно, так, для общих знаний :). Редактируйте в меню "Метки".
Просто так, отредактировав сим, вы врятли что-то получите (там еще есть маска меток(не знаю, извините где, еще не узнавал) и 2 оффсета в сим_0002). Лучше создайте метку и редактируйте сим, выделенный для этой метки.
----------------
Конец теории.
Редактируем сим_0002
Итак, очищаем все метки (потом ровными руками восстановите), создаем по одной метке и правим согласно теории.
Если всеже строка выше тяжела для вас, делайтем так: Очищаем все метки, создаем 2 метки куда угодно, заливаем 2 сима из архива (0002_0001.seem и 0002_0002.seem) на свои места.
Редактирование DB.
А нету :Р. Только по теории пляски с WinHex.
Файл пример DB выложен в архиве. В нем прописано папка_по-умолчанию="/b/Elf/", id 0x00000001 = "/b/Elf/MotoCmd.elf", id 0x00000002 = "/b/Elf/REDandGREEN.elf"
Я понимаю что ничего не понятно. Поэтому лучше подождите менеджера для редактирования DB и меткок на эльфы.
Ну и заключительная фраза :)
Сообщение отредактировал G-XaD - 30.1.2008, 1:10
Эльф из серии невыгружаемых. Запустив один раз он ждет вызова метки со специальным кодом (0x0000FF10). И вообще выгружать его опасно.
Я позволил себе непозволительную роскошь - выделил ивент 0xFF10 под свои нужды :). Но вы так НЕ ДЕЛАЙТЕ! :)
Реализовано 2 типа запуска через метку:
1) BY_NAME. Запускается эльф из папки по-умолчанию (задается в DB) имя файла которого прописано в имени метки (с расширением!)
2) BY_ID. Запускается все эльфы (баг) с заданным id. id и путь задаются в DB.
3) Есть также команды эльфу (на данный момент только одна) через метку. [top secret :P]
База эльфов с id читается в таком порядке:
"/b/Elf/sc2elf.db"
"/b/sc2elf.db"
"/a/sc2elf.db"
"/c/sc2elf.db"
В итоге будет прочитана и использована последняя база из тех, что найдется. Если все 4 пути правильные, то будет использоваться 4й путь. Сделано для счастливых необладателей карты памяти для телефона :).
----------------
База эльфа. Структура.
Пока это бинарник (Мне читать удобнее).
Заголовок:
1) 4 байта 0x73634442 - чтобы не пытались левый файл подсунуть. А вообще чтоб было :).
2) 4 байла кол-во структур-описаний.
Заголовок занокчился.
Блок описаний.
3) 4 байта - id эльфа. Значение 0x0000FFF1 зарезервировано для параметра эльфа "папка по-умолчанию" откуда будут запускаться эльфы методом BY_NAME.
4) 4 байта - офсет относительно начала блока строк.
Повторяются эти 8 байт столько, сколько указано по оффсету 0x4 файла (пункт 2).
Блок строк
5) Строки в кодировке Unicode. Заканчивается строка двухбайтным символом ноль (0x0000). Вобщем заканчивается так, как и должна заканчиваться строка.
----------------
Метки. Структура метрки на эльф. SEEM 0002.
1) оффсет 0x1 - 1 байт означает тип запуска (см. 2 типа запуска через метку). (0=BY_NAME, 1=BY_ID, 2=SYS)
2) оффсет 0x4 - 4 байта ивент, по которому вызыывется эльф. Должно быть 0x0000FF10.
3) оффсет 0x8 - 4 байта на id эльфа, который должен запуститься. (для метода BY_ID).
4) оффсет 0x20 - строка в кодировке Unicode. Имя метки. Вам это ненужно, так, для общих знаний :). Редактируйте в меню "Метки".
Просто так, отредактировав сим, вы врятли что-то получите (там еще есть маска меток(не знаю, извините где, еще не узнавал) и 2 оффсета в сим_0002). Лучше создайте метку и редактируйте сим, выделенный для этой метки.
----------------
Конец теории.
Редактируем сим_0002
Итак, очищаем все метки (потом ровными руками восстановите), создаем по одной метке и правим согласно теории.
Если всеже строка выше тяжела для вас, делайтем так: Очищаем все метки, создаем 2 метки куда угодно, заливаем 2 сима из архива (0002_0001.seem и 0002_0002.seem) на свои места.
Редактирование DB.
А нету :Р. Только по теории пляски с WinHex.
Файл пример DB выложен в архиве. В нем прописано папка_по-умолчанию="/b/Elf/", id 0x00000001 = "/b/Elf/MotoCmd.elf", id 0x00000002 = "/b/Elf/REDandGREEN.elf"
Я понимаю что ничего не понятно. Поэтому лучше подождите менеджера для редактирования DB и меткок на эльфы.
Ну и заключительная фраза :)
Я гарантирую неработу фичи на телефонах, в которых размер сима 0002 не равен 68 байт.
Сообщение отредактировал G-XaD - 30.1.2008, 1:10