Сейчас 16:04:50 Суббота, 18 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Научите правильно сохранять данные в Hashtable (jass)
[Вопрос] Научите правильно сохранять данные в Hashtable
MindSmiLeДата: Пятница, 13 Января 2012, 09:19:54 | Сообщение # 1
1 уровень
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Блокировки:
Обесните мне что за что отвечает как использовать эту hashtable
Это для меня густой лес
Code
SaveUnitHandle(Hashtable,integer parentKey,integer  childKey,unit whichUnit)
и
Code
LoadUnitHaddle
тоже
 

Ty3uKДата: Пятница, 13 Января 2012, 09:53:01 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Для сохранения юнитов, декораций, эффектов, групп и любых других объектов лучше юзать
Code
call SaveAgentHandle(hashtable, parent, child, handle)
где hashtable- переменная хэштаблицы, parent- родительская ячейка, child- дочерняя ячейка, handle- твой объект, который ты сохраняешь. Т.е, если проводить аналогию с, допустим, Microsoft Office Excel, то родитель- строка, дочерний- столбец. Как объяснить лучше- хз

Добавлено (13 Январь 2012, 09:30:57)
---------------------------------------------
Родитель, дочерняя- целые числа. Далее у нас идет выгрузка значений. Для каждого хэндла (объекта) существует отдельная функция (хотя есть и универсальная LoadAgentHandle(), но она работает медленнее). Рассмотрим это на примере выгрузки уже сохраненного юнита сразу в локальную переменную:
Code
local unit u = LoadUnitHandle(udg_Hash, 0, 0)
где Hash - наша таблица. Надеюсь, все понятно. Если что- пиши

Добавлено (13 Январь 2012, 09:53:01)
---------------------------------------------
И бтв, правильно писать сохрАнять


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

MindSmiLeДата: Пятница, 13 Января 2012, 10:30:05 | Сообщение # 3
1 уровень
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Блокировки:
Вроде все понел

Code
И бтв, правильно писать сохрАнять


да я прочитал когда создал тему исправить то нельзя
 

Ty3uKДата: Пятница, 13 Января 2012, 10:32:23 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ну и понял через я пишется ^_^

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Пятница, 13 Января 2012, 12:38:10 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
хотя есть и универсальная LoadAgentHandle(), но она работает медленнее
Нет такой функции. А даже если бы и была, как бы ты приводил типы (agent -> unit, например)?
Да, и вот статья.


 

Ty3uKДата: Пятница, 13 Января 2012, 12:45:33 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ну, писал с телефона, поэтому и перепутал, извините ^_^

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Пятница, 13 Января 2012, 17:04:51 | Сообщение # 7
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (MindSmiLe)
Обесните мне что за что отвечает как использовать эту hashtable

Сохранение в хеш можно представить как запись значений в переменную - массив:
переменная[ячейка] = значение
Так же и записываются и данные в хеш, только вместо переменной используется КЛЮЧ для идентификации записываемых данных, далее как и в переменой-массиве используется ячейка в которую записываются данные, и в самом конце записывается сами данные в таблицу.
Quote (Ty3uK)
call SaveAgentHandle(hashtable, КЛЮЧ, ЯЧЕЙКА, ЗНАЧЕНИЕ)

Выгрузка происходит по такому же принципу только в конче не указываются те данные которые ты сохранил а лишь ячейка в которых хранится значение.
Quote (Ty3uK)
LoadUnitHandle(udg_Hash, КЛЮЧ, ЯЧЕЙКА)


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 13 Января 2012, 17:06:38
 

MindSmiLeДата: Пятница, 13 Января 2012, 17:11:34 | Сообщение # 8
1 уровень
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Блокировки:
lawson, понятней всех объеснил, а потом данные которые сохранид удалят ненадо?
 

lawsonДата: Пятница, 13 Января 2012, 17:18:18 | Сообщение # 9
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (MindSmiLe)
а потом данные которые сохранид удалят ненадо

Если данные в таблице тебе больше не нужны, да их нужно удалять.
Есть два метода:
1) Удаление всех данных из таблицы по КЛЮЧУ - FlushChildHashtable(hashtable, КЛЮЧ) - данный метод очистит все занятые ячейки таблицы по КЛЮЧУ.
2) Удаление данных из таблицы по КЛЮЧУ из ячейки - :) А вот здесь уже не помню как точно. Данный метод очистит не все ячейки таблицы, как в методе выше, а только определенную.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 13 Января 2012, 17:22:35
 

SirNikolasДата: Пятница, 13 Января 2012, 19:57:51 | Сообщение # 10
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (lawson)
А вот здесь уже не помню, как точно.
Есть пять функций:
Code
native  RemoveSavedInteger     takes hashtable table, integer parentKey, integer childKey returns nothing
native  RemoveSavedReal      takes hashtable table, integer parentKey, integer childKey returns nothing
native  RemoveSavedBoolean     takes hashtable table, integer parentKey, integer childKey returns nothing
native  RemoveSavedString     takes hashtable table, integer parentKey, integer childKey returns nothing
native  RemoveSavedHandle     takes hashtable table, integer parentKey, integer childKey returns nothing
Плюс можно полностью удалить хэш-таблицу:
Code
native  FlushParentHashtable      takes hashtable table returns nothing


 

Ty3uKДата: Пятница, 13 Января 2012, 20:17:31 | Сообщение # 11
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Неужели сказанное Лавсом чем-то отличается от сказанного мною? Бтв, Ник, последняя функция не удаляет, а чистит всю таблицу ^_^

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Суббота, 14 Января 2012, 11:39:21 | Сообщение # 12
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
Неужели сказанное Лавсом чем-то отличается от сказанного мною?
Цветовые коды и понятные ассоциации.
Quote (Ty3uK)
Бтв, Ник, последняя функция не удаляет, а чистит всю таблицу
Чистка + удаление, насколько я знаю. Во всяком случае, в статье написано, что после этой процедуры хэш нужно инициализировать заново. Чем не удаление?


 

Ty3uKДата: Суббота, 14 Января 2012, 11:41:57 | Сообщение # 13
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Окей, не буду спорить. С телефона цветом выделять слегка неудобно

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Научите правильно сохранять данные в Hashtable (jass)
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz