[Вопрос] setdef, или указатель на массив
|
|
Hexing | Дата: Среда, 24 Августа 2011, 17:04:05 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Code void HeroLearn() { unit u = GetTriggerUnit() // hero integer ut = GetUnitTypeId(u) integer lvl = GetHeroLevel(u) if(ut == SELECT_HERO_1) { //SELECT_HERO_1,2,3 это массивы типа integer [5] setdef ABILS = ABILS_1 } elseif(ut == SELECT_HERO_2) { setdef ABILS = ABILS_2 } elseif(ut == SELECT_HERO_3) { setdef ABILS = ABILS_3 } integer i = 0 integer q = 0 loop q = 0 loop q++ exitwhen(q==5) endloop i++ exitwhen(i==5) endloop u = null } Скажите есть ли смысл продолжать делать функцию, тоесть setdef работает корректно? ведь это вроде как лишь замена на этапе компиляции, а сделать переменную массив и дать ей значение другой такой переменной нельзя, так будет ли работать setdef в роли переменной-массива(указателя)?Добавлено (24 Август 2011, 17:04:05) ---------------------------------------------
Quote //SELECT_HERO_1,2,3 это массивы типа integer [5] ой не то написал ABILS_2 ABILS_1 и ABILS_3 это массивы интегер, а SELECT_HERO_3,2,1 это интегер коды героев(воин,лукарь,волш)
|
|
|
|
Faion | Дата: Среда, 24 Августа 2011, 18:06:27 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Эм, #Setdef команда препроцессора как бэ, в игре не исполняется.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Hexing | Дата: Среда, 24 Августа 2011, 18:19:58 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| ага, я тоже к этому пришел!! шо делать
|
|
|
|
Faion | Дата: Четверг, 25 Августа 2011, 02:45:20 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Не юзать ее О_о
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
lawson | Дата: Четверг, 25 Августа 2011, 19:16:32 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| ХМм а разве в cJASS цикл обозначается не как whilenot или я чтото путаю?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Faion | Дата: Четверг, 25 Августа 2011, 22:37:04 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| while\whilenot\do while\do whilenot\for()
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
SirNikolas | Дата: Вторник, 30 Августа 2011, 12:02:38 | Сообщение # 7 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| ??? Вроде for() - это в ZINC'е.
Hexing, у тебя есть три массива, и тебе нужно в зависимости от выбраного героя брать данные из одного из них? Предлагаю создать двумерный массив:Code include "cj_types.j" define const = constant
int array ABILS[3][1]//Второй индекс не важен const int SELECT_HERO_0 = 'Hpal' const int SELECT_HERO_1 = 'Hblm' //const int SELECT_HERO_2 = 'Hmkg'
void HeroLearn() { unit u = GetTriggerUnit() int id = GetUnitTypeId(u), lvl = GetHeroLevel(u), index if id == SELECT_HERO_0 { index = 0 } elseif id == SELECT_HERO_1 { index = 1 } else { index = 2 } int i = 0, q do { q = 0 do { //Действия с ABIL[index][индекс способности] exitwhen q == 4 q++ } exitwhen i == 4 i++ } u = null }
|
|
|
|
Hexing | Дата: Вторник, 30 Августа 2011, 13:24:55 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| спасибо, хорошо написано, но сложность в проверке требовании уровней на все способности, вообщем там цикл в цикле в цикле и кароче я забил на это дело ну это ведь нереально просто... Попробую сделать двумерный массив - первый индекс уровень, второй - ссылка на структуру со списком способностей и уровней, именно твой код натолкнул на это, спасибо
|
|
|
|