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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±

    Система сим-карт

    Не могу определиться как лучше реализовать систему.

    Хранить заранее сгенерированные номера в таблице и затем при покупке отмечать как занятые?
    Предполагается, что сим-карт можно покупать несколько, будут храниться как предметы в инвентаре. Может быть стоит рассмотреть вариант по поиску свободных сим-карт напрямую запросом в таблицу с предметами? Правда особо не нравится данный вариант, хотелось бы услышать мнения

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

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    Можно попробовать что-то подобное:

    1. SELECT CONV(SUBSTR(UUID(), 1, 8), 16, 10) as phone_number

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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Цитата Сообщение от tnc Посмотреть сообщение
    Можно попробовать что-то подобное:

    1. SELECT CONV(SUBSTR(UUID(), 1, 8), 16, 10) as phone_number
    Не совсем понимаю, как она поможет?

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

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    Цитата Сообщение от execution Посмотреть сообщение
    Не совсем понимаю, как она поможет?
    ну генерация симкарт

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Да, лучше заранее сгенерировать таблицу с номерами и уже из неё брать номер. Лучше всего написать скрипт, который при старте сервера будет проверять количество свободных номеров и, в случае чего, генерировать новые.

    Только аккуратнее с вытаскиванием рандомной строки из таблицы. Подробно изучи эту тему. Ибо можно намудрить такого, что MySQL, например, будет пытаться создавать временную таблицу, копировать в неё содержимое таблицы с номерами и только потом доставать оттуда строку.
    Ну и с индексами не прогадай.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да, лучше заранее сгенерировать таблицу с номерами и уже из неё брать номер. Лучше всего написать скрипт, который при старте сервера будет проверять количество свободных номеров и, в случае чего, генерировать новые.

    Только аккуратнее с вытаскиванием рандомной строки из таблицы. Подробно изучи эту тему. Ибо можно намудрить такого, что MySQL, например, будет пытаться создавать временную таблицу, копировать в неё содержимое таблицы с номерами и только потом доставать оттуда строку.
    Ну и с индексами не прогадай.
    Я себе как-то представлял так, чтобы сгенерировать один раз не радномые, а, например, xxxx-cellmax и по ним всегда ориентироваться, можно ли так сделать?

    Так-же ещё интересовал момент.
    Например, будет таблица simcards(хранятся все допустимые симки), затем при покупки симки, в этой таблице помечаю, что занято и добавляю новый предмет в инвентарь с номером карты.
    Теперь мне необходимо вставить симку в телефон. В доп. поле телефона мне указывать ID симки? Чтобы в случаи слёта симок - можно было без фанатизма удалить симку из телефона

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

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

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

    Цитата Сообщение от execution Посмотреть сообщение
    Так-же ещё интересовал момент.
    Например, будет таблица simcards(хранятся все допустимые симки), затем при покупки симки, в этой таблице помечаю, что занято и добавляю новый предмет в инвентарь с номером карты.
    Теперь мне необходимо вставить симку в телефон. В доп. поле телефона мне указывать ID симки? Чтобы в случаи слёта симок - можно было без фанатизма удалить симку из телефона
    Лучше в самой таблице "simcards" создать поле, в которое будешь записывать ID игрока, повесив на него индекс. Ибо если информация о занятости номера будет хранится в таблице с аккаунтами, то выискивать свободный номер будет проблемно.
    В самой таблице аккаунтов дублировать какую-то информацию нет смысла. Максимам, можно в таблице с инвентарём фиксировать ID столбца из таблицы "simcards" для предмета симки/телефона.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

 

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

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

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

Ваши права

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