Beiträge von Jeffry

    new id = GetFreePickupID();
    if(id == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Alle voll.");
    aPickups[id][e_pickupid] = CreatePickup(...);


    Bei OnGameModeInit setzt du alle e_pickupid auf -1, mit einer Schleife.


    Und bei GetFreePickupID machst du eine Schleife durch alle aPickups und fragst ab, ob es -1 ist, wenn ja returnst du i. Wird keins gefunden, nach der Schleife, -1.
    Gleich bei OnPlayerPickUpPickup, nur eben nicht auf -1 prüfen, sondern auf pickupid.


    Versuche das mal anhand der Beschreibung hinzubekommen.

    Hast du eine mehrzeilige Meldung mit vielen Zahlen im Compiler?


    Versuche es gegebenenfalls mal so, um etwas weniger Variablen zu nutzen:
    ocmd:adminpickup(playerid,params[])
    {
    if(strlen(params) < 2) return SendClientMessage(playerid,ROT,"Benutze: {D6D6D6}/adminpickup [Art]");
    if(strcmp(params,"Waffe ",true,6)==0)
    {
    new art[16],str[16],muni;
    if(sscanf(params,"s[16]s[16]d",art,str,muni)) return SendClientMessage(playerid,ROT,"Benutze: {D6D6D6}/adminpickup Waffe [Waffe] [Munnition]");
    if(strcmp(str,"Deagle",true)==0)
    {
    //Deagle geben
    }
    else if(strcmp(str,"mp5",true)==0)
    {
    //MP5 Geben
    }
    else
    {
    return SendClientMessage(playerid,ROT,"Invalid.");
    }
    format(str,sizeof(str),"%s %d",str,muni);
    return SendClientMessage(playerid,ROT,str);
    }
    return SendClientMessage(playerid,ROT,"Benutze: {D6D6D6}/adminpickup [Art]");
    }

    Ohne Parameter?
    Versuche es so:
    ocmd:adminpickup(playerid,params[])
    {
    if(strlen(params) < 2) return SendClientMessage(playerid,ROT,"Benutze: {D6D6D6}/adminpickup [Art]");
    if(strcmp(params,"Waffe ",true,6)==0)
    {
    new art[30],waffe[50],muni,string[50];
    if(sscanf(params,"s[30]s[50]d",art,waffe,muni)) return SendClientMessage(playerid,ROT,"Benutze: {D6D6D6}/adminpickup Waffe [Waffe] [Munnition]");
    if(strcmp(waffe,"Deagle",true)==0)
    {
    format(string,sizeof(string),"%s %d",waffe,muni);
    return SendClientMessage(playerid,ROT,string);
    }
    else if(strcmp(waffe,"mp5",true)==0)
    {
    format(string,sizeof(string),"%s %d ",waffe,muni);
    return SendClientMessage(playerid,ROT,string);
    }
    }
    return SendClientMessage(playerid,ROT,"Benutze: {D6D6D6}/adminpickup [Art]");
    }

    ocmd:adminpickup(playerid,params[])
    {
    if(!params[0]) return SendClientMessage(playerid,ROT,"Benutze: {D6D6D6}/adminpickup [Art]");
    if(strcmp(params,"Waffe ",true,6)==0)
    {
    new art,waffe[50],muni,string[50];
    if(sscanf(params,"s[30]s[50]d",art,waffe,muni)) return SendClientMessage(playerid,ROT,"Benutze: {D6D6D6}/adminpickup Waffe [Waffe] [Munnition]");
    if(strcmp(waffe,"Deagle",true)==0)
    {
    format(string,sizeof(string),"%s %d",waffe,muni);
    SendClientMessage(playerid,ROT,string);
    }
    else if(strcmp(waffe,"mp5",true)==0)
    {
    format(string,sizeof(string),"%s %d ",waffe,muni);
    SendClientMessage(playerid,ROT,string);
    }
    }
    return 1;
    }

    Das stimmt nicht.


    Oh ja stimmt, er hat ja keine Größe angegeben. Hätte ich mal besser ausgeschlafen. :pinch:



    Mit strlen oder sizeof kommst du nicht weiter.


    Dachte ich auch, aber mir kam eine Idee die wirklich simpel ist.
    new FrakSkinM[][] = //Oder als const, wie man's will
    {
    {1,2,7,15,21,22,'\0'},
    {1,2,3,4,5,6,7,8,9,10,265,267,266,'\0'},
    {265,267,'\0'},
    {265,267,266,281,'\0'}
    };


    printf("%d", strlen(FrakSkinM[1])); //Gibt 13 aus.
    printf("%d", strlen(FrakSkinM[2])); //Gibt 2 aus.


    [NRL] zSkiLL.exe:
    Wenn du es so machst, dann kannst du einfach wie in deinem Versuch:
    strlen(FrakSkinM[PlayerInfo[playerid][pFrak]])
    nutzen.


    Dann spart man sich die Schleifendurchläufe.

    Nicht mit dini_Get, das geht nicht. Habe das kleine p per Edit ausgebessert, hat er wahrscheinlich noch nicht gesehen.


    stock SpielerLaden(playerid)
    {
    new Player[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Player,sizeof(Player),"/player/%s.txt",Sname);
    if(dini_Exists(Player))
    {
    SetPlayerScore(playerid,dini_Int(Player,"Level"));
    sPlayer[playerid][AdminLevel] = dini_Int(Player,"AdminLevel");
    sPlayer[playerid][Level] = dini_Int(Player,"Level");
    sPlayer[playerid][Fraktion] = dini_Int(Player,"Fraktion");
    sPlayer[playerid][Team] = dini_Int(Player,"Team");
    }
    return 1;
    }

    stock SpielerLaden(playerid)
    {
    new Player[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Player,sizeof(Player),"/player/%s.txt",Sname);
    if(dini_Exists(Player))
    {
    SetPlayerScore(playerid,dini_Int(Player,"Level"));
    sPlayer[playerid][AdminLevel] = dini_Int(Player,"AdminLevel");
    sPlayer[playerid][Level] = dini_Int(Player,"Level");
    sPlayer[playerid][Fraktion] = dini_Int(Player,"Fraktion");
    sPlayer[playerid][Team] = dini_Int(Player,"Team");
    }
    return 1;
    }


    Bei SetPlayerScore hat hinten auch eine Klammer gefehlt.