[Вопрос] Координаты
|
|
demon_nrt | Дата: Четверг, 29 Августа 2013, 17:02:27 | Сообщение # 1 |
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
| Прошу сделать (кто может) наработку по координатам, на jass. То есть я хочу сделать круг из чего либо в виде координат Widget (x,y) или квадрат. Но у меня не получается и приходиться использовать полярные координаты триггеров. А и за этого карта лагает при использовании. Поэтому кто может прошу сделайте наработку по поводу координат на jass с комментариями. Или какую либо способность с использовании координат. Буду очень благодарен.
|
|
|
|
SirNikolas | Дата: Четверг, 29 Августа 2013, 17:40:38 | Сообщение # 2 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| [code=jass]function Trig_Circle_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A000' endfunction
function Trig_Circle_Actions takes nothing returns nothing local real ux = GetWidgetX(GetTriggerUnit()) local real uy = GetWidgetY(GetTriggerUnit()) //Выбираем случайный базовый угол. local real a = GetRandomReal(.0, .20943)//bj_PI / 15 loop //Создаем эффект. call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl", ux + Cos(a) * 500., uy + Sin(a) * 500.)) exitwhen a >= 6.28319//2 * bj_PI //Увеличиваем значение угла. set a = a + .20943 endloop endfunction
function InitTrig_Circle takes nothing returns nothing local trigger trig = CreateTrigger() local integer i = 0 loop call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) exitwhen i == 15 set i = i + 1 endloop call Preload("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl") call TriggerAddCondition(trig, Condition(function Trig_Circle_Conditions)) call TriggerAddAction(trig, function Trig_Circle_Actions) set trig = null endfunction [/code][code=jass]function Trig_Square_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A001' endfunction
function Trig_Square_Actions takes nothing returns nothing local real ux = GetWidgetX(GetTriggerUnit()) local real uy = GetWidgetY(GetTriggerUnit()) //Выбираем случайный базовый угол. local real a = GetRandomReal(.0, 1.570796)//bj_PI / 2 local real x local real y local real r local real cosA local real sinA loop //Рассчитываем координаты очередной вершины многоугольника. set x = ux + Cos(a) * 500. set y = uy + Sin(a) * 500. //Проводим линию до следующей вершины. set cosA = Cos(a + 2.35619)//3 * bj_PI / 4 set sinA = Sin(a + 2.35619) set r = .0 loop call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl", x + cosA * r, y + sinA * r)) //Диагональ квадрата равна стороне, умноженной на корень из двух. //Так как d / 2 = 500, то a = 500 * 2 / 1.41421 = 707.107 exitwhen r >= 707.107 set r = r + 50. endloop exitwhen a >= 6.28319//2 * bj_PI //Увеличиваем значение угла. set a = a + 1.570796 endloop endfunction
function InitTrig_Square takes nothing returns nothing local trigger trig = CreateTrigger() local integer i = 0 call Preload("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl") loop call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) exitwhen i == 15 set i = i + 1 endloop call TriggerAddCondition(trig, Condition(function Trig_Square_Conditions)) call TriggerAddAction(trig, function Trig_Square_Actions) set trig = null endfunction [/code]
|
|
|
|
demon_nrt | Дата: Четверг, 29 Августа 2013, 18:21:07 | Сообщение # 3 |
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
| Спасибо большое конечно. Но мне так труднее понять, если бы все это было в виде карты или как отсортировано полегче то было бы получше.
|
|
|
|
SirNikolas | Дата: Четверг, 29 Августа 2013, 18:22:24 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Копируешь код в карту, создаешь две способности, применяешь их, смотришь результат.
|
|
|
|
demon_nrt | Дата: Четверг, 29 Августа 2013, 19:07:14 | Сообщение # 5 |
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
| Все спасибо, а еще 1 вопрос можно как сделать чтобы меньше нагружало, ато пока эффект не удалиться карта лагает.
|
|
|
|
SirNikolas | Дата: Пятница, 30 Августа 2013, 10:31:52 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Сделать меньше эффектов либо взять другой (этот достаточно сильно грузит). Просто это единственный, путь к которому я помню наизусть: код писал не в Редакторе. Добавлено (30 Августа 2013, 10:31:52) --------------------------------------------- Ну и не забывать прелоадить при инициализации.
|
|
|
|
demon_nrt | Дата: Пятница, 30 Августа 2013, 16:13:44 | Сообщение # 7 |
6 уровень
Группа: Проверенные
Сообщений: 193
Награды: 0
Репутация: 2
Блокировки:
| Большое спасибо.
|
|
|
|