Просмотр полной версии : [Вопрос] Проблема с mxINI
MarioORG
01.06.2015, 00:24
Файл не создается.
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, COLOR_RED, "Добро пожаловать на Box Play | Red");
SetPlayerColor(playerid, COLOR_WHITE);
new name[MAX_PLAYER_NAME];
new acc [128];
GetPlayerName(playerid, name, sizeof(name));
format(acc,sizeof(acc),"players/%s.ini",name);
new iniFile = ini_openFile(acc);
if(iniFile < 0){
SendClientMessage(playerid, COLOR_RED, "Зарегестрируйтесь, введя команду /register [пароль]");
reg[playerid] = 0;
}else{
SendClientMessage(playerid, COLOR_RED, "Вы уже зарегестрированы. Введите /login [пароль]");
reg[playerid] = 1;
}
return 1;
}
Сама команда:
CMD:register(playerid, params[]) // регистрация
{
if(reg[playerid] == 0){
new acc [128];
new password[64];
new name[MAX_PLAYER_NAME];
sscanf(params,"d",password);
GetPlayerName(playerid, name, sizeof(name));
format(acc,sizeof(acc),"players/%s.ini",name);
new iniFile = ini_createFile(acc);
if(iniFile < 0) ini_openFile(acc);
{
ini_setString(iniFile, "Password", password);
ini_closeFile(iniFile);
}
reg[playerid] = 2;
OnPlayerSpawn(playerid);
}else{
return 1;
}
return 1;
}
Daniel_Cortez
01.06.2015, 00:35
В OnPlayerConnect вы открываете файл, а кто его закрывать будет? Потому-то в команде этот файл и не создаётся.
Да и зачем открывать файл в OnPlayerConnect, когда нужно всего лишь проверить его существование? Это можно сделать с помощью fexist, без всяких там mxINI.
P.S.: Идея с использованием числа вместо пароля (или 0, если введено не число) гениальна.
MarioORG
01.06.2015, 00:48
В OnPlayerConnect вы открываете файл, а кто его закрывать будет? Потому-то в команде этот файл и не создаётся.
Да и зачем открывать файл в OnPlayerConnect, когда нужно всего лишь проверить его существование? Это можно сделать с помощью fexist, без всяких там mxINI.
P.S.: Идея с использованием числа вместо пароля (или 0, если введено не число) гениальна.
Я новичок в павно, насчет численности пароля знаю. =D
Я изменил OnPlayerConnect:
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, COLOR_RED, "Добро пожаловать на Box Play | Red");
SetPlayerColor(playerid, COLOR_WHITE);
new name[MAX_PLAYER_NAME];
new file[24];
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),"players/%s.ini",name);
if(fexist(file)){
SendClientMessage(playerid, COLOR_RED, "Вы уже зарегестрированы. Введите /login [пароль]");
reg[playerid] = 1;
}else{
SendClientMessage(playerid, COLOR_RED, "Зарегестрируйтесь, введя команду /register [пароль]");
reg[playerid] = 0;
}
return 1;
}
Ничего не изменилось.
- - - Добавлено - - -
здесь что то не так с этим:
CMD:register(playerid, params[]) // регистрация
{
if(reg[playerid] == 0){
new acc [128];
new password[64];
new name[MAX_PLAYER_NAME];
sscanf(params,"d",password);
GetPlayerName(playerid, name, sizeof(name));
format(acc,sizeof(acc),"players/%s.ini",name);
new iniFile = ini_createFile(acc);
if(iniFile < 0) ini_openFile(acc);
{
ini_setString(iniFile, "Password", password);
ini_closeFile(iniFile);
}
reg[playerid] = 2;
OnPlayerSpawn(playerid);
SendClientMessage(playerid, COLOR_RED, "hi");
}else{
return 1;
}
return 1;
}
MarioORG
01.06.2015, 01:35
Проблема решена. Тему закрываем.
Забыл создать папку.
Daniel_Cortez
01.06.2015, 01:47
Проблема решена. Тему закрываем.
Сколько ж можно напоминать, ну не будьте вы такими эгоистами...
2. Если Вы сами решили проблему, обязательно напишите, в чём заключалась Ваша ошибка и какое Вы нашли решение (не исключено, что оно может оказаться неправильным - в этом случае остальные участники форума могут указать на это и подсказать более целесообразный вариант решения).
3. Также в темах с вопросами запрещено удаление и/или изменение постов с целью скрыть их содержимое (например, замена содержимого поста на "delete" или любой другой бесполезный текст).
Помните: на портале Вам помогают безвозмездно, не требуя ничего взамен - так помогите и Вы другим людям с таким же вопросом, дав им возможность найти ответ, посмотрев Вашу тему.
Desulaid
01.06.2015, 01:49
Я не профессионал и с sscanf знаком только на "он", разве "d" - это не целочисленная шняга?
CMD:register(playerid, params[]) // регистрация
{
if(reg[playerid] == 0){
new acc [128];
new password[64];
new name[MAX_PLAYER_NAME];
sscanf(params,"s[63]",password);
GetPlayerName(playerid, name, sizeof(name));
format(acc,sizeof(acc),"players/%s.ini",name);
new iniFile = ini_createFile(acc);
if(iniFile < 0) ini_openFile(acc);
{
ini_setString(iniFile, "Password", password);
ini_closeFile(iniFile);
}
reg[playerid] = 2;
OnPlayerSpawn(playerid);
SendClientMessage(playerid, COLOR_RED, "hi");
}else{
return 1;
}
return 1;
}
Я не профессионал и с sscanf знаком только на "он"
Что, простите?
"d"
id
Desulaid
01.06.2015, 21:52
Что, простите?
id
но суть то в пароле?
sscanf(params,"s[63]",password);
A N D R E Y
02.06.2015, 09:15
%s - читает строку
Буквы.
Буквы.
Именно строку, строку символов (там и цифры и другие всякие знаки)
Буквы.
Читает строку с любыми буквами/цифрами.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot