GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: speti9603 - 2014. február 12. - 16:12:03

Cím: több cp bug
Írta: speti9603 - 2014. február 12. - 16:12:03
üdv hogy tudnám megcsinálni ha belemegyek egy cpbe akkor végrehatjsa az adott parancsot majd megjelenik a kövi cp és ott is majd az utolsó ahol szintén parancsot hajt végre
 
public OnPlayerEnterCheckpoint(playerid)
{
   
    if(checkpoint[playerid]==1){
new frand = random(2);
   switch(frand)
{
   case 0: { SendClientMessage(playerid,COLOR_WHITE,\"*titok mi van ide írva*\"); DisablePlayerCheckpoint(playerid);SetPlayerCheckpoint(playerid,1273.3054,296.6645,19.5547,3);checkpoint[playerid]=2;GetPlayerSkin(playerid); }
   case 1: { SendClientMessage(playerid,COLOR_RED,\"*ez is titok*\"); SpawnPlayer(playerid); SetPlayerTeam(playerid,TEAM_RAB); DisablePlayerCheckpoint(playerid);
           }
}
   
    if(checkpoint[playerid]==2){
SendClientMessage(playerid,COLOR_ORANGE,\"titok\");
                SendClientMessage(playerid,COLOR_WHITE,\"titok\");
                DisablePlayerCheckpoint(playerid);
                SetPlayerCheckpoint(playerid,1273.3054,296.6645,19.5547,3);checkpoint[playerid]=3;
      SetPlayerSkin(playerid, 189);
}
   
    if(checkpoint[playerid]==3){
SendClientMessage(playerid,COLOR_GREEN,\"titok\");
                SetPlayerScore(playerid, GetPlayerScore(playerid) + 200);
       DisablePlayerCheckpoint(playerid);
      SetPlayerSkin(playerid, GetPlayerSkin(playerid));
      SetPlayerTeam(playerid,TEAM_RAB);
      SpawnPlayer(playerid);
}
}
    return 1;
}

 
mert itt az a gond ha belemegyek az elsõ cpbe akkor lefut az egész egybe...
Cím: több cp bug
Írta: TheDon - 2014. február 12. - 19:15:19
mert minden case végén kell break;   vagyis: case 0: {valami; break;}
Cím: több cp bug
Írta: Dfoglalo - 2014. február 12. - 19:24:54
Idézetet írta: TheDon date=1392228919\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46466\" data-ipsquote-contentclass=\"forums_Topic
mert minden case végén kell break;   vagyis: case 0: {valami; break;}
 
Sehová sem kötelezõ a break, anélkül is mûködik (de berakható, habár én sosem tettem, nem nagy gáz, ha a többit is csekkolja, habár tényleg fölösleges)... Amúgy a switch-be tett érték mindig a következõ CP értéke legyen. Ezt mindig a CP-be éréskor állítsd, és menj is végig az elágazáson, az új értékkel. Így mindig a soron következõ CP-t fogod kapni. Tehát amikor a CP-be ér a játékos, az érték növekedjen 1-el, és utána futtasd le az elágazást. Ja és kösd playerid-hez a switch-ben megadott értéket, mert keveredés lesz, ha nem.
 
public OnPlayerEnterCheckpoint(playerid)
{
    EzaCPjon[playerid]++;
    switch(EzaCPjon[playerid])
    {
        {
            case 0: { SendClientMessage(playerid,COLOR_WHITE,\"*titok mi van ide írva*\"); DisablePlayerCheckpoint(playerid);SetPlayerCheckpoint(playerid,1273.3054,296.6645,19.5547,3);checkpoint[playerid]=2;GetPlayerSkin(playerid); }
            case 1: { SendClientMessage(playerid,COLOR_RED,\"*ez is titok*\"); SpawnPlayer(playerid); SetPlayerTeam(playerid,TEAM_RAB); DisablePlayerCheckpoint(playerid);
        }
    }
    return 1;
}

 
Valahogy így.
Cím: több cp bug
Írta: TheDon - 2014. február 12. - 19:37:36
Sehová sem kötelezõ a break, anélkül is mûködik.[/quote]
Nem kötelezõ de a break nélkül végig lép az összes értéken és végrehajtja a sorokat. Ezért kell a break a case-ek végeire hogy ne lépjen tovább.
Cím: több cp bug
Írta: Dfoglalo - 2014. február 12. - 19:58:45
Idézetet írta: TheDon date=1392230256\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46466\" data-ipsquote-contentclass=\"forums_Topic

Sehová sem kötelezõ a break, anélkül is mûködik.
Nem kötelezõ de a break nélkül végig lép az összes értéken és végrehajtja a sorokat. Ezért kell a break a case-ek végeire hogy ne lépjen tovább.
 
[/quote]
Véletlenül se idézd be azt a részt, amiben én is leírom ugyanezt, mintha én nem tudnám... Habár az is lehet, hogy csak addig olvastad el, és aztán már meg is untad. :facepalm:
 
(de berakható, habár én sosem tettem, nem nagy gáz, ha a többit is csekkolja, habár tényleg fölösleges)[/quote]


Amúgy szerintem a DisablePlayerCheckpoint(playerid); nem szükséges, mert úgyis létrehozol egy másik CP-t, így az elõzõ eltûnik. De ebben nem vagyok biztos :hmmm:
Cím: több cp bug
Írta: TheDon - 2014. február 13. - 06:55:26
Dfoglalo.
Nem neked szántam az idézést, hanem kicsit másképp magyaráztam el azt amit írtál.
Cím: több cp bug
Írta: Kovacs_Richard - 2014. február 13. - 07:51:28
Idézetet írta: TheDon date=1392230256\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46466\" data-ipsquote-contentclass=\"forums_Topic

Sehová sem kötelezõ a break, anélkül is mûködik.
Nem kötelezõ de a break nélkül végig lép az összes értéken és végrehajtja a sorokat. Ezért kell a break a case-ek végeire hogy ne lépjen tovább.
 
[/quote]
nem éppen...mivel a blokkot figyelembe veszi...
 
case 0:
{
    // kód
}
case 1:
{
    // kód
}
Cím: több cp bug
Írta: TheDon - 2014. február 13. - 08:40:55
Idézetet írta: Kovacs_Richard date=1392274288\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46466\" data-ipsquote-contentclass=\"forums_Topic


 
Sehová sem kötelezõ a break, anélkül is mûködik.
Nem kötelezõ de a break nélkül végig lép az összes értéken és végrehajtja a sorokat. Ezért kell a break a case-ek végeire hogy ne lépjen tovább.
 
[/quote]
nem éppen...mivel a blokkot figyelembe veszi...
 
case 0:
{
    // kód
}
case 1:
{
    // kód
}

 

[/quote]
Bocs igazad van. Csak C#, C meg Java van a fejemben és elfelejtettem, hogy Pawn-ban nem kell.