June 7, 201015 yr 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? Edited June 7, 201015 yr by Johannetje2
June 8, 201015 yr Het is: if(SkinID == ID || SkinID == ID || SkinID == ID){ niet: if(SkinID == ID || ID || ID || ID){ Snap je? gvm
June 8, 201015 yr 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; }
June 8, 201015 yr Author 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
June 8, 201015 yr 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.
June 8, 201015 yr Author 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 Edited June 9, 201015 yr by Johannetje2
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?
Edited by Johannetje2