Просмотр полной версии : [Вопрос] По 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?!
Так у тебя уже есть же пример, что не так?
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);
так?
Какие значения может принимать одна из ячеек массива pSettings?
Иван Бубнов
01.02.2016, 00:47
Цифровые. Либо 1 либо 0.
Сегодня не успею написать, мол как сделать проще. Если у кого есть время и кто знаком с битами, помогите ему.
Сегодня не успею написать, мол как сделать проще. Если у кого есть время и кто знаком с битами, помогите ему.
Ты о битовых сдвигах? Кстати, да, так тоже можно сделать.
Иван Бубнов
01.02.2016, 01:25
Ты о битовых сдвигах? Кстати, да, так тоже можно сделать.
так это как?
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= и все
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]); // Запись в файл
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
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot