Szerző Téma: Csak egy adott csoport vezethesse a jármûvet  (Megtekintve 1412 alkalommal)

dexi

  • Vendég
Csak egy adott csoport vezethesse a jármûvet
« Dátum: 2011. november 20. - 10:04:00 »
0 Show voters
Hali, azt szeretném elérni hogy vannak ezek a kocsik:
[pawn]AddStaticVehicle(525,217.5402,-268.0156,1.4570,2.3690,1,3); //Sz1
AddStaticVehicle(525,211.4812,-268.0810,1.4718,0.7691,1,3); //Sz2
AddStaticVehicle(525,205.4929,-267.8530,1.4310,0.6368,1,3); // Sz3
AddStaticVehicle(525,199.1742,-267.8936,1.4619,2.7793,1,3); // Sz4
AddStaticVehicle(525,198.0057,-252.6534,1.4676,180.4020,1,3); // Sz5
AddStaticVehicle(525,204.6444,-252.2746,1.4492,182.6598,1,3); // Sz6[/pawn]
És ezeket a kocsikat csak a
gMunka[playerid] = SZERELO 

 tagjai tudják használni, ha nem szerelõ az illetõ akkor meg dobja ki hogy \"Nem vagy szerelõ!\"

Csak egy adott csoport vezethesse a jármûvet
« Válasz #1 Dátum: 2011. november 20. - 11:09:45 »
0 Show voters
[pawn]
//Mód tetejére global változóként:
new Sz[6];
Sz[0] = AddStaticVehicle(525,217.5402,-268.0156,1.4570,2.3690,1,3); //Sz1
Sz[1] = AddStaticVehicle(525,211.4812,-268.0810,1.4718,0.7691,1,3); //Sz2
Sz[2] = AddStaticVehicle(525,205.4929,-267.8530,1.4310,0.6368,1,3); // Sz3
Sz[3] = AddStaticVehicle(525,199.1742,-267.8936,1.4619,2.7793,1,3); // Sz4
Sz[4] = AddStaticVehicle(525,198.0057,-252.6534,1.4676,180.4020,1,3); // Sz5
Sz[5] = AddStaticVehicle(525,204.6444,-252.2746,1.4492,182.6598,1,3); // Sz6
public
OnPlayerStateChange(playerid, newstate, oldstate)
{
if(IsPlayerNPC(playerid)) return 1;
if(newstate == PLAYER_STATE_DRIVER)
{
   if(gMunka[playerid] != SZERELO)
   {
      new
         vehicleid = GetPlayerVehicleID(playerid);
      for(new i; i < sizeof(Sz); i++)
      {
         if(vehicleid == Sz)

         {


            SendClientMessage(playerid, -1, \"Nem vagy szerelõ!\");


            RemovePlayerFromVehicle(playerid);


            return 1;


         }


      }


   }


}


return 1;


}


[/pawn]


Itt egy másik változat:


[pawn]public


OnPlayerStateChange(playerid, newstate, oldstate)


{


if(IsPlayerNPC(playerid)) return 1;


if(newstate == PLAYER_STATE_DRIVER)


{


   if(gMunka[playerid] != SZERELO)


   {


      switch(GetPlayerVehicleID(playerid))


      {


         case Sz[0], Sz[1], Sz[2], Sz[3], Sz[4], Sz[5]:


         {


            SendClientMessage(playerid, -1, \"Nem vagy szerelõ!\");


            RemovePlayerFromVehicle(playerid);


            return 1;


         }


      }


   }


}


return 1;


}[/pawn]


Egyiket se teszteltem.

Csak egy adott csoport vezethesse a jármûvet
« Válasz #2 Dátum: 2011. november 20. - 11:21:38 »
0 Show voters
Az AddStaticVehicle helyett CreateVehicle és jó is lesz.

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
Csak egy adott csoport vezethesse a jármûvet
« Válasz #3 Dátum: 2011. november 20. - 13:01:50 »
0 Show voters
Idézetet írta: subzero date=1321784498\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13563\" data-ipsquote-contentclass=\"forums_Topic
Az AddStaticVehicle helyett CreateVehicle és jó is lesz.
 
Te mirõl is beszélsz?

dexi

  • Vendég
Csak egy adott csoport vezethesse a jármûvet
« Válasz #4 Dátum: 2011. november 20. - 13:46:19 »
0 Show voters
Köszi sikerült amit írtál de lenne még egy gondom nem akarok emiatt újat nyitni mert szinte ugyanez...
[pawn]      public OnPlayerStateChange(playerid, newstate, oldstate)
    {
            if(newstate == PLAYER_STATE_DRIVER)
            {
            if(gMunka[playerid] != SZERELO)
            {
            new vehicleid = GetPlayerVehicleID(playerid);
            for(new i; i < sizeof(Sz); i++)
            {
            if(vehicleid == Sz)

            {


            SendClientMessage(playerid, RED, \"Nem vagy szerelõ!\");


            RemovePlayerFromVehicle(playerid);


            }


            }


            }


            return 1;


            }


            if(newstate == PLAYER_STATE_DRIVER)


            {


            if(gMunka[playerid] != CLEANER)


            {


            new


            vehicleid = GetPlayerVehicleID(playerid);


            for(new i; i < sizeof(Sz); i++)


            {


            if(vehicleid == Ut
)

            {


            SendClientMessage(playerid, RED, \"Nem vagy út tisztító!\");


            RemovePlayerFromVehicle(playerid);


            }


            }


            }


            return 1;


            }


return 0;}[/pawn]


Ugyan azt akartam mint a szerelõsnél csak itt tisztítóssal..(CLEANER)


Valamiért nem akar menni... bárki tudja használni a CLEANER kocsikat..

Csak egy adott csoport vezethesse a jármûvet
« Válasz #5 Dátum: 2011. november 20. - 13:59:52 »
0 Show voters
Idézetet írta: Dream1990 date=1321790510\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13563\" data-ipsquote-contentclass=\"forums_Topic


Az AddStaticVehicle helyett CreateVehicle és jó is lesz.
 
Te mirõl is beszélsz?
 
[/quote]
Csak arról, hogy az AddStaticVehicle visszatérési értéke 1 vagy 0, nem a jármû azonosítószáma.  :)
Úttisztítónál próbáld meg a cikulusban sizeof(Sz) helyett sizeof(Ut)-vel!

dexi

  • Vendég
Csak egy adott csoport vezethesse a jármûvet
« Válasz #6 Dátum: 2011. november 20. - 14:06:37 »
0 Show voters
Ennyire nem néztem át.. ::| :mistrust:.... meglesem jó e úgy. jelentkezem
E: Nem jó ígysem.. .:s
« Utoljára szerkesztve: 2011. november 20. - 14:08:35 írta dexi »

Csak egy adott csoport vezethesse a jármûvet
« Válasz #7 Dátum: 2011. november 20. - 17:24:41 »
0 Show voters
Idézetet írta: subzero date=1321793992\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13563\" data-ipsquote-contentclass=\"forums_Topic
Csak arról, hogy az AddStaticVehicle visszatérési értéke 1 vagy 0, nem a jármû azonosítószáma.  :)
 
Rosszul tudod.
 
Returns   The vehicle ID of the vehicle created.[/quote]
http://wiki.sa-mp.com/wiki/AddStaticVehicle
@dexi
Hogy lehet így átírni amit feljebb postolok ennyire rosszra miért kell a return 1; -et kivenni belõle?
És átrakni máshova, az azért van ott mert pont akkor igaz az összes feltétel a játékos nem tagja a SZERELO teamnek és olyan jármûvet próbál használni amit neki nem szabad. ezért kiszedjük a jármûbõl elküldünk egy üzenetet neki és return 1; -el kilépünk a további ciklusból/feltétel vizsgálatokból mert nincs rá szükség.
[pawn]public
OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
   new
      vehicleid = GetPlayerVehicleID(playerid);
   if(gMunka[playerid] != SZERELO)
   {
      for(new i; i < sizeof(Sz); i++)
      {
         if(vehicleid == Sz)

         {


            SendClientMessage(playerid, RED, \"Nem vagy szerelõ!\");


            RemovePlayerFromVehicle(playerid);


            return 1;


         }


      }


   }


   if(gMunka[playerid] != CLEANER)


   {


      for(new i; i < sizeof(Ut); i++)


      {


         if(vehicleid == Ut
)

         {


            SendClientMessage(playerid, RED, \"Nem vagy út tisztító!\");


            RemovePlayerFromVehicle(playerid);


            return 1;


         }


      }


   }


}


return 1;


}[/pawn]
« Utoljára szerkesztve: 2011. november 20. - 17:38:38 írta Zsolesszka »

Csak egy adott csoport vezethesse a jármûvet
« Válasz #8 Dátum: 2011. november 20. - 18:38:45 »
0 Show voters
Bocs a téves infóért, gondoltam ez is azon az elven alapul mint az AddStaticPickup.
Egyébként a ciklusban feltétlen szükséges az 1-es visszatérési érték ha a callback alapból 1-re tér vissza? Vagy a return 1 arra szolgál a ciklusban, hogy megállítja?
« Utoljára szerkesztve: 2011. november 20. - 18:46:41 írta subzero »

Csak egy adott csoport vezethesse a jármûvet
« Válasz #9 Dátum: 2011. november 20. - 18:45:10 »
0 Show voters
Idézetet írta: subzero date=1321810725\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13563\" data-ipsquote-contentclass=\"forums_Topic
Bocs a téves infóért, gondoltam ez is azon az elven alapul mint az AddStaticPickup.
Egyébként a ciklusban feltétlen szükséges az 1-es visszatérési érték ha a callback alapból 1-re tér vissza?
 
Itt nem az a lényeg jelenleg hogy visszatérés értéke mennyi, hanem hogy a további futást leállítja nincs felesleges vizsgálat végrehajtva tovább.
Másképp: Ha a játékos beül a legelsõ jármûbe \"Sz[0]\" (idézet a kódból) akkor kitesszük a jármûbõl üzenetet jelenítünk meg és nincs szükség tovább arra hogy ellenõrizzük hogy a többi jármûben van-e (sz[1], Sz[2], stb mivel egy idõben nem lehet több jármûben) hanem egyszerûen kilépünk az egészbõl return 1; és a többi ellenõrzést/vizsgálatot sem hajtjuk végre. (mert minek?)

Csak egy adott csoport vezethesse a jármûvet
« Válasz #10 Dátum: 2011. november 20. - 18:48:53 »
0 Show voters
Fúú most editeltem elõzõ hsz-em. Eddig azt hittem ciklusban csak a break és a continue használható.  :o

Csak egy adott csoport vezethesse a jármûvet
« Válasz #11 Dátum: 2011. november 20. - 19:00:53 »
0 Show voters
Idézetet írta: subzero date=1321811333\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13563\" data-ipsquote-contentclass=\"forums_Topic
Fúú most editeltem elõzõ hsz-em. Eddig azt hittem ciklusban csak a break és a continue használható.  :o
 
Hát nem csak azok használhatók lehetséges hogy a goto utasítás is befejezi.
Egy ciklusban a break befejezi a ciklus folyamatot de nem lép ki a visszahívásból, (további vizsgálatok lefutnak) ha return -t írsz akkor nem csak a ciklusból lép ki hanem a visszahívásból is. (további vizsgálatok nem kerülnek végrehajtásra)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal