[Статья]Создание триггерных скилов:Удаление точки - Форум


Правила форума ·

  • Страница 1 из 1
  • 1
[Статья]Создание триггерных скилов:Удаление точки

SunCreep

#1
Создание триггерных скилов:Удаление точки


для тех,кто ниже среднего


Итак,я подготовил вторую статейку по созданию скилов.В ней я хотел бы показать работу с CS:call RemoveLocation.Для тех,кто не знает что это,я постараюсь пояснить.Как вы знаете,в разделе спецэффекты есть строка:"удалить спецэффект".Точка,это тот же спецэффект,на который надо ссылаться,работая с позицией,и,чтоб не было лагов,его надо удалять.Но тут возникает проблема,нет строки удалить точку,тут нам помогает частичка Jass`а - CS.Если перевести,получится: приказ удалить точку.Что-то в этом роде.То бишь мы приказываем игре удалить нужную точку.В точности этот CS пишется так: CS:call RemoveLocation(udg_Имя переменной).
В:Для чего это нужно?
О:Чтоб уменьшить количество лагов!
К примеру вы используете движение юнита в течении 5 сек,с периодичностью 0.04.То бишь:
Code
С-каждые 0.04
Д-Двигать Unit к позиции Unit смешение на -5 угол поворота Unit

Так вы двигаете юнита в переменной Unit назад.Другим триггером вы выключаете этот.Наш пример создаёт 25000 утечек в виде локации.Это не вызовет больших лагов,но подумайте сколько у вас может быть ссылок на точки и частоту применения в игре этих скилов?Не очень перспективка намечается,не правда ли?))
Итак,почему 25000? в каждой секунде 100 долей секунд,в нашем случае их 500.(500/0.04=12500)*2.Почему *2?Так вы создаёте две точки.Всмотритесь,"Д-Двигать Unit к позиции Unit смешение на -5 угол поворота Unit".Позиция отсчёта точки,это первая точка,а сама точка которая будет рассчитана - вторая.
Итак,что нам надо сделать что бы этого не было.Сначала создаём две переменные тип точка.Я назову свои переменные Location1 и Location2,установим их.
Code
С-каждые 0.04
Д-Установить Location1 равно позиция Unit
Д-Установить Location2 равно Location1 смешение на -5 по отношению к угол поворота Unit
Д-Двигать Unit к Location2
CS:call RemoveLocation(udg_Location1)
CS:call RemoveLocation(udg_Location2)

Итак,каждые 0.04 секунды мы устанавливаем что Location1 это позиция нашего юнита,а Location2 это его позиция со смешением на -5 от его угла поворота.После мы ссылаемся на нужную нам локацию,то бишь на Location2.Понимаем,что эти точки нам уже не нужны и убираем с помощью CS.
Заканчиваем с теорией,переходим к практике.Открывайте ваш скил,который мы делали и удаляем утечки в нём.Вот,что получилось у меня:
Розовым я показал где устанавливал переменные
Красным - где удалял
Зелёным показаны их применения
А для тех,кто не понял или не смог пример.
Итак,ещё пару слов.В данном скиле удаление точек не так важно,но там,где их количество очень велико - необходимо.К примеру взять наше движение,если бы там был не 1 юнит,а 100 в массиве?)Кстати о массивах.Если возникнет надобность удалять переменную с массивом используйте CS:call RemoveLocation(udg_Имя переменной[bj_forLoopAIndex]).Это для каждого числа А в цикле.С остальным,я думаю,вы разберётесь)
Пока что это всё.Надеюсь всё было понятно,автор статьи:SunCreep

H_A_PK

#2
SunCreep, Молодец :). Подшил в оглавление surprised

Добавлено (22.07.11, 12:50)
---------------------------------------------

Quote (SunCreep)
Д-Установить Location1 равно позиция Unit
Д-Установить Location2 равно Location1 смешение на -5 по отношению к угол поворота Unit


Code
local location loc = Location(GetUnitX(u)+r*Cos(angle*.0174532) ,GetUnitY(u)+r*Sin(angle*.0174532) )

Зачем две локи ?

Добавлено (22.07.11, 12:53)
---------------------------------------------
Советую автору выучить Jass затем писать такие статьи

Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

SunCreep

#3
H_A_PK,
Quote (H_A_PK)
Советую автору выучить Jass затем писать такие статьи

блин,яб с радостью,но как я уже говорил,jass в основе своей это синтаксис английских слов,если бы у меня был сборник всех действий jass`а,я бы может и смог его выучить.
Кстати по подробнее об
Quote (H_A_PK)
local location loc = Location(GetUnitX(u)+r*Cos(angle*.0174532) ,GetUnitY(u)+r*Sin(angle*.0174532) )

