crash

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
aurimasko
Flooderis arba specialistas
Posts: 736
Joined: 2010 Sep 04 08:45

crash

Post by aurimasko »

Turiu vienoj vietoj tokį kodą:

Code: Select all

 new attacker = pev(entity, pev_owner)ExecuteHamB(Ham_Killed, victim, attacker, 1) 
Tačiau, jei žaidėjas, kuris yra attacker atsijungia, tuomet serveris užlūžta.
Bandžiau daryt taip:

Code: Select all

     if(!is_user_connected(attacker))            attacker = 0 
Bet nepadėjo. Gal turit idėjų kaip padaryt, kad jei attacker atsijungęs, tai rodo, jog žaidėjai nusižudo patys?

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: crash

Post by aaarnas »

Tipo žaidėjas numiršta, viskas tvarkoj ir kažkuriuo metu per raundą jei žudikas atsijungia, tai lūžta serveris? Keistoka.
Kokį error rodo konsolė ?
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
aurimasko
Flooderis arba specialistas
Posts: 736
Joined: 2010 Sep 04 08:45

Re: crash

Post by aurimasko »

Na pilnas kodas yra toks, kad granata yra išmetama ir po kurio laiko sprogsta nužudydama visus žaidėjus aplink. Ir esmė, kad kai nužudo, tai fragus turi priskaityt tam kuris ją išmėtė, bet jei tas, kuris išmėtė, atsijungia, tuomet serveris nulužta. Daviau šias eilutes, nes būtent dėl jų lūžta.

Code: Select all

 Uploading dump (in-process) [proxy '']/tmp/dumps/crash_20140710001459_1.dmpsuccess = yesresponse:  CrashID=bp-9c8562f7-ff07-4aa3-b56e-dec152140709Segmentation faultAdd "-debug" to the ./hlds_run command line to generate a debug.log to help with solving this problemThu Jul 10 00:15:00 EEST 2014: Server restart in 10 seconds  

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: crash

Post by aaarnas »

Segmentation fault yra kreipimasis į neinicializuotą ar draudžiamą atminties vietą, kas būtų - NULL (arba neegzistuojančio) pointerio išadresavimas arba steko perpildymas.
Tai atitinka viską, kad kviečiama funkcija ant žaidėjo, kurio nėra.

Šiuo, tavo aprašytu atveju - funkcija is_user_connected turėtų grąžinti netiesą ties tuo žaidėjų.

Patikrink tokius dalykus:
Ar is_user_connected gražina teisingą reikšmę (0 - kai žaidėjas atsijungęs, 1 - kai žaidėjas prisijungęs).
Ar attacker tikrai yra reikiamas žaidėjas (na dėl viso pikto)
Ar validus kvietimas: ExecuteHamB(Ham_Killed, victim, 0, 1) (galbūt variklis neleidžia, kad žaidėjas 0 nužudytų). Jei nevalidus, yra kitų nužudymo metodų. dllfunc, user_kill ar dar kokie ten.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: Bing [Bot] and 4 guests