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

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

    Visit Players | Подсчет посещений игроков

    Довольно легкий FS, возможно пригодится кому.




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

    - Изменение цвета цифр когда кол-во игроков доходит до определенного числа. (смотреть ниже)
    - Оповещение отправляется через 2 секунды после коннекта.



    Если же вы захотели изменить цвета под себя, зайдите в FS, и найдите там вот такие строки:


    PHP код:
    #define Players_0_9                     "{EE204D}" // Цвет от 0 до 9 игроков
    #define Players_10_49                   "{00E649}" // Цвет от 10 до 49 игроков
    #define Players_50_99                   "{0FFF17}" // Цвет от 50 до 99 игроков
    #define Players_100_499                 "{FEFE22}" // Цвет от 100 до 499 игроков

    #define Players_500_Other9000           "{FF2400}" 
    // Цвет от 500 до Over9000 игроков 

    Автор данного FS Я - Timon.

    Если будут вопросы по установке или понадобятся мои услуги вот контакты:

    [В]контакте:
    Клац »
    Skype: dima_prihodko (Ава аналогичная вконтакте)



    Yandex Disk Download: Клац »

  2. Пользователь сказал cпасибо:
    Nexius_Tailer (22.03.2016)
  3. #2
    Аватар для Salik_Davince
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.02.2014
    Сообщений
    93
    Репутация:
    1 ±
    зачем такой большой размер [stringo]?
    PHP код:
    new stringo[144];
    format(stringosizeof(stringo), "~ С момента запуска, сервер посетило %s%d{FF7F00} игроков ~"colormesTOTALPlayers);
    SendClientMessage(playerid0xFF7F00FFstringo); 
    когда можно по проще, и редактировать в любой нужный момент не займет труда
    PHP код:
    static const
            
    visit_msg[] = "~ С момента запуска, сервер посетило %s%d{FF7F00} игроков ~";
    new
        
    visit_stringsizeof(visit_msg) - (2*2) + ];

        
    format(visit_stringsizeof(visit_string), visit_msgcolormesTOTALPlayers);
        
    SendClientMessage(playerid0xFF7F00FFvisit_string); 
    Тут как я понял идет подсчет посетивших игроков, переподключение не будет идти + в переменную 'TOTALPlayers', так в чем разница от нажатия игроком TAB'a и просмотра сколько игроков играет на данный момент.
    PHP код:
    if(ImHere[playerid] == 0)
        {
            
    ImHere[playerid] = 1;
            
    TOTALPlayers++;
        } 
    Вам стоило бы почитать тему Перехват Функций
    и Подсчёт размера форматируемой строки

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

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    23
    Репутация:
    0 ±
    Он будет подсчитывать сколько игроков зашло с момента запуска сервера, а не сколько человек на данный момент онлайн.

  5. #4
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Не знаю как себя этот код поведет, но РАБОТАТЬ ДОЛЖЕН!!1!

    PHP код:
    new server_players;

    public 
    OnPlayerConnect(playerid)
    {
        ++
    server_players;
        static const 
    fmt_str[] = !"С момента запуска сервера, вы %i-й зашедший игрок!";
        new 
    str[sizeof(fmt_str)-2+6]; // а вдруг у вас там зайдет 999999 игроков?
        
    new cout[6+1];
        
    str = !"С момента запуска сервера, вы ";
        
    valstr(coutserver_playerstrue);
        
    strcat(strcout);
        
    strcat(str, !"-й зашедший игрок!");
        
    SendClientMessage(playerid0xFF7F00FFstr);
        return 
    1;

    А как способ "защиты" от перезахода одного и того же игрока: сохраняем имя в какой-нибудь таблице в бд. Во время запуска мода эту таблицу чистить. А дальше при заходе игрока искать это имя в бд, если есть, то ничего не делаем, а если имени нет, то увеличиваем в переменной количество вошедших.
    Последний раз редактировалось Desulaid; 22.03.2016 в 22:33.

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Еще про дисконект забыл

    - - - Добавлено - - -

    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    new str[sizeof(fmt_str)-2*2+6];
    А зачем 2*2? Там же только 1 раз %i.
    Последний раз редактировалось m1n1vv; 22.03.2016 в 20:44.

  7. #6
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Еще про дисконект забыл

    - - - Добавлено - - -



    А зачем 2*2? Там же только 1 раз %i.
    Угу, у меня это осталось от первого варианта. Чет внимательностью я никогда не был наделен :(

  8. #7
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Вопрос на миллион: зачем выкладывать то, чего тьма тьмущая в сети?

    А как способ "защиты" от перезахода одного и того же игрока: сохраняем имя в какой-нибудь таблице в бд. Во время запуска мода эту таблицу чистить. А дальше при заходе игрока искать это имя в бд, если есть, то ничего не делаем, а если имени нет, то увеличиваем в переменной количество вошедших.
    Да пожалуйста.
    PHP код:
    // by Seregamil

    #include <a_samp>

    #define VISITORS_DB "visitors.db"

    new DBvisitorsDB ;
    new 
    DBResultvisitorsResult ;

    new 
    countVisitors ;

    main(){}

    public 
    OnGameModeInit() {
        if( 
    fexistVISITORS_DB ) ) fremoveVISITORS_DB ); // remove database file
        
        
    visitorsDB db_openVISITORS_DB ); // create database file
        
    db_queryvisitorsDB"CREATE TABLE IF NOT EXISTS VISITORS(USERNAME varchar)"); // create table
        
        
    return true;
    }

    public 
    OnPlayerConnect(playerid) { 
        new 
    nameMAX_PLAYER_NAME ] ;
        
    GetPlayerNameplayeridnameMAX_PLAYER_NAME ); // get user name
        
        
    new str43 MAX_PLAYER_NAME ] ;
        
    formatstrsizeof str"SELECT * FROM VISITORS WHERE USERNAME = '%s'"name ); // create query for base
        
        
    visitorsResult db_queryvisitorsDBstr );
        if( !
    db_num_rowsvisitorsResult ) ) { // false
             
    countVisitors ++ ;
             
             
    formatstrsizeof str"INSERT INTO VISITORS(USERNAME)VALUES('%s')" name );
             
    db_queryvisitorsDBstr );
             
             
    formatstrsizeof str"Вы %i мудак, зашедший на сервак."countVisitors );
             
    SendClientMessageplayerid, -1str );
        } 
        
    db_free_resultvisitorsResult );
        return 
    true;


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

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±
    PHP код:
    formatstrsizeof str"Вы %i мудак, зашедший на сервак."countVisitors ); 
    Как же правдиво)

 

 

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

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

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

Ваши права

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