[CS: Source] GeoLocation

Тема в разделе "Новые плагины", создана пользователем Scarface_slv, 21 июн 2015.

  1. Scarface_slv

    Scarface_slv

    Сообщения:
    228
    Симпатии:
    47
    Geo Location

    Описание:

    Плагин получает данные о местоположение игроков и отображает при подключение или в меню.
    ---------------------------------------------------------------------------------------
    Полученная из сайта информация сохраняется в локальную базу по айпи игрока в виде. 255.255.255.x. Преобразую айпи в числовую форму.
    Так как есть ограничения по получению местоположений на сайте...
    Как только закончится лимит плагин сутки не сможет получить данные игроков из сайта и будет получать только те которые есть в базе


    Настройки:

    sm_geoconnect (0/1, по умолчанию: 0)
    Отображать местоположение игрока при входе на сервер. Не рекомендуется из за лимита


    Команды:

    Вызов меню - !geo или sm_geo

    Требования:

    Socket Extension v3.0 или выше.
     

    Вложения:

    Последнее редактирование: 30 июн 2015
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.978
    Зачем столбцам тип TEXT ? Это очень много для таких данных.

    PHP:
    new client GetClientOfUserId(userid);
        if(
    client 0) return;
        new 
    target GetClientOfUserId(g_iTarget[client]);
        if(
    target 0) return;
    Уже не верно. Если Игрок выйдет он станет 0, а проверка < 0. Достаточно везде проверять != 0 и быстрее и вернее.

    PHP:
    if (result == INVALID_HANDLE) return;
    Лучше делай LogError в таких случаях, будет сразу видно где проблема если что.

    PHP:
    INSERT INTO
    А если ip уже в бд есть, на нем стоит PRIMARY KEY, ошибки не будет случайно? (я знаю что записывается 3 цыфры но все же..)

    PHP:
    public Menu_SelectInfo(Handle:menuMenuAction:actionclientoption)
    {
        if (
    action == MenuAction_End)
        {
            
    CloseHandle(menu);
            return;
        }
        if (
    action == MenuAction_Cancel// else if и убрать return выше, еще лучше switch
        
    {
            if (
    option == MenuCancel_ExitBackcommand(client0);
        }
        if (
    action != MenuAction_Select) return; // это тут еще зачем? дальше кода то нет.
    }
    Есть еще пару моментов но да ладно.
     
  3. gibs

    gibs Фитиль народного волненья

    Сообщения:
    536
    Симпатии:
    133
    Для чего вообще этот пост? Просто такую писанину видно не так уж и редко. А автору на неё правда похер, так как ему склепать надо так, чтобы лишь бы работало. Тут должны работать модераторы, которые просто обязаны поставить данному плагину какой-нибудь статус вроде "Крайне не рекомендуемый".
     
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.978
    gibs, может кто-то другой научится на чужих ошибках.
    Критических ошибок нет но есть такие что могут вызвать ошибки в логах. Поэтому если они не будут исправлены плагин просто отправится в отклонённые.
     
  5. Scarface_slv

    Scarface_slv

    Сообщения:
    228
    Симпатии:
    47
    Тут if(client < 0) я реально тупанул. Задумался наверно. Спасибо
     
  6. gibs

    gibs Фитиль народного волненья

    Сообщения:
    536
    Симпатии:
    133
    Есть такое понятие как "оптимизация".
    Например, если в базу наберётся от 3к записей, то sqlite база при таком проектировании, как продемонстрировал ТС, уже будет подвисать. Да и вообще, народ, ну так же просто загуглить как хранить айпи. В любом первом попавшемся мануале выплывет старинная знаменитая функция INET_AТON(), которая хоть и не входит в стандартный набор sqlite, но написать её на павн дело нескольких минут.
    Но в плане геолокации всегда локальное решение лучше, чем запросы на удалённый ресурс. Для особо непонятливых "откуда берутся геобазы" простой ответ - сервера whois можно опросить примерно за неделю по всем диапазонам.
    Но обычно принято продавать не только базы, а и решения с высокой скоростью обработки.
    Но проблема данного сообщества в том, что в основном его населяют неумелые студенты и школьники.

    А вот скопировать идею с АМ с метками approved, unapproved и тд стоит. Если модераторы есть - значит модерируйте.
     
  7. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.978
    Как бы это уже сделано.

    Хотя кажется ты не видел того что там подтверждено. Критических ошибок нет но оптимизацией и не пахнет.
     
  8. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.188
    Симпатии:
    413
    Да по одному этому комментарию автора можно понять на сколько нужен плагин. Зачем же ты тогда делал ее.
     
  9. Scarface_slv

    Scarface_slv

    Сообщения:
    228
    Симпатии:
    47
    White Wolf, у меня нет сервера)