Szerző Téma: Crashelés parancsnál  (Megtekintve 1827 alkalommal)

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Crashelés parancsnál
« Dátum: 2012. június 26. - 22:33:20 »
0 Show voters
Sziasztok,eddig nem volt ilyen hiba a szerveremen,de most van:
Random parancsoktól crashel a szervermvan amikor mûködik,van amikor meg crashel tõle.
Pl.: /elet-tel a hp-mat 100-ra akarom rakni.Crashel.
Resi után már nem crashel,de utána a meg a frakció módosítástól.Resi után már az is mûködik.Szóval nem tudom mi a logika a crashek között.
[22:37:45] [debug] Server crashed while executing loginom.amx
[22:37:45] [debug] AMX backtrace:
[22:37:45] [debug] #0  native fwrite () [00405710] from samp-server.exe
[22:37:45] [debug] #1  000015f8 in ?? () from loginom.amx
[22:37:45] [debug] #2  00001868 in ?? () from loginom.amx
[22:37:45] [debug] #3  00046468 in public AutomatikusMentes () from loginom.amx
[22:37:45] [debug] System backtrace:
[22:37:46] [debug] #0  00491f90 in ?? () from C:\\Users\\Tici\\Desktop\\Programozás\\0.3eTELJES\\samp-server.exe
[22:37:46] [debug] #1  0040534e in ?? () from C:\\Users\\Tici\\Desktop\\Programozás\\0.3eTELJES\\samp-server.exe
Ezt írja crashdetect.Automatikus Mentes-ben nem lehet hiba,mert azt gyakran lefuttatja,és akkor kb 10 mp után crashelnie kellet volna.
Ui.: mindig ezt írja ki,még ha más parancsnál crashel,akkor is.
« Utoljára szerkesztve: 2012. június 26. - 22:48:37 írta tudvari »

dexi

  • Vendég
