Сейчас 10:22:23 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Переопределение юнита
NuttyДата: Пятница, 30 Марта 2012, 08:59:07 | Сообщение # 1
1 уровень
Группа: Пользователи
Сообщений: 4
Награды: 0
Репутация: 0
Блокировки:
есть некий unit u, при смерти которого срабатывает функция onDeath, при чём на этого юнита повешано это событие(смерть), поэтому воскресив его, нужно умудриться не сбить ивент повешанный на него.
пробовал так:
Code
unit u = GetTriggerUnit();
     int ut = GetUnitTypeId(u);
     real ux = GetUnitX(u);
     real uy = GetUnitY(u);
     real face = GetUnitFacing(u);
     RemoveUnit(u);
     u=CreateUnit(Player(10), ut, ux, uy, face);
     SetWidgetLife(u, 1.0);
     SetUnitAnimation(u, "death");
     PauseUnit(u, true);
     SetUnitInvulnerable(u, true);
     timer t = CreateTimer();
     SaveUnitHandle(Hash, GetHandleId(t), 0, u);
     TimerStart(t, 5.0, false, function AllyUp);
     t=null;

но под u заного выделяется память => меняется хэндл => ивент повешан на не существующего юнита, что вполне логично, есть ли способ избежать этого, не вешая каждый раз ивент на нового юнита? это система реса npc - если умирают, то падают и через время встают, если нужно покажу весь код, но думаю всё и так ясно.


"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете." (с) Стив Макконнелл

.MODEL TINY
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 100h
START:
mov ah,9
mov dx,OFFSET Msg
int 21h
int 20h
Msg DB 'Hello World',13,10,'$'
CODE ENDS
END START
 

Ty3uKДата: Пятница, 30 Марта 2012, 09:19:05 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Мб не создавать нового юнита а просто ловить событие юнит атакован и когда жизни - урон будет меньше 1, то делать неуязвимым, проигрывать анимацию и прочее

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

SirNikolasДата: Пятница, 30 Марта 2012, 09:25:58 | Сообщение # 3
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Можно дать юниту классификацию "Минотавр" и воскрешать его способностью Служителя Предков.

 

HexingДата: Пятница, 30 Марта 2012, 10:35:08 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (Ty3uK)
Мб не создавать нового юнита а просто ловить событие юнит атакован и когда жизни - урон будет меньше 1, то делать неуязвимым, проигрывать анимацию и прочее

геморно + могут убить 1ним ударом(магия и прочее)
Quote (SirNikolas)
Можно дать юниту классификацию "Минотавр" и воскрешать его способностью Служителя Предков.

хороший вариант, но не хотелось менять юнитам классификацию, заменил EVENT_UNT на EVENT_PLAYER_UNIT и проблема отпала.
спс за ответы


 

Ty3uKДата: Пятница, 30 Марта 2012, 10:51:45 | Сообщение # 5
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Как убьют, если событие отловит нанесение урона до факта нанесения?

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

HexingДата: Пятница, 30 Марта 2012, 11:48:28 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (Ty3uK)
Как убьют, если событие отловит нанесение урона до факта нанесения?

ну тогда будет не честно по отношению к мобу или атакующему герою ибо у меня система опыт за урон, в общем не хочется никого обижать отменяя урон


 

  • Страница 1 из 1
  • 1
Поиск:

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