funktion /setskin selber gemacht aber ein error bitte helfen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Also ich habe eine /setskin function gemacht.
    if(strcmp(cmd, "/setskin", true) == 0)
    {
    new playa2;
    new idplayer;
    new skinp;
    playa2 = ReturnUser(tmp);
    idplayer = strtok(cmdtext, idx);
    skinp = strval(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    if(IsPlayerConnected(idplayer))
    {
    if(idplayer != INVALID_PLAYER_ID)
    {
    SetPlayerSkin(idplayer,skinp);



    }
    }
    }
    }
    doch es gibt ein error
    C:\Gamemode\GFF.pwn(8748) : error 006: must be assigned to an array


    Die Zeile mit dem Error is die:
    idplayer = strtok(cmdtext, idx);

  • Das lieht daran, das idplayer ein Integer ist und kein string, ändere dazu
    new idplayer;
    in new idplayer[30]; // 30 sollte locker reichen, ist ja nur ein Name so wie ich das sehe
    Allerdings ist dein Code eh falsch, um Parameter mit strtok auslesen, musst du es so machen
    string = strtok(cmdtext, idx); // string kann auch idplayer heissen, spielt keine Rolle, hauptsache es wurde als string erstellt (siehe oben)
    if(string[0] == 0) return SendClientMessage(...);// Keine Eingabe, da kein "erster" Buchstabe vorhanden ist
    variable =strtval(string);
    // oder für User user = ReturnUser(string);
    Die Reigenfolge ist vor allem wichtig und auch nicht wie bei dir einmal idplayer und einmal tmp...

  • oder du nimmst den CMD :D
    if(strcmp(cmd, "/setskin", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_RED, "Hilfe: /setskin [SpielerID] [SkinID]");
    return 1;
    }
    new para1;
    new level;
    para1 = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    level = strval(tmp);
    if(level > 299 || level < 1) { SendClientMessage(playerid, COLOR_GREY, "Falsche Skin ID!"); return 1; }
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    if(IsPlayerConnected(para1))
    {
    if(para1 != INVALID_PLAYER_ID)
    {
    GetPlayerName(para1, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "Dein Skin wurde vom Admin %s geändert", sendername);
    SendClientMessage(para1, COLOR_WHITE, string);
    format(string, sizeof(string), "Du hast %s den Skin %d gegeben.", giveplayer,level);
    SendClientMessage(playerid, COLOR_WHITE, string);
    SetPlayerSkin(para1, level);
    }
    }//not connected
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein Admin!");
    }
    }
    return 1;
    }


    achtung einrücken stimmen nicht mehr