Skocz do zawartości
[Rozwiązane] Instrukcja z timera wykonuje się 2 razy
Pytania

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);
}
Odnośnik do odpowiedzi
Udostępnij na innych stronach

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ść
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);
}
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Moderator poziom 2

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

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

Sygnatura użytkownika

» Support: https://discord.com/invite/zMXt97R63v

» Steam: https://steamcommunity.com/id/pawelsteam/

» Discord: Paweł#8244

» PluginyCS: https://pluginycs.pl/profile/Pawel

» Przyjmuję zlecenia na paczki oraz pluginy.  «

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (5 użytkowników)

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...