ArchWorm
Матрица незалежности
offline
Опыт:
4,675Активность: |
Iron, юзай моск:
Цитата:
Я имел в виду функции, которые генерятся редактором для условий. |
|
23.11.2006, 21:56 | #21
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Iron
Листовой
offline
Опыт:
24,427Активность: |
ArchWorm12612, а ты отконвертируюй те триггеры в текст. Различия в условиях никакого, а баг есть. Так что это точно не неправильная работа переводчика GUI.
|
23.11.2006, 22:36 | #22
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
как ты сравниваешь эти пары триггеров? - они же абсолютно разные
Почему я писал эти конструкции именно так? Да потому что я тогда не пользовался командой Skip Remaining Actions Обьяснение "спецэффекта"Внимательно посмотри на дейсвтие триггера Up: Код:
Данная структура изоморфна сишной: Код:
Триггер, который ты считаешь забагованным: Код:
Чувствуешь разницу? Эта конструкция изоморфна сишной: Код:
Здесь в любом случае будут проверяться все три проверки, при чем последовательно ибо если юнит на первом этаже, то мы получим (level == 1) => set level = 2; (level == 2) => set level = 3; (level == 3) => set level = 4; Для того что бы триггер работал правильно (как в первом случае), он должен выглядеть так(так как это явно не первый вариант реализации такого триггера, назовем его "реверсным порядком"): Код:
Изоморфизм: Код:
Или так, что более понятно и более привычно и более оптимально (хотя, не более оптимально чем первый вариант): Код:
Код:
в jass нету аналогов операторов break и continue (о чем лично я очень жалею), но в частном случае их можно заменить на return (Skip Remaining Actions) В-общем, ты просто упустил из виду что это оператор case(с break в каждой строке) и при правильной работе он должен завершаться сразу после выбора, а в твоем случае, эти команды break утеряны, почему и происходит последовательное прохождение всех команд. Собственно, вопрос считаю исчерпанным Достаточно было один раз глянуть на эти триггеры, ибо сам допускал такие ошибки, впрочем, полагаю этим страдали все начинающие кодеры - невнимательностью. P.S. Do Nothing тут абсолютно ни при чем, и был введен близзам исключительно для эстетов у которых возникает вопрос "а что писать здесь, если здесь оно не должно ничего делать?" Переименовываю тему что бы не смущать читателей NETRAT добавил: Почему я сравниваю с С? потому что считаю его достаточно компактным и при этом наглядным и многофункциональным языком. Да и если бы я написал на асме, не думаю что было бы понятней =) Отредактировано NETRAT, 24.11.2006 в 02:19. |
24.11.2006, 02:20 | #23
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
p01nTT
offline
Опыт:
11,160Активность: |
Do nothing было сделано для конструкции if (condition) then do (action1) else do (action2).Что бы можно было вставить какое-то действие,если действие после else или then делать не надо
p01nTT добавил: Ну тоже самое сказал NETRAT |
24.11.2006, 14:22 | #24
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Iron
Листовой
offline
Опыт:
24,427Активность: |
Цитата:
Честно говоря я ничего не понял из твоего обьяснения. В частности не понял как могут выполняться условия в then если if дает false (что == ничего не понял). Обьясни на пальцах. Видимо я не совсем корректно понимаю смысл самого If-а. |
|
24.11.2006, 15:42 | #25
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Iron нетрат имел ввиду что:
например у тебя есть интегер == 1 ты проверяеш его.. если он равен 1, то сделать его 2 если он равен 2 то сделать его 3 если он равен 3 то сделать его 4, после этих действий, интегер каким бы он небыл (<4), то он стал бы равен 4. |
24.11.2006, 15:57 | #26
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ArchWorm
Матрица незалежности
offline
Опыт:
4,675Активность: |
О, господи, а ларчик-то просто открывался... :/
Хорошо, что есть глазастые люди типа NETRAT'а |
24.11.2006, 16:15 | #27
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Iron
Листовой
offline
Опыт:
24,427Активность: |
Jon, ха, но тогда бы не было бага с уезжанием камеры игрока в нижний левый угол. Т.е. просто должно было бы происходить перемещение сразу на 4-й этаж (так как и происходит), но вот почему камера то порится?
|
24.11.2006, 16:22 | #28
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Iron опыт показал что лучше сначало искать баг в алгоритмике кода, а не придумывать баги
|
24.11.2006, 16:39 | #29
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
nic666 да, я изучал TP, возможно новичкам покажется более понятным, но, после С все языки меркнут
Iron это вторично, ошибка Цитата:
|
|
24.11.2006, 23:56 | #30
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Iron
Листовой
offline
Опыт:
24,427Активность: |
NETRAT, ладно, тут все ясно. Но всеравно есть некий баг с ифом. Просто я на одной карте делал предвижение кораблей по сетке, т.е. там была сет регеонов, и при вхождении коробля в регион выбрасывалось рандомное 1 или 2, и было 2-а ифа, если 1-н, то корабль отправлялся к правому нижнему регеону, если 2-а то к левому. И такой тригер для каждого регеона. И возникла проблема, хоть триггеры и идентичны для всех регеонов, но в части регеонов корабль застревал, в одних и тех же, причем я просмотрел триггеры все оказалось нормально, пробовал химичить с размерами регеонов, но никакого эффекта.
|
25.11.2006, 15:31 | #31
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Гхм, я полагаю что это где-то недочет. В чистом виде все нормально работает. На то он и алгоритм - что бы по коду можно было однозначно определить что и как будет выполняться
NETRAT добавил: Я к тому что если бы такие вещи не работали стабильно, то мы бы не могли писать скрипты |
25.11.2006, 16:44 | #32
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
dk
offline
Опыт:
60,293Активность: |
Цитата:
Просто там дается команда на перемещение за 0 сек. Но для перемещение всеравно требуется какое-то время пусть оно и стремится к 0. А при перемещение в карте используется позиция карты в данное время, поэтому так как первые перемещения еще не успели изменить позицию камеры, то выполняется только третее перемещение. Можно убрать все ифы и оставить только 3 перемещения и камера будет выполнять только 3. Я проверил |
|
25.11.2006, 18:16 | #33
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Iron
Листовой
offline
Опыт:
24,427Активность: |
Цитата:
Я не говорю что они работают не стабильно, я о том что возможно в некоторыхслучаях ониотказывают (стабильно отказывают, т.е. не периодически, а если да, то всегда да, если нет, то всегданет). |
|
25.11.2006, 21:14 | #34
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Не думаю что это возможно при "правильном"(когда соображаешь что пишешь) написании триггеров |
25.11.2006, 21:36 | #35
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
самый распространёный глюк это вынесение одного условия из другого что делает первое условие безполезный а второе никогда не будет выполняться.
надо делать лесенкой ипроблем не будет Код:
Отредактировано DioD, 26.11.2006 в 08:13. |
25.11.2006, 22:01 | #36
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
пиши на jass и юзай elseif. |
26.11.2006, 04:48 | #37
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DeathWing
offline
Опыт:
2,557Активность: |
Про баг не знал, спасибо! |
05.12.2006, 15:54 | #38
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
DeathWing уже решили что это не баг
|
05.12.2006, 15:55 | #39
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DeathWing
offline
Опыт:
2,557Активность: |
Просто обычно я все посты не читаю, а читаю только статью |
05.12.2006, 16:08 | #40
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|