[JailBreak Cypis] Naprawa Crashy po zakońc...
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.
Zabijaka Gryps
14.10.2013
Tylko taki malutki błąd - powinno być "Naprawdę" (wiem że się czepiam)Na prawdę
Droso
16.10.2013
W której linijce jest usuwanie piłki przy życzeniu ?
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 ?
Wiesz ja mam taki kod i crashy nie mam
Zabijaka Gryps
16.10.2013
Ja zastosowałem się do powyższego poradnika oraz sposobu podanego przez cypisa: http://amxx.pl/topic...zycje/?p=575477I jak pomogło dla tych co sprawdzali ?
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ść.
Droso
16.10.2013
Ja zastosowałem się do powyższego poradnika oraz sposobu podanego przez cypisa: http://amxx.pl/topic...zycje/?p=575477I jak pomogło dla tych co sprawdzali ?
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ą i pewnie nie jest winą nawet JB Engine Cypisia)
Zabijaka Gryps
16.10.2013
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.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ą i pewnie nie jest winą nawet JB Engine Cypisia)Ja zastosowałem się do powyższego poradnika oraz sposobu podanego przez cypisa: http://amxx.pl/topic...zycje/?p=575477I jak pomogło dla tych co sprawdzali ?
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ść.
Ja kiedyś miałem przy zmianie mapy, lecz uciążliwe bo praktycznie co kilka mapek. Pomogło mapchangecfgfile "server.cfg"
susel
16.10.2013
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.
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ą i pewnie nie jest winą nawet JB Engine Cypisia)
Ja zastosowałem się do powyższego poradnika oraz sposobu podanego przez cypisa: http://amxx.pl/topic...zycje/?p=575477I jak pomogło dla tych co sprawdzali ?
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ść.
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 W sumie to cypis nie ma co pisać 2 silnika tylko zrobić aktualizacje ;d
.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() ?
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; }
.Etc 19.10.2013
Ja u siebie już poprawiłem , napisałem to tak dla innych 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.