Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

FATAL ERROR (shutting down): SZ_GetSpace: overflow without FSB_ALLOWOVERFLOW set on Server Spectator


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

#1 Sniper Elite

    Master

  • Power User

Reputacja: 167
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 12.07.2014 16:31

Witam. Serwer mi ostatnio pada z takim errorem:

FATAL ERROR (shutting down): SZ_GetSpace: overflow without FSB_ALLOWOVERFLOW set on Server Spectator Buffer

I chciałbym się zapytać o ew. przyczyny takich crashy. Dodam że na serwerze jest stary CodMod + kilka niestandardowych pluginów.

Na wklejce dodaję jeszcze logi z końcówki samej gry po której nastąpił restart serwera.

 

http://wklej.to/6uZLB

 

Dodam, że mam trochę warunków w funkcji obrażeń:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_alive(this) || !is_user_connected(this) || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker) || !klasa_gracza[idattacker])
        return HAM_IGNORED;
    
    new health = get_user_health(this);
    new weapon = get_user_weapon(idattacker);
    
    new Float:damage_bazowe = damage
    
    if(celneoko_gracza[idattacker]>0)
        damage += damage * (float(celneoko_gracza[idattacker]) * 0.1)
    
    if(health < 2)
        return HAM_IGNORED;
    
    if(task_exists(this+LECZENIE))
        remove_task(this+LECZENIE);
    
    if(wytrzymalosc_gracza[this]>0)
        damage -= redukcja_obrazen_gracza[this] * damage;
        
    if(c_mech[idattacker] == 1 && c_odpornosc[this] == 0)
        damage *= 1.3
        
    if(c_mech[this] == 1)
        damage *= 0.6
        
    if(dodatkowa_redukcja[this])
        damage -= float(dodatkowa_redukcja[this])
        
    if(dodatkowe_obrazenia[idattacker] > 0)
        damage += float(dodatkowe_obrazenia[idattacker])
    
    if(player_b_rultra[this] > 0 && random_num(1,player_b_rultra[this]) == 1)
        return HAM_SUPERCEDE;
    
    if(player_b_ultra_left[this] > 0){
        player_b_ultra_left[this]--
        return HAM_SUPERCEDE;
    }
    
    if(player_b_rshin[this] > 0 && random_num(1, player_b_rshin[this]) == 1){
        damage = damage * 0.2
        SetHamParamEntity(3, this);
        SetHamParamEntity(1, idattacker);
        return PLUGIN_CONTINUE;
    }
    
    if(player_b_shin_left[this] > 0){
        player_b_shin_left[this]--
        damage = damage*0.2
        SetHamParamEntity(3, this);
        SetHamParamEntity(1, idattacker);
        SetHamParamFloat(4, damage);
        return PLUGIN_CONTINUE;
    }
    
    switch(klasa_gracza[idattacker])
    {
        case Zabojca:
        {
            if (UTIL_In_FOV(idattacker,this) && !UTIL_In_FOV(this,idattacker) && !c_odpornosc[this]){
            switch (moc_gracza2[idattacker])
            {
                case 2:
                    damage += 20
                case 1:
                    damage += 10
                default:
                    damage += 5
            }
            Effect_Bleed(this,248)
            }
        }
        case Zwiadowca:
        {
            new Float:dodatkowe_damage = 1.1
            if(moc_gracza1[idattacker])
            {
                switch(moc_gracza1[idattacker])
                {
                    case 3:
                        dodatkowe_damage = 1.4
                    case 2:
                        dodatkowe_damage = 1.3
                    case 1:
                        dodatkowe_damage = 1.2
                }
            }
            damage *= dodatkowe_damage
        }
    }
    switch(klasa_gracza[this])
    {
        case Zolnierz:
        {
            new Float:redukcja =  0.0
            switch(moc_gracza1[this])
            {
                case 1:
                    redukcja = 0.85
                case 2:
                    redukcja = 0.8
                case 3:
                    redukcja = 0.75
                default:
                    redukcja = 0.9
            }
            damage *= redukcja
        }
        case Swat:
        {
            new odbicie = 0
            switch(moc_gracza1[this])
            {
                case 1:
                    odbicie = 15
                case 2:
                    odbicie = 20
                case 3:
                    odbicie = 25
                default:
                    odbicie = 10
            }
            if(random_num(1,100) <= odbicie || (moc_gracza3[this] && random_num(1,2) == 1 && damagebits & DMG_BULLET && !UTIL_In_FOV(this, idattacker) && UTIL_In_FOV(idattacker, this)))
                return HAM_SUPERCEDE;
        }
        case Snajper:
        {
            if(c_inv_stoj[this] && moc_gracza1[this] >= 2)
                damage *= 0.5
        }
    }
    
    if(damage < damage_bazowe * 0.6)
        damage = damage_bazowe * 0.6
    if(damage > damage_bazowe * 1.4)
        damage = damage_bazowe * 1.4
    
    if(n_krwawynaboj[idattacker] > 0 && moc_gracza1[idattacker] == 3 && (klasa_gracza[idattacker] == Prototyper || klasa_gracza[idattacker] == AutoKamper)){
        n_krwawynaboj[idattacker]--
        damage *= 3.0
        Effect_Bleed(this,248)
    }
    else if(n_krwawynaboj[idattacker] > 0){
        n_krwawynaboj[idattacker]--
        damage *= 2.0
        Effect_Bleed(this,248)
    }
    if((klasa_gracza[idattacker] == Brygadzista || klasa_gracza[idattacker] == Prototyper) && moc_gracza2[idattacker]){
        new szansa = 0;
        switch (moc_gracza2[idattacker])
        {
            case 2:
                szansa = 15
            case 1:
                szansa = 5
        }
        if(random_num(1,100) <= szansa)
        {
            damage *= 2.0
            Effect_Bleed(this,248)
        }
    }
    
    if(damagebits == (1<<24))
    {
        if(player_b_grenade[idattacker]){
            if (random_num(1,player_b_grenade[idattacker]) == 1)
            damage=float(health)
        }
        
        if(klasa_gracza[idattacker] == Grenadier){
            if(moc_gracza2[idattacker] == 2)
                damage *= 1.5
        }
        
        if(klasa_gracza[idattacker] == Stalker){
            if(moc_gracza2[idattacker] == 2)
                damage *= 2.5
            else if(moc_gracza2[idattacker] == 1)
                damage *= 1.5
        }
        if(klasa_gracza[idattacker] == Szpieg){
            new szansa
            switch (moc_gracza2[idattacker])
            {
                case 2:
                    szansa = 4
                case 1:
                    szansa = 5
                default:
                    szansa = 6
            }
            if(random_num(1,szansa) == 1)
                damage = float(health)
        }
        if(klasa_gracza[idattacker] == Grenadier && moc_gracza3[idattacker])
        {
            if(task_exists(this+2936))
                remove_task(this+2936);
            palenie_gracza[this] = 12;
            set_task(0.5, "burning_flame", this+2936, _, _, "b");
        }
    }
    
    if(damagebits != (1<<24))
    {
        if(((klasa_gracza[idattacker] == Komandos || (player_b_knifemaster[idattacker] > 0 && random_num(1,player_b_knifemaster[idattacker]) == 1)) && weapon == CSW_KNIFE && get_user_button(idattacker) & IN_ATTACK2) && c_odpornosc[this] == 0)
            damage=float(health)
        
        if(player_b_sniper[idattacker] > 0 && weapon == CSW_SCOUT){
            if(random_num(1,player_b_sniper[idattacker]) == 1)
            damage=float(health)
        }
        
        if(klasa_gracza[idattacker] == Sniper && weapon == CSW_AWP && c_odpornosc[this] == 0){
            new szansa
            switch(moc_gracza2[idattacker])
            {
                case 2:
                    szansa = 3
                case 1:
                    szansa = 4
                default:
                    szansa = 5
            }
            if(random_num(1,szansa) == 1)
                damage=float(health)
        }
        
        if (player_b_awpmaster[idattacker] > 0 && weapon == CSW_AWP){
            if(random_num(1,player_b_awpmaster[idattacker]) == 1)
            damage=float(health)
        }
        
        if(klasa_gracza[idattacker] == Partyzant && weapon == CSW_SCOUT)
        {
            new szansa = 0
            switch(moc_gracza1[idattacker])
            {
                case 1:
                    szansa = 20
                case 2:
                    szansa = 30
                case 3:
                    szansa = 40
                default:
                    szansa = 10
            }
            if(random_num(1,100) <= szansa)
                damage=float(health);
        }
    }
    
    SetHamParamFloat(4, damage);
    return HAM_IGNORED;
}
public Damage(id)
{
    new attacker_id = get_user_attacker(id)
    new damage = read_data(2);
    
    if(!is_user_connected(id) || !is_user_connected(attacker_id) || get_user_team(id) == get_user_team(attacker_id) || !klasa_gracza[attacker_id])
        return PLUGIN_CONTINUE;
        
    if(is_user_connected(attacker_id) && is_user_connected(id) && get_user_team(id) != get_user_team(attacker_id)){
        asysta_gracza[attacker_id][id] = true;
    }
    
    if(item_gracza[id])
    {
        if(wytrzymalosc_itemu[id] > 0)
            wytrzymalosc_itemu[id]-=5;
        else if(wytrzymalosc_itemu[id] <= 0)
        {
            client_print(id, print_chat, "[COD:MW] Przedmiot: %s, zostal calkowicie zniszczony.", nazwa_przedmiotu[id]);
            UsunPrzedmiot(id);
        }
    }

    if(!is_user_alive(id))
        return PLUGIN_CONTINUE;
        
    if (klasa_gracza[attacker_id] == Szpieg && c_odpornosc[id] == 0)
    {
        new szansa = 10
        new Float:obrazenia = 20.0+float(inteligencja_gracza[attacker_id])/5
        if(moc_gracza1[attacker_id])
        {
            switch (moc_gracza1[attacker_id])
            {
                case 3:
                {
                    szansa += 15
                    obrazenia = 15.0
                }
                case 2:
                {
                    szansa += 10
                    obrazenia = 10.0
                }
                case 1:
                {
                    szansa += 5
                    obrazenia = 5.0
                }
            }
        }
        if(random_num(1,100) <= szansa)
        {
            add_bonus_piorun(attacker_id,id, Float:obrazenia)
        }
    }
    
    if(niewidka[id] > 0){
        niewidka[id] = 0;
        set_renderchange(id);
    }
    
    if(klasa_gracza[id] == Inzynier && moc_gracza2[id])
    {
        new szansa = 0
        switch (moc_gracza2[id])
        {
            case 2:
                szansa = 20
            case 1:
                szansa = 10
        }
        if(random_num(1,100) <= szansa)
            Display_Fade(attacker_id,1<<14,1<<14 ,1<<16,255,155,50,230)
    }
    
    if(player_b_blind[attacker_id] > 0)
    {
        if(random_num(1,player_b_blind[attacker_id]) == 1) Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230)        
    }
    if (c_blind[attacker_id] > 0 && c_odpornosc[id] == 0)
    {
        if(random_num(1,c_blind[attacker_id]) == 1) Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230)        
    }
    if(player_b_vampire[attacker_id] > 0)
    {
        change_health(attacker_id,player_b_vampire[attacker_id],0,"")
    }
    if(c_vampire[attacker_id] > 0)
    {
        change_health(attacker_id,c_vampire[attacker_id],0,"")
    }
    if(klasa_gracza[attacker_id] == Pulkownik && c_odpornosc[id] == 0)
    {
        if(random_num(1,14) == 1)
            client_cmd(id, "weapon_knife")
    }
    if(player_b_shake[attacker_id] > 0)
    {
        if (random_num(1,player_b_shake[attacker_id]) == 1)
        {
            message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id);
            write_short(7<<14);
            write_short(1<<13);
            write_short(1<<14);
            message_end();
        }
    }
    if(c_shake[attacker_id] > 0 && c_odpornosc[id] == 0)
    {
        if (random_num(1,c_shake[attacker_id]) == 1)
        {
            message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id);
            write_short(7<<14);
            write_short(1<<13);
            write_short(1<<14);
            message_end();
        }
    }
    if(player_b_bio[attacker_id]){
        if(task_exists(attacker_id+TASK_POCISKI_BIO))
        remove_task(attacker_id+TASK_POCISKI_BIO)
        //set_task(1.0,"Pociski_bio", id+TASK_POCISKI_BIO, _, _, "a", 5)
        new data[2]
        data[0] = id
        data[1] = attacker_id
        set_task(1.0, "Pociski_bio", attacker_id+TASK_POCISKI_BIO, data, 2, "a", 5);
    }
    if(klasa_gracza[attacker_id] == Infiltrator)
    {
        if(task_exists(id+TASK_MAGICZNE_POCISKI))
            remove_task(id+TASK_MAGICZNE_POCISKI)
        new Float:czas = 2.0
        if(moc_gracza3[attacker_id])
            czas += 2.0
        widoczny[id] = 1;
        set_renderchange(id)
        set_task(czas, "widocznyoff", id+TASK_MAGICZNE_POCISKI);
    }
    if(ilosc_graczy >= min_graczy && quest_gracza[attacker_id] != -1)
    {
        if(zadanie_do_wykonania[attacker_id] == zadac_dmg)
        {
            ile_juz[attacker_id] += damage
            if((ile_juz[attacker_id] >= questy_ile[quest_gracza[attacker_id]][1] && quest_alkaida[attacker_id] == true) || (ile_juz[attacker_id] >= questy_ile[quest_gracza[attacker_id]][1] && quest_pol[attacker_id] == true))
                questy_nagrody(attacker_id)
        }
        if(zadanie_do_wykonania[attacker_id] == zadac_obrazenia_od_tylu){
            if(UTIL_In_FOV(attacker_id,id) && !UTIL_In_FOV(id,attacker_id))
            {
                ile_juz[attacker_id]+=damage
            }
            if((ile_juz[attacker_id] >= questy_ile[quest_gracza[attacker_id]][1] && quest_alkaida[attacker_id] == true) || (ile_juz[attacker_id] >= questy_ile[quest_gracza[attacker_id]][1] && quest_pol[attacker_id] == true))
                questy_nagrody(attacker_id)
        }
    }
    
    while(damage>20)
    {
        damage-=20;
        doswiadczenie_gracza[attacker_id]++;
    }
    SprawdzPoziom(attacker_id);
    
    return PLUGIN_CONTINUE;
}

  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#2 Cypis'

    Master

  • Przyjaciel

