XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
0pJl9lTa

offline
Опыт: 3,397
Активность:
Сдаюсь (кодЪ)
Блин, ну хз почему, надоело думать
вот
Код:
else
        if (GetOwningPlayer(GetDyingUnit()) == Player(5))  then
            set udg_QuestN[2] = udg_QuestN[2] + 1
        else
            set udg_QuestN[1] = udg_QuestN[1] + 1
        endif
        if (udg_QuestN[2] >= 30) then
            set st = "Grohn"
            set c = udg_Color[12]
            set udg_QuestN[0] = 400*CountPlayersInForceBJ(udg_GrohnT)
            call ForForce( udg_GrohnT, function MQuest1 )
            loop
                exitwhen a > 3
                set loc = GetRandomLocInRect(gg_rct_RunesG)
                call CreateItemLoc( 'rspd', loc )
                call RemoveLocation (loc)
                set a = a + 1
            endloop
        else
            if (udg_QuestN[1] >= 30) then
                set st = "Auril"
                set c = udg_Color[6]
                set udg_QuestN[0] = 400*CountPlayersInForceBJ(udg_AurilT)
                call ForForce( udg_AurilT, function MQuest1 )
                loop
                    exitwhen a > 3
                    set loc = GetRandomLocInRect(gg_rct_RunesA)
                    call CreateItemLoc( 'rspd', loc )
                    call RemoveLocation (loc)
                    set a = a + 1
                endloop
            endif
        endif
        if (udg_QuestN[2] >= 30) or (udg_QuestN[1] >= 30) then
        call DisplayTimedTextToForce( GetPlayersAll(), 10, "|c0003C2D0QUEST COMPLITE!|r" )
        call DisplayTimedTextToForce( GetPlayersAll(), 10, c + st +"|r team winners! Three runes will be created on they base!")
        call DisplayTimedTextToForce( GetPlayersAll(), 10, "Also they takes additional " +I2S(udg_QuestN[0])+ " money!")
        call PlaySoundBJ( gg_snd_QuestCompleted )
        call DisableTrigger(gg_trg_EndCreeps)
        call DisableTrigger(gg_trg_CreepsType)
        call StartTimerBJ( udg_QuestT, false, GetRandomReal(200,300) )
        call TimerDialogDisplayBJ( false, GetLastCreatedTimerDialogBJ() )
        call QuestSetEnabledBJ( false, udg_Quests[2] )
        call PolledWait (1.00)
        call EnableTrigger(gg_trg_Begin)
        endif
    endif


