Всем привет, после того как я поделился своей картой мне показали кучи ошибок и недочетов по этому прошу вас поделится своими мыслями, идеями, фишками которыми вы пользуетесь говорю за ранее я пишу чистый джасс
Пример, если хочу проверить логическое условие в "if" делаю так
If boolean == true then
Endif
А можно было без "== true= и узнал для того что бы сохранить группу в хеш таблицу не нужно переменная в место этого при сохранении создать группу "CreateGroup()"

Ты пишешь не на чистом джассе, у тебя юзался сджасс и даже вджасс
globals
endglobals
это фишки вджасса, а сджасс позволял тебе объявлять локальные переменные не в начале функции

вместо == false можно писать not перед функцией
например у нас умер юнит, мы пишем IsUnitType(u,UNIT_TYPE_DEAD) == false, то бишь нам нужен был живой юнит, его тип не равно мёртвый, можно написать not IsUnitType(u,UNIT_TYPE_DEAD)

насчёт работы с группами, ты можешь заносить основные данные в глобалки, а уже в группе и кондишене их юзать, ForGroup быстрее цикла работает

Остальные ништячки по быстроте написания кода тебе может предоставить cджасс, но это кривая фигня и не советую им пользоваться
Сджасс позволяет тебе не писать каждый раз call при вызове фукнции и не писать local при объявлении переменных, не писать после каждого if - then в конце, объявлять переменные через запятую, закидывать в одну строку несколько функций разделяя их точкой с запятой (это перенос строки), цикл там выглядит покрасивее, например
loop
	exitwhen i == 10
	set i = i+1
endloop
на сджассе можно так написать
while (i < 10){ i++ }

сджасс после компиляции становится обычным джассом само собой, это не оптимизация

кстати, по поводу ForGroup, намного лучше будет, если ты создашь темповую глобальную группу, это избавит от необходимости каждый раз создавать и уничтожать её

проверка IsTerrainPathable(x,y,PATHING_TYPE_WALKABILITY) дороговатая в плане ресурсов, можно создать глобальную переменную типа предмет, создать его при инициализации и скрыть. А когда нужно проверить проходимость точки, перемещать этот предмет туда и скрыть, а потом проверить координаты между точкой и предметом, если больше 10 к примеру, значит местность непроходима

Порой, можно не объявлять какие-то переменные, а юзать те, что уже есть в варе, например bj_lastCreatedUnit

Ах да, вджасс всё-таки стоит изучить, если планируешь делать хорошие абилки. Работа со структурами быстрее и удобнее, чем работа с хэшем
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
Ты пишешь не на чистом джассе, у тебя юзался сджасс и даже вджасс
globals
endglobals
это фишки вджасса, а сджасс позволял тебе объявлять локальные переменные не в начале функции

вместо == false можно писать not перед функцией
например у нас умер юнит, мы пишем IsUnitType(u,UNIT_TYPE_DEAD) == false, то бишь нам нужен был живой юнит, его тип не равно мёртвый, можно написать not IsUnitType(u,UNIT_TYPE_DEAD)

насчёт работы с группами, ты можешь заносить основные данные в глобалки, а уже в группе и кондишене их юзать, ForGroup быстрее цикла работает

Остальные ништячки по быстроте написания кода тебе может предоставить cджасс, но это кривая фигня и не советую им пользоваться
Сджасс позволяет тебе не писать каждый раз call при вызове фукнции и не писать local при объявлении переменных, не писать после каждого if - then в конце, объявлять переменные через запятую, закидывать в одну строку несколько функций разделяя их точкой с запятой (это перенос строки), цикл там выглядит покрасивее, например
loop
	exitwhen i == 10
	set i = i+1
endloop
на сджассе можно так написать
while (i < 10){ i++ }

сджасс после компиляции становится обычным джассом само собой, это не оптимизация

кстати, по поводу ForGroup, намного лучше будет, если ты создашь темповую глобальную группу, это избавит от необходимости каждый раз создавать и уничтожать её

проверка IsTerrainPathable(x,y,PATHING_TYPE_WALKABILITY) дороговатая в плане ресурсов, можно создать глобальную переменную типа предмет, создать его при инициализации и скрыть. А когда нужно проверить проходимость точки, перемещать этот предмет туда и скрыть, а потом проверить координаты между точкой и предметом, если больше 10 к примеру, значит местность непроходима

Порой, можно не объявлять какие-то переменные, а юзать те, что уже есть в варе, например bj_lastCreatedUnit

Ах да, вджасс всё-таки стоит изучить, если планируешь делать хорошие абилки. Работа со структурами быстрее и удобнее, чем работа с хэшем
Принятый ответ
14
Оу, столько всего)) я хотел научится вджассу но прочитав статьи нечего не понел вообще знаю такую вещь как scope, private,struct,library и все такое кстати что за private что она делает и как можно научится пользоваться библиотекой

