SourcePawn CreateDialog CS:S

antismert

Участник
Сообщения
38
Реакции
2
Добрый день ребят! Подскажите как перебить одно сообщение "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 секунд. Просто говоря если вылазиет второе сообщение, а время первого еще не истекло, нужно его перебить новым.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
Отправляй новый но с тем же уровнем (level)
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
как перебить одно сообщение
Обычно достаточно с долей секунды (таймер 0.0 - 0.1) отправить новое сообщение после старого. Hint так сразу перебивает, например.
Таймаут тоже какой-то замечал, но, это наверное смотря, как сделать. Оффтоп
 

antismert

Участник
Сообщения
38
Реакции
2
Обычно достаточно с долей секунды (таймер 0.0 - 0.1) отправить новое сообщение после старого. Hint так сразу перебивает, например.
Таймаут тоже какой-то замечал, но, это наверное смотря, как сделать. Оффтоп

пробовал. сообщение проподает. а новое после таймера не появляется
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #6
antismert, отправь пустое и сразу за ним новое.
 

antismert

Участник
Сообщения
38
Реакции
2
Тоже через таймер, наверное, придётся. 2 сообщения получается для перебития старого)
А может Handle глобально сохранять и что-то с ним сделать? Как-то эту проблему решили наверняка и обычными методами.

Отправить пустое для закрытие предедущего звучит что на костыли систему поставить)
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #8
Проверил, новое сообщение не перебивает старое.
 
Последнее редактирование:

antismert

Участник
Сообщения
38
Реакции
2
Проверил, новое сообщение не перебивает старое.

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

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #10
Пробуй так
PHP:
CancelClientMenu(client, _, GetMenuStyleHandle(MenuStyle_Valve));
// затем отправляй новое сообщение
 

antismert

Участник
Сообщения
38
Реакции
2
Пробуй так
PHP:
CancelClientMenu(client, _, GetMenuStyleHandle(MenuStyle_Valve));
// затем отправляй новое сообщение

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);
}

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

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #12
antismert, ну хоть предыдущее закрывает. Уже что-то.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #14
antismert, ошибку дай. Он может говорит что хандл 0
 
Сверху Снизу