SourcePawn CreateDialog CS:S

Тема в разделе "Программирование / Скриптинг", создана пользователем antismert, 21 фев 2015.

  1. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    Добрый день ребят! Подскажите как перебить одно сообщение "CreateDialog" другим?

    Имеею такой скрипт:

    decl String:SNMess[256];
    Format(SNMess, sizeof(SNMess), "%s",SLeftTopMess[client]);
    new Handle:hKv = CreateKeyValues("Stuff", "title", SNMess);
    KvSetColor(hKv, "color", 180, 180, 180, 255);
    KvSetNum(hKv, "level", 1);
    KvSetNum(hKv, "time", 2);

    CreateDialog(client, hKv, DialogType_Msg);

    CloseHandle(hKv);

    Если он начинает учащаться появляется большой тайм аут его выполнения. около 10 секунд. Просто говоря если вылазиет второе сообщение, а время первого еще не истекло, нужно его перебить новым.
     
  2. R1KO

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

    Сообщения:
    6.000
    Симпатии:
    2.992
    Отправляй новый но с тем же уровнем (level)
     
    antismert нравится это.
  3. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    Такой вариант сразу попробовал. Просто сдедующие сообщение не появляется
     
  4. AlmazON

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

    Сообщения:
    4.563
    Симпатии:
    1.988
    Обычно достаточно с долей секунды (таймер 0.0 - 0.1) отправить новое сообщение после старого. Hint так сразу перебивает, например.
    Таймаут тоже какой-то замечал, но, это наверное смотря, как сделать. Оффтоп
     
    antismert нравится это.
  5. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    пробовал. сообщение проподает. а новое после таймера не появляется
     
  6. R1KO

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

    Сообщения:
    6.000
    Симпатии:
    2.992
    antismert, отправь пустое и сразу за ним новое.
     
  7. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    Отправить пустое для закрытие предедущего звучит что на костыли систему поставить)
     
  8. R1KO

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

    Сообщения:
    6.000
    Симпатии:
    2.992
    Проверил, новое сообщение не перебивает старое.
     
    Последнее редактирование: 21 фев 2015
    antismert нравится это.
  9. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    Вот и я про тоже.... найдя эту переменую можно и эту проблемму решить
    перед каждым запросом на сервере ее выключать-включать и будет перебивать, но опять-же это только догадки, хотя я почти уверен
     
  10. R1KO

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

    Сообщения:
    6.000
    Симпатии:
    2.992
    Пробуй так
    PHP:
    CancelClientMenu(client_GetMenuStyleHandle(MenuStyle_Valve));
    // затем отправляй новое сообщение
     
  11. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    public LeftTopMess(client){
    CancelClientMenu(client, _, GetMenuStyleHandle(MenuStyle_Valve));
    CreateTimer(0.1, LeftTopMessPr, client);
    }
    public Action:LeftTopMessPr(Handle:timer, any:client)
    {
    decl String:SNMess[256];
    Format(SNMess, sizeof(SNMess), "%s",SLeftTopMess[client]);
    new Handle:Msg = CreateKeyValues("msg");
    KvSetString(Msg, "title", SNMess);
    KvSetColor(Msg, "color", 180, 180, 180, 255);
    KvSetNum(Msg, "level", 1);
    CreateDialog(client, Msg, DialogType_Msg);
    CloseHandle(Msg);
    }

    //////Проподает вовсе. до талого)
     
  12. R1KO

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

    Сообщения:
    6.000
    Симпатии:
    2.992
    antismert, ну хоть предыдущее закрывает. Уже что-то.
     
  13. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    Чекнул логи. SM начал ругаться на CancelClientMenu(client, _, GetMenuStyleHandle(MenuStyle_Valve)); просто ошибка в функции, строка такая-то.
     
  14. R1KO

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

    Сообщения:
    6.000
    Симпатии:
    2.992
    antismert, ошибку дай. Он может говорит что хандл 0
     
    antismert нравится это.
  15. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    L 02/20/2015 - 23:17:24: [SM] Native "CancelClientMenu" reported: MenuStyle handle 24001d0 is invalid (error 1)
     
  16. antismert

    antismert

    Сообщения:
    38
    Симпатии:
    3
    Актуальность теме вернем?