Сейчас 13:11:49 Суббота, 27 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Координаты
[Вопрос] Координаты
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
Блокировки:
Большое спасибо.
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Координаты
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz