static volatile int smartBotsChat_n_value; static Lock smartBotsChat_n_lock = lock(); static L smartBotsChat_n_onChange = synchroList(); // runnables static int smartBotsChat_n() { ret smartBotsChat_n_notify(toInt(loadPage("http://botcompany.de/1011975/raw/n"))); } static int smartBotsChat_n_notify(int n) { bool changed = false; if (n > smartBotsChat_n_value) { lock smartBotsChat_n_lock; if (n > smartBotsChat_n_value) { smartBotsChat_n_value = n; changed = true; } } if (changed) pcallF_all(smartBotsChat_n_onChange); ret n; } svoid smartBotsChat_n_onChange(O r) { if (smartBotsChat_n_value == 0) smartBotsChat_n(); setAdd(smartBotsChat_n_onChange, r); }