Skocz do zawartości
kox1906

[Rozwiązane] Instrukcja z timera wykonuje się 2 razy

Rekomendowane odpowiedzi

Cześć,

Mam problem. Chciałbym zapętlić wiadomość od serwera co 400 sekund, a także 30 sekund po rozpoczęciu mapy, natomiast pierwszy, jak i drugi timer wykonuje się jakby podwójnie, to znaczy na serwer wysyłają się dwie identyczne wiadomości po sobie. Dodam, że w tym pliku .sp korzystam również z dwóch pluginów (wykonują się OnClientPostAdminCheck), które są całkowicie niezależne od tych, które tu uwzględnię, ale nie wiem czy to ma jakieś znaczenie. Nie będę całego pluginu wklejał, tylko te linijki z którymi jest problem. Próbowałem wrzucić do komentarza jeden z timerów, próbowałem użyć ten plugin jako jedyny na tym serwerze i nie zadziałało. Wydaje mi się, że zrobiłem już z tym każdą możliwą operację.

#include <sourcemod>
#include <multicolors>
 
#define TAG_SERVER "{yellow}[SERVER INFO]{default}"
 
public void OnMapStart()
{
    CreateTimer(30.0, RepeatMessage);
    CreateTimer(400.0, RepeatMessage, _, TIMER_REPEAT);
}
 
public Action RepeatMessage(Handle timer, int client)
{
    CPrintToChatAll("%s Welcome to the our server! Enjoy the game", TAG_SERVER);
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Dziękuje 1
Napisano (edytowane)

Cześć, spróbuj utworzyć timer globalnie, przypisując go do Handle. Przy wywołaniu się forwardu OnMapStart(), sprawdź sobie jakimś booleanem, czy timer się już odpalił.

 

public void onmapend() {

      bool odpalone = false;

}

 

public void OnMapStart() {

  if(!odpalone)

     CreateTimer[...]

      odpalone = true

}

 

 

coś w ten deseń, może pomoże 😛 

Edytowane przez SUPER TIMOR

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Kuuurna byniu, dzięki wielkie. Gdyby ktoś również miał z tym problem wysyłam rozwiązanie:

#include <sourcemod>
#include <multicolors>
 
#define TAG_SERVER "{yellow}[SERVER INFO]{green}"
 
bool onRepeatMessage         =   false;         
bool onRepeatMessageLoop     =   false;  
 
public void OnMapStart()
{
    if(!onRepeatMessage)
    {
    CreateTimer(30.0, RepeatMessage);
    onRepeatMessage=true;
    }
    if(!onRepeatMessageLoop)
    {
    CreateTimer(400.0, RepeatMessage, _, TIMER_REPEAT);     //400
    onRepeatMessageLoop=true;
    }
}
 
//////////////////////////////////// MESSAGE ONE TIME ON ~7 MINUTES ////////////////////////////////////
public Action RepeatMessage(Handle timer, int client)
{
    CPrintToChatAll("%s Welcome to the our server! Enjoy the game", TAG_SERVER);
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

Jeżeli się z tym nie zgadzasz, raportuj ten post

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...