Объясните пожалуйста как добавлять новые переменные для сохранения и загрузки?
#1

Добрый Вечер...
Решил попробовать сделать регистрацию по уроку Snoowker"а<<Кликабельно.
У меня возник вопрос. Как добавлять новые переменные для сохранения и загрузки? Например денег и очков.(aMoney , aScore)


Загрузка аккаунта:
PHP код:
LoadAccount(playeridpassword[]) {
    new
        
query[128],
         
sqlpass[32],
         
result[5+24+64],
         
dialog[128];
    
mysql_real_escape_string(passwordsqlpass); // Защита от SQL Inject, шифрует кодировку.
     
format(querysizeof(query), "SELECT * FROM `Accounts` WHERE `Password` = '%s' AND `ID` = '%i'"sqlpassplayerVariable[playerid][aID]);
    
// SELECT * - выбрать, FROM - с таблицы, WHERE - где, пароль равен введенному паролю и ID равен иду ника человека.
     
mysql_query(query); // Отправляем запрос.
     
mysql_store_result(); // Смотрим записи, которые мы выбрали запросом выше.
     
if(mysql_num_rows() == 1) { // Если выбрало только 1 аккаунт с таким паролем и ИД - успех, пароль введен верно, загружаем данные в массив.
        
mysql_fetch_row_format(result"|"); // split, данные в результате записываются типо "1|Snoowker|parol"
        
sscanf(result"p<|>is[24]s[32]"// i - ид (int), s[размер] - string, ник и пароль.
            
playerVariable[playerid][aID],
            
playerVariable[playerid][aName],
            
playerVariable[playerid][aPassword]);
        
playerVariable[playerid][aLogged] = true;
        
mysql_free_result(); // Очищаем память.
        
return 1;
    }
     else { 
// Мы ввели неверный пароль.
         
if(playerVariable[playerid][aWrongPassword] == 4) {
            
SendClientMessage(playeridCOLOR_LIGHTRED"Вы 3 раза ввели неверный пароль и были отключены от сервера.");
            
Kick(playerid);
            return 
1;
        }
                
playerVariable[playerid][aWrongPassword] ++;
        
format(dialogsizeof(dialog),
            
"Вы ввели неверный пароль.\n\
            У Вас осталось %i/3 попыток ввода."
playerVariable[playerid][aWrongPassword]);
        
ShowPlayerDialog(playeridDIALOG_WRONGPASDIALOG_STYLE_MSGBOX"Ошибка."dialog"Повтор""Отмена");
     }
     return 
1;

Сохранение аккаунта:
PHP код:
SaveAccount(playerid) { // Сохранение аккаунта.
    
if(playerVariable[playerid][aLogged] == true) { // Проверка, если аккаунт авторизован.
        
CheckMySQLConnection(); // Проверяем, подключена ли БД.
        
new 
            
query[186],
            
sqlname[MAX_PLAYER_NAME],
            
sqlpass[64];
        
mysql_real_escape_string(playerVariable[playerid][aName], sqlname);
        
mysql_real_escape_string(playerVariable[playerid][aPassword], sqlpass);
        
format(querysizeof(query), "UPDATE `Accounts` SET `Nickname` = '%s', `Password` = '%s' WHERE `ID` = '%i'"sqlnamesqlpassplayerVariable[playerid][aID]);
        
mysql_query(query); // Отправляем запрос
    
}
    return 
1;

Reply
#2

Добавлять в объявлении ассоциативного массива, потом добавляешь переменные в базу, далее добавляешь их в sscanf
PHP код:
 sscanf(result"p<|>is[24]s[32]i"// i - ид (int), s[размер] - string, ник и пароль. 
            
playerVariable[playerid][aID], 
            
playerVariable[playerid][aName], 
            
playerVariable[playerid][aPassword],
            
playerVariable[playerid][aMoney]); 
И не забывай в список типа данных добавлять свои;
Советую почитать этоhttps://sampforum.blast.hk/showthread.php?tid=120356 и это https://sampwiki.blast.hk/wiki/Keywords:Initialisers#enum

ЗЫ: Какой плагин MySQL используешь?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)