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

    Статус
    Оффлайн
    Регистрация
    02.04.2014
    Сообщений
    75
    Репутация:
    6 ±

    Создание/Сохранение аккаунта

    Написал систему регистрации по такому принципу:
    - при конекте, если не зареган, игроку показывает регистрацию.
    - после ввода пароля идет перевод в сток создания игрока, где записывается в бд его ник и пароль, что бы если он выйдет, не регался опять. Пол, скин он может получить после следующего захода, когда будет логиниться. Но если он, все же, продолжает регистрироваться, то
    - даем выбрать пол и скин(рандомный пока что), и эти данные тут же записываются в бд, по причине, описанной выше.
    - дальше показываем ему авторизацию
    - спавним

    Вопрос: где в этой системе будет лучше вставлять дополнительные данные типа стартовых денег, уровня, лицензии и прочее?
    Экспериментировал с разными вариантами, но как-то коряво все получается, может кто подскажет хороший вариант...

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

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Во время этого:
    Цитата Сообщение от kushichka Посмотреть сообщение
    - после ввода пароля идет перевод в сток создания игрока, где записывается в бд его ник и пароль, что бы если он выйдет, не регался опять. Пол, скин он может получить после следующего захода, когда будет логиниться. Но если он, все же, продолжает регистрироваться, то

    А вообще в БД имеется такая замечательная функция, как установка значения по умолчанию. Эта опция так и называется - "По умолчанию" и значение её можно указать при редактировании нужного столбца. Там есть три параметра: "Как определено:", "NULL" и "CURRENT_TIMESTAMP".
    "Как определено:" - собственно, из названия понятно, что значение столбца будет такое, каким его указать в данном параметре.
    "NULL" - Пустое поле
    "CURRENT_TIMESTAMP" - вернёт время, указанное на сервере, на котором установлен MySQL (подойдёт для записи даты регистрации).

    В твоём случае нужен первый параметр "Как определено:". Указываешь для каждого из полей, значение которых тебе известно уже сейчас (которые не зависят от выбора игрока: стартовые деньги, уровень и т.п.), нужные значения и при регистрации в БД передаёшь только те значения, которые тебе неизвестны (ник, пароль, скин и т.п.), а известные значения не трогаешь и БД сама их создаст. И теперь, когда создаёшь аккаунт, сделай присвоение этих данных к нужным переменным, дабы не только БД знала эти значения, но и сервер.
    Так получится, что ты не передаёшь ненужные данные в запросе и, при этом, все значения у тебя сохраняются, сохраняясь, при этом асинхронно (на сервере отдельно и в БД отдельно).
    Как-то так
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    02.04.2014
    Сообщений
    75
    Репутация:
    6 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Во время этого:



    А вообще в БД имеется такая замечательная функция, как установка значения по умолчанию. Эта опция так и называется - "По умолчанию" и значение её можно указать при редактировании нужного столбца. Там есть три параметра: "Как определено:", "NULL" и "CURRENT_TIMESTAMP".
    "Как определено:" - собственно, из названия понятно, что значение столбца будет такое, каким его указать в данном параметре.
    "NULL" - Пустое поле
    "CURRENT_TIMESTAMP" - вернёт время, указанное на сервере, на котором установлен MySQL (подойдёт для записи даты регистрации).

    В твоём случае нужен первый параметр "Как определено:". Указываешь для каждого из полей, значение которых тебе известно уже сейчас (которые не зависят от выбора игрока: стартовые деньги, уровень и т.п.), нужные значения и при регистрации в БД передаёшь только те значения, которые тебе неизвестны (ник, пароль, скин и т.п.), а известные значения не трогаешь и БД сама их создаст. И теперь, когда создаёшь аккаунт, сделай присвоение этих данных к нужным переменным, дабы не только БД знала эти значения, но и сервер.
    Так получится, что ты не передаёшь ненужные данные в запросе и, при этом, все значения у тебя сохраняются, сохраняясь, при этом асинхронно (на сервере отдельно и в БД отдельно).
    Как-то так
    Это я понимаю, дело в том что я не знаю где именно задать эти значения в этой системе, куда их впихнуть...

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от kushichka Посмотреть сообщение
    Это я понимаю, дело в том что я не знаю где именно задать эти значения в этой системе, куда их впихнуть...
    Ну так я же сказал, значение переменным присваивай при создании аккаунта и больше к БД за данными не обращайся
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  5. Пользователь сказал cпасибо:
    kushichka (06.03.2016)
  6. #5
    Аватар для kushichka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2014
    Сообщений
    75
    Репутация:
    6 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну так я же сказал, значение переменным присваивай при создании аккаунта и больше к БД за данными не обращайся
    То есть там где я записываю логин и пароль в бд, а что бы записать все данные, нужно что бы игрок полностью прошел регистрацию, то есть если он ливнет во время регистрации, то после захода ему придется опять регистрироваться.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от kushichka Посмотреть сообщение
    То есть там где я записываю логин и пароль в бд, а что бы записать все данные, нужно что бы игрок полностью прошел регистрацию, то есть если он ливнет во время регистрации, то после захода ему придется опять регистрироваться.
    Ну что тебе нужно для того, чтоб создать аккаунт игрока? Узнать его логин и пароль. Когда он их предоставляет, создавай аккаунт и присваивай переменным с уровнем/деньгами и т.п. значения по умолчанию (в БД они установятся столбцам автоматически, так что и сохранять ничего не нужно).
    Теперь отправляем игрока на выбор пола и скина. Если выбрал - обновляем нужные столбцы в БД и пропускаем на сервер. Если вышел - при следующем заходе, когда игрок ввёл данные от аккаунта, проверяем значение переменной с скином или полом (какую-то из них в БД сделай по умолчанию равной, например, "-1" и проверяй на это значение). Ну и далее, если в прошлый раз он регистрацию не закончил - показываем нужные диалоги. Всё.

    То есть, схема такова:
    Вход -> Ввод пароля -> Создание аккаунта и присвоение значения переменным -> Выбор скина -> Игра
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  8. 2 пользователя(ей) сказали cпасибо:
    Daniel_Cortez (06.03.2016) kushichka (06.03.2016)
  9. #7
    Аватар для kushichka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2014
    Сообщений
    75
    Репутация:
    6 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну что тебе нужно для того, чтоб создать аккаунт игрока? Узнать его логин и пароль. Когда он их предоставляет, создавай аккаунт и присваивай переменным с уровнем/деньгами и т.п. значения по умолчанию (в БД они установятся столбцам автоматически, так что и сохранять ничего не нужно).
    Теперь отправляем игрока на выбор пола и скина. Если выбрал - обновляем нужные столбцы в БД и пропускаем на сервер. Если вышел - при следующем заходе, когда игрок ввёл данные от аккаунта, проверяем значение переменной с скином или полом (какую-то из них в БД сделай по умолчанию равной, например, "-1" и проверяй на это значение). Ну и далее, если в прошлый раз он регистрацию не закончил - показываем нужные диалоги. Всё.

    То есть, схема такова:
    Вход -> Ввод пароля -> Создание аккаунта и присвоение значения переменным -> Выбор скина -> Игра
    Понял, буду пробовать.

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Во время этого:



    А вообще в БД имеется такая замечательная функция, как установка значения по умолчанию. Эта опция так и называется - "По умолчанию" и значение её можно указать при редактировании нужного столбца. Там есть три параметра: "Как определено:", "NULL" и "CURRENT_TIMESTAMP".
    "Как определено:" - собственно, из названия понятно, что значение столбца будет такое, каким его указать в данном параметре.
    "NULL" - Пустое поле
    "CURRENT_TIMESTAMP" - вернёт время, указанное на сервере, на котором установлен MySQL (подойдёт для записи даты регистрации).

    В твоём случае нужен первый параметр "Как определено:". Указываешь для каждого из полей, значение которых тебе известно уже сейчас (которые не зависят от выбора игрока: стартовые деньги, уровень и т.п.), нужные значения и при регистрации в БД передаёшь только те значения, которые тебе неизвестны (ник, пароль, скин и т.п.), а известные значения не трогаешь и БД сама их создаст. И теперь, когда создаёшь аккаунт, сделай присвоение этих данных к нужным переменным, дабы не только БД знала эти значения, но и сервер.
    Так получится, что ты не передаёшь ненужные данные в запросе и, при этом, все значения у тебя сохраняются, сохраняясь, при этом асинхронно (на сервере отдельно и в БД отдельно).
    Как-то так
    ммм, большое спасибо)). Я только сейчас допетрил, что, если установить значения по дефолту, то после регистрации можно просто загрузить аккаунт (как у меня сейчас и есть), и не нужно устанавливать при регистрации всякие данные и ещё сохранять в БД. :)

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

    Статус
    Оффлайн
    Регистрация
    02.04.2014
    Сообщений
    75
    Репутация:
    6 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Во время этого:



    А вообще в БД имеется такая замечательная функция, как установка значения по умолчанию. Эта опция так и называется - "По умолчанию" и значение её можно указать при редактировании нужного столбца. Там есть три параметра: "Как определено:", "NULL" и "CURRENT_TIMESTAMP".
    "Как определено:" - собственно, из названия понятно, что значение столбца будет такое, каким его указать в данном параметре.
    "NULL" - Пустое поле
    "CURRENT_TIMESTAMP" - вернёт время, указанное на сервере, на котором установлен MySQL (подойдёт для записи даты регистрации).

    В твоём случае нужен первый параметр "Как определено:". Указываешь для каждого из полей, значение которых тебе известно уже сейчас (которые не зависят от выбора игрока: стартовые деньги, уровень и т.п.), нужные значения и при регистрации в БД передаёшь только те значения, которые тебе неизвестны (ник, пароль, скин и т.п.), а известные значения не трогаешь и БД сама их создаст. И теперь, когда создаёшь аккаунт, сделай присвоение этих данных к нужным переменным, дабы не только БД знала эти значения, но и сервер.
    Так получится, что ты не передаёшь ненужные данные в запросе и, при этом, все значения у тебя сохраняются, сохраняясь, при этом асинхронно (на сервере отдельно и в БД отдельно).
    Как-то так
    Еще такой вопрос: если я выставляю в графе "по умолчанию" определенное значение, при создании таблицы, можно ли его как-то изменить через мод, запрос? Допустим, я захочу изменить начальный уровень, или стартовые деньги, мне нужно будет в самой таблице менять значение по умолчанию и все?

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Можно и запросом.
    Для числа:
    PHP код:
    ALTER TABLE `имя_таблицыALTER `имя_столбцаSET DEFAULT новое_значение 
    Или же, в случае со строкой, так:
    PHP код:
    ALTER TABLE `имя_таблицыALTER `имя_столбцаSET DEFAULT 'новое_значение' 
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  13. Пользователь сказал cпасибо:
    kushichka (07.03.2016)
 

 

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

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

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

Ваши права

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