Хранение вещей в ящиках.
#1

Добрый день.
Делаю систему ящиков и возникло пара вопросов. Хотелось бы слышать мнение экспертов
1) Сохранение вещей и их количества на MySQL, увы, на той версии, которая у меня, приходится создавать калбэк.
2) Сохранение на MxIni.
3) Сохранение в ячейках.
4) Сохранение в Streamer. E_Extra же массив? {1, 2, 3, 4}

1, 2, 4 подразумевается полное отсутствие использования глобальных переменных. Т.к, ё хотелось бы, чтобы количество ящиков было неограничено. Т.е. узнаем из бд, файла, streamer и сразу используем

Как было бы быстрее, удобнее?
Как сделали бы Вы?
Reply
#2

1 Чем плох калбэк ?
2 Mxini не пойдет если будет очень много данных
3 лимиты и прочее
Reply
#3

Просто нужно было узнать информацию из бд и сразу использовать её в месте запроса. А так результаты будут известны только в калбэке.
На счет mxini. Можно же создавать много файлов xD. Знаю, что бред, поэтому, можно расуидать их по каталогам и тогда быстро бы загружалась и использовалась информация. Где то 36 значений нужно сохранить.

А на счет стримера Вы не вкурсе?)
Reply
#4

Ну если я правильно понял, то будет логичнее сделать так:

1. При старте загружаем из бд все данные, создаем ящики
2. Данные ящиков можно прямо в стример записывать в extra, туда же id в бд
3. При использовании/удалении ящика изменять/удалять данные в бд
Reply
#5

В общем, нашёл, как по мне, оптимальное решение. Вся информация о предметах содержится в стримере в 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);
Как только ящик используется он сохраняется. Как только он ставится - загружается.
Хотелось бы услышать мнение "старичков"
Reply
#6

Блин, обрадовался уж, а тут фигня какая-то.. Загружается только 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 - ЗАГРУЗКА
Reply
#7

Че-т странно ты заносишь данные. Попробуй так:
PHP код:
for(new 0;54;d++)
{
        
Streamer_AppendArrayData(STREAMER_TYPE_OBJECTDObjects[gorik][g_gid], E_STREAMER_EXTRA_ID1+random(9));

Reply
#8

Толку нет, всё-равно всё так же)
Reply
#9

Попробуй записать и сразу считать

Streamer_SetArrayData
Streamer_GetArrayData
Reply
#10

Какая версия стримера?
На последней версии всё нормально, сейчас проверил, вот результат:

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

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)