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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Убийство дами о декор
tRu^SДата: Понедельник, 09 Июля 2012, 16:21:54 | Сообщение # 1
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Какое условие\действие зделать чтобы дами умерал когда он встречает декор?

 

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


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

tRu^SДата: Понедельник, 09 Июля 2012, 16:45:02 | Сообщение # 3
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
if 30. >= 0 then
real centerX = GetWidgetX(dummy)
real centerY = GetWidgetY(dummy)
rect r = Rect(centerX-75.,centerY-75.,centerX+75.,centerY+75.)
EnumDestructablesInRect(r,filterEnumDestructablesInCircleBJ,function KillBall)
RemoveRect®
endif

void KillBall()
{
timer t=GetExpiredTimer()
integer id=GetHandleId(t)
unit dummy=LoadUnitHandle(Hash,id,0)
RemoveUnit(dummy)
}


 

Ty3uKДата: Понедельник, 09 Июля 2012, 16:49:30 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
что за бред, простите? если 30 > 0 это щначит всегдарект создаем глобальный, жвигаем его вместе с дамми и энумим декорации, а в фильтре чекаем убиваем дамми

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

tRu^SДата: Понедельник, 09 Июля 2012, 17:17:33 | Сообщение # 5
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Ty3uK, нечё непонял

 

Ty3uKДата: Понедельник, 09 Июля 2012, 18:12:35 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
вот так я делал это в симпл шутере
Code
    void KillAndRemoveDestructable_Timer()
     {
         timer t = GetExpiredTimer();
         RemoveDestructable(LoadDestructableHandle(hash, GetHandleId(t), 0));
         DestroyTimer(t);
         flush locals;
     };
      
     void KillAndRemoveDestructable(destructable d)
     {
         new timer t;
         //timer t = CreateTimer();
         SaveDestructableHandle(hash, GetHandleId(t), 0, d);
         KillDestructable(d);
         TimerStart(t, 1., false, function KillAndRemoveDestructable_Timer);
         flush locals;
     };
      
     void EnumDestructables()
     {
         timer t = GetExpiredTimer();
         destructable d = GetEnumDestructable();
         int id = GetDestructableTypeId(d);
         bool b = LoadBoolean(hash, GetHandleId(t), -2)
         if destr
         {
             KillAndRemoveDestructable(d);
             if !b
             {
                 SaveBoolean(hash, GetHandleId(t), StringHash("destr"), true);
             };
         };
         flush locals;
     };

library mk209 initializer Init
{

     trigger MK209t = CreateTrigger();
     rect tempRect;
      
     private void Timer()
     {
         timer t = GetExpiredTimer();
         int hid = GetHandleId(t);
         unit caster = LoadUnitHandle(hash, hid, 0);
         unit dummy = LoadUnitHandle(hash, hid, 1);
         real dist = LoadReal(hash, hid, 2);
         real angle = GetUnitFacing(dummy) * .017;
         real x = GetWidgetX(dummy) + 30. * Cos(angle);
         real y = GetWidgetY(dummy) + 30. * Sin(angle);
         bool b = false;
         unit trg;
         SetUnitPosition(dummy, x, y);
         SaveReal(hash, hid, 2, dist + 30.);
         if dist < 800. && !b
         {
             MoveRectTo(tempRect, x, y);
             EnumDestructablesInRect(tempRect, null, function EnumDestructables);
             for(unit target; UnitsInRange(x, y, 200.) use temp){
                 if enemy(target, caster) && dead(target){
                     damage(caster, target, 15.);
                     if !b {b = true; lastWeapon[GetPlayerId(GetTriggerPlayer())] = "MK209"};
                 };
             };
             if b || LoadBoolean(hash, hid, StringHash("destr"))
             {
                 RemoveUnit(dummy);
                 DestroyEffect(AddSpecialEffect(GRENADEboom, x, y));
                 if LoadBoolean(hash, hid, -2)
                 {
                     for(unit target; UnitsInRange(x, y, 200.) use temp)
                     {
                         if enemy(target, caster) && dead(target)
                         {
                             damage(caster, target, 15.);
                             if !b {b = true};
                         };
                     };
                 };
                 MoveRectTo(tempRect, x, y);
                 EnumDestructablesInRect(tempRect, null, function EnumDestructables);
                 GroupRemoveUnit(dummyGroup, dummy);
                 RemoveSavedInteger(hash, GetHandleId(dummy), StringHash("player"));
                 FlushChildHashtable(hash, hid);
                 PauseTimer(t);
                 DestroyTimer(t);
             };
         elseif dist >= 800. && !b
             RemoveUnit(dummy);
             DestroyEffect(AddSpecialEffect(GRENADEboom, x, y));
             lastWeapon[GetPlayerId(GetTriggerPlayer())] = "C4";
             for(unit target; UnitsInRange(x, y, 200.) use temp){
                 if enemy(target, caster) && dead(target){
                     damage(caster, target, 15.);
                 };
             };
             GroupRemoveUnit(dummyGroup, dummy);
             RemoveSavedInteger(hash, GetHandleId(dummy), StringHash("player"));
             FlushChildHashtable(hash, hid);
             PauseTimer(t);
             DestroyTimer(t);
         };
         flush locals;
     };

     private bool Act()
     {
         if GetSpellAbilityId() == MK209id
         {
             timer t = CreateTimer();
             int hid = GetHandleId(t);
             unit caster = GetTriggerUnit();
             real x = GetWidgetX(caster);
             real y = GetWidgetY(caster);
             real angle = Atan2(GetSpellTargetY() - y, GetSpellTargetX() - x) * 57.295;
             unit dummy = CreateUnit(GetTriggerPlayer(), MK209, x, y, angle);
             SaveAgentHandle(hash, hid, 0, caster);
             SaveAgentHandle(hash, hid, 1, dummy);
             SaveInteger(hash, GetHandleId(dummy), StringHash("player"), GetPlayerId(GetTriggerPlayer()))
             GroupAddUnit(dummyGroup, dummy);
             TimerStart(t, .04, true, function Timer);
             lastWeapon[GetPlayerId(GetTriggerPlayer())] = "MK209"
         };
         flush locals;
         return false;
     };
      
     private void Init()
     {
         TriggerAddCondition(MK209t, Condition(function Act));
     };

};

но код кривой, я нубил


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

tRu^SДата: Понедельник, 09 Июля 2012, 19:26:53 | Сообщение # 7
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Тему клоз зделал свою убийцу дами.

 

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

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