Geplaatst: 7 juni 201014 jaren comment_1669161 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: 7 juni 201014 jaren door Johannetje2
Geplaatst: 8 juni 201014 jaren comment_1669274 Het is: if(SkinID == ID || SkinID == ID || SkinID == ID){ niet: if(SkinID == ID || ID || ID || ID){ Snap je? gvm
Geplaatst: 8 juni 201014 jaren comment_1669325 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: 8 juni 201014 jaren Auteur comment_1669366 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: 8 juni 201014 jaren comment_1669541 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: 8 juni 201014 jaren Auteur comment_1669542 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 Bewerkt: 9 juni 201014 jaren door Johannetje2
Ik weet dat in de code op regel 10, 12, en 34 de code if(!strcmp(SkinID, TEKST DIE HIJ CONTROLEERD,true))
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