Szerző Téma: "Egy sor, egy leállás"  (Megtekintve 610 alkalommal)

"Egy sor, egy leállás"
« Dátum: 2012. október 30. - 14:53:05 »
0 Show voters
Sziasztok!
Az lenne a gondom, hogy ha ez a sor bent van a GM-ben, akkor a szerver betölt mindent, majd egy pillanat alatt leáll. (A server_log -ban nincs semmi)
A leállást okozó sor:
 
for(i = 0; i < MAXTUZ; i++)
        {

 
Ja, és nem ír rá Warningot se ERROR-t.
Spoiler for Stock amelyben szerepel a sor::
stock Tuz_OnPlayerUpdate(playerid)
{
#define HOLDING(%0) ((newkeys & (%0)) == (%0))
new newkeys,l,u;
GetPlayerKeys(playerid, newkeys, l, u);
new i;
new skin = GetPlayerSkin(playerid);
for(i = 0; i < MAXTUZ; i++)
{
   if(IsValidFire(i))
        {
            if( IsPlayerInRangeOfPoint(playerid, 15, Tuz[TuzPos][0],  Tuz[TuzPos][1],  Tuz[TuzPos][2]))
   {
      new skin = GetPlayerSkin(playerid);
      if(PlayerInfo[playerid][Animban] = 0 && skin != 277 && skin != 278 && skin != 279)
      {
         format(stringx, sizeof(stringx), \"Rosszul lettél, oka: Égés\");
           strmid(PlayerInfo[playerid][serules1], stringx, 0, strlen(stringx), 255);
           SendClientMessage(playerid, COLOR_LIGHTRED,stringx);
          SendClientMessage(playerid, COLOR_LIGHTRED, \"Hívd a tûzoltókat! (( /112 ))\");
           PlayerInfo[playerid][Animban] = 1;
         healthplayer[playerid] = 0;
         ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.0, 1, 0, 0, 0, 0);
         TogglePlayerControllable(playerid,0);
           return 1;
      }
      //GiveHealth(playerid,-0.1);
   }
   if(HOLDING(KEY_FIRE))
   {
      if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 407 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
      {
         for(i = 0; i < MAXTUZ; i++)
         {
            if(IsValidFire(i))
            {
               if(IsPlayerAimingAt(playerid, Tuz[TuzPos][0],  Tuz[TuzPos][1],  Tuz[TuzPos][2], 2.5) && IsPlayerInRangeOfPoint(playerid, 20.0, Tuz[TuzPos][0],  Tuz[TuzPos][1],  Tuz[TuzPos][2]))
               {
                  Tuz[TuzHP]-=2;
                  if(Tuz[TuzHP] <= 0)
                  {
                     Tuz_Torles(i);
                     //OnTuzoltas(i,playerid);
                  }
               }
            }
         }
      }
            else if(GetPlayerWeapon(playerid) == 42 && PlayerFaces(playerid, Tuz[TuzPos][0],  Tuz[TuzPos][1],  Tuz[TuzPos][2], 1) && IsPlayerInRangeOfPoint(playerid, 4, Tuz[TuzPos][0],  Tuz[TuzPos][1],  Tuz[TuzPos][2]))
          {
             Tuz[TuzHP]-=2;
          if(Tuz[TuzHP] <= 0)
          {
            Tuz_Torles(i);
            //OnTuzoltas(i,playerid);
                 }
      }
   }
}
}
return 1;
}

 
A segítséget elõre is köszönöm!

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
"Egy sor, egy leállás"
« Válasz #1 Dátum: 2012. október 30. - 15:40:46 »
0 Show voters
Probáld  meg így ezt a sort kicserélni és ezt tedd helyette:
 

for (new i = 0; i < MAXTUZ; i ++)
{

Nem elérhető divkn

  • 3259
    • Profil megtekintése
"Egy sor, egy leállás"
« Válasz #2 Dátum: 2012. október 30. - 16:24:09 »
0 Show voters
Idézetet írta: ZyZu date=1351608046\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"29251\" data-ipsquote-contentclass=\"forums_Topic
Probáld  meg így ezt a sort kicserélni és ezt tedd helyette:
 

for (new i = 0; i < MAXTUZ; i ++)
{

 

Ez nem fog javítani a helyzeten, mivel dupla ciklus van ugyan azzal a változóval.
A kód tartalmaz olyan funkciókat amiket nem értek ( PlayerFaces a lekérdezésnél ) és változók duplán szerepelnek 1-2 helyen.
Például 7. és a 14. sorban a szerepel ugyan az a ( GetPlayerSkin ) lekérdezés.
15. sorban a lekérdezésben is van egy apró hiba.
 
if(PlayerInfo[playerid][Animban] == 0 && skin != 277 && skin != 278 && skin != 279)

 
Legtöbbször ajánlani szoktam a print, printf féle praktikát.
Minden lekérdezéskor, ciklusoknál, ... megadok egy számot amit kiíratok a a konzolba. Így tudom ellenõrizni hogy
hol lehet a hiba.
 

main( )
{
    print(\"1\");
    for( new i = 0; i < 10; i++ )
    {
        print(\"2\");
        if( i == 5 )
        {
            print(\"3\");
        }
    }
    print(\"4\");
}

"Egy sor, egy leállás"
« Válasz #3 Dátum: 2012. október 31. - 13:39:01 »
0 Show voters
Idézetet írta: divkn date=1351610649\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"29251\" data-ipsquote-contentclass=\"forums_Topic
Legtöbbször ajánlani szoktam a print, printf féle praktikát.
Minden lekérdezéskor, ciklusoknál, ... megadok egy számot amit kiíratok a a konzolba. Így tudom ellenõrizni hogy
hol lehet a hiba.
 

main( )
{
    print(\"1\");
    for( new i = 0; i < 10; i++ )
    {
        print(\"2\");
        if( i == 5 )
        {
            print(\"3\");
        }
    }
    print(\"4\");
}

 

Ezt már használtam. De újra beraktam. Már az \"1. számú\" print-t sem írja ki :/

Nem elérhető rewan

  • 960
    • Profil megtekintése
"Egy sor, egy leállás"
« Válasz #4 Dátum: 2012. október 31. - 14:13:37 »
0 Show voters
A main() az OnGameModeInit() után hívódik meg.
Tehát abban keresd a ludast.

"Egy sor, egy leállás"
« Válasz #5 Dátum: 2012. október 31. - 15:07:22 »
0 Show voters
Idézetet írta: rewan date=1351689217\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"29251\" data-ipsquote-contentclass=\"forums_Topic
A main() az OnGameModeInit() után hívódik meg.
Tehát abban keresd a ludast.
 
Nem értem, a hiba meg van sorra pontosan. Ki is írtam.

Dupla hozzászólás automatikusan összefûzve. ( 2012. november 01. - 17:22:44 )

Nos, senki? :(
« Utoljára szerkesztve: 2012. november 01. - 17:22:44 írta Dommper »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal