Quote:
Originally Posted by Johnny_Xayc
DANGER user this
new tmp[64];
iniGet(iniFile, "Key", tmp); PlayerInfo[playerid][pKey] = tmp;
if(strcmp(PlayerInfo[playerid][pKey],password,true)==0) THEN
your code
END
|
а смысл? Когда можно сразу указать ini_getString(iniFile,"Key",PlayerInfo[playerid][pKey], 64);
Кстати по-моему
PlayerInfo[playerid][pKey] = tmp; не самых правильный вариант копирования строковых переменных. Я считаю лучше использовать
strmid(PlayerInfo[playerid][pKey], tmp, 0, strlen(tmp), 255);
Но в любом случаи спасибо.
Quote:
Originally Posted by ZiGGi
в павне почему-то sizeof(PlayerInfo[playerid][pKey]) работает не правильно... давно заметил...
ini_getString(iniFile,"Key",PlayerInfo[playerid][pKey],128 );
|
Твой пример более понятен и удобен, т.к. в ини-ридере заложена такая возможность. А на счёт, что нельзя делать sizeof(PlayerInfo[playerid][pKey]) я тоже согласен. Но просто в описании данной ф-ии ini_getString небыло дополнительных пояснений.
Вопрос к автору.
1. Почему
ini_getString(iniFile,"Key",PlayerInfo[playerid][pKey],64);
возвращает неполное значение пароля, а выкидывает из пароля некоторые символы. Нельзя это исправить или что надо закоментировать, т.к. код этого инклюда слишком сложный для понимания за один вечер.
Вот к примеру
из пароля
Key=crtВЂqz69X
пропал символ
'В'
и вернулся пароль
Key = crtЂqz69X
Почему? Как исправить?
2. Также возможно ошибка инклюда
DonateRank и Rank он принимает за одинаковый ключ. И поэтому PlayerInfo[playerid][pRank] всегда пуст.
3. Если я закоментирую вот эти строки в ф-ии stock ini_setString(nFilePointer, szKeyName[], szKeyValue[])
Code:
//_ini_szFileContent[nFilePointer]{ curFilePos++ } = ' '; // после ключа добавим пробел
_ini_nDelimPos[nFilePointer][ _ini_nKeysCount[nFilePointer] ] = curFilePos; // добавим новую позицию INI_DELIMITER
_ini_nKeysCount[nFilePointer]++; // кол-во ключей в файле +1
_ini_szFileContent[nFilePointer]{ curFilePos++ } = INI_DELIMITER; // после пробела выше добавим INI_DELIMITER
//_ini_szFileContent[nFilePointer]{ curFilePos++ } = ' '; // после INI_DELIMITER добавим пробел
работоспособность инклюда не изменится?
И ещё
Я заметил, что названия ключей, если поменять их в моде, то он не меняет их в процессе работы, но если в моде произошла замена ключа, то данный инклюд ищет совпадения, если не находит, то данная переменная будет пуста. Это так задумано? Это не удобно если название ключа поменялось и надо чтобы постепенно все аккаунты перезаходя на сервер перезаписали название этого ключа. Т.к. самому вручную перебивать в 5000 аккаунтах название одного ключа - это очень скучно.
И последнее для тех, кто будет начинать юзать это инклюд, было бы полезным добавить описание для ф-ии ini_getString, что при значениях, типа как PlayerInfo[playerid][pKey], необходимо указывать размерность.