←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

JailBreak
[JailBreak Cypis] Naprawa Crashy po zakońc...

  • +
  • -
Droso's Photo Droso 12.10.2013

Witajcie!

 

Naprawdę sporo godzin spędziłem, żeby to rozwiązać i prawdopodobnie to jest rozwiązanie!

 

Aby usunąć crashe należy:

 

  • Krok 1: Usunąć w piłce Cypisia usuwanie piłki przy życzeniu.

Otwieramy jail_ball.sma i usuwamy z .sma:

public OnLastPrisonerShowWish(id)
{
	if(g_CreateBall)
	{
		if(pev_valid(g_ball))
			remove_entity(g_ball);
	}
}

Kompilujemy i wgrywamy na serwer.

  • Krok 2: Podmień funkcję w jail_api_jailbreak.sma (patrz poradnik niżej).

 

To:


public RoundRestart()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "RoundRestart");
#endif
	usuwanie_ustawien = true;
}

public RoundEnd()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "RoundEnd");
#endif
	end_usun = true;
	czas_bronie = false;
}

public PreRoundStart()
{	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PreRoundStart pre");
#endif
	UsuwanieWydarzen();
	if(usuwanie_ustawien)
	{
		jail_day = 0;
		usuwanie_ustawien = false;
	}
	else
		jail_day++;

	
	if(jail_day)
	{
		gTimeStart = get_systime();
		ForwardDayStartPre(jail_day%7);
	}
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PreRoundStart post");
#endif
}

UsuwanieWydarzen()
{
	//end_usun = true;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen pre");
#endif
	szInfo = "";
	szInfoPosz = "";
	szPoszukiwani = "";
	ostatni_wiezien = 0;
	prowadzacy = 0;
	
	obsluga_dala = false;
	pokaz_raz = false;
	czas_bronie = false;
	zabawa_wybrana = false;
	zyczenie_wybrane = false
		
	mode_gracza[WALKA] = false;

	mode_gracza[MIKRO] = (get_pcvar_num(pCvarMikro) == 1? true: false);
	
	mode_gracza[FF_TT] = false;
	mode_gracza[TT_GOD] = false;
	mode_gracza[CT_GOD] = false;
	mode_gracza[CT_NIE_MOZE_TT] = false;
	mode_gracza[TT_NIE_MOZE_CT] = false
	
	if(task_exists(ID_DZWIEK_POSZ))
		remove_task(ID_DZWIEK_POSZ);
	
	if(task_exists(ID_LOS_PROWADZACY))
		remove_task(ID_LOS_PROWADZACY);
		
	if(task_exists(ID_CZAS))
		remove_task(ID_CZAS);
	
	if(task_exists(ID_FREZZ))
		remove_task(ID_FREZZ);
	
	if(task_exists(ID_SPEED_FZ))
		remove_task(ID_SPEED_FZ);
	
	for(new i=0; i<sizeof dane_dnia; i++)
		dane_dnia[i] = 0;
	
	for(new i=1; i<=MAX; i++)
	{
		array_graczy[WSZYSCY][i] = 0;
		array_graczy[ZYWI][i] = 0;
		
		user_speed[i] = 0.0;
		pojedynek[i] = false;
		
		bronie_menu[i][0] = false;
		bronie_menu[i][1] = false;
		
		if(ustaw_freeday[i])
		{
			ustaw_freeday[i] = false;
			free_day[i] = true;
		}
		else
			free_day[i] = false;
			
		if(ustaw_duszka[i])
		{
			ustaw_duszka[i] = false;
			user_duszek[i] = true;
		}
		else
			user_duszek[i] = false;
	}
	
	ilosc_graczy[WSZYSCY] = 0;
	ilosc_graczy[ZYWI] = 0;
	
	new iRet;
	ExecuteForward(fRemoveData, iRet, id_zabawa);
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen post");
#endif
}

public PostRoundStart()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PostRoundStart pre");
#endif
	end_usun = false;
	set_task(60.0, "koniec_czasu", ID_CZAS);
	
	if(!jail_day)
	{
		gTimeStart = get_systime()-g_FreezeTime;
		ForwardDayStartPre(jail_day%7);
	}
	if(!prowadzacy && !dane_dnia[1])
		set_task(15.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PostRoundStart post");
#endif
}

ForwardDayStartPre(zabawa)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre pre");
#endif
	new iRet, is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
	ExecuteForward(fDayStartPre, iRet, zabawa, PrepareArray(szInfo, 256, 1), PrepareArray(szInfoPosz, 512, 1), PrepareArray(dane_dnia, 10, 1), g_RoundTime+min(is_frezz, 0));
	id_zabawa = zabawa;
	
	new dane[1]
	dane[0] = zabawa;
	if(is_frezz)
		set_task(is_frezz+0.1, "ForwardDayStartPost", ID_FREZZ, dane, 1);
	else
		ForwardDayStartPost(dane);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre post");
#endif		
}

Zamień na:


public RoundRestart()
{
	
	usuwanie_ustawien = true;
	end_usun = true;
	UsuwanieWydarzen();
}

public RoundEnd()
{
	
	end_usun = true;
	czas_bronie = false;
	UsuwanieWydarzen();
}



public PreRoundStart()
{	
	end_usun = true;
	szInfo = "";
	szInfoPosz = "";
	szPoszukiwani = "";
	ostatni_wiezien = 0;
	prowadzacy = 0;
	
	obsluga_dala = false;
	pokaz_raz = false;
	czas_bronie = false;
	zabawa_wybrana = false;
	zyczenie_wybrane = false;
	
	mode_gracza[WALKA] = false;
	mode_gracza[MIKRO] = bool:get_pcvar_num(pCvarMikro);
	mode_gracza[FF_TT] = false;
	mode_gracza[TT_GOD] = false;
	mode_gracza[CT_GOD] = false;
	mode_gracza[CT_NIE_MOZE_TT] = false;
	mode_gracza[TT_NIE_MOZE_CT] = false
	
	if(task_exists(ID_DZWIEK_POSZ))
		remove_task(ID_DZWIEK_POSZ);
	
	if(task_exists(ID_LOS_PROWADZACY))
		remove_task(ID_LOS_PROWADZACY);
	
	if(task_exists(ID_CZAS))
		remove_task(ID_CZAS);
	
	if(task_exists(ID_FREZZ))
		remove_task(ID_FREZZ);
	
	if(task_exists(ID_SPEED_FZ))
		remove_task(ID_SPEED_FZ);
	
	if(task_exists(2761234, 1))
		remove_task(2761234, 1);
	
	for(new i=0; i<=10; i++)
		dane_dnia[i] = 0;
	
	if(usuwanie_ustawien)
	{
		jail_day = 0;
		usuwanie_ustawien = false;
	}
	else
		jail_day++;
	
	if(jail_day)
	{
		gTimeStart = get_systime();
		ForwardDayStartPre(jail_day%7);
	}
	
}

UsuwanieWydarzen()
{
for(new i=1; i<=32; i++)
{
	if(is_user_connected(i))
		cs_reset_user_model(i);
		
		pojedynek[i] = false;
		
		user_speed[i] = 0.0;
		array_graczy[WSZYSCY][i] = 0;
		array_graczy[ZYWI][i] = 0;
		
		pojedynek[i] = false;
		
		bronie_menu[i][0] = false;
		bronie_menu[i][1] = false;
		
		if(ustaw_freeday[i])
		{
			ustaw_freeday[i] = false;
			free_day[i] = true;
		}
		else
			free_day[i] = false;
		
		if(ustaw_duszka[i])
		{
			ustaw_duszka[i] = false;
			user_duszek[i] = true;
		}
		else
			user_duszek[i] = false;
		
	}
	
	ilosc_graczy[WSZYSCY] = 0;
	ilosc_graczy[ZYWI] = 0;
	
	new Return_F
	if(fRemoveData)
		ExecuteForward(fRemoveData, Return_F, id_zabawa);
}

public PostRoundStart()
{
	end_usun = false;
	set_task(60.0, "koniec_czasu", ID_CZAS);
	
	if(!jail_day)
	{
		gTimeStart = get_systime()-g_FreezeTime;
		ForwardDayStartPre(jail_day%7);
	}
	if(!prowadzacy && !dane_dnia[1])
		set_task(15.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
}

ForwardDayStartPre(zabawa)
{
new iRet
new is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
new czas = g_RoundTime+min(is_frezz, 0);

ExecuteForward(fDayStartPre, iRet, zabawa, PrepareArray(szInfo, 256, 1), PrepareArray(szInfoPosz, 512, 1), PrepareArray(dane_dnia, 10, 1), czas);
id_zabawa = zabawa;

new dane[1]
dane[0] = zabawa;
if(is_frezz)
	set_task(is_frezz+0.1, "ForwardDayStartPost", ID_FREZZ, dane, 1);
	else
		ForwardDayStartPost(dane);
	
}

Zapisujemy, kompilujemy i wgrywamy na serwer!


Edited by HubertTM, 19.10.2013 08:14.
Quote

  • +
  • -
sNH.'s Photo sNH. 12.10.2013

So pro. Nice :P

Quote

eSkaa's Photo eSkaa 12.10.2013

Posiadam, piłke by Cypis, i nie mam żadnych crashów czyściutko.

Quote

  • +
  • -
Zabijaka Gryps's Photo Zabijaka Gryps 14.10.2013

Noo, nareszcie ten długo oczekiwany przeze mnie poradnik :)

Na prawdę

Tylko taki malutki błąd - powinno być "Naprawdę" (wiem że się czepiam) :D
Quote

.Etc's Photo .Etc 14.10.2013

W której linijce jest usuwanie piłki przy życzeniu ;P ?

Quote

  • +
  • -
susel's Photo susel 16.10.2013

I jak pomogło dla tych co sprawdzali ?:D

Quote

  • +
  • -
Droso's Photo Droso 16.10.2013

W której linijce jest usuwanie piłki przy życzeniu ;P ?

Otwieramy jail_ball.sma

 

Usuwamy:

public OnLastPrisonerShowWish(id)
{
	if(g_CreateBall)
	{
		if(pev_valid(g_ball))
			remove_entity(g_ball);
	}
}

I jak pomogło dla tych co sprawdzali ? :D

Wiesz ja mam taki kod i crashy nie mam ;)

Quote

  • +
  • -
Zabijaka Gryps's Photo Zabijaka Gryps 16.10.2013

I jak pomogło dla tych co sprawdzali ? :D

Ja zastosowałem się do powyższego poradnika oraz sposobu podanego przez cypisa: http://amxx.pl/topic...zycje/?p=575477
Rezultat? OSZAŁAMIAJĄCY! Normalnie mój serwer padał kilkanaście / kilkadziesiąt razy dziennie (nie przesadzam, naprawdę tak było), teraz jest to albo TOTALNE ZERO, albo max jeden crash dziennie od wielkiego święta!
Jak najbardziej potwierdzam skuteczność.
Quote

  • +
  • -
Droso's Photo Droso 16.10.2013

 

I jak pomogło dla tych co sprawdzali ? :D

Ja zastosowałem się do powyższego poradnika oraz sposobu podanego przez cypisa: http://amxx.pl/topic...zycje/?p=575477
Rezultat? OSZAŁAMIAJĄCY! Normalnie mój serwer padał kilkanaście / kilkadziesiąt razy dziennie (nie przesadzam, naprawdę tak było), teraz jest to albo TOTALNE ZERO, albo max jeden crash dziennie od wielkiego święta!
Jak najbardziej potwierdzam skuteczność.

 

Raf w jakim momencie masz crashe? Bo ja na swoim serwerze mam tylko crashe, może raz na 3 dni + tylko przy zmianie mapy (co jest dziwne zresztą xD i pewnie nie jest winą nawet JB Engine Cypisia)

Quote

  • +
  • -
Zabijaka Gryps's Photo Zabijaka Gryps 16.10.2013

I jak pomogło dla tych co sprawdzali ? :D

Ja zastosowałem się do powyższego poradnika oraz sposobu podanego przez cypisa: http://amxx.pl/topic...zycje/?p=575477
Rezultat? OSZAŁAMIAJĄCY! Normalnie mój serwer padał kilkanaście / kilkadziesiąt razy dziennie (nie przesadzam, naprawdę tak było), teraz jest to albo TOTALNE ZERO, albo max jeden crash dziennie od wielkiego święta!
Jak najbardziej potwierdzam skuteczność.

