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

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

Ответ
 
DioD

offline
Опыт: 45,134
Активность:
Cовместимость S2Ix I2Sx R2Ix I2Rx
Как я уже писал ранее, переделываю мудоту на 124.

Эти функции не получили никакой вменяемой альтернативы вместе с 124, так что пришлось (в огромный ущерб производительности) придумать нечто такое:


Код:
globals

    integer CSTR  = 0
    integer CREAL = 0
    hashtable HASH = InitHashtable()

endglobals

function S2Ifix takes string S returns integer
    local integer I = LoadInteger(HASH,0x100,StringHash(S))
    
    if I == 0 then
        set CSTR = CSTR + 1
        call SaveInteger(HASH,0x100,StringHash(S),CSTR)
        call SaveStr(HASH,0x101,CSTR,S)
        return CSTR
    endif
        return I

endfunction

function I2Sfix takes integer I returns string
    local string S = LoadStr(HASH,0x101,I)
    
    if S == "" or S == null then
        return "DoNothing"
    endif
        return LoadStr(HASH,0x101,I)
endfunction

function R2I_REM takes real R returns integer
    local integer I = LoadInteger(HASH,0x90,R2I(R*100))
    
    if I == 0 then
        set CREAL = CREAL + 1
        call SaveInteger(HASH,0x90,R2I(R*100),CREAL)
        call SaveReal(HASH,0x91,CREAL,R)
        return CREAL
    endif
        return I

endfunction

function I2R_REM takes integer I returns real
    local real R = LoadReal(HASH,0x91,I)
    
    if R == 0.0 then
        return 0.0
    endif
        return LoadReal(HASH,0x91,I)
endfunction



Эти функции действуют почти также, как в 123 версии, за одним исключением, если вы никогда не преобразовывали строку или число, то обратное преобразование не будет возможным.

Ну и еще огромный удар по памяти и производительности, зато, у вас появляется удивительная возможность исправить код простой заменой этих самых функций.
Старый 03.01.2010, 12:37
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
ммм... ретурн баг на 1.24+?
Bee добавил:
неудобно, + есть хеш
Старый 03.01.2010, 13:28
DioD

offline
Опыт: 45,134
Активность:
учись читать.

это функции СОВМЕСТИМОСТИ чтобы можно было подменить контент S2I а не переписывать весь код.
Старый 03.01.2010, 13:34
Toadcop

offline
Опыт: 54,313
Активность:
а не проще переписать "мудоту" с нуля ? а лучше переписать 6.48 ? -.- ибо по мнению лоста эта версия 3637. (идк так придумал...)

вот я даже адекватный проект придумал "dota4ever" по контенту 6.48 но с кучей свистелок и перделок (т.е. напр интегрированый рестарт и подобные вещи).

тока тут нету никого кто бы этот проект смог бы завершить =). конечно прийдётся сделать кастом бафф систему и другие подобные вещи но зато прикольно было бы.

т.е. думать о баллансе и других вещях не пришлось бы =) (по начялу)
Старый 03.01.2010, 14:27
DioD

offline
Опыт: 45,134
Активность:
мудота готова http://www.sendspace.com/file/otgtji за 75 минут были устранены все ошибки, 45 из которых я мучил систему безопасности.
Старый 03.01.2010, 14:44
Toadcop

offline
Опыт: 54,313
Активность:
мне проще сменить вар на 1.23 и посмотреть оригинал О_о ...
Старый 03.01.2010, 15:00
DioD

offline
Опыт: 45,134
Активность:
я и оригинал сделал, прикольно да, чужая карта без сорцов со всякими свистелкоперделками и за 90 минут времени исправлена...

http://www.sendspace.com/file/htni0o
Старый 03.01.2010, 15:03
ScorpioT1000
Работаем
offline
Опыт: отключен
if S == "" or S == null then
return "DoNothing"
endif
это вобще не нужно, тупость же.
Старый 03.01.2010, 17:47
DioD

offline
Опыт: 45,134
Активность:
Это было сделано для отлова вызовов ExecuteFunc() в несуществующее место, очень важная штука для дебага.

но для тех кто делает всё наверняка офк тупость.
Старый 03.01.2010, 18:00
ScorpioT1000
Работаем
offline
Опыт: отключен
Ты краша боишься чтоли? экзекут не крашит при "" и null в аргументе
ScorpioT1000 добавил:
тогда уж свою ф-цию объявлять и вызывать
ScorpioT1000 добавил:
Старый 03.01.2010, 18:05
DioD

offline
Опыт: 45,134
Активность:
сам факт вызова в несуществующее место говорит об ошибке, так как он проходит бесследно, выявить её иным способом невозможно.

когда функция должна быть вызвана, но по каким то причинам это не происходит, следует обратить внимание.
Старый 03.01.2010, 18:08
ScorpioT1000
Работаем
offline
Опыт: отключен
а причем тут ду нотинг ?) во-первых, в таких функциях не должно быть ничего лишнего - весь дебаг снаружи, во-вторых, ду нотинг тебе также ни о чем не скажет (если, кончено, у тебя нет, отладчика).
поэтому те три строки лишние.
(а вобще, исходя из этого, там вобще вся ф-ция лишняя ибо она возвращает то что положено в любом случае)
Старый 03.01.2010, 18:12
DioD

offline
Опыт: 45,134
Активность:
обе функции на возврат можно укоротить до одной строки и использовать inline методы на контенте если очень хочется, делается простым вырезанием блока безопасности.

но это на любителя.
Старый 03.01.2010, 18:33
adic3x

offline
Опыт: 108,439
Активность:
я забил на жасс и когда переводил ластоногих на 1.24 просто прошил свои нативки)
ADOLF добавил:
т.е. я как бы намекаю, что вы все нешарите
Старый 26.01.2010, 10:21
Ответ

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

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

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

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



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