Johannetje2 Geplaatst: 7 juni 2010 Rapport Geplaatst: 7 juni 2010 (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: 7 juni 2010 door Johannetje2 Reageren
Kwarde Geplaatst: 8 juni 2010 Rapport Geplaatst: 8 juni 2010 Het is: if(SkinID == ID || SkinID == ID || SkinID == ID){ niet: if(SkinID == ID || ID || ID || ID){ Snap je? gvm Reageren
Wanted Geplaatst: 8 juni 2010 Rapport Geplaatst: 8 juni 2010 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; } Reageren
Johannetje2 Geplaatst: 8 juni 2010 Auteur Rapport Geplaatst: 8 juni 2010 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 Reageren
Big Boss Geplaatst: 8 juni 2010 Rapport Geplaatst: 8 juni 2010 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. Reageren
Johannetje2 Geplaatst: 8 juni 2010 Auteur Rapport Geplaatst: 8 juni 2010 (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 Bewerkt: 9 juni 2010 door Johannetje2 Reageren
Recommended Posts
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.