Crashelés parancsnál
« Válasz #1 Dátum: 2012. június 26. - 23:46:00 »
0 Show voters
Ezek szerint mégis a loginom.amx-tõl. Facen írj rám küld el az FS-t és meglesem.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Crashelés parancsnál
« Válasz #2 Dátum: 2012. június 27. - 07:06:02 »
0 Show voters
nem fs.Csak amikor elkezdtem írni a modomat,akkor elneveztem loginomnak és azóta az a neve. :D Ez a teljes gamemode.

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
Crashelés parancsnál
« Válasz #3 Dátum: 2012. június 27. - 15:21:52 »
0 Show voters
Másold be azt az élet parancsot.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Crashelés parancsnál
« Válasz #4 Dátum: 2012. június 27. - 15:59:06 »
0 Show voters
CMD:elet(playerid,params[])
{
/*------*/
new id, elet;
/*------*/
if(sscanf(params,\"ui\",id,elet))return SendClientMessage(playerid,SZURKE,\"Használat: /elet [Név/Játékos ID] [Élet összeg]\");
{
if(Belepve[playerid] != 0)
{
if(JatekosInfo[playerid][Admin] > 0)
   {
   if(id != INVALID_PLAYER_ID)
      {
         SetPlayerHealth(id, elet);
         new string[256];
                 new string2[256];
         GetPlayerName(playerid,nev,sizeof(nev));
         GetPlayerName(id,fogadonev,sizeof(fogadonev));
         format(string,sizeof(string),\"%s átállította az életedet %d-ra/re!\",nev,elet);
         format(string2,sizeof(string2),\"%s átállította %s életet %d-ra/re!\",nev,fogadonev,elet);
         AdminnakUzenet(VNARANCS, string2, 1);
         SendClientMessage(id, VKEK, string);
      }
                else SendClientMessage(playerid, HIBA, \"Nincs ilyen játékos!\");
   }
   else SendClientMessage(playerid, HIBA, \"Minimum 1-es szintû adminnak kell lenned!\");
}
else SendClientMessage(playerid, HIBA, \"Be kell jelentkezned!\");
}
return 0;
}

Crashelés parancsnál
« Válasz #5 Dátum: 2012. június 27. - 19:55:25 »
0 Show voters
Az fwrite függvény crashel ha nem sikerült az fopen-nek megnyitnia a számára megadott fájl elérési útvonalat.
Ezért mindig le kell ellenõrizni hogy sikerült-e megnyitni a fájlt.
 
new File:test = fopen(\"teszt.txt\", io_write);
if(test)
{
    print(\"A fájl megnyitása sikeres.\");
} else {
    print(\"A fájl-t nem sikerült megnyitni.\");
    // Ebben az esetben crashel a samp, ha fwrite van használatban.
}

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Crashelés parancsnál
« Válasz #6 Dátum: 2012. június 27. - 19:58:29 »
0 Show voters
Az élet parancsban nincs file kezelés.

Crashelés parancsnál
« Válasz #7 Dátum: 2012. június 27. - 20:03:32 »
0 Show voters
Idézetet írta: tudvari date=1340819909\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23403\" data-ipsquote-contentclass=\"forums_Topic
Az élet parancsban nincs file kezelés.
 
de a log szerint az miatt crashelt a szerver.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Crashelés parancsnál
« Válasz #8 Dátum: 2012. június 27. - 20:08:22 »
0 Show voters
Hát de nem tudom,mert pl.: a frakció parancsban sincs fájlkezelés,és pont akkor crashel a szerver,amikor beírja valaki a parancsot.De ez teljesen véletlen,hogy éppen melyik parancstól fog crashelni.

Crashelés parancsnál
« Válasz #9 Dátum: 2012. június 27. - 23:53:01 »
0 Show voters
A legelsõ postban benne van miért crashelt a szerver.
Azon nem tudom mit nem lehet megérteni.
 
Idézetet írta: tudvari date=1340742800\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23403\" data-ipsquote-contentclass=\"forums_Topic
Sziasztok,eddig nem volt ilyen hiba a szerveremen,de most van:
Random parancsoktól crashel a szervermvan amikor mûködik,van amikor meg crashel tõle.
Pl.: /elet-tel a hp-mat 100-ra akarom rakni.Crashel.
Resi után már nem crashel,de utána a meg a frakció módosítástól.Resi után már az is mûködik.Szóval nem tudom mi a logika a crashek között.
[22:37:45] [debug] Server crashed while executing loginom.amx
[22:37:45] [debug] AMX backtrace:
[22:37:45] [debug] #0  native fwrite () [00405710] from samp-server.exe
[22:37:45] [debug] #1  000015f8 in ?? () from loginom.amx
[22:37:45] [debug] #2  00001868 in ?? () from loginom.amx
[22:37:45] [debug] #3  00046468 in public AutomatikusMentes () from loginom.amx
[22:37:45] [debug] System backtrace:
[22:37:46] [debug] #0  00491f90 in ?? () from C:\\Users\\Tici\\Desktop\\Programozás\\0.3eTELJES\\samp-server.exe
[22:37:46] [debug] #1  0040534e in ?? () from C:\\Users\\Tici\\Desktop\\Programozás\\0.3eTELJES\\samp-server.exe
Ezt írja crashdetect.Automatikus Mentes-ben nem lehet hiba,mert azt gyakran lefuttatja,és akkor kb 10 mp után crashelnie kellet volna.
Ui.: mindig ezt írja ki,még ha más parancsnál crashel,akkor is.
 
A crash oka az automatikus mentés dolog  \"public AutomatikusMentes()\".
Ott egy native funkcióra jelzi a hibát mégpedig az \"fwrite\".
Ennek az okát leírtam egy korábbi hozzászólásban.
Az hogy most te próbálod összekötni abszolút nem a hiba okához való parancsok használatával, azzal csak a te dolgodat nehezíted meg.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Crashelés parancsnál
« Válasz #10 Dátum: 2012. június 28. - 07:34:04 »
0 Show voters
Azt nem értem,hogy igaz,hogy nem írtam if(fexist-et stb,de elõtte a timerben van az az if,hogy if(Belepve[playerid] == 1),és ez meg csak akkor 1,ha be van lépve,és cska akkor léphet be ha regisztrálva van,vagyis van fájl.És kilépéskor automatikusan 0 lesz a playerid Belepve változója.
Csak annyit kell csinálnom,hogy a timerhez rakjam be,hogy if(fexist - mentsen , if(!fexist - ne csináljon semmit?

Crashelés parancsnál
« Válasz #11 Dátum: 2012. június 28. - 17:26:58 »
0 Show voters
Az \"AutomatikusMentes\" mentés részbe írd bele.
Az hogy nem érted attól még a probléma fennáll, elõfordulhat hogy pont az ottani fájlmegnyitás rész pontatlan, oda írd bele az ellenõrzést.
De ha ide másolod azt a részt (\"AutomatikusMentes\")talán többet tudok mondani, míg csak te látod mi van ott, addig más nem tud segíteni.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Crashelés parancsnál
« Válasz #12 Dátum: 2012. június 28. - 17:36:16 »
0 Show voters
« Utoljára szerkesztve: 2012. június 28. - 17:38:33 írta tudvari »

Crashelés parancsnál
« Válasz #13 Dátum: 2012. június 28. - 17:54:49 »
+1 Show voters
Csoda hogy nem füstöl el a winchester.
Olyan 10 játékos létszámnál nincs lagg egy pöttyet?
Cseréld le a dini fájl kezelést valami egyszerûbbre.
Korábban írtam én valami szöszenetet valamilyen topicban, miszerint:
Minek mentesz olyan adatot ami nem változott meg? (valami technika ördöge felülírta valami hamis adattal talán)
Cseréld le mysql-re vagy valami gyorsabb adatmentésre az egészet.
A dini fájl kezelés egy katasztrófa.
Egyetlen egy adatsor átírása a következõbõl áll:
fájl megnyitás olvasásra
azonosítósor keresés
közben .part kiterjesztéssel újra írja a meglévõ fájlt soronként
ha megtalálta az azonosító sort akkor az új adattal felülírja értékét
törlés az eredeti fájlnak
majd az egész .part kiterjesztésû fájlt vissza írja eredeti állapotába
törlés a .part kiterjesztésû fájlnak.
Na szóval mivel törli az eredeti fájlt akkor elõfordulhat könnyedén hogy a következõ adatfelülírás már nem tudja megnyitni.
Egy szó mint száz, dinivel ennyi adatfelülírás egyszerre ilyen hibákat eredményez.
Javaslat:
Mivel úgyis az egész fájl tartalmát írod újra, ne használj dini-t, maradj a sima format, fopen, fwrite, megoldásnál.
Ez még mindig gyorsabb mint a dini.
Mivel csak törlöd az eredeti fájlt és létrehozod az újat minden adattal.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Crashelés parancsnál
« Válasz #14 Dátum: 2012. június 28. - 18:02:33 »
0 Show voters
Leírnád pls,hogy hogy kell normális módszerrel floatot,intet és stringet menteni ? köszi +1

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal