tRu^S | Дата: Понедельник, 09 Июля 2012, 16:21:54 | Сообщение # 1 |
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
| Какое условие\действие зделать чтобы дами умерал когда он встречает декор?
|
|
|
|
Ty3uK | Дата: Понедельник, 09 Июля 2012, 16:36:36 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| никакое энумь декор в ректе и если расстояние от декора до дамми меньше либо равно 30 - убивай а лол, это и есть условие
|
|
|
|
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 это щначит всегдарект создаем глобальный, жвигаем его вместе с дамми и энумим декорации, а в фильтре чекаем убиваем дамми
|
|
|
|
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)); };
}; но код кривой, я нубил
|
|
|
|
tRu^S | Дата: Понедельник, 09 Июля 2012, 19:26:53 | Сообщение # 7 |
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
| Тему клоз зделал свою убийцу дами.
|
|
|
|