XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Duke911

offline
Опыт: 3,907
Активность:
RemoveUnit в Jass
Что конкретно делает RemoveUnit() ?
первоначально я думал что после неё все параметры юнита обнулятся ... однако после
call RemoveUnit(uBullet)
call DisplayTimedTextToPlayer( Player(0) , 0, 0, 5 , " Жизни пули после удаления ")
call DisplayTimedTextToPlayer( Player(0) , 0, 0, 5 , R2S(GetUnitState(uBullet,UNIT_STATE_LIFE)))
выдало:
Жизни пули после удаления
1.000
Старый 22.12.2009, 00:31
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
Duke911, скорее всего, хендл сразу был занят другим объектом. Либо удаление занимает какое-либо время (внутри движка, имеется в виду).
Старый 22.12.2009, 00:54
Duke911

offline
Опыт: 3,907
Активность:
немного уточню/изменю вопрос :
как в массиве вычиcлить что юнит удален с помощью RemoveUnit (а не был убит другим юнитом или expiration таймером),если перебор массива идет без задержки времени после применения этой функции (RemoveUnit)???
через wait(1.00) у меня получилось условием
GetUnitTypeId(udg_Units[i]) == 0
а как без wait? O_o
P.S. самое интересное что условие udg_Units[i] == null не срабатывает даже через wait...

Отредактировано Duke911, 24.12.2009 в 22:51.
Старый 24.12.2009, 22:13
XOR

offline
Опыт: 38,159
Активность:
Онли луп. Войт убивает поток, и вообще, может 1к , это стандартно стоящее значение переменное
Старый 24.12.2009, 22:38
Duke911

offline
Опыт: 3,907
Активность:
XiMiKs
поподробнее, что значит 1к? что сравнить с 1к?
Старый 24.12.2009, 22:49
RazArt

offline
Опыт: 11,197
Активность:
Ты вообще уверен что ты его удалил, вернее ты уверен что uBullet == Player(0)?
Старый 25.12.2009, 09:25
Duke911

offline
Опыт: 3,907
Активность:
RazArt:
Ты вообще уверен что ты его удалил, вернее ты уверен что uBullet == Player(0)?
причем тут плеер 0???? я пробовал и с DisplayTextToAllPlayers.
если допустим на пустой карте удалить Footmana функцией RemoveUnit() то его жизни останутся 420.00.
Так как мне вычислить етого удаленного футмена если их у меня 10 штук и они все в массиве?
Причем вычислить мне нужно сразу же после удаления, не выжидая там 0.01 sec, а сразу.
Старый 25.12.2009, 11:43
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
если допустим на пустой карте удалить Footmana функцией RemoveUnit() то его жизни останутся 420.00.
Очевидно, что ссылка на юнит не была удалена (читай, переменная не была обнулена).
Так как мне вычислить етого удаленного футмена если их у меня 10 штук и они все в массиве?
Могу предложить задавать custom value для каждого юнита такое, что оно равнялось бы номеру ячейки юнита в массиве. Если юнит не был трупом и был удален через RemoveUnit(), то здоровье останется на прежнем уровне.
Старый 25.12.2009, 13:01
9thNerZul
forum/warcraft3
offline
Опыт: 4,869
Активность:
Если не хочешь чтобы он был на карте, но отслеживался, как вариант киляй его и переноси в особое место которое никто никогда не увидит)
Старый 10.01.2010, 11:39
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
мне кажется он хочет изобрести пятиколесный велосипед.
Расскажи лучше суть всей затеи-тебе помогут лучше её оформить =)
Старый 10.01.2010, 12:13
agentex

offline
Опыт: 34,834
Активность:
оно ставит в очередь на окончательное удаление походу
скорее всего, хендл сразу был занят другим объектом
не бывает такого
Старый 10.01.2010, 12:20
DioD

offline
Опыт: 45,134
Активность:
хендл никогда не будет занят сразу другим объектом, хотя бы потому что он освобождается только после завершения потока.
Старый 10.01.2010, 13:01
ScorpioT1000
Работаем
offline
Опыт: отключен
какая разница, если у тебя есть переменная, её никто другой просто так не займет
Старый 10.01.2010, 13:40
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Duke,
call RemoveUnit(uBullet)
call TriggerSleepAction()/TimerStart() Это не важно, главное что время прошло.
call DisplayTimedTextToPlayer( Player(0) , 0, 0, 5 , " Жизни пули после удаления ")
call DisplayTimedTextToPlayer( Player(0) , 0, 0, 5 , R2S(GetUnitState(uBullet,UNIT_STATE_LIFE)))
что показывает?
Старый 10.01.2010, 16:14
9thNerZul
forum/warcraft3
offline
Опыт: 4,869
Активность:
Показывает 0.000 следовательно афтор кран(шутка) всё удаляется
Прикрепленные файлы
Тип файла: w3m sAASD.w3m (16.1 Кбайт, 15 просмотров )
Старый 10.01.2010, 17:01
Duke911

offline
Опыт: 3,907
Активность:
9thNerZul, я же уже писал что спустя wait жизни обнуляются, всё ок
call RemoveUnit(uBullet)
call DisplayTimedTextToPlayer( Player(0) , 0, 0, 5 , " Жизни пули после удаления ")
call DisplayTimedTextToPlayer( Player(0) , 0, 0, 5 , R2S(GetUnitState(uBullet,UNIT_STATE_LIFE)))
покажет 420.0
call RemoveUnit(uBullet)
call TriggerSleepAction(0)
call DisplayTimedTextToPlayer( Player(0) , 0, 0, 5 , " Жизни пули после удаления ")
call DisplayTimedTextToPlayer( Player(0) , 0, 0, 5 , R2S(GetUnitState(uBullet,UNIT_STATE_LIFE)))
покажет 0.000
тока у меня там етот тригер с коротким периодом 0.02, не вредно ли будет TriggerSleepAction(0) часто вызывать?
Походу просто RemoveUnit() не сразу выполняется(unit помечается на удаление или чтото тип того)
P.S. Я уже обошел проблему заменив RemoveUnit() на KillUnit(),он вроде бы выполняется сразу.
Старый 11.01.2010, 00:38
agentex

offline
Опыт: 34,834
Активность:
он не выполняется сразу, просто ремув и кил делают абсолютно разные вещи
Старый 11.01.2010, 08:12
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
KillUnit()
Отлов убитого
RemoveUnit()
Вроде должно работать, если тебе надо поймать юнита, которого убираешь. Kill тебе будет и анимации проигрывать, и труп оставлять.
Старый 11.01.2010, 12:25
Toadcop

offline
Опыт: 54,313
Активность:
удалять юнитов ацкое зло. (их надо убивать и прятать... а природа сама всё остальное сделает)
Старый 11.01.2010, 16:02
Duke911

offline
Опыт: 3,907
Активность:
Ясно, RemoveUnit в топку, просто раньше проблема была в том что у меня ещё один тригер срабатывал на Unit Dies, из-за етого KillUnit не подходил.
В данный момент всё переделал и тему можно закрывать.
Старый 11.01.2010, 16:11
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:28.