zcmd command funktioniert nicht

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
  • Guten Tag.
    ich möchte mir gerade zcmd anlernen.
    Nun möchte ich einen eig. leichten Command erstellen.
    COMMAND:makeadmin(playerid,params[])
    {
    new
    pID[20],
    newAdmin;
    if(SpielerInfo[playerid][Adminlevel]==3)
    {
    if(sscanf(params, "us",pID,newAdmin))
    {
    return SendClientMessage(playerid,ROT,"USAGE: /makeadmin [playerid] [Adminlevel]");
    }
    if(!IsPlayerConnected(pID)) //Zeile 1157
    {
    return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    }
    new playID[20];
    GetPlayerName(pID,playID,sizeof(playID));//Zeile 1162
    SpielerInfo[playID][Adminlevel]=newAdmin;//Zeile 1163
    }
    return 1;
    }
    Ich bekomme aber folgende Erros:
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm.pwn(1157) : error 035: argument type mismatch (argument 1)
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm.pwn(1162) : error 035: argument type mismatch (argument 1)
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm.pwn(1163) : error 033: array must be indexed (variable "playID")
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.


    Danke


    EDIT// Code richtig angeordnet
    EDIT// Code richtig angeordnet(erneut)

  • So müsstes gehen
    COMMAND:makeadmin(playerid,params[])
    {
    new pID,newAdmin;
    if(SpielerInfo[playerid][Adminlevel] == 3)
    {
    if(sscanf(params, "us",pID,newAdmin))return SendClientMessage(playerid,ROT,"USAGE: /makeadmin [playerid] [Adminlevel]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    else
    {
    new playID[20];
    GetPlayerName(pID,playID,sizeof(playID));//Zeile 1162
    SpielerInfo[pID][Adminlevel] = newAdmin;//Zeile 1163
    }
    }
    else return SendClientMessage(playerid, ROT, "Du benötigst mindestens Level 3.");
    return 1;
    }
    Du hast als Variable für die ID nen String angegeben was Quatsch ist, die ID wird als Integer gespeichert, sprich ganzer Zahlenwert

  • Geht doch auch kürtzer. Wenn du den Namen des Spielers eh nicht benutzt, wofür dann GetPlayerName?
    COMMAND:makeadmin(playerid,params[])
    {
    new pID,newAdmin;
    if(SpielerInfo[playerid][Adminlevel]<3) return SendClientMessage(playerid,ROT,"Du darfst das nicht tun!");
    if(sscanf(params, "ud",pID,newAdmin)) return SendClientMessage(playerid,ROT,"USAGE: /makeadmin [playerid] [Adminlevel]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    SpielerInfo[pID][Adminlevel]=newAdmin;
    return 1;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Ok Danke.
    Ich habe keinen Spieler zum testen aber das mache ich morgen.
    @Maddin´s Variante, werden da alle if´s vorher abgerufen bevor dann das SpielerInfo.... kommt?
    @hp was meinst mit:

    Zitat

    Du hast als Variable für die ID nen String angegeben was Quatsch ist, die ID wird als Integer gespeichert, sprich ganzer Zahlenwert


    Ich habe keine großen Veränderung des Textes gesehen.
    Außerdem funktionieren die ganz normalen Befehle nicht mehr ist das normal?
    Danke :thumbup:


    EDIT1//gelöscht siehe EDIT3
    EDIT2//Text added
    EDIT3//
    EDIT1 entfernt da ich den Fehler selber gefunden habe
    Text angepasst