CustomNetTable

  • Автор темы Автор темы I_GRIN_I
  • Дата начала Дата начала

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Мне нужно получить имена абилок из 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"
}
 
Последнее редактирование модератором:
(function ()
Вызывается банально раньше записи данных в таблицу.
 
А нельзя как-то массив записывать в kv файл (или другой какой) и считывать затем его? А то для подобных штук, вроде списков, хэш таблицы дико неудобны.
 
А нельзя как-то массив записывать в kv файл (или другой какой) и считывать затем его? А то для подобных штук, вроде списков, хэш таблицы дико неудобны.
Нельзя вроде записывать в kv файл что либо, или я неправ?
 
Последнее редактирование модератором:
Вообще по идеи были какие-то апишки, но я не об этом.
Я о записи ручками (через блокнот), а потом считывании в виде списка.
 
Вообще по идеи были какие-то апишки, но я не об этом.
Я о записи ручками (через блокнот), а потом считывании в виде списка.
Так он это и делает, читая abilities же.
 
Последнее редактирование модератором:
У меня в одном моде есть кв с абилками:

Код:
"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.
 
Последнее редактирование модератором:
LoadKeyValues() - функция, что подгружает хэш таблицу, но не массив, не список.
Функции, что подгружала бы список - я либо плохо искал, либо её нет.
Вот и интересуюсь - может я все-таки плохо искал и она есть?

Синтаксис lua тут не помогает, потому что сама функция нацелена на хт.
 
[quote author=Илья link=topic=1079.msg6089#msg6089 date=1473238997]
У меня в одном моде есть кв с абилками:

Код:
"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.
[/quote]
Тупишь батенька :D
Можно же так делать вроде:
Код:
"ability" 
{ 
	"sven_storm_bolt",
	"sven_great_cleave",
	...
}
Потом загружаешь через loadkeyvalue, и обращаешься через my_table[1], my_table[2] и т.д.
В луа есть есть возможность работать с таблицей не только как с хэш таблицей, но и как с обыкновенным массивом.
 
Последнее редактирование модератором:
CryDeS, я пытался засовывать функции в кнопку, но все оставалось так же... Это же вообще должно работать?
 
[quote author=I_GRIN_I link=topic=1079.msg6092#msg6092 date=1473243665]
CryDeS, я пытался засовывать функции в кнопку, но все оставалось так же... Это же вообще должно работать?
[/quote]
Проверь в луа после записи данных, есть ли данные в таблице.
 
[quote author=CryDeS link=topic=1079.msg6091#msg6091 date=1473240845]
Тупишь батенька :D
Можно же так делать вроде:
Код:
"ability" 
{ 
	"sven_storm_bolt",
	"sven_great_cleave",
	...
}
Потом загружаешь через loadkeyvalue, и обращаешься через my_table[1], my_table[2] и т.д.
В луа есть есть возможность работать с таблицей не только как с хэш таблицей, но и как с обыкновенным массивом.
[/quote]

Нет,я же говорю: я так и пытался делать - не работает. В lua естественно можно работать с массивом, но здесь синтаксис луа не помогает. Я же пишу : loadkeyvalue возвращает только хт, а не массив.
 
Последнее редактирование модератором:
Нет,я же говорю: я так и пытался делать - не работает. В lua естественно можно работать с массивом, но здесь синтаксис луа не помогает. Я же пишу : loadkeyvalue возвращает только хт, а не массив.
Ну значит только так можно загружать. Увы. Но ты можешь преобразовать хт в массив. (table.insert?)
 
Последнее редактирование модератором:
Да не, это мне нафиг не надо. Смысл то в удобном способе хранить инфу:

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

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

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

Простая табличка ability_table.kv:

Код:
arrayValue = [
	1, 	
	2, 	
	3, 		
 ]

Простое использование:

Код:
GameRules.AbilityTable = LoadKeyValues("scripts/kv/ability_table.kv") --грузим
print(GameRules.AbilityTable[1]) --выводим

В итоге получаем ошибку, а GameRules.AbilityTable равняется nill.

Я думаю, что дело все-таки все же в функции LoadKeyValues.
 
Последнее редактирование модератором:
[quote author=Илья link=topic=1079.msg6104#msg6104 date=1473261493]
Чет касательно моего вопроса: не пашет.

Простая табличка ability_table.kv:

Код:
arrayValue = [
	1, 	
	2, 	
	3, 		
 ]

Простое использование:

Код:
GameRules.AbilityTable = LoadKeyValues("scripts/kv/ability_table.kv") --грузим
print(GameRules.AbilityTable[1]) --выводим

В итоге получаем ошибку, а GameRules.AbilityTable равняется nill.

Я думаю, что дело все-таки все же в функции LoadKeyValues.
[/quote]
Ток щас чот понял твой вопрос в полной мере. Ты косячишь в данном случае сильно, надо было посмотреть синтаксис kv.
Код:
"array_value" = {
 "1" 			"my_string_1"
 "2" 			"my_string_2"
 "3" 			"my_string_3"
}
Т.е, синтаксис берется из тех же датадривен файлов.
 
Последнее редактирование модератором:
Реклама: