prog
offline
Опыт:
32,865Активность: |
ScorpioT1000, там в коде косяки. У меня этот код тоже не сохраняется.
1 S2Ix находится после использующей его ф-ции 2 нельзя получить хендл строки командой GetHandleId или, скажешь, оно у тебя работает? |
02.04.2012, 17:33 | #21
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Тогда надо пофиксить его |
02.04.2012, 17:43 | #22
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
В первую очередь, автора темы пофиксить надо. Единственное разумное применение равкода в виде строки - использование его при вводе в чат или выводе на экран. А потом уже думать как пофиксить этот древний код. |
02.04.2012, 17:49 | #23
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Его надо пофиксить в первую очередь ибо скоро это будет литься на сайт =) там будет что-то типа новой библиотеки функций. |
02.04.2012, 17:51 | #24
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ELITE
АДмин
offline
Опыт:
4,078Активность: |
мне для сейв системы, которая готова и полгоно гера со шмотом и всеми хар-ками сохраняет в код длиной 20 символов
Сейв делает отлично, а для ЛОАДа надо раскодировать РАВ код - вот и попал в тупик ------------------ Прошу пофиксите код, чтобы работал, и если не трудно, пожалуста выложите карту с примером работы (хотябы банально вывод на экран результатов выполнения обоих функций) |
02.04.2012, 17:52 | #25
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
ELITE, ты собираешься в чат вводить равкоды предметов для сейвлоада в открытом виде? омг! |
02.04.2012, 17:55 | #26
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ELITE
АДмин
offline
Опыт:
4,078Активность: |
нет, естественно закодированные
после кодирования и сжатия я получил 2 символа с рав кода отсюда 6 вещей + гер = 14 симовлов сжимаю их - остается 5-7 символов экспу, абилки, голд и дерево - это уже числа - они по своему алгоритму жмутся... в обшем позже выложу, как работать будет |
02.04.2012, 18:00 | #27
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
ELITE, почему бы не сделать проще? Если ты работаешь только с нестандартными предметами и равкоды у них идут более-менее по порядку, то закодировать в виде небольшого числа ID любого предмета можно очень легко
id = GetItemTypeId(item)-'I000'
и раскодировать
fullID = loadedID+'I000'
Вся работа ведется с целыми числами.
Со стандартными предметами все немного сложнее, конечно. |
02.04.2012, 18:07 | #28
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
prog, а что если потом это число кодировать в аски)
фиксите либу ! |
02.04.2012, 18:29 | #29
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
ScorpioT1000, у автора есть система кодирования в лоадкод для целых чисел, так что все путем.
А фиксить либу это надо найти способ сопоставить символ с числом, т.е. получить код символа по сути. Стринг хеш этого не дает, в отличии от того что давал РБ - он и отрицательный бывает, увы, да и порядка никакого. На ум пока приходит только тупой перебор и использование хештаблицы, ни первое ни второе не даст высокой скорости и вызовет кучу воплей о производительности. |
02.04.2012, 18:41 | #30
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
prog, рб какраз давал айди хендла, что она и делает, ну значи для стрингов другой айди, поищите, я уже не помню нативку эту, StringHash ? там все бинды уже сделали, это не string2char, не волнуйся. |
02.04.2012, 18:48 | #31
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ELITE
АДмин
offline
Опыт:
4,078Активность: |
ну так что там исправить, чтобы работало?
|
02.04.2012, 19:18 | #32
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
ScorpioT1000, в том то и дело что StringHash работает иначе чем РБ для строк. Контракт у них разный.
Тебя не смущают эти два блока кода?
Из них следует что S2Ix должна возвращать значения, которые можно использовать в качестве индексов массива. Использование StringHash в чистом виде этого не гарантирует - она для другого предназначена. А именно, для использования в качестве ключа в хештаблице.
prog добавил: ELITE, забей ты на эту систему. Прочитай что я тебе написал парой сообщений выше - равкоды в виде строки не нужны в твоем случае. |
02.04.2012, 19:35 | #33
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
prog, хеш строки вроде числа возвращает, а не 128-битный md5, в чем проблема? я думаю, там какраз задействован индексы хешей всех созданных строк, отсчет которого идет от нуля
ScorpioT1000 добавил: Попробуйте xgm.ru/forum/showpost.php?p=535769&postcount=193 |
03.04.2012, 03:13 | #34
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ELITE
АДмин
offline
Опыт:
4,078Активность: |
function ForLoadMap takes nothing returns
так и должно быть? - или всетаки function ForLoadMap takes nothing returns nothing ???? |
03.04.2012, 08:35 | #35
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
ELITE, конечно 2-й вариант
DaeDR добавил:
Если функция ничего не возвращает DaeDR добавил:
Иначе нужна конкретика, например
Без указания типа возвращения будет ошибка |
03.04.2012, 08:51 | #36
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ELITE
АДмин
offline
Опыт:
4,078Активность: |
ScorpioT1000, проверил - синтакс чек выдает ОК (вообще без ошибок)
но карта не запускается даже Код:
даже если только это вставить - уже перестает запускать ELITE добавил: вот это тоже не дает запустить, хотя проверку проходит Код:
ELITE добавил: далее принимает только в таком виде Код:
ELITE добавил: я не спец, но помойму в 1.26а патче много чего отличается от тогоже 1.24 в плане синтаксиса - отсюда и косяки такие а редактор так и вообще 1.20 имеет основу - порабы обновить его тоже ELITE добавил: в общем вот так работает (запускается точнее) » раскрыть Код:
переменны задаю. вручную через редактор переменных НО если из числа нормально получаю РАВ то из РАВ всегда получаю 0.... [i]ELITE добавил: вызываю кодами call DisplayTimedTextToForce( GetPlayersAll(), 30, DEC2ASCII ( S2I( udg_test ) ) ) это работает, из числа делает РАВ в вот это call DisplayTimedTextToForce( GetPlayersAll(), 30, I2S(ASCII2DEC ( udg_test ) ) ) назад не отдает число из РАВ кода всегда результат = 0 // udg_test это текст, получаю из чата ELITE добавил: а также если взять return GetHandleId(s) то тоже не стартует карта Отредактировано ELITE, 03.04.2012 в 12:20. |
03.04.2012, 11:41 | #37
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Ад какойто блин. Ладно, я сам посмотрю вечером. |
03.04.2012, 11:43 | #38
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
ScorpioT1000, ты проверял? а я, когда свой fly-script делал, очень тесно работал с этой функцией. Так вот, чтобы ты знал, индексов строк, как таковых, не существует. Возвращается число, с областью распределения во всем диапазоне значений integer. Такая реализация дает лучшие результаты при использовании в качестве ключей хештаблицы. Да, естественно, никакого легко предсказуемого порядка значений тоже нет.
ELITE, ты очень сильно тупишь. такое впечатление что в jass ни в зуб ногой, а систему лоадкода делал кто-то другой и ты боишься там что-то менять, потому ухватился за эту дурацкую систему, вписывающуюся в совершенно нелогичный алгоритм сохранения предметов. Ну или, как вариант, все совсем не так как ты говоришь, а перевод равкода в число тебе нужен совсем для других целей.
Вот так сохраняется все, но работать не будет потому что функцию S2Ix нужно переписать так, чтобы она возвращала уникальное число от 0 до 8191 для каждой строки из одного символа.
Обрати внимание, изменений минимум
((кат
)) Отредактировано prog, 03.04.2012 в 17:40. |
03.04.2012, 17:26 | #39
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Свою систему хендлинга предлагаешь? Ты точно проверял эту функцию? Потому что они не аллокейтят массив на 2^31 ячеек, должно быть парное число: индекс массива типа 0-8191 и второе - порядковый номер объекта в этой ячейке (реализация самого простого хеш-массива), или оно считается на ходу? Тогда получается что надо это число разбить на два ... Может затестить просто, где совпадения хешей есть и придумать функцию для разброса и разницы, которая подойдёт как костыль? Это тока если хеш константно работает =) |
03.04.2012, 17:36 | #40
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|