Что это всё значит?Ты просто подключил локальную переменную,но что это за значения.И почему нельзя делать две локации,типа перегружу карту переменными?

H_A_PK

#4
Quote (SunCreep)
блин,яб с радостью,но как я уже говорил,jass в основе своей это синтаксис английских слов,если бы у меня был сборник всех действий jass`а,я бы может и смог его выучить.
Кстати по подробнее об

common.j и blizard.j
анигилируйся :о
Quote (SunCreep)
Что это всё значит?Ты просто подключил локальную переменную,но что это за значения.И почему нельзя делать две локации,типа перегружу карту переменными?

это строка делает, что ты делал двумя
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

SunCreep

#5
Quote (H_A_PK)
common.j и blizard.j

Дак я имел в виду нормальную базу,а не это,там действительно за инигелируешься))
Quote (H_A_PK)
это строка делает, что ты делал двумя

Кэп где-то рядом.Я о числах,что это вообще такое?

H_A_PK

#6
Quote (SunCreep)
Я о числах,что это вообще такое?

.0174532 = Пи/180
радиана
это тригонометрия точка на оружности
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

SunCreep

#7
H_A_PK, я так подумал.Я пожалуй пока что буду делать так,как умею и поднимать тех,кто не умеет не как до своего уровня,благо я не чё не умею,почти.А исправляться и подниматься на уровень выше буду когда постигну тригонометрию,благо не так долго осталось.

H_A_PK

#8
Quote (SunCreep)
H_A_PK, я так подумал.Я пожалуй пока что буду делать так,как умею и поднимать тех,кто не умеет не как до своего уровня,благо я не чё не умею,почти.А исправляться и подниматься на уровень выше буду когда постигну тригонометрию,благо не так долго осталось.

Quote (H_A_PK)
Советую автору выучить Jass затем писать такие статьи

там не нужна тригонометрия
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

SunCreep

#9
H_A_PK, я уже говорил об этом
Quote (SunCreep)
сборник всех действий jass`а

если бы какой-нить хороший человек составил русскую таблицу,с пояснением каждого действия.
я бы начал как с GuI,а потом бы уже переходил на все эти функции и библиотеки.

H_A_PK

#11
Quote (SunCreep)
если бы какой-нить хороший человек составил русскую таблицу,с пояснением каждого действия.
я бы начал как с GuI,а потом бы уже переходил на все эти функции и библиотеки.

конвентировать триггер, вот тебе и пояснение каждого действие. Например: Боевая единица - Убить Юнита (юнит), превратиться в "call UnitKill(юнит)", сразу понятно что делает это действие на жассе. А далее необходимо читать только статьи. А то что ты говоришь:
Quote (SunCreep)
если бы какой-нить хороший человек составил русскую таблицу,с пояснением каждого действия.

идиотизм полнеший smile
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

SunCreep

#12
Я здесь недавно,так что ты ещё успеешь осознать всю суть моих высказываний.Собственно очень часто в них
Quote (H_A_PK)
идиотизм полнеший

)

SunCreep

#14
pashok11, ну
Quote (pashok11)
для тех кто ниже слабого

есть тема по типу "вопрос - ответ",так что все интересующие вопросы получат ответ.
  • Страница 1 из 1
  • 1
Поиск: