playerzorg
offline
Опыт:
214Активность: |
Стрела и хеш-таблицы
Сделал способность стрелы в JassNewGenPack на патче 1.24 карта запускается, способность не работает, может хэштаблицами нужно по другому пользоваться?) Непонятно
Нестандартный код
Код способности:
Отредактировано playerzorg, 10.08.2009 в 18:10. |
10.08.2009, 15:39 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
playerzorg, ятп вместо H2I() надо бы теперь использовать GetHandleId()
|
10.08.2009, 16:24 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
playerzorg
offline
Опыт:
214Активность: |
Забыл написать) В нестандартном коде H2I у меня выглядит так
function H2I takes handle h returns integer
return GetHandleId(h) endfunction Карта на новом патче 1.24 запускается отлично, но при использовании способности появляется только стрела и всё |
10.08.2009, 16:29 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
playerzorg, ты используешь неверную функцию для получения числа из строки. Нужно использовать не S2I("строка"), а StringHash("строка").
В твоем коде все параметры записываются на один и тот же адрес - [H2I(timer), 0], а согласно определению хеш-таблиц, при записи объекта на одну и ту же пару чисел, предыдущий объект будет перезаписан.
Кстати, ты два раза инициализируешь хеш-таблицу - один раз при объявлении, другой раз в спелле. |
10.08.2009, 16:33 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
playerzorg
offline
Опыт:
214Активность: |
ShadoW DaemoN, спасибо)) круто, заработало)) в общем я изменил с S2I("строка") на StringHash("строка"), а для того чтобы каждое значение не перезаписывало друг друга прибавил к H2I(timer) StringHash("строка") вот например
сохранение call SaveUnitHandle(h1T, H2I(t)+StringHash("Caster"), StringHash("Caster"), GetTriggerUnit()) загрузка LoadUnitHandle(h1T, H2I(t)+StringHash("Caster"), StringHash("Caster")) Только есть вопрос нет ли тут утечек или багов каких-нибудь, которые будут тормозить игру, может есть способ лучше? Инициализирование хештаблицы при объявлении убрал
playerzorg добавил: При одновременном использовании способности перестаёт работать, одна из стрел зависает и не удаляется Отредактировано playerzorg, 10.08.2009 в 17:00. |
10.08.2009, 17:25 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ToChilo
■□□□□
offline
Опыт:
356Активность: |
еще посли использования хэша неплохо бы чистить его от устаревших значений |
10.08.2009, 17:39 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
playerzorg
offline
Опыт:
214Активность: |
у меня выдаёт ошибку когда я его чищу Too Many arguments passed to function
ну или вместо этого вставляю
ошибка не выскакивает, но в игре всё равно остаётся зависание и неудаление стрелы при одновременном использовании способности двумя или более юнитами |
10.08.2009, 17:46 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
playerzorg, ты меня неправильно понял. Я говорил, что если пара ключей совпадет, а не какой-то один совпадет. StringHash() выдает для разных строк разные значения.
Так что не нужно к первому ключу что-то приплюсовывать.
Чистить так:
Я уж молчу про то, что код написан плохо и с утечками |
10.08.2009, 17:54 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
playerzorg
offline
Опыт:
214Активность: |
в игре всё равно остаётся стрела при одновременном использовании способности двумя или более юнитами(Ответьте кто-нибудь из-за чего этот бред!?), я обновил код вначале страницы, бред в общем какой-то)
Может у кого-нибудь есть карта где наглядно показано как пользоваться хэштаблицами? Отредактировано ShadoW DaemoN, 10.08.2009 в 22:42. |
10.08.2009, 18:12 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ranger21
I love beatiul days XD
offline
Опыт:
13,274Активность: |
Наслаждайся и не парься насчёт хеш-таблиц
Работает MUI( мультиприменима большим количеством юнитов) |
10.08.2009, 22:08 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
playerzorg
offline
Опыт:
214Активность: |
Во Круто))) Спасибо! а таким же способом я могу на своей карте все спеллы делать? |
10.08.2009, 22:22 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ranger21
I love beatiul days XD
offline
Опыт:
13,274Активность: |
playerzorg, Можешь, если ты разберёшься в структурах. Правда я на XGM статей не видел грамотных по ним... может у кого-нибудь есть. |
10.08.2009, 22:25 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|