Вверх ↑
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Ответов: 258
Рейтинг: -27
#1: 2015-12-24 21:45:14 ЛС | профиль | цитата
Как создать свой пакет ?

Язык программирования "Jass" для игры Warcraft III

https://ru.wikipedia.org/wiki/Jass

Реально ли такое провернуть? И где какие-нибудь инструкции найти по созданию пакета нового ?

Запустил PackCreator, все выбрал что нужно, но пакет не добавляется. (Hiasm запускается и сразу же закрывается).
------------ Дoбавленo в 18.46:
#ini
function run(){

sys.addpack("warcraft 3","Warcraft 3","Jass","jass");


//sys.setcompiler("warcraft 3","Copy");

//sys.addproject("warcraft 3","EntryPoint","название проекта","описание проекта","расширение","make_warcraft 3.dll");

}

Появляется такой файл.

Вот как выглядит все :

------------ Дoбавленo в 21.09:
удалил коменты из строк. получилось примерно так:

function run(){

sys.addpack("warcraft3","Warcraft3","Создание Jass скрипта","jass");
sys.addproject("warcraft3","MapInitialize","Создание Jass скрипта в Hiasm","Warcraft III Jass in Hiasm","j","make_warcraft3.dll");
sys.setcompiler("warcraft3","Copy");

}

"Пакет" появился , но не могу создать проект. Пустое окно появляется вообще)
карма: 0

0
Ответов: 2059
Рейтинг: 132
#2: 2015-12-25 01:42:04 ЛС | профиль | цитата
Реально ли такое провернуть?

Не реально!
1. Надо прочитать текст, как делаются пакеты.
2. Надо понять, чего там написано.
3. Надо задать вопросы, чего там не понятно, со ссылками на первоисточник. Потянешь за ниточку, а клубок к началу времён...
Думаю, что для начала в голове должна быть чёткая картинка, какие и как компоненты должны быть сделаны.
Т.е. точки и текст им соответствующий, тогда не составить труда сделать пакет.
P.S. О птичках - правильней сделать компонент под delphi, CI или QT, или это компилятор? Мне кажется, что есть какая то dll или exe (в пять минут делается dll без исходников из exe), которая скрипты "озвучивает".
Если компилятор - то сложнее, но тоже реализуется. Тут дорога раздвояется... А на чём сделан Jass? - думаю, что не на ассемблере.
Подобные вопросы возникают, когда непонятны реализованные алгоритмы, или громоздки. Побыстрей срубить - пустое дело.
Когда понятно, то можно на чём угодно можно сделать.
Подозреваю, что это обёртка над чем-то, типа - opengl, openal + какая-то логика объектов, или где?
Попробуй сделать, подобно компоненту Visual Basic & Java Script, или на IC.
P.S.
Это я так.. Просто слог такой, а так я добрый.
Завтра, уже сегодня будем посмотреть.
Надо почитать, что за Jass такой. Мне легко с языками, потому что ни одного не знаю толком. Чист и не омрачён интеллектом.
карма: 6

0
Ответов: 258
Рейтинг: -27
#3: 2015-12-25 10:09:28 ЛС | профиль | цитата
flint2 писал(а):
Не реально!
1. Надо прочитать текст, как делаются пакеты.
2. Надо понять, чего там написано.
3. Надо задать вопросы, чего там не понятно, со ссылками на первоисточник. Потянешь за ниточку, а клубок к началу времён...
Думаю, что для начала в голове должна быть чёткая картинка, какие и как компоненты должны быть сделаны.



Так в том то и дело, не могу найти текст который нужно прочитать. Нигде нет никакой справки по созданию пакетов.

JASS - просто текстовый язык программирования его не нужно компилировать. Просто текст

globals
Объявление глобалок
endglobals

А дальше

function ### takes ### returns ###
текст функции
endfunction
------------ Дoбавленo в 07.58:
А, нашел ссылку в другой теме, ну попробую пакет создать новый)))
------------ Дoбавленo в 09.33:
Да не, бред какой-то) Никаких нормальных примеров и описания нет.

Думал за полчасика все сделать)))) Но с таким набором примеров и описанием пришлось бы месяц ковырять)))
карма: 0

0
Ответов: 4629
Рейтинг: 749
#4: 2015-12-25 11:24:52 ЛС | профиль | цитата
Cubone писал(а):
Так в том то и дело, не могу найти текст который нужно прочитать. Нигде нет никакой справки по созданию пакетов.

[url]forum.html?q=3&t=54530[/url]
карма: 26

