Хранение вещей в ящиках. -
Daea - 15.10.2015
Добрый день.
Делаю систему ящиков и возникло пара вопросов. Хотелось бы слышать мнение экспертов

1) Сохранение вещей и их количества на MySQL, увы, на той версии, которая у меня, приходится создавать калбэк.
2) Сохранение на MxIni.
3) Сохранение в ячейках.
4) Сохранение в Streamer. E_Extra же массив? {1, 2, 3, 4}
1, 2, 4 подразумевается полное отсутствие использования глобальных переменных. Т.к, ё хотелось бы, чтобы количество ящиков было неограничено. Т.е. узнаем из бд, файла, streamer и сразу используем
Как было бы быстрее, удобнее?
Как сделали бы Вы?
Re: Хранение вещей в ящиках. -
cm666 - 15.10.2015
1 Чем плох калбэк ?
2 Mxini не пойдет если будет очень много данных
3 лимиты и прочее
Re: Хранение вещей в ящиках. -
Daea - 16.10.2015
Просто нужно было узнать информацию из бд и сразу использовать её в месте запроса. А так результаты будут известны только в калбэке.
На счет mxini. Можно же создавать много файлов xD. Знаю, что бред, поэтому, можно расуидать их по каталогам и тогда быстро бы загружалась и использовалась информация. Где то 36 значений нужно сохранить.
А на счет стримера Вы не вкурсе?)
Re: Хранение вещей в ящиках. -
Richard_Gere - 16.10.2015
Ну если я правильно понял, то будет логичнее сделать так:
1. При старте загружаем из бд все данные, создаем ящики
2. Данные ящиков можно прямо в стример записывать в extra, туда же id в бд
3. При использовании/удалении ящика изменять/удалять данные в бд
Re: Хранение вещей в ящиках. -
Daea - 16.10.2015
В общем, нашёл, как по мне, оптимальное решение. Вся информация о предметах содержится в стримере в array.
Код:
new data[5] = {10, 60, 17, 12, 162};
Streamer_SetArrayData(STREAMER_TYPE_OBJECT, DObjects[gorik][g_gid], E_STREAMER_EXTRA_ID, data);
Streamer_GetArrayData(STREAMER_TYPE_OBJECT, DObjects[gorik][g_gid], E_STREAMER_EXTRA_ID, data);
format(string, sizeof(string), "%d %d %d %d %d", data[4], data[3], data[2], data[1], data[0]);
SCM(playerid, -1, string);
Как только ящик используется он сохраняется. Как только он ставится - загружается.
Хотелось бы услышать мнение "старичков"
Re: Хранение вещей в ящиках. -
Daea - 16.10.2015
Блин, обрадовался уж, а тут фигня какая-то.. Загружается только 9 чисел. Другие превращаются в 0. Что такое? В документациях ничего не сказано про подобное.
Код:
new data[54];
for(new d = 0;d < 54;d++)
{
data[d] = 1+random(9);
format(string, sizeof(string), "%s %d", string, data[d]);
}
Streamer_SetArrayData(STREAMER_TYPE_OBJECT, DObjects[gorik][g_gid], E_STREAMER_EXTRA_ID, data, 54);
print(string);
Код:
new data[54];
Streamer_GetArrayData(STREAMER_TYPE_OBJECT, DObjects[gorik][g_gid], E_STREAMER_EXTRA_ID, data, 54);
for(new d = 0;d < 54;d++) format(string, sizeof(string), "%s %d", string, data[d]);
print(string);
Вот что выводит..
Код:
[20:34:43] 2 7 1 8 7 2 3 8 3 5 3 7 8 2 5 9 1 6 4 3 9 8 8 8 9 1 9 2 5 4 2 5 5 9 5 6 7 5 7 5 1 1 1 2 7 4 5 8 9 3 6 2 9 3 - СОХРАНЕНИЕ
[20:34:44] 4 6 9 5 3 8 1 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - ЗАГРУЗКА
Re: Хранение вещей в ящиках. -
S4D - 16.10.2015
Че-т странно ты заносишь данные. Попробуй так:
PHP код:
for(new d = 0;d < 54;d++)
{
Streamer_AppendArrayData(STREAMER_TYPE_OBJECT, DObjects[gorik][g_gid], E_STREAMER_EXTRA_ID, 1+random(9));
}
Re: Хранение вещей в ящиках. -
Daea - 17.10.2015
Толку нет, всё-равно всё так же)
Re: Хранение вещей в ящиках. -
cm666 - 17.10.2015
Попробуй записать и сразу считать
Streamer_SetArrayData
Streamer_GetArrayData
Re: Хранение вещей в ящиках. -
Richard_Gere - 17.10.2015
Какая версия стримера?
На последней версии всё нормально, сейчас проверил, вот результат:
Quote:
[17:23:37] 2 3 1 1 6 1 3 8 6 3 3 3 7 7 5 7 6 1 7 6 6 7 6 8 1 6 4 4 5 5 8 4 8 2 4 1 3 2 4 9 3 2 9 3 2 5 4 9 8 5 9 8 5 8
[17:23:39] 2 3 1 1 6 1 3 8 6 3 3 3 7 7 5 7 6 1 7 6 6 7 6 8 1 6 4 4 5 5 8 4 8 2 4 1 3 2 4 9 3 2 9 3 2 5 4 9 8 5 9 8 5 8
|