Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Помогите исправить код
Vampirrr добавил:
Код:
в общем должно быть что-то в этом роде, но работать не будет, т.к. в последнем цикле мне нужно, что бы он заканчивался сразу же, как только в клетке, которые он считает замечался юнит..а еще у меня там ошибочки есть, постоянно endif требует и с каждым разом на строку выше =) |
29.12.2008, 07:49 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Gres
Кораэлестраз
offline
Опыт:
18,575Активность: |
Цитата:
После этого цикла a у тебя будет равно 64! Следовательно: Цитата:
У тебя я явно не будет выполняться! Gres добавил: И в конце нужно еще два endif'a добавить кажись! |
||
29.12.2008, 07:56 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
так, делая на ГУИ, у меня в число а запоминалась клетка (номер региона) в котором находится наш юнит. И я делал так же, циклами..но в ГУИ не смог выйти из цикла когда надо..вот пытаюсь решить эту проблему джассом.
» триггер на ГУИ RookRed Events Player - Player 1 (Red) Selects a unit Conditions (Owner of (Triggering unit)) Equal to Player 1 (Red) Or - Any (Conditions) are true Conditions (Unit-type of (Triggering unit)) Equal to Ð¡Ð°Ð¼Ð¾Ñ…Ð¾Ð´Ð½Ð°Ñ Ð¼Ð¾Ñ?тиÑ?а (Unit-type of (Triggering unit)) Equal to Катапульта (Unit-type of (Triggering unit)) Equal to БаллиÑта (Unit-type of (Triggering unit)) Equal to ТÑ?уповозка Actions For each (Integer A) from 1 to 64, do (Actions) Loop - Actions If (All Conditions are True) then do (Then Actions) else do (Else Actions) If - Conditions ((Triggering unit) is in (Units in Square[(Integer A)])) Equal to True CheckSelection Equal to 0 Then - Actions Set CheckSelection = 1 If (All Conditions are True) then do (Then Actions) else do (Else Actions) If - Conditions (Integer A) Greater than or equal to 25 (Integer A) Less than or equal to 32 Then - Actions For each (Integer B) from 1 to 4, do (Actions) Loop - Actions If (All Conditions are True) then do (Then Actions) else do (Else Actions) If - Conditions ((Units in Square[((Integer A) + (8 x (Integer B)))] owned by Player 1 (Red)) is empty) Equal to True Then - Actions If (All Conditions are True) then do (Then Actions) else do (Else Actions) If - Conditions ((Units in Square[((Integer A) + (8 x (Integer B)))] owned by Player 2 (Blue)) is empty) Equal to True Then - Actions Custom script: exitwhen false Unit - Create 1 . for (Triggering player) at (Center of Square[((Integer A) + (8 x (Integer B)))]) facing Default building facing (270.0) degrees Else - Actions Else - Actions For each (Integer C) from 1 to 3, do (Actions) Loop - Actions Unit - Create 1 . for (Triggering player) at (Center of Square[((Integer A) - (8 x C))]) facing Default building facing (270.0) degrees For each (Integer C) from 1 to (32 - (Integer A)), do (Actions) Loop - Actions Unit - Create 1 . for (Triggering player) at (Center of Square[((Integer A) + C)]) facing Default building facing (270.0) degrees For each (Integer C) from 1 to ((Integer A) - 25), do (Actions) Loop - Actions Unit - Create 1 . for (Triggering player) at (Center of Square[((Integer A) - C)]) facing Default building facing (270.0) degrees Else - Actions Else - Actions Vampirrr добавил: ну так что мне делать? |
29.12.2008, 08:16 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Gres
Кораэлестраз
offline
Опыт:
18,575Активность: |
Непонял... из какого цикла! При каком условии? У тя цикл должен прекращаться когда a входит в промежуток от 25 до 32?
|
29.12.2008, 08:28 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Gres, таг, будет проще если ты карту посмотришь)
P.S.: не пытайся запустить ее в варике, не удалив джассовую версию триггера - выкидывает из эдитора..где ошибка, я хз.. |
29.12.2008, 08:30 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Vampirrr втф? я же тебе подробно расписал как находить клетку в которой находится твой юнит... прекращай тупить и убери этот цикл от 1 до 64
|
29.12.2008, 08:52 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Jon, блин, давай тут забудем про то что я хочу и просто поправим мне код? так сказать, совместим приятное с полезным..мне тут уже интересен джасс, а не решить проблему с созданием юнитов. И еще я хотел бы посмотреть как работает действие exitwhen true (false), в джассовом виде. Да и примерчик бы не помешал..
|
29.12.2008, 09:01 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Gres
Кораэлестраз
offline
Опыт:
18,575Активность: |
Млин да помойму там код с нуля проще написать! Ты просто объясни конкретно что тебе нужно! Ибо у тя там ваще в одном цикле еще два цикла! Ужас! |
29.12.2008, 09:13 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
чтото типо...
Код:
Отредактировано J, 02.01.2009 в 14:23. |
29.12.2008, 09:14 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Jon, спс, буду разбирать)
Gres - http://xgm.guru/forum/showthread.php?t=21136 вот с чего все начиналось))) лучше чем там, объяснить не могу) |
29.12.2008, 09:20 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
1 цикл не работает (я только его оставил, остальные 3 цикла обрезал для проверки)..ошибок не вылетает никаких, а толку от триггера 0. Но сам триггер работает - проверил выведением на экран из этого триггера значения моей глобалки. Отредактировано Vampirrr, 30.12.2008 в 07:47. |
30.12.2008, 06:36 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
значит чтото неправельно зделал |
30.12.2008, 09:44 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Jon, для начала, мне бы хотелось знать, сколько юнитов создастся, если верхняя левая точка иметт координаты (-1024, 256)..Не сложно посчитать что с будет негативно, в рез-те мы имеем негатив в целом числе i. Потом, если у нас i и есть положение нашего пикнутого юнита, то наш цикл сразу становится тру и заканчивается (ибо мы проверяем если в регионе i есть юнит, а он там есть - это наш пикнутый юнит). И потом у меня возникла проблема с проверкой юнита в ректе, поэтому я пользовался этой проверкой:
Код:
будь добр, подскажи оптимизированную проверку, т.к. действие if (RectContainsUnit(udg_square(a), GetUnitsInRect(udg_square(a), Plater (0)) невозможно (ну так я себе представляю нормальную проверку =)).. |
30.12.2008, 09:59 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
Цитата:
|
||
30.12.2008, 10:02 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Jon, по поводу массива типа юнит - постараюсь сделать. А вот по поводу негативного смотри - допустим юнит находится на клетке d4 (шахматная доска). "с" в этом случае будет равна (по твоей формуле) (0-1024\256) (0 это позиция юнита по X)..А потом мы еще и в цикле делаем c-1..Ясно дело что минус юниты создаватся не будут)
|
30.12.2008, 10:13 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
если на d4, значит столбец == 4, т.е. кориднаты 256*3.5 (т.к. стоит по середине ячейки)
R2I((896-0)/256)=R2I(3.5)=3 // отсчет слобцов с нуля будь внимательнее Отредактировано Jon, 30.12.2008 в 10:27. |
30.12.2008, 10:17 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
цитатко из твоего кода:
"local integer Column = R2I((GetUnitX(u)-<ВерхнийЛевыйУголДоски.x>)/<РазмерЯчейки.x>)" кстати, я кажется кое что заметил, что может быть неправильно, проснусь - проверю.. |
30.12.2008, 10:21 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
Отредактировано Jon, 30.12.2008 в 10:31. |
|
30.12.2008, 10:22 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
J, либо ты меня не понимаешь, либо я тебя. Повторюсь - координата по X (икс) моей ЛЕВОЙ ВЕРХНЕЙ точки имеет значение -(минус)1024. Координата моего юнита по икс имеет значение 0. Подставив данные в формулу получим (0-1024/256)..Да к тому же как у тебя X верхней левой точки равен 0? O_o ты по карте в эдиторе координаты посмотри..значит у тебя доска начинается с центра карты и идет вообще вниз и вправо? Будет проще если ты примерчик сделаешь на несколько клеток, чисто с этим триггером. Иначе мы отсюда не выбиремся..
|
30.12.2008, 21:04 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
R2I((0-(-1024))/256)
где негатив? J добавил: PS индексация ректора должна быть такая 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ... 56 57 58 59 60 61 62 63 у тебя так? |
30.12.2008, 21:32 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|