Авторизация
#1

Сам делаю мод, но возникла проблема, решить сам не могу:

Игроки при автризации если:
1) Неверно вводят пароль
2) Жмут Esc
3) Жмут Enter

У них на какоето время (2-4 сек) пропадает окошко для ввода пароля, тоесть тишина (респауна и выбора персонажа - не происходит)
потом вылазиет окошко что надо всётаки ввести пароль.
Но когда игрок вводит верный пароль, то у него всё по нулям, кроме пароля.
Обнуление происходит именно после выполнения выше указанных действий.

ID диалогов в порядке вроде.
Плиз помогите!

Авторизация:
PHP код:
     if(dialogid == 2)
    {
        if(
response// проверка на кнопку "ОК" и Enter
        
{
            if(
strlen(inputtext) == 0) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"{FFFFFF}Авторизация""ПАРОЛЬ:::""Войти""");
            new 
PlayerName[MAX_PLAYER_NAME], password[64];
            
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
            new 
account[128];
            
format(account,sizeof(account),"Users/%s.ini",PlayerName);
            if(
IsPlayerNPC(playerid))return 1;
            new 
iniFile ini_openFile(account);
            
ini_getString(iniFile"Пароль",password); // Узнаём пароль аккаунта.
            
if(strcmp(inputtextpasswordtrue) == 0)
            {
              
ini_getInteger(iniFile"Money"Player[playerid][pMoney]); // Запишем кол-во денег в переменную.
              
ini_getInteger(iniFile"Skin"Player[playerid][pSkin]); // Запишем кол-во денег в переменную.
              
ini_getFloat(iniFile"Heal"Player[playerid][pHeal]); // Запишем кол-во жизней в переменную.
              
ini_getInteger(iniFile"Admin"Player[playerid][pAdminPlayer]); // Запишем кол-во денег в переменную.
              
ini_getInteger(iniFile,"Score",Player[playerid][pScore]);
              
ini_getInteger(iniFile,"Banned",Player[playerid][pBanned]);
          
ini_getFloat(iniFile"Pos_x"Player[playerid][pPos_x]); // Запишем кол-во денег в переменную.
              
ini_getFloat(iniFile"Pos_y"Player[playerid][pPos_y]); // Запишем кол-во денег в переменную.
              
ini_getFloat(iniFile"Pos_z"Player[playerid][pPos_z]);
                
ini_closeFile(iniFile);
                if(
Player[playerid][pBanned] == 1)
                {
                    
SendClientMessage(playerid, -1"Ты забанен на нашем сервере! За разбаном в скайп к глав.админу [getto_skype]");
                    
Kick(playerid);
                    return 
1;
                }
                
SendClientMessage(playeridCOLOR_YELLOW,"{00FF04}Вы были успешно залогинены");
                
SetPlayerScore(playeridPlayer[playerid][pScore]);//Выдаем SCORE
                
SetPlayerHealth(playeridPlayer[playerid][pHeal]); //Теперь выдадим игроку хп
                
SetPlayerSkin(playeridPlayer[playerid][pSkin]); //А! Ну и скин...
                
GivePlayerMoney(playeridPlayer[playerid][pMoney]); //И денег
                
SetSpawnInfo(playerid,0,0,1958.33,1343.12,15.36,269.15,0,0,0,0,0,0);
                
SpawnPlayer(playerid);
                
logged[playerid] = 1;
                
TogglePlayerSpectating(playeridfalse);
                return 
1;
            }
            else
            {
                
logged[playerid] = 0;
                
SendClientMessage(playerid0xFFFFFFFF"Неверный пароль!Если вы его забыли то обратесь в скайп глав.админу{FF0000} [Getto_skype]");
                new 
str[128],sctring[2000];
                
format(str,sizeof(str),"Введите пароль:");
                
strcat(sctring,str);
                
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"{FFFFFF}Авторизация"sctring"Войти""");
            }
        }
        else 
//Если нажать Esc, то...
        
{
            
logged[playerid] = 0;
            
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"{FFFFFF}Авторизация""Введите пароль от своего аккаунта""Войти""");
        }
    } 
Reply
#2

"Пароль" -> "Password" Скорее всего баг в русской кодировке
Reply
#3

С русской кодировкой не замечал проблем у mxINI. Там в:
pawn Код:
getString(iniFile, "Пароль", password);
Надо добавить размер целевого массива:
pawn Код:
getString(iniFile, "Пароль", password, 32); // 32 - max
И я не увидел закрытия файла при неверной авторизации...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)