Сейчас 08:44:10 Суббота, 20 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 10
  • «
  • 1
  • 2
  • 3
  • 4
  • 9
  • 10
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » JASP (Just Another Script Preprocessor)
JASP
Ty3uKДата: Понедельник, 02 Апреля 2012, 12:26:42 | Сообщение # 1
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
- небольшой препроцессор для языка Jass2, который запускается перед парсером vJass (JassHelper). Полную информацию о возможностях вы можете прочитать в мануале, все ссылки внизу.

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Ty3uKДата: Понедельник, 02 Апреля 2012, 18:18:15 | Сообщение # 26
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Как бэ сделали- в ск2 жасс 3

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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
Блокировки:
Да, и редактор крутой, уже оценил :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Понедельник, 02 Апреля 2012, 18:24:53 | Сообщение # 29
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Я думаю, если запустить в Galaxy наших ландеров и моделлеров, они из него что угодно сделают.

 

Ty3uKДата: Понедельник, 02 Апреля 2012, 18:26:10 | Сообщение # 30
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Почоны, мы отвлеклись от темы :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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
Блокировки:
Итак, я запилил возможность объявления одиночных глобалок в любой части кода (кроме блока непарс). Выглядит это так
Code
global force f;
содержимое уходит в главный блок глобалок. Не работает с приватными и публичными директивами vJass, тут уж просите. И в конце нужен знак ; (точка с запятой). Так же запилил возможность массового объявления локалок с их последующей инициализацией (только те типы, которые я указывал в первом посте). Например, вот так
Code
new timer t, group g, force f;
транслируется в
Quote
local timer t = CreateTimer()
local group g = CreateGroup()
local force f = CreateForce()
так же планирую запилить такое же перечисление для глобалок. Поправил парочку мелких багов (ну а куда без них?), среди которых неправильный парс директив при количестве пробелов больше одного между ключевыми словами. Завтра с меня мануал на скудные (пока что) возможности и новая версия. Выложу на код.гугл и соурсфорж, сюда кину сообщение о том, что выложил. Всем, кому интересно- прошу, как говорится, к нашему шалашу.


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

HexingДата: Вторник, 03 Апреля 2012, 16:38:41 | Сообщение # 34
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Ty3uK, прикольно :)

 

Ty3uKДата: Вторник, 03 Апреля 2012, 16:41:42 | Сообщение # 35
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Спасибо :) видишь, даже я могу что-то интересное сделать D:

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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)
---------------------------------------------
Все так "интересуются", а между тем никто еще ни разу не скачал :(


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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)
---------------------------------------------
Понимаешь, я не говорю использовать, просто обычно чтобы выработать мнение нужно хотя бы попробовать, я к этому клоню


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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)
---------------------------------------------
Мой препроцессор скачали два раза жители Румынии avtoradolf

Добавлено (09 Апрель 2012, 14:38:30)
---------------------------------------------
Итак, готова новая версия. Но интернет не проплачен, поэтому дабы подогреть интерес публики, я выкладываю мануал по возможностям новой версии. Список изменений, лог багфиксов и сам препроцессор ждите на днях (если кто-то вообще ждет)


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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 - пока, разве нет? Фри написал пока так, ибо парсеру на данный момент так проще всего найти выражение. Да и с чего ты взял, что надо по-другому? Синтаксис-то я не делаю похожим на какой-либо другой

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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. И запускается теперь после него


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал 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, есть директива flush
Code
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)
---------------------------------------------
Обновил мануал согласно заявленным возможностям. Из характерных особенностей - теперь не надо насильно ограждать конец строки знаком ; (точка с запятой)


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал 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)>


 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » JASP (Just Another Script Preprocessor)
  • Страница 2 из 10
  • «
  • 1
  • 2
  • 3
  • 4
  • 9
  • 10
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz