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

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

Закрытая тема
 
Radiant
Silence
offline
Опыт: 4,907
Активность:
Приравнимание к массиву хэндлов
Пришла в голову идея сокращать айдишники хэндлов до размера массива по модулю... Никак немогу проверить, безопасно ли использовать этот метод...
вот пример:
Код:
local integer i=0
 local timer t
 local integer id
 local integer c
 loop
  exitwhen i==8192
  set t=CreateTimer()
  set b=H2I(t)
  set c=id-(id/8192)*8192
  call BJDebugMsg(I2S(c))
  set i=i+1
 endloop

Вроде разные числа получаются... я так понял что если на карте не будет 8192 объекта одновременно, то способ можно использовать?

Отредактировано Radiant, 24.06.2008 в 22:32.
Старый 24.06.2008, 22:26
Toadcop

offline
Опыт: 54,313
Активность:
Radiant да. если не будет то можно использовать еще проще =)
h2i(o)-0x100000 // это минимальный хендл глобальных объектов.
Старый 25.06.2008, 00:19
Radiant
Silence
offline
Опыт: 4,907
Активность:
Блин, совсем забыл про эту тему^^
Toadcop, а если использовать твой способ, то можно больше 8192?
Старый 08.07.2008, 18:11
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Radiant, с вычитанием как раз-таки удобней, так как имхо легче заносить данные в другие массивы. Но этот метод не подойдет, если ты захочешь что-то зааттачить на хендл из "внутренней области" (т.е. с H2I(h) < 0x100000). Но, обыкновенно, нормальные люди ничего не аттачат на такие номера =) так что лучше юзать вычитание.
Правда, у меня еще ни разу не случалось, чтобы было больше 8191 элемента.
Старый 08.07.2008, 19:10
Radiant
Silence
offline
Опыт: 4,907
Активность:
Цитата:
Правда, у меня еще ни разу не случалось, чтобы было больше 8191 элемента.

А деструктаблы и другие хэндлы, они ведь считаются?!
Если карта набита деревьями, то способ не катит?
Старый 11.07.2008, 19:09
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Radiant, считаются. Хмм, ты собрался аттачить на деревья массивы яблок и груш?)
Можно вручную вычислить offset и затем считать относительно него. А еще можно сделать так ^_^ :
Код:
globals
  integer array omfg [400000]
endglobals
Старый 11.07.2008, 21:38
Radiant
Silence
offline
Опыт: 4,907
Активность:
Цитата:
globals
integer array omfg [400000]
endglobals

У меня крыша едет) - это что еще за новость?
Старый 11.07.2008, 21:45
adic3x

offline
Опыт: 108,439
Активность:
это следствие поехавшейкрыши векса, работает примерно так:

Код:
if i < 0x00002000 then
  return DTM_ttc_0x00[i]
 elseif i < 0x00004000 then
  return DTM_ttc_0x01[i - 0x00002000]
 elseif i < 0x00006000 then
  return DTM_ttc_0x02[i - 0x00004000]
 else
  return DTM_ttc_0x03[i - 0x00006000]
 endif
Старый 11.07.2008, 21:52
J
expert
offline
Опыт: 48,447
Активность:
ухты, даже я незнал) но это фигня...

Отредактировано ShadoW DaemoN, 06.08.2008 в 06:01.
Старый 11.07.2008, 21:55
Radiant
Silence
offline
Опыт: 4,907
Активность:
ADOLF, это я понял... а вот нафиг вы числа в хексе пишите?(Или я уже спрашивал)
Старый 14.07.2008, 15:01
J
expert
offline
Опыт: 48,447
Активность:
Radiant комуто для удобства, комуто по привычки, комутопросто так, а другие пишут нормально
Старый 14.07.2008, 15:58
w3soft
ТГБ тим
offline
Опыт: 1,769
Активность:
Не задрачивайтесь, используйте кеш...
Старый 17.07.2008, 09:12
Matrix

offline
Опыт: 418
Активность:
увы кеш ето уже позавчерашний день... буржуи атакуют!
Старый 06.08.2008, 15:13
Закрытая тема

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

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

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

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



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