rsfghd:
Ты пишешь не на чистом джассе, у тебя юзался сджасс и даже вджасс
globals
endglobals
это фишки вджасса, а сджасс позволял тебе объявлять локальные переменные не в начале функции

вместо == false можно писать not перед функцией
например у нас умер юнит, мы пишем IsUnitType(u,UNIT_TYPE_DEAD) == false, то бишь нам нужен был живой юнит, его тип не равно мёртвый, можно написать not IsUnitType(u,UNIT_TYPE_DEAD)

насчёт работы с группами, ты можешь заносить основные данные в глобалки, а уже в группе и кондишене их юзать, ForGroup быстрее цикла работает

Остальные ништячки по быстроте написания кода тебе может предоставить cджасс, но это кривая фигня и не советую им пользоваться
Сджасс позволяет тебе не писать каждый раз call при вызове фукнции и не писать local при объявлении переменных, не писать после каждого if - then в конце, объявлять переменные через запятую, закидывать в одну строку несколько функций разделяя их точкой с запятой (это перенос строки), цикл там выглядит покрасивее, например
loop
	exitwhen i == 10
	set i = i+1
endloop
на сджассе можно так написать
while (i < 10){ i++ }

сджасс после компиляции становится обычным джассом само собой, это не оптимизация

кстати, по поводу ForGroup, намного лучше будет, если ты создашь темповую глобальную группу, это избавит от необходимости каждый раз создавать и уничтожать её

проверка IsTerrainPathable(x,y,PATHING_TYPE_WALKABILITY) дороговатая в плане ресурсов, можно создать глобальную переменную типа предмет, создать его при инициализации и скрыть. А когда нужно проверить проходимость точки, перемещать этот предмет туда и скрыть, а потом проверить координаты между точкой и предметом, если больше 10 к примеру, значит местность непроходима

Порой, можно не объявлять какие-то переменные, а юзать те, что уже есть в варе, например bj_lastCreatedUnit

Ах да, вджасс всё-таки стоит изучить, если планируешь делать хорошие абилки. Работа со структурами быстрее и удобнее, чем работа с хэшем
Не совсем понел, создать глобал группу и проверять не состоит ли юнит в этой группе? Если да то как его чистить? Думаю это загрузит комп если не чистить
28
есть функция GroupClear, вджассу я бы не прочь обучить, но сам мало чего знаю о нём
private лишь даёт глобалкам и функциям приставку с названием твоей библиотеки, то есть ты можешь дать 2 одинаковых названия разным функциям в разных библиотеках и оно будет работать, при вызове такой функции, будет вызываться та функция, что находится у тебя в библиотеке

извне ты её никак не вызовешь
16
IsTerrainPathable(x,y,PATHING_TYPE_WALKABILITY) дороговатая в плане ресурсов
это с чего вдруг она стала дорогой?
28
по поводу библиотеки, при компиляции весь этот код ставится выше всего остального, на самый вверх, в библиотеках ты можешь вызвать какую-либо функцию при инициализации не создавая для этого отдельный триггер
например
library mylib initializer init
function init takes nothing returns nothing
endfunction
endlibrary
вызовет функцию, которая находится внутри под названием init, при инициализации карты
26
DracoL1ch:
IsTerrainPathable(x,y,PATHING_TYPE_WALKABILITY) дороговатая в плане ресурсов
это с чего вдруг она стала дорогой?
Инфляция ))
28
DracoL1ch, не помню с кем обсуждал это, но мне говорили, что при большом кол-ве проверок из-за этой функции начнутся пролаги
с берги что-ли
14
rsfghd:
DracoL1ch, не помню с кем обсуждал это, но мне говорили, что при большом кол-ве проверок из-за этой функции начнутся пролаги
с берги что-ли
Хмм если засунуть в библиотеку функшн то она сработает после старта игры? Зачем тогда она можно же через
Инициализация карты
Сделать

И такой вопрос можно ли как нить сделать так чтоб при запуске карты в папке варика создавался .mix файл? когда я играл в доту 7.0 то там целая программа создавалась
28
Гуванч, чтобы использовать функцию при инициализации карты нужен триггер, а библиотека позволяет обойтись без триггера

про микс файлы я не шарю, дальше Preload Exploit ничего не читал)
8
Гуванч:
И такой вопрос можно ли как нить сделать так чтоб при запуске карты в папке варика создавался .mix файл? когда я играл в доту 7.0 то там целая программа создавалась.
Насколько я знаю, миксы грузятся при запуске игры.
А для загрузки своих библиотек используется мемхак.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.