Skocz do zawartości

Rekomendowane odpowiedzi

Mam taki kod i wyskakuje error w konsoli serwera:


L 04/05/2020 - 19:34:43: [SM] Call stack trace:
L 04/05/2020 - 19:34:43: [SM]   [0] KillTimer
L 04/05/2020 - 19:34:43: [SM]   [1] Line 51, C:\Users\Prymex\Desktop\scripting\health.sp::TmerDeath
L 04/05/2020 - 19:34:43: [SM] Exception reported: Invalid timer handle 217b0095 (error 3)
L 04/05/2020 - 19:34:43: [SM] Blaming: health.smx


 

#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

Handle tajmer;

Handle tajmer2;

public void OnPluginStart(){
    HookEvent("player_spawn", RandomHP, EventHookMode_Post);
}

public void OnMapEnd(){
    KillTimer(tajmer);
    KillTimer(tajmer2);
}

public Action RandomHP(Event event, char[] name, bool dontBroadcast){

    if (GameRules_GetProp("m_bWarmupPeriod") == 1)
        return;


    int client = GetClientOfUserId(event.GetInt("userid"));

    int rand = GetRandomInt(0, 100);

    SetEntityHealth(client, rand);

    DataPack dp = new DataPack();
    dp.WriteCell(client);
    dp.WriteCell(rand);

    tajmer = CreateTimer(1.0, PokazHind, dp, TIMER_REPEAT);
    tajmer2 = CreateTimer(15.0, TmerDeath, _, TIMER_FLAG_NO_MAPCHANGE);

    PrintToChat(client, "Twoje HP wynosi: %i", rand);

}

public Action PokazHind(Handle timer, DataPack data){
    data.Reset();
    int client = data.ReadCell();
    int rand = data.ReadCell();

    PrintHintText(client, "Twoje HP wynosi: %i", rand);
}

public Action TmerDeath(Handle timer, any data){
    KillTimer(tajmer);
}

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Moderator poziom 2
Spoiler
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

Handle tajmer;

Handle tajmer2;

public void OnPluginStart(){
    HookEvent("player_spawn", RandomHP, EventHookMode_Post);
}

public void OnMapEnd(){
    KillTimer(tajmer);
    KillTimer(tajmer2);
}

public Action RandomHP(Event event, char[] name, bool dontBroadcast){

    if (GameRules_GetProp("m_bWarmupPeriod") == 1)
        return;


    int client = GetClientOfUserId(event.GetInt("userid"));

    int rand = GetRandomInt(0, 100);

    SetEntityHealth(client, rand);

    DataPack dp = new DataPack();
    dp.WriteCell(client);
    dp.WriteCell(rand);

    tajmer = CreateTimer(1.0, PokazHind, dp, TIMER_REPEAT);
    tajmer2 = CreateTimer(15.0, TmerDeath, _, TIMER_FLAG_NO_MAPCHANGE);

    PrintToChat(client, "Twoje HP wynosi: %i", rand);

}

public Action PokazHind(Handle timer, DataPack data){
    data.Reset();
    int client = data.ReadCell();
    int rand = data.ReadCell();

    PrintHintText(client, "Twoje HP wynosi: %i", rand);
}

public Action TmerDeath(Handle timer, any data){
    KillTimer(tajmer, false);
    tajmer = INVALID_HANDLE;
}

 

 

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

Nie wiem, co Wy tu próbujecie zrobić, ale ten plugin będzie nadpisywał wielokrotnie Handle tajmer i tajmer2.

 

Wyjaśnienie:

Gracz 1 się rodzi: tajmer = adres1, tajmer2 = adres2

Gracz 2 się rodzi 1 sek później: tajmer = adres3, tajmer2 = adres4

---

Dalej wielokrotne nadpisania w zależności od ilości rodzących się graczy

---

15 sekund później zabijany jest adresN, gdzie N to numer timera, który jako ostatni został uruchomiony.

N-1 timerów lata sobie wolno w dalszym ciągu

 

// edit

Zapomniałem dodać, że po zamknięciu Timera następuje wyciek pamięci. DataPack nie jest zamykany.

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 2 miesiące temu...
  • 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ę...