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
Gość

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 Gość

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ę...