Cheguevara
offline
Опыт:
383Активность: |
Неправильно работает таймер.
Уже мучаюсь целый час=((
короче вот такой скил: при касте всем юнитам в радиусе хилитса некое кол-во хп и даетса зашита на 8 сек. проблема в том, что если использовать хотябы 2 таких каста бонус брони будут обнуляца по первому вышедшому таймеру=(( вот лолкод=(: Код:
помогите плззз=) ато я не усну=) можно в любом исполнении=) разберусь если что=) Отредактировано Cheguevara, 01.03.2010 в 00:18. |
28.02.2010, 23:43 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
А ты уверен, что у тебя функция UnitAddBonus правильно работает ???
ZeToX2007 добавил: И тут нет почти экстрассенсов, объясни, какие аргументы принимает UnitAddBonus. И почему во втором стоит везде 0 ? Отредактировано ZeToX2007, 01.03.2010 в 00:37. |
01.03.2010, 00:27 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
эм...[vJass]BonusMod
какбы проблма не в этих функциях. проблема иммено в таймире=( при 2 и более одновременных кастах с одних юнитов не снимаетса бонус зашиты=( или снимаетса по первому истекшему таймеру=( |
01.03.2010, 00:38 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
Значит так:
Сделай структуру struct bonus{ group g integer br } Далее в начале.. bonus b = bonus.create() Потом заносим всех юнитов в округе в эту группу... и к br присваиваем значение защиты, которую мы присвоили. Сохраняем так: SaveInteger(HT, GetHandleId(tm), 1, b) ... дальше в функции RemoveBonus -> bonus b = LoadInteger(HT, GetHandleId(tm), 1) Ещё глобалка нужна к примеру integer BON = 0 присваиваем BON = b.br... Потом работай с группой b.g. И снижаешь всем бонус на BON. В конце незабудь удалить структуру.. и почистить ХешТаблицу |
01.03.2010, 00:49 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
ХэшТаблицу надо создавать?
ато я хэш не юзал=) Cheguevara добавил: слушай, если не сложно, модешь плз вылодить код. я хоть посмотрю, разбирусь=) |
01.03.2010, 01:13 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
Придётся делать с нуля... если кинишь свой, я доделаю, имею ввиду карту, где этот спелл используюется, вслепую не рискну...
|
01.03.2010, 01:30 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
карта изза импорта много весит - 2.5 МБ=(
ладно, ша буду мануалы читать=) это через структуры и хэш делаетса все? |
01.03.2010, 01:35 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
Цитата:
сам посуди, чему должна равнятся переменная ARMOR_BONUS ? это глобальная переменная, которая может измениться несколько раз за время истечения таймера |
|
01.03.2010, 02:00 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
блин, и про это я забыл=(
короче, я понаделал всякого, смотри: Код:
но почему-то функция RemoveBonus стала выдавать ситакс еррор на строке "FirstOfGroup(b.g)==u" оО если их выключить все робит. |
01.03.2010, 02:06 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
FirstOfGroup(b.g)==u <---------- Это что такое ??! точнее где это стоит ?
ZeToX2007 добавил: а вообще надо: integer BON = 0 void Remove() { UnitAddBonus(GetEnumUnit(), 0, -BON) } private nothing RemoveBonus () { timer tm=GetExpiredTimer() bonus b = LoadInteger(HT, GetHandleId(tm), 1) BON = b.br ForGroup(b.g,function Remove) DestroyTimer(tm) tm=null bonus.destroy (b) } ZeToX2007 добавил: и ещё группу удалить.. |
01.03.2010, 02:24 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
в функции RemoveBonus =))
ну вибираю каждого юнита в группе и делаю через цикл действия=) |
01.03.2010, 02:25 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
ну я уже показ пример, вообще надо ставить не == а одно и вообще вот так:
u = FirstOfGroup(b.g) |
01.03.2010, 02:29 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
УХУХУ, спс тебе=))
все заработало=) вот конечный код: Код:
|
01.03.2010, 02:47 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
блин, еще проблема, надо создать спецэффект на юните на время повышения брони...
и создать эффект молнии от кастер к юнитам=( |
01.03.2010, 10:28 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,159Активность: |
AddSpecialEffectTarget
AddLightningEx Где проблема? XiMiKs добавил: + AngleBetweenCoords |
01.03.2010, 10:41 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
надо убрать по таймеру также как и бонусную броню..
также структуру чтолои еще 1 создавать? |
01.03.2010, 10:53 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
Cheguevara, Зачем ещё струтуру ? просто в этой добавь новые переменные
|
01.03.2010, 17:38 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
а как переменные на молнии создать или тоже хэш?
можешь плз наводяший код написать плзззз=) научи=) |
01.03.2010, 23:18 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
struct bonus{
group g integer br lightning l } |
02.03.2010, 00:12 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Cheguevara
offline
Опыт:
383Активность: |
неее мне моллнию нужно через 1.5 сек унччтожить, т.е это новый таймер.
а почему молния не массив? мне же не 1 надо создавать. |
02.03.2010, 01:26 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|