[CS: Source] MapTime

Тема в разделе "Утверждённые плагины", создана пользователем WeSTMan, 23 июн 2014.

  1. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Предыстория: Друг просил написать плагин, чтобы администраторы могли узнать, сколько времени "играет" карта.

    Название: MapTime.
    Версия: 1.1.

    Как работает?
    - В чате !maptime, либо в консоли sm_maptime.
    Команда доступна администраторам с флагом b [GENERIC].

    Описание:
    Данный плагин показывает, сколько времени "играется" карта.

    Обновления:
    v 1.1 - Оптимизация.
    v 1.0 - Первый релиз.
     

    Вложения:

    • MapTime.rar
      Размер файла:
      3,2 КБ
      Просмотров:
      13
    • MapTime.jpg
      MapTime.jpg
      Размер файла:
      6,5 КБ
      Просмотров:
      193
    • MapTime v1.1.rar
      Размер файла:
      3,1 КБ
      Просмотров:
      36
    Последнее редактирование: 24 июн 2014
  2. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Это окончание, а мой плагин наоборот. Он показывает, сколько "играется" карта времени от её запуска.
     
  3. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Оффтоп
     
  4. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Оффтоп
     
  5. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Зачем ты спрашиваешь? Почитай исходник и там всё написано. Он независим от игроков, а если DM, то будет идти таймер, как обычно. И нигде он не врёт.

    Добавлено через 3 минуты
    И он независим от переменной mp_timelimit. И может быть больше её.
     
    Последнее редактирование: 23 июн 2014
  6. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.574
    Симпатии:
    1.989
    MapTime_v1.0.1

    Во! А то не знаешь, что говоришь)
    По коду:
    PrintToChat(client, "\04[MapTime] - впереди также ставится \x01 при использовании нескольких цветов (CS:GO).
    PHP:
    Seconds += 1;
    Minutes += 1;
    Hours += 1;
    Лучше:
    PHP:
    Seconds++;
    Minutes++;
    Hours++;
    А в таймере - TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE.
    PHP:
    Hours 0;
    Minutes 0;
    Seconds 0;
    KillTimer(TimeRepeat);
    Вручную обнуляешь таймер, а потом пытаешься его убить? Интересно...
    Итого:
    PHP:
    new HoursMinutesSeconds;

    public 
    Plugin:myinfo = {
        
    name "MapTime",
        
    author "WeSTMan",
        
    description "Time Map by WeSTMan",
        
    version "1.0.1",
        
    url ""
    };

    public 
    OnPluginStart() RegAdminCmd("sm_maptime"CMD_TimeMapADMFLAG_GENERIC);

    public 
    OnMapStart()
    {
        
    Hours 0;
        
    Minutes 0;
        
    Seconds 0;
        
    CreateTimer(1.0TimeMapOne_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
    }

    public 
    Action:CMD_TimeMap(clientargs)
    {    
        
    PrintToChat(client"\x01\04[MapTime] \x01Сыграно \x04%d \x01час(ов), \x04%d\x01 минут(ы) и \x04%d\x01 секунд(ы)."HoursMinutesSeconds);
        return 
    Plugin_Handled;
    }

    public 
    Action:TimeMapOne(Handle:timer)
    {
        
    Seconds++;
        if (
    Seconds == 60)
        {
            
    Seconds 0;
            
    Minutes++;
        }
        if (
    Minutes == 60)
        {
            
    Minutes 0;
            
    Hours++;
        }
        return 
    Plugin_Continue;
    }
     
    Последнее редактирование: 23 июн 2014
  7. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.724
    Симпатии:
    461
    Плагин кул.
    Впилил его в админ меню, в меню смены карты.
    Админам нравиться, не нужно спрашивать сколько играете и т.д.
     
  8. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.574
    Симпатии:
    1.989
    Нагружает сервер, даже во время смены карты. Несколько таких плагинов могут его затормозить, продлевая процесс перехода на новую карту.
    KillTimer есть конечно, но не знаю, насколько он эффективен при повторяющимся таймере. В таком обычно используют return Plugin_Stop;
     
  9. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Re: MapTime_v1.0.1


    Ты проверял свою чушь?
    Начнём с первого.
    1. Ты пишешь:
    PHP:
    PrintToChat(client"\x01\04[MapTime] \x01Сыграно \x04%d \x01час(ов), \x04%d\x01 минут(ы) и \x04%d\x01 секунд(ы)."HoursMinutesSeconds);
    Посмотри мою картинку, которую я прикрепил и не возникай по поводу цветов. И с двух цветов начить? Зачем?

    2. Как добавлять переменной ++ или += 1, как я решил, так и сделал и разницы нету.

    3. А в таймере - TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE. В таймере нету MAPCHANGE и может быть добавлю.

    3. Убери убийство таймера и обнуление в конце карты и проверь плагин, а потом пиши.

    Больше на тупые вопросы не буду отвечать. Моя реализация останется моей и .
     
  10. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.574
    Симпатии:
    1.989
    А теперь внимательнее:
    Верно, но по коду короче.
    Фактически это и есть автоубийство таймера.
    Обнуление переменных - обязательно, ибо независимо от таймера, они сохраняют свои старые значения. А вот убийство такого таймера - весьма спорно, плохой метод.
    Ставим оба плагина и получаем одинаковое время вплоть до секунды.
    Чушью обновляешь плагин? :-D
     
  11. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Я чушью не обновлял, читай выше.

    Добавлено через 9 минут
    И да, ты говорил:
    Оффтоп
     
    Последнее редактирование: 24 июн 2014
  12. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.574
    Симпатии:
    1.989
    Максимальная оптимизация и улучшение в плане нагрузки на сервер.
    Как насчёт создать плагин, вообще не нагружающий сервер?
    Оффтоп

    И, народ, ставьте Спасибо, если скачиваете плагин WeSTMan'а! :rtfm:
     
  13. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Покажи, я посмотрю.
     
  14. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.574
    Симпатии:
    1.989
    WeSTMan, твоя новая версия плагина MapTime v1.1.rar
    PHP:
    #define PLUGIN_VERSION "1.1"
    new HoursMinutesSeconds;

    public 
    Plugin:myinfo = {
        
    name "MapTime",
        
    author "WeSTMan",
        
    description "Time Map by WeSTMan",
        
    version PLUGIN_VERSION,
        
    url ""
    };

    public 
    OnPluginStart()
    {
        
    RegAdminCmd("sm_maptime"CMD_TimeMapADMFLAG_GENERIC);
    }

    public 
    OnMapStart()
    {
        
    Hours 0;
        
    Minutes 0;
        
    Seconds 0;
        
    CreateTimer(1.0TimeMapOne_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
    }

    public 
    Action:CMD_TimeMap(clientargs)
    {    
        
    PrintToChat(client"\x04[MapTime] \x01Сыграно \x04%d \x01час(ов), \x04%d\x01 минут(ы) и \x04%d\x01 секунд(ы)."HoursMinutesSeconds);
        return 
    Plugin_Handled;
    }

    public 
    Action:TimeMapOne(Handle:timer)
    {
        
    Seconds += 1;
        if (
    Seconds == 60)
        {
            
    Seconds 0;
            
    Minutes += 1;
        }
        if (
    Minutes == 60)
        {
            
    Minutes 0;
            
    Hours += 1;
        }
        return 
    Plugin_Continue;
    }
    - почти копия
    поста с моей "чушью".
    Просто относись доброжелательней, я же тебя не назло всё спрашиваю и поправляю.
     
  15. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Копии нету, добавил MAPCHANGE.
     
  16. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.574
    Симпатии:
    1.989
    Safe Time Map v1.0.0

    Оффтоп
    Ниже написал плагин, гораздо точнее по отображаемому времени и практически не нагружающий сервер, в отличии от его аналога.

    Safe Time Map

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

    Команды:
    В чате - !maptime или /maptime, либо в консоли клиента - sm_maptime.
    Доступно администраторам с флагом b [GENERIC].
    [​IMG]
     

    Вложения:

    • SafeTimeMap.sp
      Размер файла:
      709 байт
      Просмотров:
      13
    Последнее редактирование: 16 июл 2014
    Danyas нравится это.
  17. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.724
    Симпатии:
    461
    Re: Safe Time Map v1.0.0

    Вот это от души, реально спасибо:beer:
     
  18. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Разве не один в один:
    https://forums.alliedmods.net/showthread.php?p=1618015
     
    Последнее редактирование: 24 июн 2014
  19. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.574
    Симпатии:
    1.989
    Далеко не в один, но принцип тот же. Я как бы оптимизировал такой плагин, хотя вижу его впервые.
    PHP:
    RoundToZero
    Там умнее поступили... Надо было также. :)
    И этот один в один. Механизм тот же, просто подумал его впихнуть сюда.
    А этот вообще его прародитель, 2010 года код. На год раньше твоего найденного [CSS] Map-Time. Думаешь, я скорее увидел его в нём, а не в Console Welcome Message? А может, мы все оттуда списали?
     
  20. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Я не списывал, а реализовывал сам.