Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 27 из 30 ПерваяПервая ... 172526272829 ... ПоследняяПоследняя
Показано с 261 по 270 из 299
  1. #261
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,297
    Репутация:
    1615 ±
    Не заботишься ты о своих игроках однако :)
    Пара сэкономленных байт не сделают никакой погоды. А вот если игроку будет даваться полная информация о том, что он делает не так - игрок будет тебе благодарен (но это не точно).

    Вообще можно очень много чего переписать и сократить (например, узнавать ID строки в таблице после создания аккаунта гораздо эстетичнее через однопоточный запрос)
     то бишь
    PHP код:
    new query_string[66+MAX_PLAYER_NAME-4+30]; 
    format(query_stringsizeof(query_string), "INSERT INTO `accounts` (`player_name`, `password`) VALUES ('%s', '%s')"pInfo[playerid][pName], password); 
    mysql_query(mysql_connect_IDquery_string); 
    pInfo[playerid][pID] = cache_insert_id(mysql_connect_ID); 

    но это всё не так важно, ибо первостепенная задача этой статьи - рассказать о принципах создания рабочей системы аккаунтов, а не дать готовый код.
    Да и редактировать статью довольно проблематично, ибо из-за объёмов и обилия различных "тэгов" для оформления, форум очень неохотно желает сохранять любые изменения в статье (приходится по нескольку десятков раз повторять процедуру сохранения (да и любого другого варианта просмотра результата, а-ля "предварительный просмотр"), которая длится по несколько минут, что довольно неудобно с учётом того, что любые изменения статьи должны вписываться в общее оформление).

    И да, вариант с while - очередная попытка гнаться за миллисекундами. Я бы не сказал, что это плохо, но в формате статьи это будет лишним, ибо придётся объяснять как всё работает, что лишь забьёт головы читателей. Сам я использую while в данной ситуации, но в статье об этом не вижу смысла упоминать, ибо профита на деле мало
    Последний раз редактировалось DeimoS; 18.03.2017 в 13:58.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    12.04.2017
    Сообщений
    7
    Репутация:
    0 ±
    Здравствуйте, А почему нужно еще при авторизации проверять на запрещенные символы?:
    PHP код:
            for(new strlen(inputtext)-1!= -1i--) 
            { 
                switch(
    inputtext[i]) 
                { 
                    case 
    '0'..'9''а'..'я''a'..'z''А'..'Я''A'..'Z': continue; 
                    default: return 
    ShowPlayerDialog(playeriddRegisterDIALOG_STYLE_INPUT"Регистрация нового пользователя""{FF0000}Ошибка: {FFFFFF}Пароль содержит запрещённые символы!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, аА-яЯ, 0-9).""Регистрация""Выход"); 
                } 
            } 
    Код HTML:
    Так как это всего лишь урок и тут мы делаем сохранение всего 3-х столбцов, сохранять, кроме имени и пароля, больше нечего. Но вообще, как я считаю, сохранять имя и пароль при выходе бессмысленно, ибо что первое, что второе не может быть никак изменено игроком без нашего ведома (только мы можем позволить игроку сменить ник, написав для этого функцию). Поэтому и сохранять эти данные следует прямо во время изменения, а не при каждом выходе. При выходе можно сохранять такую вещь, как координаты или здоровье. Ну, на крайний случай, ещё деньги, если Вам не по силам написать античит, при этом сделав сохранение денег при каждом их изменении так, чтоб сервер при этом не закидал MySQL запросами. Практически всё остальноё можно и нужно сохранять прямиком при внесении изменений в информацию (уровень/ID дома, которым игрок владеет/ID фракции и прочая информация, которая изменяется не так часто и изменение которой можно 100% отследить). Но это лишь моё мнение и Вы можете к нему не прислушиваться. От того, что Вы будете сохранять всё при выходе, хуже от этого не станет.
    А если я не буду сохранять, как сохранение должно будет выглядить?
    PHP код:
    mysql_format(MySQL_connect_IDquerysizeof(query), "UPDATE `accounts` SET WHERE `id` = '%d'"Player[playerid][pID]); 

  3. #263
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,091
    Репутация:
    728 ±
    Цитата Сообщение от Global Посмотреть сообщение
    Здравствуйте, А почему нужно еще при авторизации проверять на запрещенные символы?:
    PHP код:
            for(new strlen(inputtext)-1!= -1i--) 
            { 
                switch(
    inputtext[i]) 
                { 
                    case 
    '0'..'9''а'..'я''a'..'z''А'..'Я''A'..'Z': continue; 
                    default: return 
    ShowPlayerDialog(playeriddRegisterDIALOG_STYLE_INPUT"Регистрация нового пользователя""{FF0000}Ошибка: {FFFFFF}Пароль содержит запрещённые символы!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, аА-яЯ, 0-9).""Регистрация""Выход"); 
                } 
            } 
    Чтобы пароль было легче подобрать хакерам.

    Конечно, этого делать не нужно, не знаю где ты это вычитал.

  4. #264
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,297
    Репутация:
    1615 ±
    Цитата Сообщение от Global Посмотреть сообщение
    Здравствуйте, А почему нужно еще при авторизации проверять на запрещенные символы?:
    PHP код:
            for(new strlen(inputtext)-1!= -1i--) 
            { 
                switch(
    inputtext[i]) 
                { 
                    case 
    '0'..'9''а'..'я''a'..'z''А'..'Я''A'..'Z': continue; 
                    default: return 
    ShowPlayerDialog(playeriddRegisterDIALOG_STYLE_INPUT"Регистрация нового пользователя""{FF0000}Ошибка: {FFFFFF}Пароль содержит запрещённые символы!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, аА-яЯ, 0-9).""Регистрация""Выход"); 
                } 
            } 
    Изначально это был своеобразный аналог защиты от инъекции и различных крашей (для любителей выводить пароль игрока в чат, например). Но так же это позволит игроку понять, что он именно совершил опечатку, указав не тот символ, а не ввёл пароль неправильно

    Цитата Сообщение от Global Посмотреть сообщение
    А если я не буду сохранять, как сохранение должно будет выглядить?
    PHP код:
    mysql_format(MySQL_connect_IDquerysizeof(query), "UPDATE `accounts` SET WHERE `id` = '%d'"Player[playerid][pID]); 
    Там должны появится другие данные (деньги/уровень и т.п.), которые тебе нужно сохранить. Пока этих данных не появится, сохранять ничего и не нужно.
    Лучше вообще сохранять данные непосредственно при их изменении, но там есть свои нюансы, поэтому либо лучше изучи теорию, либо используй подход, предоставленный в теме и набирайся опыта

    Цитата Сообщение от ziggi Посмотреть сообщение
    Чтобы пароль было легче подобрать хакерам.
    Как же это им поможет? :) Информация о запрещённых символах есть ещё при регистрации, а какие-то совсем левые символы, типа "%", "¨", "ž", "¬" и т.п., и так никто не использует особо. Так что не вижу какой-то конкретной помощи кому-либо, кроме игроков. С таким же успехом и сообщение "Неправильный пароль" можно считать помощью хакерам
    Последний раз редактировалось DeimoS; 12.04.2017 в 10:27.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #265
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,091
    Репутация:
    728 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Как же это им поможет? :) Информация о запрещённых символах есть ещё при регистрации, а какие-то совсем левые символы, типа "%", "¨", "ž", "¬" и т.п., и так никто не использует особо. Так что не вижу какой-то конкретной помощи кому-либо, кроме игроков. С таким же успехом и сообщение "Неправильный пароль" можно считать помощью хакерам
    Ограничивать максимальную длину и количество используемых символов в пароле - насильно заставить игрока использовать более простые пароли. Многие используют символы вида: пробел, !"№:;%:?*()_+-=`~'/\[]<>{} - это обычные символы, которые есть на каждой клавиатуре. Многие сайты и сервисы наоборот, заставляют использовать хотя бы один из этих символов.

    В общем, ограничивать игрока в сложности используемого пароля - полный бред.

    Статья на эту тему, плюс обсуждение этой ерунды в комментариях: https://habrahabr.ru/post/171383/

  6. #266
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,297
    Репутация:
    1615 ±
    А, ну если говорить про регистрацию в целом, а не конкретно про авторизацию, то да, действительно от ограничения ничего хорошего нет. Сам я так же не пользуюсь данным ограничением в своём моде, но есть люди, которые считают это ограничение нужным и именно для того, чтоб избавиться от вопроса: "А как сделать ограничение" - я и добавил сей код в статью. Благо вся проверка довольно компактна и удалить/изменить её не составит труда
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. #267
    Аватар для phpadmin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.05.2017
    Сообщений
    103
    Репутация:
    1 ±
    Уважаемые читатели, я нашел баг, либо я криво что-то написал, баг заключается в в том, что если первый раз после включения сервера, по сути в коннекте регистрация, или авторизация прописана по вашему уроку, вообще нельзя писать в чат во время авторизации или использовать команды, но после авторизации или регистрации если выйти из сервера, и зайти через другой аккаунт - то работает и чат и команды во время атворизации или регистрации, я предполагаю что это связано с IDом игрока который заменяет другой игрок, просьба помочь мне решить проблему, так как я новичок и мало соображаю

    Также помогите пожалуйста если не трудно, как сохранять в реальном времени, у меня сохраняется лишь при дсконекте, а надо что бы сохранялось прямо в игре, например теже киллы, деньги, и т.д, куда можно прописать и что нужно прописать

  8. #268
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,297
    Репутация:
    1615 ±
    Цитата Сообщение от phpadmin Посмотреть сообщение
    Уважаемые читатели, я нашел баг, либо я криво что-то написал, баг заключается в в том, что если первый раз после включения сервера, по сути в коннекте регистрация, или авторизация прописана по вашему уроку, вообще нельзя писать в чат во время авторизации или использовать команды, но после авторизации или регистрации если выйти из сервера, и зайти через другой аккаунт - то работает и чат и команды во время атворизации или регистрации, я предполагаю что это связано с IDом игрока который заменяет другой игрок, просьба помочь мне решить проблему, так как я новичок и мало соображаю

    Также помогите пожалуйста если не трудно, как сохранять в реальном времени, у меня сохраняется лишь при дсконекте, а надо что бы сохранялось прямо в игре, например теже киллы, деньги, и т.д, куда можно прописать и что нужно прописать
    В OnPlayerDisconnect
    PHP код:
    player_is_authorized{playerid} = 0
    или
    PHP код:
    SetPlayerAuthorized(playeridPLAYER_OFFLINE); 
    В зависимости от того, какой вариант выбрал.

    Для сохранения данных после их изменения нужно, соответственно, запросы отправлять на изменение данных в таблице.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    19.05.2017
    Сообщений
    103
    Репутация:
    1 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В OnPlayerDisconnect
    PHP код:
    player_is_authorized{playerid} = 0
    или
    PHP код:
    SetPlayerAuthorized(playeridPLAYER_OFFLINE); 
    В зависимости от того, какой вариант выбрал.

    Для сохранения данных после их изменения нужно, соответственно, запросы отправлять на изменение данных в таблице.
    Деймос отдуши.. ты помог я ломал голову. Это с авторизацией. Огромное спасибо.

    А вот на счет изменения сохранений, чуточку по подробнее можно? Как это делается, в каком паблике и т.д Как вообще это надо сделать???
    Буду очень благодарен если поможешь

  10. #270
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,297
    Репутация:
    1615 ±
    Нужно изучать синтаксис SQL, чтоб правильно запросы составлять.
    Какого-то конкретного коллбэка нет. Нужно делать запрос прямо при изменении информации
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 27 из 30 ПерваяПервая ... 172526272829 ... ПоследняяПоследняя

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

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

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

Ваши права

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