Skinchange command erstellen

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
  • Sehr geehrte Scripter,


    ich wollte fragen ob mir jemand erklären kann wie man einen command erstellt damit man im game skin wechseln kann (es sollen nur admins diesen command nutzen dürfen) und zwar so


    /skinchange <Nickname oder spieler ID> <Skin ID>


    es sollen alle skins die es gibt erlaubt sein


    bitte um eure hilfe :)

  • Viel spaß damit. Ist auf GF zugeschnitten, kanns aber auch anders. Dafür bräuchte ich allerdings deine Variablen.



    if(strcmp(cmd, "/setskin", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!tmp[0])return SendClientMessage(playerid,COLOR_GREY,"Verwendung: /setskin [SpielerID] [SkinID]");
    new giveplayer;
    giveplayer = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    new SkinID;
    SkinID = strval(tmp);
    if(SkinID > 299 || SkinID < 1) { return SendClientMessage(playerid, COLOR_GREY, "Die SkinID darf nicht unter 1 und über 299 liegen!");}
    if (PlayerInfo[playerid][pAdmin] >= 5)
    {
    if(IsPlayerConnected(giveplayer))
    {
    if(giveplayer != INVALID_PLAYER_ID)
    {
    PlayerInfo[giveplayer][pSkin] = SkinID;
    format(string, sizeof(string), "* Dein Skin wurde von Administrator %s geändert.", pName[playerid]);
    SendClientMessage(giveplayer, COLOR_AdmPURPLE, string);
    format(string, sizeof(string), "* Du hast %s SkinID %d gegeben.", pName[giveplayer],SkinID);
    SendClientMessage(playerid, COLOR_AdmPURPLE, string);
    SetPlayerSkin(giveplayer, PlayerInfo[giveplayer][pSkin]);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Dir fehlt das benötigte Adminlevel!");
    }
    }
    return true;
    }

  • Vuelen dank aber wenn ich es im script einfüge steht kommen 5 errors


    E:\Programme2\sa-mp\GFR.pwn(12190) : error 017: undefined symbol "pSkin"
    E:\Programme2\sa-mp\GFR.pwn(12191) : error 017: undefined symbol "pName"
    E:\Programme2\sa-mp\GFR.pwn(12191) : error 001: expected token: ";", but found "]"
    E:\Programme2\sa-mp\GFR.pwn(12191) : error 029: invalid expression, assumed zero
    E:\Programme2\sa-mp\GFR.pwn(12191) : fatal error 107: too many error messages on one line

  • if(!strcmp(strget(cmdtext, 0), "/setskin"))
    {
    if(!IsPlayerAdmin(playerid))
    {
    SendClientMessage(playerid,COLOR_RED," Du bist kein Admin!");
    }
    else
    {
    new giveplayer = strval(strget(cmdtext, 1));
    new skin = strval(strget(cmdtext, 2));
    SetPlayerSkin(giveplayer,skin);
    return 1;
    }
    }


    ganz einfach und geht in wenigen minuten

  • so muss es gehen?


    also das komplett ersetzten? mit dem om surrender?

  • ok ich teste es mal aber vielen dank eh :)


    *edit


    3 errors


    E:\Programme2\sa-mp\GFR.pwn(12172) : error 017: undefined symbol "strget"
    E:\Programme2\sa-mp\GFR.pwn(12180) : error 017: undefined symbol "strget"
    E:\Programme2\sa-mp\GFR.pwn(12181) : error 017: undefined symbol "strget"

  • Jop np


    aber wie gesagt, habe dafür 1 minute gebraucht^^
    kannst du mit allen möglichen sachen machen


    stock strget(strx[], pos, search = ' ') {
    new arg, ret[128], idxx;
    for (new i = 0; i < strlen(strx); i++) {
    if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
    arg++;
    if (arg == pos + 1){
    ret[i-idxx] = EOS;
    return ret;
    } else if (arg == pos)
    idxx= i+1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx[i];
    }
    return ret;
    }


    GANNNNNNNZ unten ins script

  • So habe edit gemacht les pls eins drüber es kommen 3 errors siehe oben einfügen? oder ersetzte oder wie? xD


    *edit


    keine errors so ich probiere es mal könntest du kurz warten pls ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • vielen dank kann man auch machen das man es im spiel machen kann?
    also ohne rcon anzugeben? das jeder ab dem Adfmin level 1 /setskin machenkann?

  • xD ok aber trotzdem vielen dank ;) so ghehts dann auch fürs erste ;)

  • Realdog hast du denn einen GF? Sag mir einfach mal wie dein AdminLevel deklariert ist dann kann ich das anpassen.


    Beim GF ist das zB:


    PlayerInfo[playerid][pAdmin]


    mfg
    surrender

  • jo surrender ich habe Reallife Godfather :) und ja ich habe keine ahnung was du meinst ich mein die grundlagen an scripten kann ich aber jetzt so einen command erstellen nicht :/ aber den, den du dort oben gemacht hasst der ist perfeckt so soll er sein halt sin errors enthalten:/


    *edit


    könntest du mir nochmal neu einen command chicken? ;) für gf also ih nhier rein posten


    das hier kam bei deinem letzten command


    E:\Programme2\sa-mp\GFR.pwn(12190) : error 017: undefined symbol "pSkin"
    E:\Programme2\sa-mp\GFR.pwn(12191) : error 017: undefined symbol "pName"
    E:\Programme2\sa-mp\GFR.pwn(12191) : error 001: expected token: ";", but found "]"
    E:\Programme2\sa-mp\GFR.pwn(12191) : error 029: invalid expression, assumed zero
    E:\Programme2\sa-mp\GFR.pwn(12191) : fatal error 107: too many error messages on one line

    Einmal editiert, zuletzt von Realdog ()

  • So müsste das eigentlich gehen, wenn ein Fehler kommt, der so aussieht:
    warning 219: local variable "string" shadows a variable at a preceding level
    Dann lösche das betreffende new (in den Anführungszeichen) einfach.



    if(strcmp(cmd, "/setskin", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!tmp[0])return SendClientMessage(playerid,COLOR_GREY,"Verwendung: /setskin [SpielerID] [SkinID]");
    new sendername[MAX_PLAYERS];
    new giveplayer;
    new string[128];
    giveplayer = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    new SkinID;
    SkinID = strval(tmp);
    if(SkinID > 299 || SkinID < 1) { return SendClientMessage(playerid, COLOR_GREY, "Die SkinID darf nicht unter 1 und über 299 liegen!");}
    if (PlayerInfo[playerid][pAdmin] >= 5)
    {
    if(IsPlayerConnected(giveplayer))
    {
    if(giveplayer != INVALID_PLAYER_ID)
    {
    PlayerInfo[giveplayer][pModel] = SkinID;
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Dein Skin wurde von Administrator %s geändert.", sendername);
    SendClientMessage(giveplayer, COLOR_PURPLE, string);
    GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast %s SkinID %d gegeben.", giveplayer,SkinID);
    SendClientMessage(playerid, COLOR_PURPLE, string);
    SetPlayerSkin(giveplayer, PlayerInfo[giveplayer][pModel]);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Dir fehlt das benötigte Adminlevel!");
    }
    }
    return true;
    }

  • sry aber es treten 2 errors auf


    E:\Programme2\sa-mp\GFR.pwn(12515) : error 035: argument type mismatch (argument 2)
    E:\Programme2\sa-mp\GFR.pwn(12515) : error 035: argument type mismatch (argument 2)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen