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

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

Ответ
 
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
GetObjectName - медленная?
Я написал такую конструкцию для прогона всех нестандартных способностей по циклу и занесения нужных в массив, но она оказалась очень медленной.
function ASB_mass takes nothing returns nothing
    local integer i = 'A000'
    loop
        exitwhen i > 'A100'
        if SubString(GetObjectName(i), 0, 3) == "ASB" then
                set udg_ASB_Equipment[S2I(SubString(GetObjectName(i), 3, 7))] = i
        endif
        set i = i + 1
    endloop
endfunction
Есть ли другие варианты раелизации?

Отредактировано JaBeN_Симфер, 19.02.2010 в 18:06.
Старый 19.02.2010, 17:59
XOR

offline
Опыт: 38,159
Активность:
Делать бд. И это не функция а код
Старый 19.02.2010, 18:16
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
И это не функция а код
Я написал такую конструкцию
где ты нашел, что я написал "функция"?
Делать бд
у меня сейчас и так вручную все занесено, мне нужна именно функция, которая все занесет сама.
Старый 19.02.2010, 18:23
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
это из-за массива я думаю, ибо обращение к массивам происходит не так быстро как, к примеру, к локальной точке
массив тут не причем
задержу использовать тут не могу, мне надо, чтобы массив заполнялся при инициализации, а комп тормозит не на секунду, а на вечность, из-за SubString(GetObjectName(i), 0, 3)
Старый 19.02.2010, 18:35
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
структуры это массивы.
ибо обращение к массивам происходит не так быстро как, к примеру, к локальной точке
бессмысленная фраза.
FellGuard добавил:
вообще, объясните мне нубу, что автор хотел этим сверху сделать?
Старый 19.02.2010, 18:39
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
мне надо, чтобы я не заносил вручную нужные способности в массив, а они заносились сами по определенному признаку, например по имени:
есть способности:
ASB1101
...
ASB2101
вот их надо занести в массив автоматом, а не вручную
массив:
udg_ASB_Equipment[1101]
...
udg_ASB_Equipment[2101]
Еще как убрать пробег по несуществующим способностям в цикле?
Старый 19.02.2010, 18:50
XOR

offline
Опыт: 38,159
Активность:
Никак. Я имел в виду, что не функция медленная а код.
Старый 19.02.2010, 19:00
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
JaBeN_Симфер, напиши программу и впиши туда код. И пусть выводит в выходной файл тучу set'ов.
Старый 19.02.2010, 23:26
DioD

offline
Опыт: 45,134
Активность:
функция как раз таки быстрая, просто между A000 и A100 16581375 чисел (при оплимите в 7к для самых быстрых функций)
Старый 20.02.2010, 02:11
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
Все, я уже сделал все, что надо, разобрался.
Как оказалось еще был обрыв длинной связки функций, который лечится, как я понял, Wait'ом.
Старый 20.02.2010, 02:17
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
обрыв длинной связки функций, который лечится, как я понял, Wait'ом
oh shi~
FellGuard добавил:
разбивай на циклы поменьше и распараллель их.
Старый 20.02.2010, 10:05
adic3x

offline
Опыт: 108,439
Активность:
я где то писал как делать бд по равкодам
ADOLF добавил:
Старый 21.02.2010, 00:09
ScorpioT1000
Работаем
offline
Опыт: отключен
а если рав автоматом генерился?
ScorpioT1001 добавил:
всмысле, есть сложности, когда ты равы не вручную вводишь с плагином от жнгп
Старый 25.02.2010, 13:35
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
какое можно написать условие, чтобы в цикле исключить прогон по строчным буквам в равкоде, например: 'A00a' 'A0cf' и тд?
Старый 01.03.2010, 02:29
Ответ

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

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

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

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



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