Reputacja: 1139
Super Hero

  • Postów:964
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 17.07.2014 22:38

Podaj wersje dproto.


  • +
  • -
  • 1

#3 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 453
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 18.07.2014 13:34

Po zobaczeniu logów stawiał bym na ten błędny kod:
SetHamParamEntity(3, this);
SetHamParamEntity(1, idattacker);
return PLUGIN_CONTINUE;
Nie wiem czy to on powoduje crash ale na pewno jest błędny gdyż:
• nie robisz nic z inflictorem a może on być równy attacker
• zwracasz PLUGIN_CONTINUE które jest podmieniane przy kompilacji na liczbę 0 a po zmianie argumentów funkcji powinno się zwrócić HAM_HANDLED czyli 2 w ogóle zawsze po zmianie argumentów (w funkcji ham'a) zwracaj HAM_HANDLED



Sprawdź na serwerze taką sytuację zdobądź moc wymienioną wyżej. Niech ktoś ci zada dmg za pomocą zwykłej broni, a potem za pomocą HE bo coś czuje że jesli się HE poprawnie nie ustawi to może się coś zbugować ale to tylko domysła a nie pewna informacja. Poza tym te funkcje wyglądają koszmarnie. Postaraj się je zoptymalizować oraz zacznij używać pseudo-struktur by dużo kod skrócić

Użytkownik BlackPerfum edytował ten post 18.07.2014 13:34

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#4 Sniper Elite

    Master

  • Autor tematu
  • Power User

Reputacja: 167
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 19.07.2014 12:36

Dproto 0.9.187, z 0.9.364 części graczy (w tym mnie) serwer stawał na początku ładowania po czym cs się zawieszał.

 

Co masz na myśli mówiąc pseudo struktury?


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#5 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 19.07.2014 12:44

Co masz na myśli mówiąc pseudo struktury?

enum ePseudoStruktury {
	PSWartosc1,
	bool:PSWartosc2,
	Float:PSWartosc3
};

  • +
  • -
  • 1
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#6 Sniper Elite

    Master

  • Autor tematu
  • Power User

Reputacja: 167
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 19.07.2014 13:20

Średnio to kumam. Mógłbyś mi opisać jak to użyć i jak to wpływa na optymalizacje?


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#7 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 19.07.2014 13:33

Optymalizację? Praktycznie żadna optymalizacja, jedynie kod czytelniejszy i kod też można skrócić.
 
enum ePseudoStruktury {
	PSWartosc1,
	bool:PSWartosc2,
	Float:PSWartosc3
};

new player[33][ePseudoStruktury];

player[id][PSWartosc1] = 1;
player[id][PSWartosc2] = true;
player[id][PSWartosc3] = any:(0.0);
Tylko niestety przy floacie należy unikać paru rzeczy, chociażby
player[id][PSWartosc3] += any:(53.2);

  • +
  • -
  • 1
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#8 Cypis'

    Master

  • Przyjaciel

Reputacja: 1139
Super Hero

  • Postów:964
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 19.07.2014 15:37

Zainstaluj najnowszą wersje dproto 0.9.391, które naprawia właśnie ten błąd.

Po prostu jakaś osoba ci creshuje serwer wykorzystując tą luke :P

 

"added quick fix against net_message overflow @ Netchan_CopyNormalFragments"

http://cs.rin.ru/for...pic.php?t=55986


Użytkownik Cypis' edytował ten post 19.07.2014 15:38

  • +
  • -
  • 1

#9 Sniper Elite

    Master

  • Autor tematu
  • Power User

Reputacja: 167
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 19.07.2014 19:38

Zainstaluj najnowszą wersje dproto 0.9.391, które naprawia właśnie ten błąd.

Po prostu jakaś osoba ci creshuje serwer wykorzystując tą luke :P

 

"added quick fix against net_message overflow @ Netchan_CopyNormalFragments"

http://cs.rin.ru/for...pic.php?t=55986

Nie będzie problemu z tą wersją dproto jeżeli mam stare binarki 5787?


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#10 Cypis'

    Master

  • Przyjaciel

Reputacja: 1139
Super Hero

  • Postów:964
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 20.07.2014 22:53

Tego to nie wiem, nie posiadam serwerów z starymi binarkami.


  • +
  • -
  • 1

#11 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 21.07.2014 08:30

Problemów nie powinno być, twórcy dproto nie zarzucili supportu dla starszych binarek. Nie pozostaje Ci nic innego, jak spróbować.
  • +
  • -
  • 1
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#12 dredek

    Wszechwidzący

  • Użytkownik

Reputacja: 113
Zaawansowany

  • Postów:240
  • GG:
  • Imię:Dawid
  • Lokalizacja:OLK
Offline

Napisano 25.07.2014 16:49

Jeżeli nie pomoże nic z wyżej wymienionych opcji to wgraj HLDS (6027) , dproto 0.9.322 i amxmoda 1.8.1.

Posiadałem wcześniej identyczny problem i ta opcje wyżej mi go rozwiązała.


  • +
  • -
  • 1

#13 Cypis'

    Master

  • Przyjaciel

Reputacja: 1139
Super Hero

  • Postów:964
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 25.07.2014 20:44

@up, Kolego taka opcja nie rozwiąże tego problemu.


  • +
  • -
  • 0

#14 Nickname12

    Nowy

  • Pijawka

Reputacja: 0
zer0.

  • Postów:1
  • Imię:Andrzej
  • Lokalizacja:Z Daleka xd
Offline

Napisano 25.07.2014 22:52

dredek dzięki pomogło


  • +
  • -
  • 0




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

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