Extremator
offline
Опыт:
40,226Активность: |
Первые шаги в осваивании Jass'а (by Ex)
Вступление:
Я бы так и не стал разглядывать Jass, так как старый пресловутый GUI позволял мне реализовать все мои задумки. Я естественно понимаю что он имеет кучу косяков, изъянов и попросту недоработок. И собственно поэтому я и занялся пока что только изучением и разбором всяких более мелких деталей моего любимого "конструктора" ))). Я пытался расспрашивать знакомых жассеров, но...
Опытных - раз-два и всё, да и отошли они от дел варкрафтовских уже х)) А прочие - не знакомы с тем о чём я спрашиваю. В общем помочь простым разъяснением никто не может. ...а читать статьи я никогда не любил, но всё же время от времени иногда приходится это делать Поясню: я только начал разбираться в строении Jass'а, и крайне не-опытен.
. . .
Ближе к сути:
Для записи всяких данных я всегда использовал глобальные переменные, хоть и знал о существовании локальных аналогов.
Попытавшись воспроизвести свой простенький gui-спелл на jass'е, я понял что передавать данные из функции в функцию я научился, а вот хранить их n-ное время и потом обращаться за ними - не знаю как... т.е. я хочу обращаться к функции которая уже будет иметь иметь ряд переменных, которые (в свою очередь) уже были ранее записаны... Глобалки нужны мне). По сути это не проблема, и я лишь просто хотел немного укомплектовать всё это дело (в своём понимании этих слов).
Я разглядывал всякие коды... коды... да... В общем я наткнулся на некие globals / endglobals и library / endlibrary Что привело меня к мысли о возможности создания примерно вот такой конструкции (не смейтесь! я серьёзно! я пытался! хД) (в коде будут комменты с вопросами)
» триггер в общем виде
называется obrs
вот эта часть, которую я хочу как-то... я общем я не придумал как заставить её работать
а как она работает на самом деле - я попросту не знаю... в не я просто хочу объявлять все свои глобальные переменные для данного скилла мне кажется так было бы удобнее... хотя... хз в общем
» globals
в итоге я представляю себе триггер в общем виде примерно такой (распишу блоками)
. . .
Теперь мои основные вопросы:
. . .
P.S.: я задаюсь вопросом как сохранить данные, но при этом не упоминаю про хэш... Да, я сделал это умышленно, я пока не хочу обращаться к изучению хэша... (его я тоже пока не знаю). |
09.05.2014, 11:33 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Msey
????
offline
Опыт:
67,346Активность: |
1 чтобы работало нормально, делай через вжас 2 вжас мануал 3 ответ аналогичен второму советую сразу с вжаса начинать |
09.05.2014, 12:35 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Borodach
offline
Опыт:
6,328Активность: |
Начни изучать хеш, он сложный без толкового объяснения.
Пример сохранения юниту предметов доступных ему для использования, глобальной переменной. Юнит[1] = паладин Юнит[2] = ассасин Предмет[1] = молот Предмет[2] = нож При условии что поднимает предмет Юнит[1] и тип предмета[1] выполняются действия. Хеш имеет "2 массива". Тот же пример на хеше Записать в хеш типа логическая call SaveBoolean(название глобальной хеша,1,1,true) call SaveBoolean(название глобальной хеша,2,2,true) При проверке с загруженого хеша call LoadBoolean(название,1,1) = true делаем действия Но это только по очевидности идет номер сохранения. А в игре все объекты имеют свой номер и его можно узнать с помощью GetHandleId(объект). Так более функциональный пнимер call SaveBoolean(название хеша,GetHandleId(юнит применившый способность),1,true) Дальше в любом триггере можно загрузить эту логическую и если номер юнита совпадет с тем что сохранили, у тебя выполнятся действия. Хоть и не внятно объяснил, но хотя б показал преимущество хеша в простоте использования. Лучше удели время для его изучения. Borodach добавил: Начни изучать хеш, он сложный без толкового объяснения. Пример сохранения юниту предметов доступных ему для использования, глобальной переменной. Юнит[1] = паладин Юнит[2] = ассасин Предмет[1] = молот Предмет[2] = нож При условии что поднимает предмет Юнит[1] и тип предмета[1] выполняются действия. Хеш имеет "2 массива". Тот же пример на хеше Записать в хеш типа логическая call SaveBoolean(название глобальной хеша,1,1,true) call SaveBoolean(название глобальной хеша,2,2,true) При проверке с загруженого хеша call LoadBoolean(название,1,1) = true делаем действия Но это только по очевидности идет номер сохранения. А в игре все объекты имеют свой номер и его можно узнать с помощью GetHandleId(объект). Так более функциональный пнимер call SaveBoolean(название хеша,GetHandleId(юнит применившый способность),1,true) Дальше в любом триггере можно загрузить эту логическую и если номер юнита совпадет с тем что сохранили, у тебя выполнятся действия. Хоть и не внятно объяснил, но хотя б показал преимущество хеша в простоте использования. Лучше удели время для его изучения. |
09.05.2014, 13:06 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
столько лет на сайте ._.
хранить данные можно в глобалках абсолютно спокойно, ничего с ними не будет
пример объявления в джнгп
про либы почитай в вжасс мануале... у меня в подписи ссыль на англ.
на форуме можешь найти перевод адольфа...
столько времени на сайте проведено, поиска не знаем, статьи не любим, яснопонятно |
09.05.2014, 13:24 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
nvc123
new status
offline
Опыт:
59,284Активность: |
nvc123 добавил:
globals это объявление глобальных переменных после globals ничего не пишется а вообще сиджасс позволяет объявлять глобалки намного проще и функции писать тоже проще
nvc123 добавил:
для того чтобы хранить данные в глобалках для муи спелла нужно юзать атач nvc123 добавил: library это библиотека |
09.05.2014, 14:43 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Tobi123
offline
Опыт:
7,826Активность: |
Extremator:
Хэш рулит. Вот небольшой пример. Tobi123 добавил: И кстати локалки позволяют не запариваться насчет муи. И еще лучше не юзать точки(locations), координаты рулят. В примере на координатах написано. |
09.05.2014, 20:54 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
Tobi123, рулят структуры
Buulichkaa добавил:
в быстродействии, читабельности и логике кода, да и скорости его написания в конце концов. Buulichkaa добавил: но с другой стороны и про хэш таблицу тоже надо знать, так что попрактиковаться с ней стоит, она может быть полезна во многих случаях, как огромная БД или же БД с труднодоступными индексами, которые не влазят в диапазон 8192, может быть полезна при каких-нибудь "в теории" бесконечных, динамических спеллов, которые требуют поочередного сохранения координат (например) (прим. это психбольница будет) да и ещё в хренольёне случаев... |
09.05.2014, 21:02 | #7
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Extremator
offline
Опыт:
40,226Активность: |
Borodach:
Нее, хеш потом... сейчас меня интересовал конкретно блок globals Buulichkaa:
пробовал - запускалось главное меню игры)) сейчас на другом компе - работает... (буду сверять конфиги) Buulichkaa:
да я пробовал в поиске искать - ни на что даже просто касающееся темы я не натыкался( я всё привык делать методом тыка/личного эксперимента... чужие труды для меня крайне мало понятны... не знаю в честь чего так( разберусь потихоньку nvc123:
вот за это спасибо! много всего интересного написано хотя мне и первых пары абзацев хватило)) дальше как-то пока не понятно для меня (в тексте много ошибок, в слове library первая буква отсутствует, вместо твёрдого знака стоит мягкий, и т.п.)
nvc123:
Да не, у меня с муи и глобалками всё норм... но это на GUI а так как я пока только изучаю Jass, то появляются непонятны ситуации х) nvc123:
Я понимаю что ты хочешь помочь, но это слишком капитанский ответ :DD Tobi123:
Про локалки то я понимаю, но существуют они только в пределах одной функции... Но мне нужно в одной функции записывать данные на глобалки, а в другой считывать, при этом это происходит не сразу, может происходит многократно с разным интервалом и с различной величиной массива на момент обращения в ним... Я видел в мануале примеры всяких струкрут, библиотек, приватных переменных - но мне пока это рано, обычных глобалок вполне хватает.
Extremator добавил:
Хмм... так, я тут поковырялся... с редактором кароч у меня на ноуте всё норм пашет а на компе - нифига Я наверняка какие-то настройки менял, галочки ставил/убирал...
кароч что где поставить нужно что бы норм было? х) ещё у меня кстати на ноуте при сохранении постоянно писались ошибки мол, и я их убирал
а на компе - пиши в коде всё что хошь, он те слова не скажет, просто потом менюшку покажет вместо экрана загрузки карты хД как сделать так что бы он тревогу поднимал??? Extremator добавил:
Так, вот эту карта на ноуте работала, а на компе - нет. код разумеется кину и так
» abc
» CustomCode
|
10.05.2014, 07:20 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Tobi123
offline
Опыт:
7,826Активность: |
Extremator, объяви глобалки в топе Custom кода. Я скомпилировал твой код. В нем есть некоторое приемущество, что все сделано на одном глобальном таймере. Но для этого приходится использовать глобальные переменные(кстати можно обойтись и без глобалок, используя тот же самый хэш). Я считаю, что использование подобных глобалок приводит к некоторому неудобству, если их много. И ввиду этого, я считаю, что хэш с локальными переменными - наилучший вариант для использования в подобных случаях. |
10.05.2014, 08:12 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Extremator
offline
Опыт:
40,226Активность: |
Не, говорю же - хэш потом, в своё время.
Я не понимаю почему в одном редакторе карта запускается нормально, а в другом - нет. Я тут пробую всякие галочки тыкать - не выходит ничего. (посмотреть как галки расставлены на ноуте пока не могу) |
10.05.2014, 08:33 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Tobi123
offline
Опыт:
7,826Активность: |
За проверку кода отвечает JassHelper и AcidOptimizer |
10.05.2014, 09:22 | #11
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
Extremator, на том компе, на котором не работает переустанови джнгп, делов-то... |
10.05.2014, 09:35 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Extremator
offline
Опыт:
40,226Активность: |
Buulichkaa:
хотел скачать заново залез вот сюда - xgm.guru/p/wc3/jngp скачал вот тут - xgm.guru/p/wc3/jassnewgenpack-exp всё казалось бы просто но архив требует пароль :DD что за шутки? |
10.05.2014, 10:24 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
Extremator, xgm.ru был по-моему... попробуй или xgm.guru
|
10.05.2014, 10:26 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Extremator
offline
Опыт:
40,226Активность: |
я тут всё с галочками мучаюсь У меня вот так втыкнуто (AcidOptimizer вырубать пробовал - не помогает) |
10.05.2014, 10:32 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
Extremator, переустановил и не работает?
|
10.05.2014, 10:39 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Extremator
offline
Опыт:
40,226Активность: |
Buulichkaa:
да, подошло Buulichkaa:
вот только распаковал, сейчас посмотрим...... Extremator добавил: пароль подошёл установил запустил (чё-то в карта вся чёрная, ночь) запускаю - гл.меню ( |
10.05.2014, 10:50 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
Extremator, тогда не знаю, у меня все робит лол :D мб путь к карте русский или т.д. почитай в теме чего нельзя делать...
|
10.05.2014, 10:52 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Extremator
offline
Опыт:
40,226Активность: |
А ночь то как убрать?! что это за фигня в настройках стоит "фикс.полдень", а там ночь!!! >< |
10.05.2014, 10:54 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
Extremator, карта которую ты кидал выше (тест мап) у меня спокойно запустилась и скомпилилась без ошибок
Отредактировано Buulichkaa, 10.05.2014 в 11:05. |
10.05.2014, 10:55 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|