0
Ответов: 258
Рейтинг: -27
#5: 2015-12-25 11:40:04 ЛС | профиль | цитата
Да я эту ссылку и нашел))

Но справка очень скудная...

Не помешал бы нормальный мануал, пошаговый.


Например я хотел понять это:
Куда конструкцию функций добавлять (в Jass это выглядит так: function ИМЯ takes список аргументов returns что возвращает, объявление локальных переменных, код, очистка локальных переменных, endfunction)
Куда добавлять типы переменных
Как сделать что бы глобальные переменные попали в блок globals endglobals
Куда и как добавить функции конвертирующие перменные например из integer в string или из real в integer

Но прочитав справку не нашел ни одного нужного примера.

Отрывки какие-то бесполезные только в этой справке...

Была бы нормальная справка можно было бы за пару минут создать пакет и начать компоненты добавлять без проблем. Но с таким описанием....
Пакет получилось создать. но дальше ничего не продвинулось.
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#6: 2015-12-25 12:09:33 правка | ЛС | профиль | цитата


Редактировалось 6 раз(а), последний 2021-06-22 17:07:14
карма: 0

0
Ответов: 258
Рейтинг: -27
#7: 2015-12-25 12:31:05 ЛС | профиль | цитата
Если тебе не дошло то вот http://forum.hiasm.net/forum.html?q=3&p=282202#p282202 мне там дали эту ссылку.

Но справка - "никакая". Пару отрывочных комментариев, ни чего не дающие примеры, я даже понял как работает println. Но ничего другого там не описано, или описано но так что с нескольких попыток прочтения ничего не понятно.
карма: 0

0
Ответов: 4629
Рейтинг: 749
#8: 2015-12-25 12:31:37 ЛС | профиль | цитата
Cubone писал(а):
Но прочитав справку не нашел ни одного нужного примера.
Ну, и кто в этом виноват... Может не твое это, а? Или время нужно больше.
В главе "Язык FTCG" есть раздел "Блоки", где как раз и описывается, как сделать, чтобы код попадал куда надо.
карма: 26

0
Ответов: 258
Рейтинг: -27
#9: 2015-12-25 13:41:27 ЛС | профиль | цитата
Netspirit писал(а):
Ну, и кто в этом виноват...




Если бы хотели написать понятным даже для новичков было бы меньше непонятного текста и больше примеров.


------------ Дoбавленo в 12.30:
Разобрался для начала кое в чем, но теперь застыл на создании элемента своего первого



Как добавить точку новую ? Кнопки "Добавить" никакой нет

И как сохранить если только load и reset кнопки есть а "сохранить" нету
------------ Дoбавленo в 12.43:
Очень странно, сначала не было половины кнопок, теперь появились:




Но осталось пару вопросов:

1. Как сохранить выбранный на данный момент блок, выбрать другой, что-нибудь сделать, и вернуться к выбранному?
(Думаю понятно для чего это.)


2. Как сохранить номер последней введенной строки в блоке, перейти к началу, сделать что-нибудь там, и вернуться обратно на сохраненный номер строки?
(В Jass языке все локальные переменные объявляются в начале функции.)
------------ Дoбавленo в 13.05:
Все таки мне кажется мануал от Netspirit ничего кроме головной боли не дает.

Может есть изначальная справка какая-нибудь, полная, или Netspirit придумал этот кодогенератор и справку к нему?
карма: 0

0
Ответов: 2059
Рейтинг: 132
#10: 2015-12-25 14:18:36 ЛС | профиль | цитата
Cubone,
Когда я для себя делал свой первый пакет, то прочитал вот это http://forum.hiasm.net//getfile/24542 раза три, если не больше.
Просто классно всё изложено! Netspirit - гигант!
Но осталось пару вопросов:

Честно говоря я никогда не пользовался ECreator-ом. На вкус и цвет конечно все фломастеры разные, но в обычном текстовом редакторе мне кажется удобней делать.
Для начала надо смотреть текст файлов чужих компонентов, копипастить куски и изменять под свои задачи. Я именно так учился.

Теперь пару слов без протокола.
Я почитал о Jass - теперь всё понятно, но остались два главных вопроса:
Куда эти скрипты засовывать (кто их исполняет?) и что должны получить на выходе?
С пакетом AVISynth всё предельно понятно, а откомпилированная схема твоего пакета что из себя будет представлять? Скрипт на языке Jass?
Т.е. компоненты - это, грубо говоря, куски кода на Jass
function HelloWorld takes player p returns nothing
call DisplayTextToPlayer(p, 0, 0, "Hello World!")
endfunction
, а откомпилированная схема - это готовый скрипт для употребления в среде/редакторе WarCraft3. Правильно я понял? Или что-то иное получаем на выходе и всё не так? Допустим получаем exe и эти куски кода в нём исполняются?

