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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Заземление
Заземление
CHLSNДата: Четверг, 05 Мая 2011, 21:47:41 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Итак, знатоки, вопрос.
Как реализовать алгоритм, по которому все юниты, попавшие в указанную область, останавливаются?

Предложения "ставь даммика с аурой -100% скорости движения" не интересуют.




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

oleg_best_olegДата: Четверг, 05 Мая 2011, 22:07:41 | Сообщение # 2
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
мой вариант:
установить скорость передвижения как 0% от текущей
и "двиганье назад"
каждые 0.Х секунд
выбрать юнитов в области 001 и сделать действия:
двигать выбранный юнит на -Y (вроде взгляд выбранный юнит +180 градусов)

Добавлено (05-05-2011, 22:07)
---------------------------------------------
еще при выходе установить назад скорость на 100%

 

lawsonДата: Четверг, 05 Мая 2011, 23:48:17 | Сообщение # 3
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
CHLSN,
Это элементарно.
Когда юнит заходит в область создаешь таймер с периодом 0.01 и записываешь юнита и его область в хеш и каждую 0.01 сек устанавливаешь его на старую его область.
Если надо могу показать пример.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

CHLSNДата: Четверг, 05 Мая 2011, 23:58:16 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Code

globals
     real snare_x
     real snare_y
endglobals
function Trig_Snare_Conditions takes nothing returns boolean
     return GetSpellAbilityId() == 'A03A'
endfunction
function Trig_Snare_Timer_Conditions takes nothing returns boolean
     return IsUnitType( GetFilterUnit(), UNIT_TYPE_GROUND )
endfunction
function Trig_Snare_Timer_Actions takes nothing returns nothing
     call IssueImmediateOrder( GetEnumUnit(), "stop" )
endfunction
function Trig_Snare_Timer takes nothing returns nothing
     local group g = CreateGroup()
     call GroupEnumUnitsInRange( g, snare_x, snare_y, 800, Condition( function Trig_Snare_Timer_Conditions ) )
     call ForGroup( g, function Trig_Snare_Timer_Actions )
     call DestroyGroup( g )
     set g = null
endfunction
function Trig_Snare_Actions takes nothing returns nothing
     local timer t = CreateTimer()
     set snare_x = GetSpellTargetX()
     set snare_y = GetSpellTargetY()
     call TimerStart( t, 0.01, true, function Trig_Snare_Timer )
     call PolledWait( 10 + GetUnitAbilityLevel( GetSpellAbilityUnit(), 'A03A' ) * 20 )
     call PauseTimer( t )
     call DestroyTimer( t )
     set t = null
endfunction
function InitTrig_Snare takes nothing returns nothing
     set gg_trg_Snare = CreateTrigger(  )
     call DisableTrigger( gg_trg_Snare )
     call TriggerAddCondition( gg_trg_Snare, Condition( function Trig_Snare_Conditions ) )
     call TriggerAddAction( gg_trg_Snare, function Trig_Snare_Actions )
endfunction



Стабильно вылетает с !!! FatalError !!! ааааа! Где ошибка?




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

lawsonДата: Пятница, 06 Мая 2011, 00:07:16 | Сообщение # 5
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Во первых что у тебя за событие, во вторых wait это уже плохо, в третьих здесь ни чего не понятно.
А вообще это все бред сейчсас секунду я сделаю.

Добавлено (06-05-2011, 00:07)
---------------------------------------------
событие: любое какое тебе надо.
Условие: тоже самое
Действие:
local unit u = GetSpellTargetUnit()
local timer t = CreateTimer()
call TimerStart(t, true, 0.1, function TimerF)
call SaveUnitHandle(Hash, GetHandleId(t), 0, u)
call SaveLocationHandle(Hash, GetHandleId(t), 0, GetUnitLoc(u))
set t = null
set u = null

функция TimerF
local timer t = GetExpiredTimer()
call SetUnitPositionLoc(LoadUnitHandle(Hash, GetHandleId(t), 0), LoadLocationHandle(GetHandleId(t), 0)) - тут могу ошибиться так как пишу по памяти
set t = null
дальше можешь сделать условие или таймер по истечению которого "заземление" остановиться, и сделай FlushChildHashTable()


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 06 Мая 2011, 13:45:24
 

CHLSNДата: Пятница, 06 Мая 2011, 00:25:28 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
lawson, всё это конечно хорошо, но:
1. Меня интересует создание заземления с функцией IssueImmediateOrder
2. Событие добавляется в другом триггере, и очень даже хорошо
3. С фатальной ошибкой Warcraft вылетает обычно, если происходит действие, сродное этому: DestroyTimer( t ), DestroyTimer( t ) - обращение к той области памяти, в которой либо ничего нет, либо сущий бред. Вот меня и интересует, где здесь дыра.

Причем, вылетает через некоторое время (герой успевает проиграть до 1 с. анимации).


ТЕМА ЗАРЫТА

А ошибка была просто гениальной. Абилка на основе духов-целителей, но в поле вызванной единицы стояло ничто. Вот варик и не мог создать юнита типа ''.



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?


Сообщение отредактировал CHLSN - Пятница, 06 Мая 2011, 01:13:29
 

daf-dvfДата: Пятница, 27 Мая 2011, 14:20:25 | Сообщение # 7
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Блокировки:
Если, чтобы остановились, то так юнит входит в зону, остановить вошедший юнит.
Если же, чтобы вообще не двигался можно создатель переменную countenter(целочисленная) и enteredunit (юнит(массив)), затем при входе сделать +1 в переменную и потом юнита(массив countenter) останавливать.
 

CHLSNДата: Пятница, 27 Мая 2011, 15:13:19 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
daf-dvf, для юных археологов табличка на албанском:


ТЕМА ЗАКРЫТА




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

Banzay89Дата: Пятница, 27 Мая 2011, 23:28:20 | Сообщение # 9
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
вот это вы лолы
просто каждые N сек пикаешь юнитов в нужной области и отдаешь им приказ stop
все
 

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

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