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

    Статус
    Оффлайн
    Регистрация
    21.05.2015
    Сообщений
    11
    Репутация:
    0 ±

    0 скин при спавне и смешивание паролей.

    Короче.
    1 баг. При спавне, скин меняется на 0(CJ), например при выходе с наблюдение, после смерти и т.п. Сразу скажу, что я 100 раз перепроверил код. Нигде не стоит SetPlayerSkin или что-то в этом роде. Да и проверять не зачем. Так как 0 скин вижу только я(у себя), другие игроки видят мой настоящий скин(не 0).

    2 баг. Смешиваются пароли. Я использую функцию strins для записи пароля из "inputtext" в переменную. Потом я записываю пароль в базу данных. Захожу в бд и вижу что пароли смешались, например пароль от 1 аккаунта - 123, а от второго должен был быть 456, но вместо этого 123456. 100% уверен что это из-за strins, так как я проверил - вставил эту функцию в другую часть кода(не при регистрации), и заметил, что пароли тоже смешиваются - значит проблема не в базе данных. После я заменил функцию strins на функцию strpack. В другой части кода пароли не смешивались и все было прекрасно, но аккаунт вообще перестал даже регистрироваться.

    Ну вот и все. 2 гадких бага. Помогите, может кто-либо сталкивался хотя-бы с одним из них.)

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    OnPlayerSpawn покажите.
    Цитата Сообщение от McGetto Посмотреть сообщение
    Короче.
    1 баг. При спавне, скин меняется на 0(CJ), например при выходе с наблюдение, после смерти и т.п. Сразу скажу, что я 100 раз перепроверил код. Нигде не стоит SetPlayerSkin или что-то в этом роде. Да и проверять не зачем. Так как 0 скин вижу только я(у себя), другие игроки видят мой настоящий скин(не 0).
    Цитата Сообщение от McGetto Посмотреть сообщение
    После я заменил функцию strins на функцию strpack.
    А Вы сами поняли, что Вы сделали?

    Участок кода где используется strins в студию!
    Последний раз редактировалось $continue$; 01.09.2015 в 16:24.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  3. #3
    Аватар для McGetto
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.05.2015
    Сообщений
    11
    Репутация:
    0 ±
    case dRegister:
    {
    if(!response) return ShowPlayerDialog(playerid, dOptions, DIALOG_STYLE_LIST, "{FFFFFF}Настройки", "Сменить ник\nОтправить новый пароль на E-mail\nОтправить новый пароль на телефон(SMS)", "Выбрать", "Назад");
    if(!strlen(inputtext)) return Register_dialog(playerid);
    for(new i = strlen(inputtext)-1; i != -1; i--)
    {
    switch(inputtext[i])
    {
    case '0'..'9', 'а'..'я', 'a'..'z', 'А'..'Я', 'A'..'Z': continue;
    default: return Register_dialog(playerid), SendClientMessage(playerid, RED, "Пароль содержит запрещеные символы.");
    }
    }
    strins(PlayerInfo[playerid][pPassword], inputtext, 0);
    //strpack(PlayerInfo[playerid][pPassword], inputtext);
    format(query_string, sizeof(query_string), "INSERT INTO `accounts` (`Nick`, `Password`) VALUES ('%s', '%s')", PlayerInfo[playerid][pNick], PlayerInfo[playerid][pPassword]);
    mysql_function_query(mysql_connect_ID, query_string, false, "", "");

    new Pass[128]; format(Pass, sizeof(Pass), "Ваш пароль - %s, никому его не сообщайте!", inputtext), SendClientMessage(playerid, -1, Pass);
    ShowPlayerDialog(playerid, dRegisterGameInfo, DIALOG_STYLE_MSGBOX, "{FFFFFF}Регистрация", "Цель игры - получить высокий уровень, купить дом, транспорт\nПопасть в клан, захватить территории\nКлавиша Y - Основное меню\nF6 или T - чат", "Хорошо", "");
    return 1;
    }

    Это весь код диалога регистрации. Кстати я когда скидывал тебе этот код, обнаружил, что я не прописал размер строки. Я ввел:
    strpack(PlayerInfo[playerid][pPassword], inputtext);
    а надо было:
    strpack(PlayerInfo[playerid][pPassword], inputtext, 0);

    Может проблема в этом?

  4. #4
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    PHP код:
    const MAX_PLAYER_PASSWORD /* максимальная длина пароля */
    Попробуйте так:
    PHP код:
    case dRegister:
    {
        if (!
    response
            return 
    ShowPlayerDialog(playeriddOptionsDIALOG_STYLE_LIST"{FFFFFF}Настройки""Сменить ник\nОтправить новый пароль на E-mail\nОтправить новый пароль на телефон(SMS)""Выбрать""Назад");
        if (!
    strlen(inputtext)) 
            return 
    Register_dialog(playerid);
        for (new 
    strlen(inputtext) - 1!= -1i--)
        {
            switch (
    inputtext[i])
            {
                case 
    '0'..'9''а'..'я''a'..'z''А'..'Я''A'..'Z': continue;
                default: 
                    return 
    Register_dialog(playerid), SendClientMessage(playeridRED"Пароль содержит запрещеные символы.");
            }
        }
        new 
    temp[63 MAX_PLAYER_PASSWORD MAX_PLAYER_NAME 1];
        
    PlayerInfo[playerid][pPassword] = "\0"// Или EOS
        
    strins(PlayerInfo[playerid][pPassword], inputtext0);
        
    mysql_format(mysql_connect_IDtempsizeof(temp), "INSERT INTO `accounts` (`Nick`, `Password`) VALUES ('%e', '%e')"PlayerInfo[playerid][pNick], PlayerInfo[playerid][pPassword]);
        
    mysql_function_query(mysql_connect_IDtempfalse"""");

        
    temp[0] = "\0"// Или EOS

        
    format(tempsizeof(temp), "Ваш пароль - %s, никому его не сообщайте!"inputtext);
        
    SendClientMessage(playerid, -1temp);
        
    temp[0] = "\0"// Или EOS
        
    ShowPlayerDialog(playeriddRegisterGameInfoDIALOG_STYLE_MSGBOX"{FFFFFF}Регистрация""Цель игры - получить высокий уровень, купить дом, транспорт\nПопасть в клан, захватить территории\nКлавиша Y - Основное меню\nF6 или T - чат""Хорошо""");
        return 
    1;

    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    21.05.2015
    Сообщений
    11
    Репутация:
    0 ±
    strmid(PlayerInfo[playerid][pPassword], inputtext, 0, strlen(inputtext), 64);

    Так не проще? По-моему исправился. Но все равно спасибо за совет.)

    А что с багом со скином? Не встречал такой?

  6. #6
    Аватар для McGetto
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.05.2015
    Сообщений
    11
    Репутация:
    0 ±
    Не может такого быть, чтобы ни у кого не был 1 баг.((

  7. #7
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    Цитата Сообщение от McGetto Посмотреть сообщение
    Нигде не стоит SetPlayerSkin или что-то в этом роде.
    Ну так добавь, в чем проблема?
    В OnPlayerSpawn
    PHP код:
    SetPlayerSkin(playeridPlayerInfo[playerid][pModel]); 
    Skype: vitya.saveliev


  8. #8
    Аватар для McGetto
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.05.2015
    Сообщений
    11
    Репутация:
    0 ±
    Тогда сначала будет скин CJ, и только потом наш скин. Короче скин CJ будет мельком заметен.

    Я узнал почему при спавне 0 скин, это потому что мы не выбираем скин стандартными стрелками.

    Если выбрать скин стрелками. А потом его сменить например через команду какую-нибудь функцией SetPlayerSkin. То при спавне будет скин который мы выбрали стрелками.

    Пытался вызвать функцию нажатия стрелок: OnPlayerRequestClass(playerid, PlayerInfo[playerid][pSkin]), но ничего не вышло((

    Может я не правильно вызываю, или так нельзя?

  9. #9
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    Skype: vitya.saveliev


  10. #10
    Аватар для McGetto
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.05.2015
    Сообщений
    11
    Репутация:
    0 ±
    Ты про это?:
    public OnGameModeInit()
    {
    for(new i = 0; i < 312; i++) AddPlayerClass(i,0,0,0,0,0,0,0,0,0,0);
    ...
    return 1;
    }

 

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

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

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

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

Ваши права

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