Jump to content

Check SkinID


Recommended Posts

Geplaatst: (bewerkt)

Ik weet dat in de code op regel 10, 12, en 34 de code if(!strcmp(SkinID, TEKST DIE HIJ CONTROLEERD,true))

public OnPlayerRequestSpawn(playerid)
{
   ////////////////////////////////////////////////////////////////////////////
   //SKIN - CONTROLE
   ////////////////////////////////////////////////////////////////////////////
   Skin = GetPlayerSkin(playerid);
   new SkinID[128];
   format(SkinID, sizeof(SkinID), "%d", Skin);
   //SendClientMessage(playerid, COLOR_GREEN, SkinID);
   if (SkinID == 165 || 166 || 280 || 281 || 282 || 283 || 288 || 284 || 285 || 286 || 287 || 255 || 278 || 279 || 250 || 59 || 263 || 294 || 299)
   {
       if (SkinID == 165 || 166 || 280 || 281 || 282 || 283 || 288 || 284 || 285 || 286 || 287)
       {
           GetPlayerName(playerid, pNameCop, sizeof(pNameCop));
           dini_Create(udb_encode(pNameCop));

           format(Zinnetje, 64, "%s", dini_Get("Cops.txt", udb_encode(pName)));
           //SendClientMessage(playerid, COLOR_GRAY, Zinnetje);

           if(!strcmp(Zinnetje, "0",true))
           {
               SetPlayerPos(playerid, 1553.2588,-1676.1017,16.1953);
               gTeam[playerid] = TEAM_COP0;
               SetPlayerColor(playerid, COLOR_BLUE);
           }
           else if (!strcmp(Zinnetje, "1",true))
           {
               gTeam[playerid] = TEAM_NOT0;
               GameTextForPlayer(playerid,"~r~Je bent niet aangemeld als cop! ~n~Ga naar http://bm.johannetje2.nl/forum > en maak een apply!",10000,5);
               return 0;
           }
       }

       if (SkinID == 255 || 278 || 279 || 250 || 59 || 263 || 294 || 299)
       {
           SetPlayerPos(playerid, 1108.1634521484,-1796.3830566406,16.59375);
           gTeam[playerid] = TEAM_CRI0;
           SetPlayerColor(playerid, COLOR_GRAY);
           return 1;
}
else
{
    SendClientMessage(playerid, COLOR_RED, "***SKIN: Dit is geen geldige skin!");
	}

////////////////////////////////////////////////////////////////////////////
return 1;
   }
   return 1;
}

Maar nu is mijn probleem, bij elk id moet ik dan zo'n stukje code maken, want 255 || 278.... werkt dan niet...

Hoe kan ik dit simpel oplossen zonder de bovenstaande manier te gebruiken?

Bewerkt: door Johannetje2
Geplaatst:

Het is: if(SkinID == ID || SkinID == ID || SkinID == ID){

niet: if(SkinID == ID || ID || ID || ID){

Snap je?

gvm

Geplaatst:

In de code die je geeft zitten wel een paar problemen.

public OnPlayerRequestSpawn(playerid)
{
   Skin = GetPlayerSkin(playerid); // Weet je zeker dat 'Skin' gedefineerd is?

   new SkinID[128]; // Een skin is een INTEGER, jij maakt er een STRING van.
   format(SkinID, sizeof(SkinID), "%d", Skin);

   // In de volgende regel zitten meerdere fouten:
   // * 'SkinID' is als een string gedefineerd, dus moet je 'strcmp' gebruiken.
   // * Als je het als een integer gedefineerd had, werkt het niet zo op deze manier. Gebruik: 'if(SkinID == 0 || SkinID == 1 || SkinID == 2)' etc.
   if (SkinID == 165 || 166 || 280 || 281 || 282 || 283 || 288 || 284 || 285 || 286 || 287 || 255 || 278 || 279 || 250 || 59 || 263 || 294 || 299)
   {
       if (SkinID == 165 || 166 || 280 || 281 || 282 || 283 || 288 || 284 || 285 || 286 || 287) // Zie hierboven.
       {
           GetPlayerName(playerid, pNameCop, sizeof(pNameCop));
           dini_Create(udb_encode(pNameCop));
           format(Zinnetje, 64, "%s", dini_Get("Cops.txt", udb_encode(pName)));

           if(!strcmp(Zinnetje, "0",true)) // Waarom gebruik je hier een string voor? Je kan er beter een integer van maken.
           {
               SetPlayerPos(playerid, 1553.2588,-1676.1017,16.1953);
               gTeam[playerid] = TEAM_COP0;
               SetPlayerColor(playerid, COLOR_BLUE);
           }
           else if (!strcmp(Zinnetje, "1",true)) // zie hierboven
           {
               gTeam[playerid] = TEAM_NOT0;
               GameTextForPlayer(playerid,"~r~Je bent niet aangemeld als cop! ~n~Ga naar http://bm.johannetje2.nl/forum > en maak een apply!",10000,5);
               return 0;
           }
       }

       if (SkinID == 255 || 278 || 279 || 250 || 59 || 263 || 294 || 299) // Hier geld ook dat het op deze manier niet kan.
       {
           SetPlayerPos(playerid, 1108.1634521484,-1796.3830566406,16.59375);
           gTeam[playerid] = TEAM_CRI0;
           SetPlayerColor(playerid, COLOR_GRAY);
           return 1;
}
else
{
    SendClientMessage(playerid, COLOR_RED, "***SKIN: Dit is geen geldige skin!");
	}
return 1;
   }
   return 1;
}

Zie de comments voor de fouten.

Een makkelijkere, snellere en overzichtelijkere manier voor de 'if' regels, is de 'switch' functie.

Hieronder heb ik een voorbeeld staan van wat een verbeterde versie zou kunnen zijn:

public OnPlayerRequestSpawn(playerid)
{
   switch(GetPlayerSkin(playerid))
   {
       case 165, 166, 280, 281, 282, 283, 284, 285, 286, 287:
       {
           GetPlayerName(playerid, pNameCop, sizeof(pNameCop));
           dini_Create(udb_encode(pNameCop));

           new IsCop = dini_Int("Cops.txt", udb_encode(pName));

           if(IsCop == 0)
           {
               SetPlayerPos(playerid, 1553.2588,-1676.1017,16.1953);
               gTeam[playerid] = TEAM_COP0;
               SetPlayerColor(playerid, COLOR_BLUE);
           }
           else if (IsCop == 1)
           {
               gTeam[playerid] = TEAM_NOT0;
               GameTextForPlayer(playerid,"~r~Je bent niet aangemeld als cop! ~n~Ga naar http://bm.johannetje2.nl/forum > en maak een apply!",10000,5);
               return 0;
           }
       }

       case 255, 278, 279, 250, 59, 263, 294, 299:
       {
           SetPlayerPos(playerid, 1108.1634521484,-1796.3830566406,16.59375);
           gTeam[playerid] = TEAM_CRI0;
           SetPlayerColor(playerid, COLOR_GRAY);
           return 1;
}

       default:
{
    SendClientMessage(playerid, COLOR_RED, "***SKIN: Dit is geen geldige skin!");
	}
   }
   return 1;
}

Geplaatst:

In de code die je geeft zitten wel een paar problemen.

public OnPlayerRequestSpawn(playerid)
{
   Skin = GetPlayerSkin(playerid); // Weet je zeker dat 'Skin' gedefineerd is?

   new SkinID[128]; // Een skin is een INTEGER, jij maakt er een STRING van.
   format(SkinID, sizeof(SkinID), "%d", Skin);

   // In de volgende regel zitten meerdere fouten:
   // * 'SkinID' is als een string gedefineerd, dus moet je 'strcmp' gebruiken.
   // * Als je het als een integer gedefineerd had, werkt het niet zo op deze manier. Gebruik: 'if(SkinID == 0 || SkinID == 1 || SkinID == 2)' etc.
   if (SkinID == 165 || 166 || 280 || 281 || 282 || 283 || 288 || 284 || 285 || 286 || 287 || 255 || 278 || 279 || 250 || 59 || 263 || 294 || 299)
   {
       if (SkinID == 165 || 166 || 280 || 281 || 282 || 283 || 288 || 284 || 285 || 286 || 287) // Zie hierboven.
       {
           GetPlayerName(playerid, pNameCop, sizeof(pNameCop));
           dini_Create(udb_encode(pNameCop));
           format(Zinnetje, 64, "%s", dini_Get("Cops.txt", udb_encode(pName)));

           if(!strcmp(Zinnetje, "0",true)) // Waarom gebruik je hier een string voor? Je kan er beter een integer van maken.
           {
               SetPlayerPos(playerid, 1553.2588,-1676.1017,16.1953);
               gTeam[playerid] = TEAM_COP0;
               SetPlayerColor(playerid, COLOR_BLUE);
           }
           else if (!strcmp(Zinnetje, "1",true)) // zie hierboven
           {
               gTeam[playerid] = TEAM_NOT0;
               GameTextForPlayer(playerid,"~r~Je bent niet aangemeld als cop! ~n~Ga naar http://bm.johannetje2.nl/forum > en maak een apply!",10000,5);
               return 0;
           }
       }

       if (SkinID == 255 || 278 || 279 || 250 || 59 || 263 || 294 || 299) // Hier geld ook dat het op deze manier niet kan.
       {
           SetPlayerPos(playerid, 1108.1634521484,-1796.3830566406,16.59375);
           gTeam[playerid] = TEAM_CRI0;
           SetPlayerColor(playerid, COLOR_GRAY);
           return 1;
}
else
{
    SendClientMessage(playerid, COLOR_RED, "***SKIN: Dit is geen geldige skin!");
	}
return 1;
   }
   return 1;
}

Zie de comments voor de fouten.

Een makkelijkere, snellere en overzichtelijkere manier voor de 'if' regels, is de 'switch' functie.

Hieronder heb ik een voorbeeld staan van wat een verbeterde versie zou kunnen zijn:

public OnPlayerRequestSpawn(playerid)
{
   switch(GetPlayerSkin(playerid))
   {
       case 165, 166, 280, 281, 282, 283, 284, 285, 286, 287:
       {
           GetPlayerName(playerid, pNameCop, sizeof(pNameCop));
           dini_Create(udb_encode(pNameCop));

           new IsCop = dini_Int("Cops.txt", udb_encode(pName));

           if(IsCop == 0)
           {
               SetPlayerPos(playerid, 1553.2588,-1676.1017,16.1953);
               gTeam[playerid] = TEAM_COP0;
               SetPlayerColor(playerid, COLOR_BLUE);
           }
           else if (IsCop == 1)
           {
               gTeam[playerid] = TEAM_NOT0;
               GameTextForPlayer(playerid,"~r~Je bent niet aangemeld als cop! ~n~Ga naar http://bm.johannetje2.nl/forum > en maak een apply!",10000,5);
               return 0;
           }
       }

       case 255, 278, 279, 250, 59, 263, 294, 299:
       {
           SetPlayerPos(playerid, 1108.1634521484,-1796.3830566406,16.59375);
           gTeam[playerid] = TEAM_CRI0;
           SetPlayerColor(playerid, COLOR_GRAY);
           return 1;
}

       default:
{
    SendClientMessage(playerid, COLOR_RED, "***SKIN: Dit is geen geldige skin!");
	}
   }
   return 1;
}

Bij de NIET - Politiepoppetjes, zegt hij je bent geen cop, spawnt hij als CJ en krijg een error van SKIN

Geplaatst:

Volgens mij gebruik je de functie 'IsCop' verkeerd.

Ik ga er van uit dat die functie '1' retourneert als je WEL een cop bent. Jij hebt het omgekeerd.

Geplaatst: (bewerkt)

Volgens mij gebruik je de functie 'IsCop' verkeerd.

Ik ga er van uit dat die functie '1' retourneert als je WEL een cop bent. Jij hebt het omgekeerd.

0 = Wel cop

1 = Niet cop

EDIT:

Ik heb het aan de gang gekregen! Bedankt voor jullie hulp :D

Bewerkt: door Johannetje2

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...