|
|
|
|
EDS
|
|
Smartaros | Дата: Вторник, 20 Ноября 2012, 21:24:39 | Сообщение # 1 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| я добавил функцию определения, воин ближнего боя или дальнего в систему по такому же принципу как там определяется типы атаки и урона, в любом тригге на получение любым воином урона если в условие поставить допустим воин дальнего боя, то триггер все равно срабатывает если дамажит ближний бой и наоборот, вообще не понимаю почему это игнорится
|
|
|
|
Ty3uK | Дата: Вторник, 20 Ноября 2012, 21:54:46 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Пиши свою систему с бледжеком и шлюхами
|
|
|
|
Smartaros | Дата: Вторник, 20 Ноября 2012, 22:23:26 | Сообщение # 3 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| да зачем, и кстати это условие не выполняется даже в триггере на получение любым воином урона, это больше на баг похоже, не системы Добавлено (20 Ноября 2012, 22:23:26) --------------------------------------------- т.е. если там поставить проверку, а не в самой системе устанавливать тип юнита
|
|
|
|
Naturekid | Дата: Вторник, 20 Ноября 2012, 22:40:17 | Сообщение # 4 |
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
| Smartaros,
|
|
|
|
Smartaros | Дата: Вторник, 20 Ноября 2012, 22:50:58 | Сообщение # 5 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| Ty3uK, там структуры, я их не курю, к тому же смысл делать свою если есть эта рабочая, сам не знаешь почему такое происходит?
|
|
|
|
Ty3uK | Дата: Среда, 21 Ноября 2012, 00:11:52 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| надо код смотреть. Если Ник раньше не поможет - завтра после универа гляну.
|
|
|
|
Smartaros | Дата: Среда, 21 Ноября 2012, 01:31:15 | Сообщение # 7 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| Система Триггер
|
|
|
|
Наклз | Дата: Среда, 21 Ноября 2012, 08:56:07 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Народ я не навижу триггеры , но увы вынужден признать что на них нет более 50% функций... как сделать свою функцию ? это возможно? заменить какой-то фаил... в котором бонус ко всему строчи ещё одной функции , там много писать , и мне она часто понадобится , так что думаю лучше один раз написать... а потом работать в своём любимом гуи) Так как можно сделать?
|
|
|
|
Ty3uK | Дата: Среда, 21 Ноября 2012, 09:00:39 | Сообщение # 9 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| можно
|
|
|
|
Smartaros | Дата: Среда, 21 Ноября 2012, 14:11:40 | Сообщение # 10 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| а по теме? я ж скинул код
|
|
|
|
Extremator | Дата: Среда, 21 Ноября 2012, 14:15:58 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| хз... у меня робит окок...
юнит ближник = да, то ололо юнит дальник = да, то трололо
вот пример - Sange.w3x тут канешно кое-что иное... наверно... но суть в том что стандартное логическое условие по типу ранжирования атаки юнита отвечает мне верно...
Сообщение отредактировал Extremator - Среда, 21 Ноября 2012, 14:16:06 |
|
|
|
SirNikolas | Дата: Среда, 21 Ноября 2012, 14:19:52 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Наклз, [duos]Как изменять Редактор триггеров World Editor'а.[/duos] Добавлено (21 Ноября 2012, 14:19:52) ---------------------------------------------
Quote (Smartaros) Code private bool Con() { return GetUnitAbilityLevel(GetDamaged(), ABILITY) > 0 || GetEventDamagerType() == UNIT_TYPE_RANGED_ATTACKER || GetEventDamageType() != DAMAGE_TYPE_MAGIC || GetEventDamageType() != DAMAGE_TYPE_POISON || GetEventDamageType() != DAMAGE_TYPE_FIRE || GetEventDamageType() != DAMAGE_TYPE_WATER || GetEventDamageType() != DAMAGE_TYPE_AIR || GetEventDamageType() != DAMAGE_TYPE_EARTH || GetEventDamageType() != DAMAGE_TYPE_ELECTRISITY || GetEventDamageType() != DAMAGE_TYPE_UNKNOWN } А ничего, что || - это or?
|
|
|
|
Smartaros | Дата: Среда, 21 Ноября 2012, 14:29:39 | Сообщение # 13 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| лол, это краш) Добавлено (21 Ноября 2012, 14:29:39) --------------------------------------------- ща приеду исправлю, ох как это забавно......а and это && ?
|
|
|
|
SirNikolas | Дата: Среда, 21 Ноября 2012, 14:34:52 | Сообщение # 14 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Да. Добавлено (21 Ноября 2012, 14:34:52) --------------------------------------------- Нечего гнать на хорошую систему!
|
|
|
|
Smartaros | Дата: Четверг, 22 Ноября 2012, 12:51:02 | Сообщение # 15 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| сорри, пресловутый or зарешал, закрывайте, и ту тему с волной, там та же песня Добавлено (22 Ноября 2012, 03:06:25) --------------------------------------------- стоять, есть еще проблема, завтра отпишусь Добавлено (22 Ноября 2012, 12:51:02) --------------------------------------------- короче код же есть, вообщем если дамажить типом нормал в моей функции то поток прерывается
|
|
|
|
Ty3uK | Дата: Четверг, 22 Ноября 2012, 13:03:58 | Сообщение # 16 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| в чем выражается прерывание потока?
|
|
|
|
Smartaros | Дата: Четверг, 22 Ноября 2012, 13:18:31 | Сообщение # 17 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| сама ф-я не выполняется и все другие после нее
|
|
|
|
SirNikolas | Дата: Четверг, 22 Ноября 2012, 16:31:54 | Сообщение # 18 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| В каком именно месте происходит прерывание? И можно всю функцию?
|
|
|
|
Smartaros | Дата: Четверг, 22 Ноября 2012, 17:21:41 | Сообщение # 19 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| Code void UnitSpecialDamageTarget(unit u, unit t, float r, damagetype d) { if d == DAMAGE_TYPE_MAGIC or d == DAMAGE_TYPE_POISON or d == DAMAGE_TYPE_FIRE or d == DAMAGE_TYPE_WATER or d == DAMAGE_TYPE_AIR or d == DAMAGE_TYPE_EARTH or d == DAMAGE_TYPE_ELECTRISITY { UnitDamageTarget(u, t, r, false, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_MAGIC, WEAPON_TYPE_WHOKNOWS) } elseif d == DAMAGE_TYPE_NORMAL { UnitDamageTarget(u, t, r, false, false, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS) } elseif d == DAMAGE_TYPE_UNKNOWN { UnitDamageTarget(u, t, r, false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS) } elseif d == DAMAGE_TYPE_CRITICAL { UnitDamageTarget(u, t, r, false, false, ATTACK_TYPE_HERO, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS) } }
void UnitDamageTargetByType(unit u, unit t, float r, damagetype d) { unit c if d == DAMAGE_TYPE_NORMAL { c = CreateUnit(GetOwningPlayer(u), NORMAL, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_NORMAL) } elseif d == DAMAGE_TYPE_MAGIC { c = CreateUnit(GetOwningPlayer(u), MAGIC, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_MAGIC) } elseif d == DAMAGE_TYPE_POISON { c = CreateUnit(GetOwningPlayer(u), POISON, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_POISON) } elseif d == DAMAGE_TYPE_FIRE { c = CreateUnit(GetOwningPlayer(u), FIRE, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_FIRE) } elseif d == DAMAGE_TYPE_WATER { c = CreateUnit(GetOwningPlayer(u), WATER, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_WATER) } elseif d == DAMAGE_TYPE_AIR { c = CreateUnit(GetOwningPlayer(u), AIR, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_AIR) } elseif d == DAMAGE_TYPE_EARTH { c = CreateUnit(GetOwningPlayer(u), EARTH, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_EARTH) } elseif d == DAMAGE_TYPE_ELECTRISITY { c = CreateUnit(GetOwningPlayer(u), ELECTRISITY, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_ELECTRISITY) } elseif d == DAMAGE_TYPE_UNKNOWN { c = CreateUnit(GetOwningPlayer(u), PURE, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_UNKNOWN) } elseif d == DAMAGE_TYPE_CRITICAL { c = CreateUnit(GetOwningPlayer(u), CRITICAL, GetWidgetX(t), GetWidgetY(t), 0) UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_CRITICAL) } UnitApplyTimedLife(c, 'BTLF', 1.0) c = null }
работает только magic
|
|
|
|
SirNikolas | Дата: Четверг, 22 Ноября 2012, 17:58:48 | Сообщение # 20 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (SirNikolas) В каком именно месте происходит прерывание?
|
|
|
|
Smartaros | Дата: Четверг, 22 Ноября 2012, 18:15:19 | Сообщение # 21 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| там где дамажишь через UnitDamageTargetByType не magic'ом
|
|
|
|
SirNikolas | Дата: Четверг, 22 Ноября 2012, 18:19:15 | Сообщение # 22 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Это я понял. Определи место точнее.
|
|
|
|
Smartaros | Дата: Четверг, 22 Ноября 2012, 18:42:36 | Сообщение # 23 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| куда точнее? вот допустим тригг: call blablabla (робит) call UnitDamageTargetByType (не робит) call ololo (не робит)
сто раз смотрел функцию, не могу понять где там че не так, даммики исправны, условия сходятся
|
|
|
|
SirNikolas | Дата: Четверг, 22 Ноября 2012, 19:32:39 | Сообщение # 24 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Smartaros) elseif d == DAMAGE_TYPE_NORMAL { //Работает? UnitDamageTarget(u, t, r, false, false, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS) //Работает? Quote (Smartaros) void UnitDamageTargetByType(unit u, unit t, float r, damagetype d) { unit c if d == DAMAGE_TYPE_NORMAL { //Работает? c = CreateUnit(GetOwningPlayer(u), NORMAL, GetWidgetX(t), GetWidgetY(t), 0) //Работает? UnitSpecialDamageTarget(c, t, r, DAMAGE_TYPE_NORMAL) //Работает? Quote (Smartaros) UnitApplyTimedLife(c, 'BTLF', 1.0) //Работает?
|
|
|
|
Smartaros | Дата: Четверг, 22 Ноября 2012, 20:11:50 | Сообщение # 25 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| нашел, если удалить в проверке Code or d == DAMAGE_TYPE_POISON or d == DAMAGE_TYPE_FIRE or d == DAMAGE_TYPE_WATER or d == DAMAGE_TYPE_AIR or d == DAMAGE_TYPE_EARTH or d == DAMAGE_TYPE_ELECTRISITY то все работаетДобавлено (22 Ноября 2012, 20:11:50) --------------------------------------------- короче, я эти константы просто создавал, поэтому ничего не работало. я назначил эти новые типы урона равными старыми, которые не исп в игре (cold, death итд) и все стало норм.
|
|
|
|
|
|
|
|
|
|
|