CustomGames.ru - Dota 2 пользовательские игры

CustomNetTable

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн I_GRIN_I

  • Продвинутый
  • 528
  • Мощь: 9
  • Научиться бы скриптить...
CustomNetTable
« : 06-09-2016, 22:10:30 »
Мне нужно получить имена абилок из kv файла, чтобы потом с помощью них создать кучу кнопок-абилок. Как мне правильно передать данные в таблицу? У меня при callback в консоль отправляется просто [].
Вот код отправления:
Код
function CheckYourMicrocontrol:OnFirstPlayerLoaded()
  local tAbilityListTemp = LoadKeyValues("scripts/kv/abilities.txt")
  local n = 1
  for k,v in pairs(tAbilityListTemp) do
CustomNetTables:SetTableValue( "ability_list", tostring(k), { name = tostring(v) } )
n = n + 1
print(k)
print(v)
  end
end

Вот код принятия в js:
Код
var tAbList;
(function () {
tAbList = CustomNetTables.GetAllTableValues( "ability_list" )
    $.Msg('callback')
    $.Msg(tAbList)
})();

custom_net_tables.txt:
Код
<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
{
  custom_net_tables =
  [
  "ability_list"
  ]
}

abilities.txt:
Код
"abilities"
{
"1" "zuus_arc_lightning"
"2" "jakiro_macropyre"
"3" "earthshaker_aftershock"
"4" "abaddon_borrowed_time"
}
« Последнее редактирование: 06-09-2016, 22:12:47 от I_GRIN_I »

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: CustomNetTable
« Ответ #1 : 07-09-2016, 07:54:16 »
(function ()
Вызывается банально раньше записи данных в таблицу.

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: CustomNetTable
« Ответ #2 : 07-09-2016, 08:41:55 »
А нельзя как-то массив записывать в kv файл (или другой какой) и считывать затем его? А то для подобных штук, вроде списков, хэш таблицы дико неудобны.

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: CustomNetTable
« Ответ #3 : 07-09-2016, 08:44:23 »
А нельзя как-то массив записывать в kv файл (или другой какой) и считывать затем его? А то для подобных штук, вроде списков, хэш таблицы дико неудобны.
Нельзя вроде записывать в kv файл что либо, или я неправ?

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: CustomNetTable
« Ответ #4 : 07-09-2016, 08:58:24 »
Вообще по идеи были какие-то апишки, но я не об этом.
Я о записи ручками (через блокнот), а потом считывании в виде списка.

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: CustomNetTable
« Ответ #5 : 07-09-2016, 09:01:55 »
Вообще по идеи были какие-то апишки, но я не об этом.
Я о записи ручками (через блокнот), а потом считывании в виде списка.
Так он это и делает, читая abilities же.

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: CustomNetTable
« Ответ #6 : 07-09-2016, 09:03:17 »
У меня в одном моде есть кв с абилками:

Код
"ability" 
{
1 "sven_storm_bolt"
2 "sven_great_cleave"
3 "sven_warcry"
4 "sven_gods_strength"
5 "tiny_craggy_exterior"
6 "tiny_grow"
7 "axe_berserkers_call"
...
}

И я бы хотел обходиться без цифр, т.е. работать с массивом, а не хэш таблицей. Искал, читал - так и не нашел чего-то об этом для workshopa.

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: CustomNetTable
« Ответ #7 : 07-09-2016, 09:06:41 »
LoadKeyValues() - функция, что подгружает хэш таблицу, но не массив, не список.
Функции, что подгружала бы список - я либо плохо искал, либо её нет.
Вот и интересуюсь - может я все-таки плохо искал и она есть?

Синтаксис lua тут не помогает, потому что сама функция нацелена на хт.

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: CustomNetTable
« Ответ #8 : 07-09-2016, 09:34:05 »
У меня в одном моде есть кв с абилками:

Код
"ability" 
{
1 "sven_storm_bolt"
2 "sven_great_cleave"
3 "sven_warcry"
4 "sven_gods_strength"
5 "tiny_craggy_exterior"
6 "tiny_grow"
7 "axe_berserkers_call"
...
}

И я бы хотел обходиться без цифр, т.е. работать с массивом, а не хэш таблицей. Искал, читал - так и не нашел чего-то об этом для workshopa.
Тупишь батенька :D
Можно же так делать вроде:
Код
"ability" 
{
"sven_storm_bolt",
"sven_great_cleave",
...
}
Потом загружаешь через loadkeyvalue, и обращаешься через my_table[1], my_table[2] и т.д.
В луа есть есть возможность работать с таблицей не только как с хэш таблицей, но и как с обыкновенным массивом.

Оффлайн I_GRIN_I

  • Продвинутый
  • 528
  • Мощь: 9
  • Научиться бы скриптить...
Re: CustomNetTable
« Ответ #9 : 07-09-2016, 10:21:05 »
CryDeS, я пытался засовывать функции в кнопку, но все оставалось так же... Это же вообще должно работать?

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: CustomNetTable
« Ответ #10 : 07-09-2016, 11:43:04 »
CryDeS, я пытался засовывать функции в кнопку, но все оставалось так же... Это же вообще должно работать?
Проверь в луа после записи данных, есть ли данные в таблице.

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: CustomNetTable
« Ответ #11 : 07-09-2016, 12:33:06 »
Тупишь батенька :D
Можно же так делать вроде:
Код
"ability" 
{
"sven_storm_bolt",
"sven_great_cleave",
...
}
Потом загружаешь через loadkeyvalue, и обращаешься через my_table[1], my_table[2] и т.д.
В луа есть есть возможность работать с таблицей не только как с хэш таблицей, но и как с обыкновенным массивом.

Нет,я  же говорю: я так и пытался делать - не работает. В lua естественно можно работать с массивом, но здесь синтаксис луа не помогает. Я же пишу : loadkeyvalue возвращает только хт, а не массив.

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: CustomNetTable
« Ответ #12 : 07-09-2016, 13:28:55 »
Нет,я  же говорю: я так и пытался делать - не работает. В lua естественно можно работать с массивом, но здесь синтаксис луа не помогает. Я же пишу : loadkeyvalue возвращает только хт, а не массив.
Ну значит только так можно загружать. Увы. Но ты можешь преобразовать хт в массив. (table.insert?)

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: CustomNetTable
« Ответ #13 : 07-09-2016, 13:55:13 »
Да не, это мне нафиг не надо. Смысл то в удобном способе хранить инфу:

- если это список, то можно легко удалять/добавлять элементы в любом месте списка (не с точки зрения программиста, но когда руками)
- а если хт, то придется переписывать ключи (менять id-ники, если я захочу удалить элемент)

Можно сделать массив в главном файле как глобалку, как я изначально делал, но места много занимает и глаза мозолит.

Хотя, мне только что пришло в голову решение завести отдельный файл не kv, а lua и там хранить эту глобалку. Но тут минус в существовании самой глобалки : )

Оффлайн ZLOY

  • Супермодератор
  • 396
  • Мощь: 5
Re: CustomNetTable
« Ответ #14 : 07-09-2016, 14:29:45 »