Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Event HLTV wykonuje się 500 razy w ciągu sekundy


Najlepsza odpowiedź oeN., 07.01.2018 14:26

Nic.

public OnDayStartPre() {
    for(new i = 1; i <= MAX_PLAYERS; i++) {
        if(!is_user_connected(i) || !has_weapon[i]) continue;

        has_weapon[i] = false;
    }
}
public OnDayStartPre() {
    if(task_exists(ID_POKAZ_PODZIAL)) remove_task(ID_POKAZ_PODZIAL);
    
    for(new i = 1; i <= MAX_PLAYERS; i++) {
        if(!is_user_connected(i)) continue;
        hasLeader[i] = false;
        fm_set_user_rendering(i, kRenderFxNone, 0, 0, 0, kRenderNormal, 255);
    }
}

@Edit

Nieważne... Błąd wrócił.

Przejdź do postu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 oeN.

    Wszechwidzący

  • Użytkownik

Reputacja: 95
Zaawansowany

  • Postów:294
  • Lokalizacja:Dom
Offline

Napisano 04.01.2018 00:18

Ktoś miał kiedyś podobny problem? Pierwszy raz się spotkałem żeby mi event HLTV (nowa runda przed freezetime) się wykonywał 500 razy wciągu sekundy. Nie żeby od razu, potrafi tak po kilku rundach albo w ogóle przez całą mapę.

Coś, ktoś?

 

Mały przykład logów z funkcji eventu.

Spoiler

  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 049
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 04.01.2018 07:45

A jak z kodem? Coś bardziej skomplikowanego niż zerowanie paru zmiennych? Jakaś zależność, kiedy powtarza event? Bo z wypowiedzi wnioskuję, że nie zawsze się to dzieje?


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 oeN.

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 95
Zaawansowany

  • Postów:294
  • Lokalizacja:Dom
Offline

Napisano 04.01.2018 11:14

Nic wielkiego, proste i podstawowe rzeczy.

 

register_event("HLTV", "PreRoundStart", "a", "1=0", "2=0");

 

public PreRoundStart() {
    wishStarted = false;
    
    if(GameStart) {
        dayNumber = 0;
        weekNumber = 1;
        GameStart = false;
        set_task(1.0, "StartFreeDay");
    }
    else {
        if(dayNumber%7 == 0) {
            weekNumber++;
        }
    }
    
    dayNumber++;
    log_amx("JB: %d | %d", dayNumber, weekNumber);
    
    if(dayNumber) {
        gTimeStart = get_systime();
        ForwardDayStartPre(dayNumber%7);
    }
    
    for(new i = 1; i <= MAX_PLAYERS; i++) {
        if(!isLeader) break;
        if(!is_user_connected(i) || !hasLeader[i]) continue;
        
        hasLeader[i] = false;
    }
    
    isLeader = false;
    
    for(new i = 1; i <= MAX_PLAYERS; i++) {
        if(!is_user_connected(i)) continue;
        
        Wish[i] = 0;
    }
    
    if(dayNumber%7 == 6) {
        KillDay = true;
        Mikro = true;
    }
    else {
        KillDay = false;
        Mikro = false;
    }
    
    leaderName = "Brak";

    GameMode = 0;
    
    czas = false;
    
    for(new i = 1; i <= MAX_PLAYERS; i++) {
        if(!is_user_connected(i)) continue;
        
        if(get_user_team(i) == 1) {
            UsunBronie(i);
            ResetKnife(i);
        }
    }
}

 

public ForwardDayStartPre(game) {
    new iRet
    new is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
    
    ExecuteForward(fDayStartPre, iRet, game);
    
    log_amx("ForwardDayStartPre");
    
    new data[1];
    data[0] = game;
    
    if(is_frezz)
        set_task(is_frezz+0.1, "ForwardDayStartPost", TASK_FREEZE, data, 1);
    else
        ForwardDayStartPost(data);
}

  • +
  • -
  • 0

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 04.01.2018 14:19

Wersja amxx'a hldsa ?


  • +
  • -
  • 0

#5 oeN.

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 95
Zaawansowany

  • Postów:294
  • Lokalizacja:Dom
Offline

Napisano 04.01.2018 18:29

Amxx 1.8.2-d, reHLDS najnowszy 3.3.0.605

Każdy serwer na takich stoi i tylko tutaj jest ten problem.


  • +
  • -
  • 0

#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 06.01.2018 18:17

Nie jesteś pierwszą osobą która ma taki błąd https://amxx.pl/topi...-z-stack-error/po prostu zmień event :P
  • +
  • -
  • 0

#7 oeN.

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 95
Zaawansowany

  • Postów:294
  • Lokalizacja:Dom
Offline

Napisano 07.01.2018 01:44

Nie ma innego eventu do przechwycenia początku rundy przed freeztime :/

Ale chyba rozwiązałem problem. Gdy zmieniłem w innych pluginach forwardu OnDayStartPre z ForwardDayStartPre to problem przestał występować. Dziwne, bardzo dziwne.


  • +
  • -
  • 0

#8 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 07.01.2018 01:48

a co pluginy zwracały w poprzednim forwardzie ( tym starym ) ?
  • +
  • -
  • 0

#9 oeN.

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 95
Zaawansowany

  • Postów:294
  • Lokalizacja:Dom
Offline

Napisano 07.01.2018 14:26   Najlepsza odpowiedź

Nic.

public OnDayStartPre() {
    for(new i = 1; i <= MAX_PLAYERS; i++) {
        if(!is_user_connected(i) || !has_weapon[i]) continue;

        has_weapon[i] = false;
    }
}
public OnDayStartPre() {
    if(task_exists(ID_POKAZ_PODZIAL)) remove_task(ID_POKAZ_PODZIAL);
    
    for(new i = 1; i <= MAX_PLAYERS; i++) {
        if(!is_user_connected(i)) continue;
        hasLeader[i] = false;
        fm_set_user_rendering(i, kRenderFxNone, 0, 0, 0, kRenderNormal, 255);
    }
}

@Edit

Nieważne... Błąd wrócił.


Użytkownik oeN. edytował ten post 07.01.2018 14:28

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych