Szerző Téma: Lagg  (Megtekintve 1449 alkalommal)

Nem elérhető Tomee

  • 385
    • Profil megtekintése
Lagg
« Dátum: 2011. december 27. - 14:06:30 »
0 Show voters
Hello!
Mi okozhatja egy mód laggját? Vagyis, hogy mitõl laggolhat be a szeró, hogy a chatboxban is 5mp múlva jelenik meg a szöveg meg hasonlók?

Nem elérhető Sheet

  • 1508
  • Támogató
    • Profil megtekintése
Lagg
« Válasz #1 Dátum: 2011. december 27. - 14:07:12 »
0 Show voters
Ping, mysql, timerek

Nem elérhető Tomee

  • 385
    • Profil megtekintése
Lagg
« Válasz #2 Dátum: 2011. december 27. - 14:56:15 »
0 Show voters
Ping az nem nagyon van csak néha amikor felmegy valakinek 200fölé de pár napja akkor sem volt ilyen.
Mysql az nincs
Timer meg 15 van. Az nagyon sok?
Más nem okozhatja? Esetleg object?
Néha még újra is indul a szerver.

Nem elérhető Sheet

  • 1508
  • Támogató
    • Profil megtekintése
Lagg
« Válasz #3 Dátum: 2011. december 27. - 14:59:04 »
0 Show voters
15 timer az kevés :D
Object okozhatja, valamint ha valami parancsal túlterheled a gépet, akkor amiatt is lehet.

Nem elérhető Tomee

  • 385
    • Profil megtekintése
Lagg
« Válasz #4 Dátum: 2011. december 27. - 15:00:49 »
0 Show voters
Szóval ha van egy parancs, amit használnak az túlterheli a dolgokat, és onastól kezdõdik a lagg?

Nem elérhető Game94

  • 405
    • Profil megtekintése
Lagg
« Válasz #5 Dátum: 2011. december 27. - 15:05:51 »
0 Show voters
Nincs esetleg sok változó a módban ?
Nincsenek olyan sorok amik fölöslegesen futnak le ?
Nincs olyan ciklus, ami többször fut le mint kéne? (pl. lefuttatod egy 500 slotos szerveren mind az 500 sloton, miközben 10 player van fent)
Milyen FS-eket használsz ?

Nem elérhető Tomee

  • 385
    • Profil megtekintése
Lagg
« Válasz #6 Dátum: 2011. december 27. - 15:19:44 »
0 Show voters
FSek jelenleg nincsenek.
Változó az van bõven. Lehet, hogy hülyeség, de nem lehet az gond, hogy a bool változóból sok van?
Nem tudom, hogy mik futnak fölöslegesen.

Nem elérhető Game94

  • 405
    • Profil megtekintése
Lagg
« Válasz #7 Dátum: 2011. december 27. - 15:28:38 »
0 Show voters
Ha nagyon sok változód van az okozhat gondokat, de a bool változó elvileg nem okozhat gondot.

Nem elérhető Tomee

  • 385
    • Profil megtekintése
Lagg
« Válasz #8 Dátum: 2011. december 27. - 15:41:08 »
0 Show voters
Idézetet írta: Game94 date=1324994751\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"14764\" data-ipsquote-contentclass=\"forums_Topic
Nincs olyan ciklus, ami többször fut le mint kéne? (pl. lefuttatod egy 500 slotos szerveren mind az 500 sloton, miközben 10 player van fent)
 
És egy ilyet, hogy lehet kiküszöbölni? Vagyis egyáltalán, hogy találjam meg ha van olyan?
==
Azt hiszem megtaláltam a probléma okozóját. Sõt 95%-ban biztos vagyok benne.
A problémát az autórendszerben találtam meg. És azon belül a autó nyitása és zárása.
\"/v lock\" parancs.
Mivel ez úgy lett megoldva, hogy amikor használjuk a parancsot az összes szerveren lévõ jármûvet átnézi és kiválasztja, hogy melyik van a közelemben.
És még azon belül, ha az a jármû ami a közelemben van egy megvett jármû akkor az még lekérdezi, hogy az autó az én nevemen van.e elmentve és ha igen akkor nyitva van vagy zárva.
 
else if(strcmp(x_nr,\"lock\",true) == 0)
{
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
            {
       for(new i; i != MAX_VEHICLES; i++)
       {
           new dist = CheckPlayerDistanceToVehicle(3.5, playerid, i);
           if(dist)
           {
               kocsi = i;
               counter++;
           }
       }
       switch(counter)
       {
           case 0: { SendClientMessage(playerid, -1, \"*Nincs jármû a közeledben.\"); }
           case 1:
           {
              if(strcmp(jatekosneve, CarInfo[kocsi][cOwner], true) == 0)
              {
                  if(CarInfo[kocsi][cLock] == 1)
                   {
                  SendClientMessage(playerid,-1\"*Kinyitottad a jármûvet\");
                  CarInfo[kocsi][cLock] = 0;
                  GetVehicleParamsEx(kocsi,engine,lights,alarm,doors,bonnet,boot,objective);
                  SetVehicleParamsEx(kocsi,engine,lights,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective);
                  JarmuvekMentese(kocsi);
               } else if(CarInfo[kocsi][cLock] == 0) {
                  SendClientMessage(playerid,-1\"*Bezártad a jármûvet\");
                  CarInfo[kocsi][cLock] = 1;
                  GetVehicleParamsEx(kocsi,engine,lights,alarm,doors,bonnet,boot,objective);
                  SetVehicleParamsEx(kocsi,engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
                  JarmuvekMentese(kocsi);
               }
               return 1;
              } else { SendClientMessage(playerid,-1, \"*Ez nem a te jármûved.\"); }
          }
      }
   }
}

 
Legalábbis ez az én tippem, hogy ez a gond. De lehet más oka is. Pár dolgot próbálgattam még rajta, de ugyan úgy belaggolt a játék. Kérdésem, hogy meglehet-e oldani ezt a fajta módszert egyszerûbben? Mert ha nem akkor megtudom csinálni lebutítva hogy ne így kuksolja végig a kocsikat meg minden. De azt meg nem nagyon akarom. De ha muszáj akkor megteszem
« Utoljára szerkesztve: 2011. december 27. - 16:12:01 írta Tomee »

Nem elérhető Game94

  • 405
    • Profil megtekintése
Lagg
« Válasz #9 Dátum: 2011. december 27. - 16:56:34 »
0 Show voters
Nem, szerintem nem ezzel lesz a gond.
Amirõl én beszéltem azt így lehet kiküszöbölni:
[pawn]for(new i = 0; i < MAX_PLAYERS; i++)
         {
            if(IsPlayerConnected(i))
            {
               //valami történjen
            }
         }[/pawn]
Ezt azért jó így használni, mert ha az adott játékos nincs csatlakozva akkor nem futnak le fölöslegesen a sorok.
Néhány ciklusnál még nem is olyan fontos, de egy komolyabb módban már okozhat problémát.

Lagg
« Válasz #10 Dátum: 2011. december 27. - 19:09:21 »
0 Show voters
Vagy foreach include, mert ez egybõl kihagyja az üres playerslotokat.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal