|
|
|
|
JASP
|
|
Ty3uK | Дата: Понедельник, 02 Апреля 2012, 12:26:42 | Сообщение # 1 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| - небольшой препроцессор для языка Jass2, который запускается перед парсером vJass (JassHelper). Полную информацию о возможностях вы можете прочитать в мануале, все ссылки внизу.
|
|
|
|
Ty3uK | Дата: Понедельник, 02 Апреля 2012, 18:18:15 | Сообщение # 26 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Как бэ сделали- в ск2 жасс 3
|
|
|
|
Hexing | Дата: Понедельник, 02 Апреля 2012, 18:23:10 | Сообщение # 27 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Ty3uK) Как бэ сделали- в ск2 жасс 3 какраз хотел написать, но ск2 это тебе на варик там всё по-другому, да и привязка к стандартам более сильная(ну какой там средний век)
|
|
|
|
Ty3uK | Дата: Понедельник, 02 Апреля 2012, 18:24:43 | Сообщение # 28 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Да, и редактор крутой, уже оценил
|
|
|
|
SirNikolas | Дата: Понедельник, 02 Апреля 2012, 18:24:53 | Сообщение # 29 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Я думаю, если запустить в Galaxy наших ландеров и моделлеров, они из него что угодно сделают.
|
|
|
|
Ty3uK | Дата: Понедельник, 02 Апреля 2012, 18:26:10 | Сообщение # 30 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Почоны, мы отвлеклись от темы
|
|
|
|
Hexing | Дата: Понедельник, 02 Апреля 2012, 18:39:04 | Сообщение # 31 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (SirNikolas) Я думаю, если запустить в Galaxy наших ландеров и моделлеров, они из него что угодно сделают. смотрел както выставки работ ландеров, так там и не скажешь что это варик, ощущение что даже светотень обработали в 3ds max, ужас что творят, скалы многоуровневые, конечно по ним не побегаешь, но выглядит супер, хотя я не уверен что это относится к ланду и вообще к wc3, если всё делают в 3ds max, а потом просто импортят
Quote (Ty3uK) Почоны, мы отвлеклись от темы okay
|
|
|
|
llka | Дата: Понедельник, 02 Апреля 2012, 19:24:11 | Сообщение # 32 |
4 уровень
Группа: Пользователи
Сообщений: 88
Награды: 0
Репутация: 34
Блокировки:
| Я уже потихоньку переношу свою карту на стар2, но с изучение галакси++ трудновато: уже написал несколько классов для юнитов и тут на оказывается нельзя создавать локальные триггеры, они всегда должны быть глобальными и иметь свое пространство в игре, в общем изучаю.
Добавлено (02 Апрель 2012, 19:24:11) --------------------------------------------- Но скажу что возможностей галакси имеено триггерынх, в раз так в 5ь больше.
|
|
|
|
Ty3uK | Дата: Вторник, 03 Апреля 2012, 15:56:47 | Сообщение # 33 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Итак, я запилил возможность объявления одиночных глобалок в любой части кода (кроме блока непарс). Выглядит это таксодержимое уходит в главный блок глобалок. Не работает с приватными и публичными директивами vJass, тут уж просите. И в конце нужен знак ; (точка с запятой). Так же запилил возможность массового объявления локалок с их последующей инициализацией (только те типы, которые я указывал в первом посте). Например, вот такCode new timer t, group g, force f; транслируется вQuote local timer t = CreateTimer() local group g = CreateGroup() local force f = CreateForce() так же планирую запилить такое же перечисление для глобалок. Поправил парочку мелких багов (ну а куда без них?), среди которых неправильный парс директив при количестве пробелов больше одного между ключевыми словами. Завтра с меня мануал на скудные (пока что) возможности и новая версия. Выложу на код.гугл и соурсфорж, сюда кину сообщение о том, что выложил. Всем, кому интересно- прошу, как говорится, к нашему шалашу.
|
|
|
|
Hexing | Дата: Вторник, 03 Апреля 2012, 16:38:41 | Сообщение # 34 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Ty3uK, прикольно
|
|
|
|
Ty3uK | Дата: Вторник, 03 Апреля 2012, 16:41:42 | Сообщение # 35 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Спасибо видишь, даже я могу что-то интересное сделать D:
|
|
|
|
Dreii | Дата: Вторник, 03 Апреля 2012, 19:18:53 | Сообщение # 36 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Ty3uK, Code new timer t,tr,ti,mo,ru,ka,ja,sp так можно?
|
|
|
|
Ty3uK | Дата: Вторник, 03 Апреля 2012, 19:34:54 | Сообщение # 37 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Нет, пока нельзя. В этом есть некоторые сложности, поэтому на данный момент можно объявлять их только такCode new timer t, timer f, timer g; Добавлено (03 Апрель 2012, 19:34:54) --------------------------------------------- Хотя нет, вру, не сложно- сейчас подумал и понял, как можно реализовать. Думаю, добавлю в 0.2
|
|
|
|
llka | Дата: Вторник, 03 Апреля 2012, 19:35:44 | Сообщение # 38 |
4 уровень
Группа: Пользователи
Сообщений: 88
Награды: 0
Репутация: 34
Блокировки:
| Было бы прикольно написать отдельный массив который мог бы содержать любые даные, будеь то стринг или инт.
|
|
|
|
Ty3uK | Дата: Вторник, 03 Апреля 2012, 20:23:27 | Сообщение # 39 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Чем не подходят ваши любимые структуры? можно написать апи для хэша и не париться Добавлено (03 Апрель 2012, 20:23:27) --------------------------------------------- Все так "интересуются", а между тем никто еще ни разу не скачал
|
|
|
|
Dreii | Дата: Вторник, 03 Апреля 2012, 20:34:37 | Сообщение # 40 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Ty3uK, Кчать бета тестовую версию неохото. Ибо возможностей мало. Твори,людям интересно(мне покрайней мери) З.Ы где 2010 делфи взял?
|
|
|
|
Ty3uK | Дата: Вторник, 03 Апреля 2012, 20:36:34 | Сообщение # 41 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| На рутреккере, издание Architect Mini Добавлено (03 Апрель 2012, 20:36:34) --------------------------------------------- Понимаешь, я не говорю использовать, просто обычно чтобы выработать мнение нужно хотя бы попробовать, я к этому клоню
|
|
|
|
Dreii | Дата: Вторник, 03 Апреля 2012, 20:36:36 | Сообщение # 42 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Ty3uK, тьфу,искать еще останусь на 7
|
|
|
|
Ty3uK | Дата: Понедельник, 09 Апреля 2012, 14:38:30 | Сообщение # 43 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Сейчас дам ссылку если надо Добавлено (04 Апрель 2012, 10:18:38) --------------------------------------------- Мой препроцессор скачали два раза жители Румынии Добавлено (09 Апрель 2012, 14:38:30) --------------------------------------------- Итак, готова новая версия. Но интернет не проплачен, поэтому дабы подогреть интерес публики, я выкладываю мануал по возможностям новой версии. Список изменений, лог багфиксов и сам препроцессор ждите на днях (если кто-то вообще ждет)
|
|
|
|
SirNikolas | Дата: Понедельник, 09 Апреля 2012, 15:31:22 | Сообщение # 44 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Ty3uK, что это? Даже я знаю, что "repeat ... until cond" должен транслироваться в "loop ... exitwhen cond; endloop". Никаких not вставлять не нужно. Да и вообще это тот же самый "do { ... } whilenot cond".
Только заметил синтаксис уничтожения объектов. Должно быть не "free timer t;", а просто "free t;". Парсер сам должен выбирать нужный деструктор. Хотя я все же предпочел бы Сишный delete.
|
|
|
|
Ty3uK | Дата: Понедельник, 09 Апреля 2012, 15:34:56 | Сообщение # 45 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Until - пока, разве нет? Фри написал пока так, ибо парсеру на данный момент так проще всего найти выражение. Да и с чего ты взял, что надо по-другому? Синтаксис-то я не делаю похожим на какой-либо другой
|
|
|
|
SirNikolas | Дата: Понедельник, 09 Апреля 2012, 15:52:40 | Сообщение # 46 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code var i: integer; begin WriteLn('while:'); i := 0; while i <> 10 do begin WriteLn(i); i := i + 1; end; WriteLn('repeat until:'); i := 0; repeat WriteLn(i); i := i + 1; until i <> 10; ReadLn; end. Code while: 0 1 2 3 4 5 6 7 8 9 repeat until: 0
|
|
|
|
Ty3uK | Дата: Четверг, 12 Апреля 2012, 12:54:02 | Сообщение # 47 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Значит ступил. Исправлю, спасибо за наводку
Добавлено (12 Апрель 2012, 12:54:02) --------------------------------------------- Коротко о главном
- Исправил цикл repeat until (спасибо SirNikolas за наводку)
- Написал алгоритм уничтожения объектов. Парсер сканирует фукции и методы скрипта, находит в них локальные переменные, определяет их тип и при вызове директивы free подставляет нужную функцию. Например,
Code function someFunc takes nothing returns nothing new timer t, group g //Some actions free t, g endfunction будет транслирован парсером вCode function someFunc takes nothing returns nothing local timer t = CreateTimer() local group g = CreateGroup() //Some actions call DestroyTimer(t) call DestroyGroup(g) endfunction - Полностью переписал ядро программы, улучшил быстродействие. Но теперь парсер местами несовместим с cJass. И запускается теперь после него
Сообщение отредактировал Ty3uK - Четверг, 12 Апреля 2012, 13:17:08 |
|
|
|
Hexing | Дата: Четверг, 12 Апреля 2012, 13:28:35 | Сообщение # 48 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Ty3uK, сделай функу вырубления cJass парсера, проблем будет -много, ну я имею ввиду галочкой в настрах Quote (Ty3uK) Написал алгоритм уничтожения объектов. Парсер сканирует фукции и методы скрипта, находит в них локальные переменные, определяет их тип и при вызове директивы free подставляет нужную функцию. Например, круть :3 Quote (SirNikolas) Только заметил синтаксис уничтожения объектов. Должно быть не "free timer t;", а просто "free t;". Парсер сам должен выбирать нужный деструктор. Хотя я все же предпочел бы Сишный delete. лично мне действительно было бы удобнее new - delete, a не new - free, ну да, наверное виной моя привычка к c++ и можешь сделать так: Quote (Ty3uK) function someFunc takes nothing returns nothing new timer t, group g //Some actions free t, g endfunction будет транслироваться в Quote (Ty3uK) function someFunc takes nothing returns nothing local timer t = CreateTimer() local group g = CreateGroup() //Some actions call DestroyTimer(t) set t = null call DestroyGroup(g) set g = null endfunction или какойнибудь finalfree/finaldelete для это замути, хотя может это излишне в общем продолжай делать, если не бросишь, получится конфетка
|
|
|
|
Ty3uK | Дата: Четверг, 12 Апреля 2012, 15:14:47 | Сообщение # 49 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Hexing, есть директива flushCode function someFunc takes nothing returns nothing new timer t, group g //Some actions free t, g flush t, g endfunction парсер переводит вCode function someFunc takes nothing returns nothing local timer t = CreateTimer() local group g = CreateGroup() //Some actions call DestroyTimer(t) call DestroyGroup(g) set t = null set g = null endfunction Спасибо за подсказки и веру в меня :3Добавлено (12 Апрель 2012, 15:14:47) --------------------------------------------- Обновил мануал согласно заявленным возможностям. Из характерных особенностей - теперь не надо насильно ограждать конец строки знаком ; (точка с запятой)
Сообщение отредактировал Ty3uK - Четверг, 12 Апреля 2012, 13:34:54 |
|
|
|
Hexing | Дата: Четверг, 12 Апреля 2012, 16:34:07 | Сообщение # 50 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| 1. Quote (Ty3uK) Однако объявление переменных одинакового типа нужно записывать так: function someFunc takes nothing returns nothing new timer t, timer f, timer c endfunction
как насчёт Code timer t1, t2, t3, int a, b = 0, string x = "something" ведь это не сложно сделать? тобишь перечесление однотипных переменных, кажется это ничему не противоречит? ну это так, на будущее, и то, если тебе нужно 2. Quote (Тузик) new global hashtable hash, force Team, timer Timer выглядит как будто Team и Timer - локальные, может следует сделать чтото вроде: new globals <a>, <b>, <c> = global <a>, global <b>, global <c> new global <a>, <b>, <c> = global <a>, local <b>, local <c> хотя тут опять же сам решай, это просто придирки 3. как насчёт new/free ко всем следующим вещам: Code timer group force boolexpr conditionfunc defeatcondition effect filterfunc fogmodifier image itempool leaderboard lightning multiboard quest texttag timerdialog trigger ubersplat unitpool dialog destructable item location rect region unit hashtable к примеру Code <new unit(a,b,c,d,e)> = <local unit u = CreateUnit(a,b,c,d,e)>
|
|
|
|
|
|
|
|
|
|
|