Raf w jakim momencie masz crashe? Bo ja na swoim serwerze mam tylko crashe, może raz na 3 dni + tylko przy zmianie mapy (co jest dziwne zresztą xD i pewnie nie jest winą nawet JB Engine Cypisia)

No ja też tak można powiedzieć, z raz na 3 dni, a w jakim momencie to nie wiem, widzę tylko w debug.log że był, ale to godziny nocne, koło północy.
Ja kiedyś miałem przy zmianie mapy, lecz uciążliwe bo praktycznie co kilka mapek. Pomogło mapchangecfgfile "server.cfg"
Quote

  • +
  • -
susel's Photo susel 16.10.2013

 

 

 

I jak pomogło dla tych co sprawdzali ? :D

Ja zastosowałem się do powyższego poradnika oraz sposobu podanego przez cypisa: http://amxx.pl/topic...zycje/?p=575477
Rezultat? OSZAŁAMIAJĄCY! Normalnie mój serwer padał kilkanaście / kilkadziesiąt razy dziennie (nie przesadzam, naprawdę tak było), teraz jest to albo TOTALNE ZERO, albo max jeden crash dziennie od wielkiego święta!
Jak najbardziej potwierdzam skuteczność.

 

Raf w jakim momencie masz crashe? Bo ja na swoim serwerze mam tylko crashe, może raz na 3 dni + tylko przy zmianie mapy (co jest dziwne zresztą xD i pewnie nie jest winą nawet JB Engine Cypisia)

 

No ja też tak można powiedzieć, z raz na 3 dni, a w jakim momencie to nie wiem, widzę tylko w debug.log że był, ale to godziny nocne, koło północy.
Ja kiedyś miałem przy zmianie mapy, lecz uciążliwe bo praktycznie co kilka mapek. Pomogło mapchangecfgfile "server.cfg"

 

Skoro to działa to Bomba :D W sumie to cypis nie ma co pisać 2 silnika tylko zrobić aktualizacje ;d

Quote

.Etc's Photo .Etc 17.10.2013

Mi dużo na crashe pomogło też zmiana na metamod-p i wrzucenie orpheu

Quote

.Etc's Photo .Etc 18.10.2013

Nie wiem jak u was ale u mnie nie wyłącza duszka / free po nowej rundzie i w sumie jak patrze na sma to nie ma tego w UsuwanieWydarzen() ?

Quote

  • +
  • -
Droso's Photo Droso 19.10.2013

Zapomniałem..., u siebie mam trochę to inaczej zrobione (zabieram duszka/fd w innym miejscu), już pierwszy post poprawiłem dzięki.

 

Zamień:

for(new i=1; i<=MAX; i++)
	{
		array_graczy[WSZYSCY][i] = 0;
		array_graczy[ZYWI][i] = 0;
		
		user_speed[i] = 0.0;
		pojedynek[i] = false;
		
		bronie_menu[i][0] = false;
		bronie_menu[i][1] = false;
		
	}

na

for(new i=1; i<=MAX; i++)
	{
		array_graczy[WSZYSCY][i] = 0;
		array_graczy[ZYWI][i] = 0;
		
		user_speed[i] = 0.0;
		pojedynek[i] = false;
		
		bronie_menu[i][0] = false;
		bronie_menu[i][1] = false;
		
		if(ustaw_freeday[i])
		{
			ustaw_freeday[i] = false;
			free_day[i] = true;
		}
		else
			free_day[i] = false;
			
		if(ustaw_duszka[i])
		{
			ustaw_duszka[i] = false;
			user_duszek[i] = true;
		}
		else
			user_duszek[i] = false;
	}
Quote

.Etc's Photo .Etc 19.10.2013

Ja u siebie już poprawiłem , napisałem to tak dla innych ;P a ma ktoś może rozwiązanie na zawieszanie CS'a po zmianie mapki?  W konsoli serwa pisze że wszyscy mają timeout ale serwer sie nie restartuje, wywaliłem "gong" na początku freedaya i dalej to samo.

Quote