Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 16
  1. #1
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±

    Возможно ли оптимизировать данный код?

    Написал я диалог авторизации(впервые в жизни :3) и мне код показался громоздким, вопрос, "оптимизировать возможно и что именно тут надо переписывать?"

    PHP код:
    case 2

        if(!
    strlen(inputtext)) return ShowPlayerDialog(playerid2DIALOG_STYLE_INPUT,"Авторизация","{FFFFFF}Вы не можете продолжить авторизацию не введя пароль!\nВведите пароль от аккаунта для входа на сервер:""Вход""Выход"); 
        for(new 
    strlen(inputtext)-1!= -1i--) 
        { 
            switch(
    inputtext[i]) 
            { 
                case 
    '0'..'9''a'..'z''A'..'Z': continue; 
                default: return 
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Авторизация""{FFFFFF}Введённый пароль содержит запрещённые символы!\nВведите пароль от аккаунта для входа на сервер:""Вход""Выход"); 
            } 
        } 
        if(!
    strcmp(pInfo[playerid][pPassword], inputtext)) 
        { 
            new 
    query_string[52+MAX_PLAYER_NAME]; 
            
    format(query_stringsizeof(query_string), "SELECT * FROM `gamers` WHERE `name` = '%s'"pInfo[playerid][pName]); 
            
    mysql_function_query(mysql_variablequery_stringtrue"OnPlayerLogin","i"playerid); 
        } 
        else 
        {
            
    SetPVarInt(playerid"WrongPass"GetPVarInt(playerid"WrongPass") +1);
            if(
    GetPVarInt(playerid"WrongPass") == 4) return ShowPlayerDialog(playerid,1001,DIALOG_STYLE_MSGBOX,"{E6B122} Лимит попыток авторизации","{FFFFFF} Вы ввели неправильный пароль 3 раза подряд.","Закрыть",""), Kick(playerid);//KickFix(playerid, COLOR_WHITE, "{FF6347}При неправильном вводе пароля Вы будете забанены");
            
    new logtires GetPVarInt(playerid"WrongPass");
            new 
    string[500];
            
    format(string,sizeof(string),"{FFFFFF}Добро пожаловать на сервер\nВаш ник зарегистрирован\n\nЛогин: {1DBF3A}%s{FFFFFF}\n{FF0000}Неверный пароль! Осталось попыток: %d"pInfo[playerid][pName], logtires);
            
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Авторизация",string"Войти","Отмена");
            return 
    true;
        }
        return 
    1


  2. #2
    Аватар для Mazzilla
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.11.2013
    Адрес
    Нижневартовск
    Сообщений
    256
    Репутация:
    63 ±
    В формате стринга явно не задействовано 500 ячеек.

  3. #3
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Mazzilla Посмотреть сообщение
    В формате стринга явно не задействовано 500 ячеек.
    Мне просто лень отсчитывать, так как текст пробный.

  4. #4
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Все молчат и это значт что? Да то, что все у меня хорошо

  5. #5
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    PHP код:
        if(inputtext[0] == '\0') return ShowPlayerDialog(playerid2DIALOG_STYLE_INPUT,"Авторизация","{FFFFFF}Вы не можете продолжить авторизацию не введя пароль!\nВведите пароль от аккаунта для входа на сервер:""Вход""Выход");  
        for(new 
    strlen(inputtext)-1!= -1i--)  
        {  
            if(
    inputtext[i] >= && inputtext[i] <= || inputtext[i] >= 'a' && inputtext[i] <= 'Z') continue;
            else return 
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Авторизация""{FFFFFF}Введённый пароль содержит запрещённые                                         символы!\nВведите пароль от аккаунта для входа на сервер:""Вход""Выход");  
        } 

  6. Пользователь сказал cпасибо:
    Desulaid (20.03.2015)
  7. #6
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от NewGreen Посмотреть сообщение
    PHP код:
        if(inputtext[0] == '\0') return ShowPlayerDialog(playerid2DIALOG_STYLE_INPUT,"Авторизация","{FFFFFF}Вы не можете продолжить авторизацию не введя пароль!\nВведите пароль от аккаунта для входа на сервер:""Вход""Выход");  
        for(new 
    strlen(inputtext)-1!= -1i--)  
        {  
            if(
    inputtext[i] >= && inputtext[i] <= || inputtext[i] >= 'a' && inputtext[i] <= 'Z') continue;
            else return 
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Авторизация""{FFFFFF}Введённый пароль содержит запрещённые                                         символы!\nВведите пароль от аккаунта для входа на сервер:""Вход""Выход");  
        } 
    Ну практически хорошо написал я. Все равно впервые пишу мод :)




    А это значит:
    PHP код:
    'a' && inputtext[i] <= 'Z' 
    типа a..z, A..Z ? Просто я даже не думал, что можно начать от маленькой до заглавной буквы алфавита.

  8. Пользователь сказал cпасибо:
    NewGreen (20.03.2015)
  9. #7
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Цитата Сообщение от Darge Посмотреть сообщение
    Ну практически хорошо написал я. Все равно впервые пишу мод :)




    А это значит:
    PHP код:
    'a' && inputtext[i] <= 'Z' 
    типа a..z, A..Z ? Просто я даже не думал, что можно начать от маленькой до заглавной буквы алфавита.
    Запрещенный приём))
    Я немного подзабыл позицию этих букв в таблице кодов, и то что между ними есть еще другие символы. Поэтому лучше все же использовать так:
    PHP код:
    if(inputtext[i] >= && inputtext[i] <= || inputtext[i] >= 'a' &&  inputtext[i] <= 'z ' || inputtext[i] >= 'A' && inputtext[i] <= 'Z') continue; 

  10. Пользователь сказал cпасибо:
    Desulaid (20.03.2015)
  11. #8
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Компилятор проклинает этот код
    PHP код:
    if(inputtext[i] >= && inputtext[i] <= || inputtext[i] >= 'a' &&  inputtext[i] <= 'z ' || inputtext[i] >= 'A' && inputtext[i] <= 'Z') continue; 
    Код HTML:
    new.pwn(235) : error 027: invalid character constant
    new.pwn(235) : warning 215: expression has no effect
    new.pwn(235) : error 001: expected token: ";", but found ")"
    new.pwn(235) : error 029: invalid expression, assumed zero
    new.pwn(235) : fatal error 107: too many error messages on one line

  12. #9
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Цитата Сообщение от Darge Посмотреть сообщение
    Компилятор проклинает этот код
    PHP код:
    if(inputtext[i] >= && inputtext[i] <= || inputtext[i] >= 'a' &&  inputtext[i] <= 'z ' || inputtext[i] >= 'A' && inputtext[i] <= 'Z') continue; 
    Код HTML:
    new.pwn(235) : error 027: invalid character constant
    new.pwn(235) : warning 215: expression has no effect
    new.pwn(235) : error 001: expected token: ";", but found ")"
    new.pwn(235) : error 029: invalid expression, assumed zero
    new.pwn(235) : fatal error 107: too many error messages on one line
    Вот что значит долго не писать код)) забыл расставить скобки, извиняюсь))
    PHP код:
    if((inputtext[i] >= && inputtext[i] <= 9) || (inputtext[i] >= 'a' &&  inputtext[i] <= 'z') || (inputtext[i] >= 'A' && inputtext[i] <= 'Z')) continue; 

  13. Пользователь сказал cпасибо:
    Desulaid (21.03.2015)
  14. #10
    Аватар для Mazzilla
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.11.2013
    Адрес
    Нижневартовск
    Сообщений
    256
    Репутация:
    63 ±
    Дело не в скобках. Ошибки выдаёт на цифры 0 и 9, так как вы сравниваете один символ с буквой из алфавита и тут же с цифрой. Самый первый вариант автора самый рациональный.

  15. Пользователь сказал cпасибо:
    Desulaid (21.03.2015)
 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •