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.
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; }