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


Dodatki SourceMod