карма: 6

0
Ответов: 258
Рейтинг: -27
#11: 2015-12-25 17:08:40 ЛС | профиль | цитата
Blizzard в своих играх используют эти скрипты, например для Starcraft 2 новый JASS язык используется, вроде бы JASS2 называется. (Но туда никакой hiasm не нужен т.к все что нужно есть в встроенном редакторе)


По идее на выходе получается обычный текстовый .J файл который можно будет без труда вставить в свою карту(Warcraft 3 его использует для карт, например текст на экран вывести, юнита в игре создать нового, способность какую-нибудь создать самодельную и т.п, в общем весь набор функций есть в "Jass natives")



Он не компилируется а просто в виде текста, слегка на delphi смахивает. В таком виде его игра принимает.

flint2 писал(а):
Когда я для себя делал свой первый пакет, то прочитал вот это http://forum.hiasm.net//getfile/24542 раза три, если не больше.

Да я справку уже тоже гдето 3 раз читаю, но в ней слишком мало полезной информации и слишком много текста, или это мне кажется...
А может все из-за оформления, плохочитаемое ))))



Было бы легче если б пакеты так же легко создавались как и программы в hiasm)) Ввел что-нибудь куда-нибудь, кнопку нажал и готово Но вряд ли такое бывает)))
------------ Дoбавленo в 16.32:
Cubone писал(а):
Но осталось пару вопросов:

1. Как сохранить выбранный на данный момент блок, выбрать другой, что-нибудь сделать, и вернуться к выбранному?
(Думаю понятно для чего это.)


2. Как сохранить номер последней введенной строки в блоке, перейти к началу, сделать что-нибудь там, и вернуться обратно на сохраненный номер строки?
(В Jass языке все локальные переменные объявляются в начале функции.)


В справке это можно найти? Не хочет что-то справка читаться
карма: 0

0
Ответов: 4629
Рейтинг: 749
#12: 2015-12-25 17:45:15 ЛС | профиль | цитата
Cubone писал(а):
Как сохранить выбранный на данный момент блок, выбрать другой, что-нибудь сделать, и вернуться к выбранному?

fvar(old)
old = block.select('MY_BLK')
println(....)
block.select(old)

Cubone писал(а):
Как сохранить номер последней введенной строки в блоке, перейти к началу, сделать что-нибудь там, и вернуться обратно на сохраненный номер строки?
Разбить на несколько блоков. Либо сохранять в глобальные переменные в виде массивов, а в конце печатать содержимое переменных в блок в нужном порядке.
карма: 26

0
Ответов: 258
Рейтинг: -27
#13: 2015-12-25 17:58:08 ЛС | профиль | цитата
[quote=Netspirit]
fvar(old)
old = block.select('MY_BLK')
println(....)
block.select(old)
[/quote]
Тут я не много не понял.

Это же то же самое что и :
block.select('MY_BLK')
println(....)
block.select('MY_BLK')

А мне нужно

code_36689.txt


------------ Дoбавленo в 17.19:
что-то с форумом не то, переделал мне сообщение в непонятное ))) qoute не сработало, а второй code вообще в файл зачем-то )
------------ Дoбавленo в 17.22:

Я хотел получить что-то вроде такого:
old = getselectedblock
block.select('MY_BLK')
println(....)
//еще какие-нибудь действия а затем:
block.select(old)

карма: 0

0
файлы: 1code_36689.txt [127B] [444]
Ответов: 4629
Рейтинг: 749
#14: 2015-12-25 17:59:57 ЛС | профиль | цитата
Не то же самое, если до block.select('MY_BLK') был выбран другой блок (не 'MY_BLK'). И совсем не то, если имена блоков находятся в переменных и подменяются по необходимости.
fvar(old)
block.select('MY_BLK1')
println(....) // Печатаем в MY_BLK1
old = block.select('MY_BLK2')
println(....) // Печатаем в MY_BLK2
block.select(old)
println(....) // Печатаем в MY_BLK1

Так понятнее?
карма: 26

0
Ответов: 258
Рейтинг: -27
#15: 2015-12-25 18:19:16 ЛС | профиль | цитата
Ааа, block.select возвращает выделенный до этого блок?

понятно)))
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)