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

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

Ответ
 
Celebrate

offline
Опыт: 849
Активность:
Handle >> Unit
Можно ли как-нибудь использовать переменную типа хэндл в функциях берущих как аргумент юнит?
Т.е. нужен аналог паскалевской функции AsЧто-нибудь (хххх.AsTButton)
Раньше я для этого использовал функцию вида:
function AsUnit takes handle h returns unit
 return h
 return null
endfunction
но теперь такая функция не работает :(
Старый 26.12.2009, 23:22
XOR

offline
Опыт: 38,159
Активность:
никак на 1.24
Старый 26.12.2009, 23:25
Celebrate

offline
Опыт: 849
Активность:
Очень очень хреново :(((((((((((((((((((
теперь ни один из моих старых скриптов работать не будет
Старый 26.12.2009, 23:27
Artas Undead

offline
Опыт: 568
Активность:
Celebrate, прочти статью про хеш-таблицы. Это замена ретурн багу.
Старый 26.12.2009, 23:28
XOR

offline
Опыт: 38,159
Активность:
Старый 26.12.2009, 23:31
Celebrate

offline
Опыт: 849
Активность:
Да знаю я про хеш-таблицы
Но я давно отказался от использования кеша в сторону использования массива хэндлов, тк надёжнее. Да уж, значит либо хеш-таблицы, либо старые добрые парралельные массивы.
Старый 26.12.2009, 23:33
XOR

offline
Опыт: 38,159
Активность:
Либо структуры
Старый 26.12.2009, 23:49
Celebrate

offline
Опыт: 849
Активность:
А это что такое?
Хеш-таблицы мне не хочется применять, тк они "непрозрачные".
Старый 26.12.2009, 23:53
Garret
Недоброе творится
offline
Опыт: 3,893
Активность:
Это параллельные массивы
Старый 26.12.2009, 23:55
XOR

offline
Опыт: 38,159
Активность:
Но в более удобном виде
Старый 27.12.2009, 01:00
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Celebrate, просто юзай встроенную функцию для 1.24. Вот полезная тема. Самое основное и нужное тебе в данном случае:
Новые функции GetHandleId и StringHash конвертируют handle или строку в число. Возвращаемые значения могут неявно использоваться в качестве ключей для хэш-таблиц.
StringHash (string): integer - похоже на функцию S2I с одним отличием - эта может принимать любую строку в качестве параметра. Возвращает хеш от строки.
GetHandleId (handle): integer - работает точно так же, как и функция H2I. Для уменьшения конфликтов с совпадением имен, функцию назвали GetHandleId.
Старый 27.12.2009, 01:45
Celebrate

offline
Опыт: 849
Активность:
спасибо, почитаю.
Hellfirm я не хочу использовать хеш-таблицы.
Раньше (когда я последний раз садился за редактор, т.е. очень давно) я использовал массив хендлов, осуществляя преобразования хэндла в юнит (таймер, триггер итд) через РБ-функции. Мне такая система кажется надёжнее кеша.
Старый 27.12.2009, 11:33
XOR

offline
Опыт: 38,159
Активность:
Хеш != кэш
Старый 27.12.2009, 11:43
Celebrate

offline
Опыт: 849
Активность:
Да я знаю; просто не хочется от массивов уходить.
Celebrate добавил:
Хм. Ятп структура - это примерный аналог объекта?
Допустим еть структура типа
struct projectile
 unit prj
 real dx
 real dy
 real dz
 real d2z
 ...
 code func
 boolexpr fltr
 timer t
endstruct
аналог паскалевского конструктора projectile.Create на вджассе будет выглядеть примерно так:
function LaunchProjectile
 local projectile thunderball = projectile.create()
 ...
 set thunderball.prj = CreateUnit(...)
 set thunderball.dx = ...
 set thunderball.dy = ...
 set thunderball.dz = ...
 set t = CreateTimer(...)
 call TimerStart(t, projectileMove, ...)
 ...
endfunction
?
Непонятно, как потом до этого прожектайла добраться из функции вызываемой таймером который я создал в функции LaunchProjectile?
function projectileMove
 local timer t = GetExpiredTimer()
 local projectile thunderball = ???
 //если бы я юзал просто массивы, то я бы нашёл нужный мне юнит-снаряд через поиск по массиву, а так - хз
endfunction
Старый 27.12.2009, 13:50
RazArt

offline
Опыт: 11,197
Активность:
Celebrate, как бы энто убого не звучало, но мне кажется нужно каждую переменную сохранять в хеш, ибо структуры в варе как таковой нет и энто просто набор переменных с различными префиксами (ака название структуры)...
Старый 27.12.2009, 14:24
XOR

offline
Опыт: 38,159
Активность:
call TimesStart(.t, function projectileMove)
обращение идет через точку
Старый 27.12.2009, 14:35
9thNerZul
forum/warcraft3
offline
Опыт: 4,869
Активность:
vJass мануал читал?
Старый 10.01.2010, 11:36
DioD

offline
Опыт: 45,134
Активность:
use fogstate exploit!
Старый 10.01.2010, 13:03
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
и его закроют, имхо
Старый 10.01.2010, 13:17
DioD

offline
Опыт: 45,134
Активность:
именно по этой причине ни один серьёзный проект его не юзает, но для "лишь бы щас поиграть" вполне годиться.
Старый 10.01.2010, 13:31
Ответ

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

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

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

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



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