Сейчас 11:01:03 Четверг, 19 мая, 2022 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Cистема атаки с разных сторон
Cистема атаки с разных сторон
pirat9629Дата: Четверг, 11 Ноября 2010, 09:03:14 | Сообщение # 26
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
удар справа >= 45 <= 135
удар в лицо >= 135 <=225
удар слева >= 225 <= 315
удар сзади >=315 <= 45




сделаю минекрафт сервер на заказ. платно
 

DarkVaderДата: Четверг, 11 Ноября 2010, 16:32:54 | Сообщение # 27
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Ну что наконец то представляю вашему вниманию обновленную функцию определения стороны атаки.
Немного отличается от превоначальной, функция корректно работает для юнитов с дальней атакой, позволяет создавать уникальные диапазоны значений для каждой стороны атаки, по сути эта функциия имеет более расширенное применение нежели преведущая.

Схема практически таже, но вместо угла поворота атакующего используется угол между атакуемым и атакующим, то есть атака воспринимается как вектор от атакующего к атакуемому, в результате возможно для применения спелов с Аое или других схожих с атакой не по углу поворота атакующего.
Пример настроен на углы атаки для каждой стороны в 90 градусов. Для изменения углов необходим небольшой несложный пререрасчет=)

Code


function BackStab takes unit caster , unit target returns integer
local real a = GetUnitFacing( target )
local real b = Atan2( GetUnitY( caster ) - GetUnitY( target ), GetUnitX( caster ) - GetUnitX( target ) ) * bj_RADTODEG
local real angle = a - b
// следующие условия определяют удар в лицо
if( angle >= -45 and angle <= 0) then
  return 1
elseif ( angle > 0 and angle <= 45 ) then
  return 1
elseif ( angle >= 315 and angle <= 405 ) then
  return 1
// следующие условия определяют удар справа
elseif ( angle > 45 and angle < 135 ) then
  return 2
elseif ( angle >= 405 and angle < 495 ) then
  return 2
// следующие условия определяют удар слева
elseif ( angle > -135 and angle < -45 ) then
  return 4
elseif ( angle > 225 and angle < 315 ) then
  return 4
// следующие условия определяют удар в спину
elseif ( angle >= 135 and angle <= 225 ) then
  return 3
elseif ( angle >= 495 and angle <= 540 ) then
  return 3
elseif ( angle >= -180 and angle <= -135 ) then
  return 3
endif
endfunction

ну и пример. BackStab 0.3b

пожалуйста тестируйте, по моим тестам все отлично=)

 

pirat9629Дата: Четверг, 11 Ноября 2010, 20:03:04 | Сообщение # 28
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
DarkVader, благодарю!



сделаю минекрафт сервер на заказ. платно
 

KartohaДата: Четверг, 11 Ноября 2010, 22:02:30 | Сообщение # 29
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Отличная система. DarkVader твой коммент мне в репу улыбнул, спасибо.
 

DarkVaderДата: Пятница, 12 Ноября 2010, 02:31:12 | Сообщение # 30
7 уровень
Группа: Проверенные
Сообщений: 357
Награды: 0
Репутация: 95
Блокировки:
Если найдете ошибки или баги сообщите пожалуйста в лс=)
 

SmartarosДата: Вторник, 31 Января 2012, 23:24:57 | Сообщение # 31
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
Народ, а можете на гуи, а то я с джасом не дружу еще....
 

sonwarriorДата: Среда, 01 Февраля 2012, 04:03:51 | Сообщение # 32
3 уровень
Группа: Проверенные
Сообщений: 57
Награды: 0
Репутация: 16
Блокировки:
Smartaros, Зачем тему то из недр поднимать?
На гуи такое на вряд ли получится
 

SirNikolasДата: Среда, 01 Февраля 2012, 11:51:07 | Сообщение # 33
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Kartoha)
Что займет больше ячеек памяти, число 0 или число 556? 0 - 1 знак, 556 - 3 знака.
Что займет больше ячеек пямяти, число 0x00000000 или число 0x0000022c? И то, и другое - 32 знака.


 

SmartarosДата: Пятница, 03 Февраля 2012, 01:36:14 | Сообщение # 34
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
Я просто делаю способность как у рикимару, только у меня она - пассивка, когда герой атакован то получает шанс оказаться за спиной атакующего

Добавлено (03 Февраль 2012, 01:36:14)
---------------------------------------------
Как отследить сторону, с которой появится мой герой?

 

Ty3uKДата: Пятница, 03 Февраля 2012, 07:56:38 | Сообщение # 35
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Через Atan2 получить угол между двумя юнитами и умножить его на 57.295

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Novice998Дата: Пятница, 03 Февраля 2012, 08:06:39 | Сообщение # 36
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
Smartaros, тут же наработка на сайте есть -_-

Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (
 

SmartarosДата: Суббота, 04 Февраля 2012, 08:05:26 | Сообщение # 37
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
Ty3 uK, я в джасе не разбираюсь
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Cистема атаки с разных сторон
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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