Szerző Téma: Ciklushiba  (Megtekintve 959 alkalommal)

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Ciklushiba
« Dátum: 2014. Március 23. - 23:27:25 »
0 Show voters
Sziasztok!
Ez miért nem mûködik?
A lényege az,hogy beírsz egy V-s kocsi ID-t,és hozzád teleportálja.De minden ID-re azt írja,hogy nincs ilyen.Szerintem jónak kéne lennie,de úgy látszik mégsem.Elõre is köszönöm a segítséget.
 
if (sscanf(params,\"i\", id)) return SendClientMessage(playerid,SZURKE, \"Használat: /getv [V-s kocsi ID-je]\");
   {
      for(new i=0;i>=MAX_VEHICLES;i++)
      {
          if(JarmuInfo[iD] == id)
          {
            veh = i;
          }
      }
      if(veh == 0) return SendClientMessage(playerid,HIBA,\"Nincs ilyen V-s kocsi!\");
      new Float:x,Float:y,Float:z;
      GetPlayerPos(playerid,x,y,z);
      SetVehiclePos(veh,x,y,z);
      new string[256];
      format(string,sizeof(string),\"%s magához teleportáltatta a %d-s ID-jû V-s kocsit!\",GetPlayerNameEx(playerid),id);
      AdminnakUzenet(VNARANCS,string,2);
      format(string,sizeof(string),\"Magadhoz teleportáltad a %d-s ID-jû V-s kocsi!\",id);
      SendClientMessage(playerid,VKEK,string);
 
   }

Ciklushiba
« Válasz #1 Dátum: 2014. Március 23. - 23:37:51 »
0 Show voters
Nem oldja meg a hibát(bár lehet), használj foreach-ot, sokkal gyorsabb ciklust, és nem kell semmit létrehoznod, csupán csinálsz iterátort, beleírod a jármût és már vonatkozhat az összes valódi jármûre.
http://sampforum.hu/index.php?topic=12093.0

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Ciklushiba
« Válasz #2 Dátum: 2014. Március 23. - 23:48:34 »
0 Show voters
Idézetet írta: Konstantin date=1395614271\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47340\" data-ipsquote-contentclass=\"forums_Topic
Nem oldja meg a hibát(bár lehet), használj foreach-ot, sokkal gyorsabb ciklust, és nem kell semmit létrehoznod, csupán csinálsz iterátort, beleírod a jármût és már vonatkozhat az összes valódi jármûre.
http://sampforum.hu/index.php?topic=12093.0
 
A foreach is for ciklust használ...


Esetleg veh == invaild vehicle id, vagy ugyenz id == -vel?

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Ciklushiba
« Válasz #3 Dátum: 2014. Március 24. - 00:03:38 »
0 Show voters
Az nem jó,mert itt nem vehicleid-t nézek.Hanem a jármûveknek csináltam egy változót,ami a V-s kocsi ID-jük.
0 ha normál kocsi(frakció,munka stb.),és valamilyen más pozitív szám,ha van tulajdonosa.

Ciklushiba
« Válasz #4 Dátum: 2014. Március 24. - 00:24:38 »
0 Show voters
Idézetet írta: Dfoglalo date=1395614914\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47340\" data-ipsquote-contentclass=\"forums_Topic


Nem oldja meg a hibát(bár lehet), használj foreach-ot, sokkal gyorsabb ciklust, és nem kell semmit létrehoznod, csupán csinálsz iterátort, beleírod a jármût és már vonatkozhat az összes valódi jármûre.
http://sampforum.hu/index.php?topic=12093.0
 
A foreach is for ciklust használ...


Esetleg veh == invaild vehicle id, vagy ugyenz id == -vel?
 
[/quote]
hatalmas különbség van ez:
foreach(Playeri, i)

 és ez:
for(new i=0;i>=MAX_PLAYERS;i++)

 sokkal gyorsabb a for ciklusnál, de a foreach nem csak erre jó, de ha a kérdezõ is ezt használná könnyebb dolga is lenne.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Ciklushiba
« Válasz #5 Dátum: 2014. Március 24. - 01:03:28 »
0 Show voters
De attól még nem lesz jó a scriptem.
Ui.: Ez az iterátor pontosan mit is takar?Rendben,hogy ha az iterátor Player/NPC,akkor playerekön,npc-ken fut le,de mi máson lehet még?

Nem elérhető divkn

  • 3259
    • Profil megtekintése
Ciklushiba
« Válasz #6 Dátum: 2014. Március 24. - 01:21:27 »
0 Show voters
Nem tudom hogy hogyan oldottad meg, de nincs szükség szerintem a ciklusra.
 

CMD:getv(playerid,params[])
{
    new id;
    if (sscanf(params,\"i\", id)) return SendClientMessage(playerid,SZURKE, \"Használat: /getv [V-s kocsi ID-je]\");
    // Ha megadott jármû létezik-e és V-s kocsi, akkor...
    if(IsValidVehicle(id) && bool:JarmuInfo[id][Vs_kocsi] == true)
    {
        new Float:p[3];
        GetPlayerPos(playerid,p[0],p[1],p[2]);
        SetVehiclePos(id,p[0],p[1],p[2]);
        // ...
    }
    return 1;
}

 


Foreach csak azért gyorsabb, mert csak annyiszor ismétlõdik, amennyi értéket megadtál/megadott a szerver.
Errõl van egy egszerûbb változata. http://sampforum.hu/index.php?topic=49300

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Ciklushiba
« Válasz #7 Dátum: 2014. Március 24. - 01:26:25 »
+1 Show voters
for(new i=0;i>=MAX_VEHICLES;i++)

 
nem tudom hogy  címet elolvasva nektek miért nem bökte ki a szemeteket (fõleg a téma nyitónak)...én ránézésbõl megláttam hogy ennek nem így kéne kinéznie!
 
new i=0;i>=MAX_VEHICLES

 
i = 0 és a ciklus addig fut amíg i értéke 2000 VAGY ANNÁL NAGYOBB!
ja és ide raknék 1 break-et: (ha már úgyis meg van a jármû azonosító ne nézze tovább...
 
veh = i;
« Utoljára szerkesztve: 2014. Március 24. - 01:28:58 írta Kovacs_Richard »
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Ciklushiba
« Válasz #8 Dátum: 2014. Március 24. - 09:13:46 »
0 Show voters
Jaaaj köszi :D::D:D
Nem vettem észre xd
Egyébként kell oda ciklus.
Mert nem vehicleid-t ír be a játékos,hanem a V-s kocsijáak a számát,ami különbözik a vehicleid-tõl.És a játékos csak a kosijának a számát tudja,a vehicleid-t nem.
Köszönöm a segítséget.+1
Zárom!

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Ciklushiba
« Válasz #9 Dátum: 2014. Március 23. - 23:27:25 »
0 Show voters
Sziasztok!
Ez miért nem mûködik?
A lényege az,hogy beírsz egy V-s kocsi ID-t,és hozzád teleportálja.De minden ID-re azt írja,hogy nincs ilyen.Szerintem jónak kéne lennie,de úgy látszik mégsem.Elõre is köszönöm a segítséget.
 
if (sscanf(params,\"i\", id)) return SendClientMessage(playerid,SZURKE, \"Használat: /getv [V-s kocsi ID-je]\");
   {
      for(new i=0;i>=MAX_VEHICLES;i++)
      {
          if(JarmuInfo[iD] == id)
          {
            veh = i;
          }
      }
      if(veh == 0) return SendClientMessage(playerid,HIBA,\"Nincs ilyen V-s kocsi!\");
      new Float:x,Float:y,Float:z;
      GetPlayerPos(playerid,x,y,z);
      SetVehiclePos(veh,x,y,z);
      new string[256];
      format(string,sizeof(string),\"%s magához teleportáltatta a %d-s ID-jû V-s kocsit!\",GetPlayerNameEx(playerid),id);
      AdminnakUzenet(VNARANCS,string,2);
      format(string,sizeof(string),\"Magadhoz teleportáltad a %d-s ID-jû V-s kocsi!\",id);
      SendClientMessage(playerid,VKEK,string);
 
   }

Ciklushiba
« Válasz #10 Dátum: 2014. Március 23. - 23:37:51 »
0 Show voters
Nem oldja meg a hibát(bár lehet), használj foreach-ot, sokkal gyorsabb ciklust, és nem kell semmit létrehoznod, csupán csinálsz iterátort, beleírod a jármût és már vonatkozhat az összes valódi jármûre.
http://sampforum.hu/index.php?topic=12093.0

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Ciklushiba
« Válasz #11 Dátum: 2014. Március 23. - 23:48:34 »
0 Show voters
Idézetet írta: Konstantin date=1395614271\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47340\" data-ipsquote-contentclass=\"forums_Topic
Nem oldja meg a hibát(bár lehet), használj foreach-ot, sokkal gyorsabb ciklust, és nem kell semmit létrehoznod, csupán csinálsz iterátort, beleírod a jármût és már vonatkozhat az összes valódi jármûre.
http://sampforum.hu/index.php?topic=12093.0
 
A foreach is for ciklust használ...


Esetleg veh == invaild vehicle id, vagy ugyenz id == -vel?

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Ciklushiba
« Válasz #12 Dátum: 2014. Március 24. - 00:03:38 »
0 Show voters
Az nem jó,mert itt nem vehicleid-t nézek.Hanem a jármûveknek csináltam egy változót,ami a V-s kocsi ID-jük.
0 ha normál kocsi(frakció,munka stb.),és valamilyen más pozitív szám,ha van tulajdonosa.

Ciklushiba
« Válasz #13 Dátum: 2014. Március 24. - 00:24:38 »
0 Show voters
Idézetet írta: Dfoglalo date=1395614914\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47340\" data-ipsquote-contentclass=\"forums_Topic


Nem oldja meg a hibát(bár lehet), használj foreach-ot, sokkal gyorsabb ciklust, és nem kell semmit létrehoznod, csupán csinálsz iterátort, beleírod a jármût és már vonatkozhat az összes valódi jármûre.
http://sampforum.hu/index.php?topic=12093.0
 
A foreach is for ciklust használ...


Esetleg veh == invaild vehicle id, vagy ugyenz id == -vel?
 
[/quote]
hatalmas különbség van ez:
foreach(Playeri, i)

 és ez:
for(new i=0;i>=MAX_PLAYERS;i++)

 sokkal gyorsabb a for ciklusnál, de a foreach nem csak erre jó, de ha a kérdezõ is ezt használná könnyebb dolga is lenne.

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Ciklushiba
« Válasz #14 Dátum: 2014. Március 24. - 01:03:28 »
0 Show voters
De attól még nem lesz jó a scriptem.
Ui.: Ez az iterátor pontosan mit is takar?Rendben,hogy ha az iterátor Player/NPC,akkor playerekön,npc-ken fut le,de mi máson lehet még?

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal