PDA

Просмотр полной версии : [Вопрос] По sscanf & mxINI



Иван Бубнов
31.01.2016, 22:46
У меня на сервере есть переменная pSettings[6],
Думал сохранять их таким образом:
ini_setInteger(iniFile, "set1", pSettings[0]);
ini_setInteger(iniFile, "set2", pSettings[1]);
//....

Как можно записать это по проще и желательно в одну ячейку (или переменная хз как его)))

ini_setInteger(iniFile, "Settingi", <ЗДЕСЬ КАК ТО СКАЗАТЬ ЧТО ОНИ ДЕЛЯТСЯ ЧЕРЕЗ ЗАПЯТУЮ>, PlayerInfo[playerid][pSettings][0]....);

Что я увидел в другом моде:
sscanf(inputtext,"p<,>ii",razdel[0],razdel[1]);

Но все же остается вопрос, как записать и обратно прочитать данные с mxINI?!

Роуди.
31.01.2016, 22:57
Так у тебя уже есть же пример, что не так?

sscanf(inputtext,"p<,>ii",razdel[0],razdel[1]);

Иван Бубнов
31.01.2016, 23:51
Так у тебя уже есть же пример, что не так?

sscanf(inputtext,"p<,>ii",razdel[0],razdel[1]);

sscanf(string,"p<,>ii",PlayerInfo[playerid][pSettings][0], ,PlayerInfo[playerid][pSettings][1] ...);
ini_setInteger(iniFile, "setings", string);

так?

L0ndl3m
31.01.2016, 23:59
Какие значения может принимать одна из ячеек массива pSettings?

Иван Бубнов
01.02.2016, 00:47
Цифровые. Либо 1 либо 0.

L0ndl3m
01.02.2016, 00:55
Сегодня не успею написать, мол как сделать проще. Если у кого есть время и кто знаком с битами, помогите ему.

VVWVV
01.02.2016, 01:12
Сегодня не успею написать, мол как сделать проще. Если у кого есть время и кто знаком с битами, помогите ему.

Ты о битовых сдвигах? Кстати, да, так тоже можно сделать.

Иван Бубнов
01.02.2016, 01:25
Ты о битовых сдвигах? Кстати, да, так тоже можно сделать.

так это как?

VVWVV
01.02.2016, 01:45
enum E_PLAYERS_FLAGS (<<= 1)
{
EI_PLAYERS_FLAGS_LOGGED = 1, // 00000000000000000000000000000001
EI_PLAYERS_FLAGS_SPAWNED, // 00000000000000000000000000000010
EI_PLAYERS_FLAGS_GENERATED, // 00000000000000000000000000000100
EI_PLAYERS_FLAGS_FACEINGDOWN // 00000000000000000000000000001000
}

enum E_PLAYER_INFO
{
E_PLAYERS_FLAGS: EI_PLAYERS_FLAGS // Settings
}

static PlayerInfo[MAX_PLAYERS][E_PLAYER_INFO];

main()
{
PlayerInfo[0][EI_PLAYERS_FLAGS] = EI_PLAYERS_FLAGS_LOGGED | EI_PLAYERS_FLAGS_GENERATED;
printf("%d", PlayerInfo[0][EI_PLAYERS_FLAGS]);
if (PlayerInfo[0][EI_PLAYERS_FLAGS] & EI_PLAYERS_FLAGS_GENERATED)
printf("Yes %d", PlayerInfo[0][EI_PLAYERS_FLAGS] & EI_PLAYERS_FLAGS_GENERATED);
if (PlayerInfo[0][EI_PLAYERS_FLAGS] & EI_PLAYERS_FLAGS_FACEINGDOWN)
printf("No %d", PlayerInfo[0][EI_PLAYERS_FLAGS] & EI_PLAYERS_FLAGS_FACEINGDOWN);
}

PlayerInfo[0][EI_PLAYERS_FLAGS] — хранится число, которое можно сохранить в файл.
Note: Это просто набросок, я не проверял на работоспособность.

Иван Бубнов
01.02.2016, 01:57
enum E_PLAYERS_FLAGS (<<= 1)
{
EI_PLAYERS_FLAGS_LOGGED = 1, // 00000000000000000000000000000001
EI_PLAYERS_FLAGS_SPAWNED, // 00000000000000000000000000000010
EI_PLAYERS_FLAGS_GENERATED, // 00000000000000000000000000000100
EI_PLAYERS_FLAGS_FACEINGDOWN // 00000000000000000000000000001000
}

enum E_PLAYER_INFO
{
E_PLAYERS_FLAGS: EI_PLAYERS_FLAGS // Settings
}

static PlayerInfo[MAX_PLAYERS][E_PLAYER_INFO];

main()
{
PlayerInfo[0][EI_PLAYERS_FLAGS] = EI_PLAYERS_FLAGS_LOGGED | EI_PLAYERS_FLAGS_GENERATED;
printf("%d", PlayerInfo[0][EI_PLAYERS_FLAGS]);
if (PlayerInfo[0][EI_PLAYERS_FLAGS] & EI_PLAYERS_FLAGS_GENERATED)
printf("Yes %d", PlayerInfo[0][EI_PLAYERS_FLAGS] & EI_PLAYERS_FLAGS_GENERATED);
if (PlayerInfo[0][EI_PLAYERS_FLAGS] & EI_PLAYERS_FLAGS_FACEINGDOWN)
printf("No %d", PlayerInfo[0][EI_PLAYERS_FLAGS] & EI_PLAYERS_FLAGS_FACEINGDOWN);
}

PlayerInfo[0][EI_PLAYERS_FLAGS] — хранится число, которое можно сохранить в файл.
Note: Это просто набросок, я не проверял на работоспособность.

Сделал аналогичным способом. В файле есть settingi, но он пустой) т.е settingi= и все

VVWVV
01.02.2016, 02:04
enum E_PLAYERS_FLAGS (<<= 1)
{
EI_PLAYERS_FLAGS_LOGGED = 1,
EI_PLAYERS_FLAGS_SPAWNED
}

enum E_PLAYERS_INFO
{
E_PLAYERS_FLAGS:pSettings
}

new
PlayerInfo[MAX_PLAYERS][E_PLAYERS_INFO];

// Запись одного значения.
PlayerInfo[playerid][pSettings] |= EI_PLAYERS_FLAGS_LOGGED;
PlayerInfo[playerid][pSettings] |= EI_PLAYERS_FLAGS_SPAWNED;

// Запись нескольких значений.
PlayerInfo[playerid][pSettings] = EI_PLAYERS_FLAGS_LOGGED | EI_PLAYERS_FLAGS_SPAWNED;

/* Аналогично:
PlayerInfo[playerid][pSettings] |= EI_PLAYERS_FLAGS_LOGGED;
PlayerInfo[playerid][pSettings] |= EI_PLAYERS_FLAGS_SPAWNED;
*/

// Получаем значение
if (PlayerInfo[playerid][pSettings] & EI_PLAYERS_FLAGS_SPAWNED)
/* code.. */

//--
ini_setInterger(iniFile, "someName", PlayerInfo[playerid][pSettings]); // Запись в файл

SliM
01.02.2016, 09:53
enum E_PLAYERS_FLAGS (<<= 1)
{
EI_PLAYERS_FLAGS_LOGGED = 1,
EI_PLAYERS_FLAGS_SPAWNED
}

enum E_PLAYERS_INFO
{
E_PLAYERS_FLAGS:pSettings
}

new
PlayerInfo[MAX_PLAYERS][E_PLAYERS_INFO];

// Запись одного значения.
PlayerInfo[playerid][pSettings] |= EI_PLAYERS_FLAGS_LOGGED;
PlayerInfo[playerid][pSettings] |= EI_PLAYERS_FLAGS_SPAWNED;

// Запись нескольких значений.
PlayerInfo[playerid][pSettings] = EI_PLAYERS_FLAGS_LOGGED | EI_PLAYERS_FLAGS_SPAWNED;

/* Аналогично:
PlayerInfo[playerid][pSettings] |= EI_PLAYERS_FLAGS_LOGGED;
PlayerInfo[playerid][pSettings] |= EI_PLAYERS_FLAGS_SPAWNED;
*/

// Получаем значение
if (PlayerInfo[playerid][pSettings] & EI_PLAYERS_FLAGS_SPAWNED)
/* code.. */

//--
ini_setInterger(iniFile, "someName", PlayerInfo[playerid][pSettings]); // Запись в файл

не читаемо. Сам не путаешься с такими названиями?

Иван Бубнов
02.02.2016, 22:31
А я вообще 2 дня толковал че к чему) Дошло, спасибо! Close