Вообщем, ест ьквест, он выполняется кода будет убито Х крипов. Причем убивают 2 героя, фраги первого - в udg_QuestN[1], фраги второго в udg_QuestN[2].
Все работает, как тока 30 фрагов, выполняеца проверка все ок. НО последний ИФ(выделенный) не выполняется. Вообщем хз че такое.
Старый 11.05.2006, 19:55
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
0pJl9lTa, выложи весь код, заметил, что он у тебя сечас начинается с else. Хз, может недостаточно еndif`ов?

FellGuard добавил:
Вообще, во избежание багов юзай не
Код:
else
    if () then
    endif
else

а
Код:
elseif () then
endif
Старый 11.05.2006, 20:23
0pJl9lTa

offline
Опыт: 3,397
Активность:
FellGuard Перед элсом 1 иф.
Вообщем очередной навена баг ВЕ, вместо цикла просто тупо скопировал 3 раза те 3 строчки, теперь все работает.
Старый 11.05.2006, 22:09
NETRAT

offline
Опыт: 83,712
Активность:
0pJl9lTa может быть все потому что переменную a ты нигде не обнулял?
Старый 11.05.2006, 23:18
0pJl9lTa

offline
Опыт: 3,397
Активность:
NETRAT да, феликс тоге там думал. Неа, нигде не обнулял. 20 раз код перепроверил. Без цикла все ок, с циклом не пашет.
Старый 12.05.2006, 00:08
NETRAT

offline
Опыт: 83,712
Активность:
0pJl9lTa так потому нифига и не работает что нигде не обнулял. Это же очевидно - ты же сам написал что если заменить цикл тремя строчками - все работает - очевидно что цикл просто не идет. Чего тут думать-то?!
Старый 12.05.2006, 00:19
remal
нечто
offline
Опыт: 2,087
Активность:
Цитата:
Сообщение от NETRAT
0pJl9lTa так потому нифига и не работает что нигде не обнулял. Это же очевидно - ты же сам написал что если заменить цикл тремя строчками - все работает - очевидно что цикл просто не идет. Чего тут думать-то?!

тодлько не выполнялся же второй if...

орлята, я же показывал, как рассталять контрольные сообщения... ну неужели слабо было сделать?
Старый 12.05.2006, 04:00
0pJl9lTa

offline
Опыт: 3,397
Активность:
remal сделала я, после exitwhen все пркращалось. И это относица не только ко второму циклу, это относица ко ВСЕМУ что ниже exitwhen'a.
Т.е. последний иф не выполняетсЯ, даже если udg_QuestN[1] или udg_QuestN[2] больше 30
Старый 12.05.2006, 07:06
NETRAT

offline
Опыт: 83,712
Активность:
Если переменная непроинициализирована, то это СТАНДАРТНЫЙ БАГ - функция при ее использовании просто рубится
Старый 12.05.2006, 10:52
remal
нечто
offline
Опыт: 2,087
Активность:
а вообще твой код так и хочется запихать в функцию... уж больно много повторяющегося кода..
Старый 12.05.2006, 11:43
exAres
I love magic :)
offline
Опыт: 7,788
Активность:
0pJl9lTa наверное цикл "зависает", у меня такое бывало, поставь функции которые выдают сообщении(при каждом действии) и смотри где застрянет(в цикле) - геморно но узнаешь в чём прикол(ВЕ же не идеальный(ето я всё больше замечаю),но если хорошо подумать то всё получится ;)).
Старый 12.05.2006, 15:14
felix_ff

offline
Опыт: 757
Активность:
Цитата:
Сообщение от NETRAT
0pJl9lTa так потому нифига и не работает что нигде не обнулял. Это же очевидно - ты же сам написал что если заменить цикл тремя строчками - все работает - очевидно что цикл просто не идет. Чего тут думать-то?!


NETRAT да я тож сначала так думал.. потом поффтыкал код ышо.. у него там без разницы обнулять не обнулять переменную. потому как если у него один иф выполница то второй нет. поэтому число записанное в "а" никак не повлияет на другой цикл... кароч видима снова какой то баг ВЕ.
Старый 12.05.2006, 18:42
NETRAT

offline
Опыт: 83,712
Активность:
felix_ff скинь пожалуйста весь кусок кода, который глючит - интересно посмотреть, ибо сильно сомневаюсь что это что-то новое

NETRAT добавил:
То есть если вы вдвоем уверены что это хез что, то дайте мне на это посмотреть =)
Старый 12.05.2006, 23:50
0pJl9lTa

offline
Опыт: 3,397
Активность:
кагъ?
Перепиши код в мапу и попробуй.
Старый 13.05.2006, 07:22
NETRAT

offline
Опыт: 83,712
Активность:
скинь секцию глобалок и заголовок функции в котором это все происходит(с локалками). А если не жалко, то весь J
Старый 13.05.2006, 11:53
felix_ff

offline
Опыт: 757
Активность:
Тим я тоже бы пожалуй на весь код глянул.. а вось и правда чет просто просмотрел :)
Старый 13.05.2006, 16:40
0pJl9lTa

offline
Опыт: 3,397
Активность:
Блин... ну как ну?
Весь код не дам :)
Да и не нужен он, все что есть - здесь. Перед элсом почти ниче нет, 2 действия на вывод сообщ, и иф.
Все глобалки инитиализированы. Это стопудова, да и локалки тоге впринципе.
Старый 13.05.2006, 17:00
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 03:06.