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

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

Закрытая тема
 
JamesBlack
black mind
offline
Опыт: 6,595
Активность:
Баг в структурах
У меня есть структурка. Объявлен глобальный массив оной структуры. При инициализации карты, я инициализирую этот массив. Баг в том, что все элементы в итоге инициализируются одинаково с последним элементом, чего бы я в них не заносил до этого.

Как говорит Хеллфим, у него была аналогичная проблема и ему пришлось перейти на ассоциативные глобальные массивы.

Может кто знает такую багу и как с ней бороться? Массивы массивами, а хочется более-менее абстрагированно работать!

JamesBlack добавил:
При чем, кажется, раньше у меня структуры не сбоили. Вспоминаю JB Planting System - там таких проблем у меня не было
Старый 09.07.2010, 01:46
agentex

offline
Опыт: 34,834
Активность:
а можно код где ты иницилизруеш и обьявляешь? и саму структуру.
agentex добавил:
Баг в том, что все элементы в итоге инициализируются одинаково с последним элементом, чего бы я в > них не заносил до этого.
т.е. в каждом элементе массива находится последняя созданная структа?
Старый 09.07.2010, 01:58
JamesBlack
black mind
offline
Опыт: 6,595
Активность:
agentex, да, именно так. Все элементы, как один, повторяют последний.

Я приведу код инициализации тока двух параметров, чтобы не захламлять все. Да и все остальное понятно будет

» раскрыть
Код:
struct Point
    player owner
    integer status
    ....
endstruct

globals
    Point array points [9]
endglobals




function InitTrig_PointInit takes nothing returns nothing
    local integer i=0
    
    set points[0].status = 2
    set points[0].owner = Player(6)
    
    set points[1].status = 0
    set points[1].owner = Player(12)
    
    set points[2].status = 0
    set points[2].owner = Player(12)
    
    set points[3].status = 0
    set points[3].owner = Player(12)
    
    set points[4].status = 0
    set points[4].owner = Player(12)
    
    set points[5].status = 0
    set points[5].owner = Player(12)
    
    set points[6].status = 0
    set points[6].owner = Player(12)
    
    set points[7].status = 0
    set points[7].owner = Player(12)
    
    set points[8].status = 1
    set points[8].owner = Player(1)
    
//ДЕБАГ!!!
    loop
        exitwhen i == 14
        call BJDebugMsg(I2S(i) + "  ==  " + GetPlayerName(Player(i)))
        set i = i + 1
    endloop
    set i = 0
    loop
        exitwhen i == 9
        if points[i].status == 0 then
            call BJDebugMsg(I2S(i) + " - cвободен, владелец - " + GetPlayerName(points[i].owner))
        elseif points[i].status == 1 then
            call BJDebugMsg(I2S(i) + " - захватывается, владелец - " + GetPlayerName(points[i].owner))
        elseif points[i].status == 2 then
            call BJDebugMsg(I2S(i) + " - захвачен, владелец - " + GetPlayerName(points[i].owner))
        endif
        set i = i + 1
    endloop
endfunction


JamesBlack добавил:
Ну ясно вобщем, будем переходить на массивы. Может завтра найдется кто знает проблему?
Старый 09.07.2010, 02:25
agentex

offline
Опыт: 34,834
Активность:
JamesBlack, ну.. структуры в вджасе создавать (алоцировать) надо вообще то)
Старый 09.07.2010, 09:01
SRes
1110101000
offline
Опыт: 9,997
Активность:
.create()
Старый 09.07.2010, 09:28
JamesBlack
black mind
offline
Опыт: 6,595
Активность:
твою блин дивизию! Повылетало все за стока времени из головы!!!

JamesBlack добавил:
Все, ругайте дурака, и тему можно закрывать =)

JamesBlack добавил:
agentex, просто непривычно, память вроде статическая а аллокация нужна =)
Старый 09.07.2010, 14:07
Закрытая тема

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

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

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

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



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