[Вопрос] Почему не работает цикл?((
|
|
TorianKel | Дата: Понедельник, 16 Апреля 2012, 13:16:49 | Сообщение # 1 |
3 уровень
Группа: Проверенные
Сообщений: 64
Награды: 0
Репутация: -13
Блокировки:
| глобалки: СT = 2
local integer a = CT // количество массивов loop exitwhen a<0 set a = a - 1 if IUNIT[a]==GetTriggerUnit() then set attack_target = IUNIT[a].attack set defense_target = IUNIT[a].defense set onhit_damage_target = IUNIT[a].onhit_damage set armor_target = IUNIT[a].armor set critical_chance_target = IUNIT[a].critical_chance set critical_power_target = IUNIT[a].critical_power set a = 0 endif endloop
такая ошибка: comprasing two variables of different primitive types (except real and integer) is not allowed
|
|
|
|
FkoFF | Дата: Понедельник, 16 Апреля 2012, 14:04:23 | Сообщение # 2 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Ст возможно реальное число. Хотя возможно и ниже напортачил, суть ошибки - несоответствие типов переменных.
Вообще странный какой то код
|
|
|
|
SirNikolas | Дата: Понедельник, 16 Апреля 2012, 14:08:43 | Сообщение # 3 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (TorianKel) IUNIT[a]==GetTriggerUnit() => IUNIT - handle/widget/unit arrayQuote (TorianKel) IUNIT[a]. => IUNIT - struct.
|
|
|
|
TorianKel | Дата: Понедельник, 16 Апреля 2012, 15:05:25 | Сообщение # 4 |
3 уровень
Группа: Проверенные
Сообщений: 64
Награды: 0
Репутация: -13
Блокировки:
| спс, работает) только вот цикл лагает и не работает, если проверяется количество массивов больше 1 просто не хочется писать под каждого ifelse. Есть альтернатива?
|
|
|
|
Hexing | Дата: Понедельник, 16 Апреля 2012, 16:51:12 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (TorianKel) спс, работает) только вот цикл лагает и не работает, если проверяется количество массивов больше 1 просто не хочется писать под каждого ifelse. Есть альтернатива? попробуй поменять set a = 0 на set a = -1
|
|
|
|
TorianKel | Дата: Понедельник, 16 Апреля 2012, 17:25:45 | Сообщение # 6 |
3 уровень
Группа: Проверенные
Сообщений: 64
Награды: 0
Репутация: -13
Блокировки:
| У меня ща так: глобалки: integer CT = 1 // так циклом проверяется 1 массив и он работает, не лагает (но и смысла в нем нет:D) если CT= 2 // то есть хочу проверить 2 юнита - не пашет и лагает как я понял на циклах не судьба, придется ifelse под каждого( loop local integer a = CT set a = a - 1 if IUNIT[a].UNIT==GetTriggerUnit() then set attack_target = IUNIT[a].attack set defense_target = IUNIT[a].defense set onhit_damage_target = IUNIT[a].onhit_damage set armor_target = IUNIT[a].armor set critical_chance_target = IUNIT[a].critical_chance set critical_power_target = IUNIT[a].critical_power endif exitwhen a==0 endloop
loop local integer b = CT set b = b - 1 if IUNIT[b].UNIT==GetEventDamageSource() then set attack_attacker = IUNIT[b].attack set defense_attacker = IUNIT[b].defense set onhit_damage_attacker = IUNIT[b].onhit_damage set armor_attacker = IUNIT[b].armor set critical_chance_attacker = IUNIT[b].critical_chance set critical_power_attacker = IUNIT[b].critical_power endif exitwhen b==0 endloop
|
|
|
|
Hexing | Дата: Понедельник, 16 Апреля 2012, 17:54:10 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| дело не в цикле а в структуре, у тебя там ошибка, ибо в цикле ошибок нет, лаги по другой причине.
|
|
|
|
TorianKel | Дата: Понедельник, 16 Апреля 2012, 18:56:52 | Сообщение # 8 |
3 уровень
Группа: Проверенные
Сообщений: 64
Награды: 0
Репутация: -13
Блокировки:
| все забиваю. делаю на iflelse.Жаль нету switch как в с++(
|
|
|
|
Ty3uK | Дата: Понедельник, 16 Апреля 2012, 19:05:51 | Сообщение # 9 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Зато есть elseif
|
|
|
|
Hexing | Дата: Понедельник, 16 Апреля 2012, 20:48:48 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Ty3uK) Зато есть elseif есть свитч на дефайнах
|
|
|
|
Ty3uK | Дата: Понедельник, 16 Апреля 2012, 20:54:48 | Сообщение # 11 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Тут не задействуется подстановка на этапе препроцессинга, разве нет? Человек проверяет значение в функции что называется "по ходу дела". Тут и поможет элсеиф, ибо свитч, насколько я помню, это связка из нескольких иф зен, потому как оператора элсеиф там нет
|
|
|
|
Hexing | Дата: Понедельник, 16 Апреля 2012, 20:58:39 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Ty3uK) 10 уровень
Группа: Проверенные Сообщений: 4186 Награды: 0 Репутация: 584 ± Блокировки:
Тут не задействуется подстановка на этапе препроцессинга, разве нет? Человек проверяет значение в функции что называется "по ходу дела". Тут и поможет элсеиф, ибо свитч, насколько я помню, это связка из нескольких иф зен, потому как оператора элсеиф там нет хз как он устроен, надеюсь на elseif-ах
|
|
|
|
Ty3uK | Дата: Понедельник, 16 Апреля 2012, 21:01:40 | Сообщение # 13 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Кто он?
|
|
|
|
llka | Дата: Понедельник, 16 Апреля 2012, 23:03:02 | Сообщение # 14 |
4 уровень
Группа: Пользователи
Сообщений: 88
Награды: 0
Репутация: 34
Блокировки:
| TorianKel, а зачем вообще делать структуру массив? Нелегче просто создать локальную структуру и сохранить в хеш, или приаттачить к чему то?
|
|
|
|
Hexing | Дата: Вторник, 17 Апреля 2012, 06:00:26 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (llka) TorianKel, а зачем вообще делать структуру массив? Нелегче просто создать локальную структуру и сохранить в хеш, или приаттачить к чему то? за весь мой опыт работы в cJass я разобрался в одном: структуры - зло, либо аттачить всё к хэшу, либо написать свой хэш с одним ключом типа хэт, либо ручками на глобалочках ... думаю он её юзает т.к. использует чужую наработку, а может просто чтобы нагляднее код был
|
|
|
|
Ty3uK | Дата: Вторник, 17 Апреля 2012, 07:56:44 | Сообщение # 16 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Структуры и есть глобалки, Холмс
|
|
|
|
Hexing | Дата: Вторник, 17 Апреля 2012, 08:17:54 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Ty3uK) Структуры и есть глобалки, Холмс +куча ненужных функций - бе
|
|
|
|
Ty3uK | Дата: Вторник, 17 Апреля 2012, 08:35:14 | Сообщение # 18 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ого, Холмс, да вы меня понимаете :3
|
|
|
|
Hexing | Дата: Вторник, 17 Апреля 2012, 08:51:57 | Сообщение # 19 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Ty3uK) Ого, Холмс, да вы меня понимаете :3 да, я изменился
|
|
|
|
Ty3uK | Дата: Вторник, 17 Апреля 2012, 09:24:22 | Сообщение # 20 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Это круто, дружище :3
|
|
|
|
DragoN | Дата: Вторник, 17 Апреля 2012, 13:12:22 | Сообщение # 21 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| Quote (Hexing) либо написать свой хэш с одним ключом типа хэт XAT, кстати, на структурах
El Psy Congroo
Сообщение отредактировал DragoN - Вторник, 17 Апреля 2012, 13:12:37 |
|
|
|
Ty3uK | Дата: Вторник, 17 Апреля 2012, 13:21:45 | Сообщение # 22 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Что мешает написать свой и на хэше?
|
|
|
|
Hexing | Дата: Вторник, 17 Апреля 2012, 14:26:12 | Сообщение # 23 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (DragoN) XAT, кстати, на структурах беда) а мне казалось он на чистых макросах, ну да ладно Quote (Ty3uK) Что мешает написать свой и на хэше? смысл писать упрощённый хэш на хэше, лол? ХАТ берёт одно значение, и тем он лучше хэша, но он наструктурах, и тем он хуже хэша, нужно написать на чистом jass хэш с одним ключом, полезная вещица будет, и чтобы с ограниченным колвом ячеек(сколько нужно для карты)
|
|
|
|