Всем привет, столкнулся с такой проблемой, флаг TIMER_FLAG_NO_MAPCHANGE не убивает таймер при сливе раунда, повторюсь, именно при сливе, при смене все норм.
Обращусь даже с просьбой, объясните мне тупому что я делаю не так.
Проблему пытался выяснить в течении 2ух дней, я уже и сервер переустановил, и последнюю SM 1.10 поставил - бестолку.
Приведу простой пример
#include <sourcemod> #pragma semicolon 1 #pragma newdecls required public void OnPluginStart() { HookEvent("round_start", Event_RoundStart); } public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast) { CreateTimer(10.0, TimerPost, _, TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT); } public Action TimerPost(Handle timer) { PrintToChatAll("TEST TEXT"); }
в итоге таймер запуститься и начнет через каждые 10 секунд показывать текст, если пройти раунд, то таймер удалится и в начале раунда опять появится, но если раунд будет слит, то появятся уже 2 одновременно работающих таймера, после 4х сливов - 4 соотвественно (это видно по частоте его появления в чате), сами можете проверить.
я даже скажу больше, даже одиночный таймер (без флага TIMER_REPEAT) остается работать.
Не знаю баг ли это SM или у меня что-то но я уже просто в прямом смысле отчаялся))
вот даже доказательство https://vk.com/video...85815_456239437 как себя ведет таймер, который должен появляться через каждые 10 секунд)
Конечно можно сделать небольшой говнокод костыль, типо того
public Action TimerPost(Handle timer) { PrintToChatAll("TEST TEXT 2"); CreateTimer(10.0, TimerPost, _, TIMER_FLAG_NO_MAPCHANGE); }
но все же что не так с этим TIMER_FLAG_NO_MAPCHANGE ?
как заставить таймер с флагом TIMER_REPEAT уничтожить себя при сливе раунда?
Сообщение отредактировал Goldfish: 26 Март 2020 - 10:49