Beiträge von Opa_Schlumpf

    Guten Tag.
    Wiedermal will ein Befehl nicht obwohl ich nichts falsches sehe.
    also mal der Code:

    COMMAND:setskin(playerid,params[])
    {
    new pID,newSkin,string[124],string2[124],name[20],playername[20],string3[50];
    if(SpielerInfo[playerid][Adminlevel]>=2)
    if(aLogin[playerid]==1)
    if(sscanf(params,"ui",pID,newSkin))
    if(IsPlayerConnected(pID))
    {
    SetPlayerSkin(pID,newSkin);
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Admin %s hat dir einen neuen Skin gegeben (skinid: %i)",playername,newSkin);
    format(string2,sizeof(string2),"Admin %s hat %s die Skinid %i gegeben",playername,name,newSkin);
    format(string3,sizeof(string3),"Eingabe: %i", newSkin);
    SendClientMessage(pID,GRAU,string);
    SendClientMessage(pID,GRAU,string3);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel]>=1)
    {
    SendClientMessage(i,GRAU,string2);
    }
    }
    }
    else return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    else return SendClientMessage(playerid,ROT,"Verwendung: /setskin [playerid] [skinid]");
    else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    else return SendClientMessage(playerid,ROT,"Sie haben nicht das benötigte Adminlevel.");
    return 1;
    }
    So.
    Das Problem.
    Wenn ich Ingame gehe und nur /setskin mache gebe ich mir (ID 0) die Skinid 0.
    Wenn ich nun /setskin 0 eingebe kommt wieder das selbe.
    Aber wenn ich eine Zahl dran mache kommt: "Verwende.......".
    Danke für eure Hilfe.


    EDIT// Überschrift editiert

    so gehts :D


    Dankesehr


    //edit
    sry aber ich möchte noch was wissen und deswegen keinen neuen thread aufmachen....
    also:


    ist es möglich eine Eingabe zu beschränken?
    also einmal dieser befehl:
    COMMAND:makeadmin(playerid,params[])
    {
    new pID,newAdmin;
    if(SpielerInfo[playerid][Adminlevel] == 3)
    {
    if(aLogin[playerid]==1)
    {
    if(sscanf(params, "ui",pID,newAdmin))return SendClientMessage(playerid,GRAU,"Verwendung: /makeadmin [playerid] [Adminlevel]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    else
    {
    new string[128],name[20];
    new string2[128],playername[20];
    new string3[128];
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string2,sizeof(string2),"%s hat das Adminlevel von %s (ID %i) auf %i geändert.",playername,name,pID,newAdmin);
    format(string3,sizeof(string3),"Admin %s hat dein Adminlevel auf %i gesetzt.",playername,newAdmin);
    format(string,sizeof(string),"Sie haben das Adminlevel von %s (ID %i) auf %i geändert.",name,pID,newAdmin);
    //__________Nachricht___________
    for(new i; i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel])
    {
    SendClientMessage(i,GRAU,string2);
    }
    }
    //__________Ende___________

    SendClientMessage(playerid,GRAU,string);
    SpielerInfo[pID][Adminlevel] = newAdmin;
    SendClientMessage(pID,GRAU,string3);
    }
    }
    else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    }
    else return SendClientMessage(playerid, GRAU, "Du hast nicht das benötigte Adminlevel.");
    return 1;
    }
    ist es möglich, das man nur adminlevel 3 und nicht höher vergeben kann?
    Wenn ja wie?


    Dankesehr

    funkt auch nicht....
    Ich habe nun einen Befehl der funktioniert und nochmal den kick Command der wieder nicht funktioniert.
    Hier mal mein neuer Code:
    COMMAND:kick(playerid,params[])
    {
    new pID,kGrund;
    if(SpielerInfo[playerid][Adminlevel]!=3)return SendClientMessage(playerid,GRAU,"Du hast nicht das benötigte Adminlevel.");
    if(aLogin[playerid]==0) return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    if(sscanf(params,"us",pID,kGrund)) return SendClientMessage(playerid,GRAU,"Verwendung: /kick [playerid] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Kein Spieler mit angegebener ID Online");
    {
    SendClientMessage(playerid,GRAU,"Hier kommt noch was!");
    }
    return 1;
    }
    hier der Code, der funktioniert.

    COMMAND:setlevel(playerid,params[])
    {
    new pID,newLevel;
    if(SpielerInfo[playerid][Adminlevel] == 3)
    {
    if(aLogin[playerid]==1)
    {
    if(sscanf(params, "ui",pID,newLevel))return SendClientMessage(playerid,GRAU,"Verwendung: /makeadmin [playerid] [Adminlevel]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    else
    {
    new name[20],string[100],playername[20];
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"%s hat das Level von %s (ID: %i) auf %i geändert",playername,name,pID,newLevel);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel]>1)
    {
    SendClientMessage(i,GRAU,string);
    }
    }
    SpielerInfo[pID][Level]=newLevel;
    }
    }
    else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    }
    else return SendClientMessage(playerid, GRAU, "Du hast nicht das benötigte Adminlevel.");
    return 1;
    }


    ich versuche es jetzt noch einmal mit solcher Reihenfolge.. Wäre aber trotzdem Dankbar über meine Fehler :pinch:


    mfg.
    Opa


    EDIT// so habe nun einiges getestet und ich kam darauf, das der "Grund" falsch war.
    naja mal schnell nachgelesen und gefunden.
    Einen String in sscanf muss man eine Größe geben.
    Nun klappt alles super.


    ihr wart mir zwar icht die beste Hilfe aber vill. das nächste mal :thumbup:


    //Closed

    Ok ich lese grad das erste mal davon.
    Naja bin kein Nachrichten Fan.
    Nur hoffe ich das nicht Österreich getroffen wird^^
    Naja die Briefbomben waren auch schon nicht so ohne...
    mal abwarten

    das hilft mir nichts, da dies um einiges komplizierter und nichts mit zcmd zu tun hat.
    Und mir ist zcmd einfach sympatischer und viel besser.
    Aber trotzdem danke für deine Hilfe.


    PS: Dieser Thread ist auch an die anderen User gerichtet :thumbup:
    mfg.
    Opa

    also was ich weis:
    if(!IsPlayerConnected(pID)) soviel wie if(IsPlayerConnected(pID)==0) ist.
    eine 0 wird von IsPlayerConnect ausgeben, wenn spieler nicht on ist...
    daher stimmt es so.
    ich habe einen anderen befehl wo dies so geht.


    auch korrigieren wenn ich falsch liege xD


    mfg.
    Opa

    Guten Tag.
    wiedermal will ein CMD nicht.


    Hier der Befehl:
    COMMAND:kick(playerid,params[])
    {
    new pID,kGrund;
    if(sscanf(params,"us",pID,kGrund)) return SendClientMessage(playerid,GRAU,"Verwendung: /kick [playerid] [Grund]");
    if(SpielerInfo[playerid][Adminlevel]>=1)
    if(aLogin[playerid]==1)
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
    else
    {
    new name[20],playername[20],string[1024];
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"%s (ID: %i) wurde von %s gekickt. (Grund:%s)",name,pID,playername,kGrund);
    SendClientMessageToAll(GRAU,string);
    Kick(pID);
    }
    else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
    else return SendClientMessage(playerid,GRAU,"Du hast nicht das benötigte Adminlevel.");
    return 1;
    }


    Das Problem:
    Wenn ich ingame nun /kick mache kommt "Kein Spieler mit angegebener ID Online".
    Die id ist richtig eingeben usw.
    Bitte um Hilfe.


    mfg.
    Opa

    {
    new Spielerdatei (64);
    new name(MAX_PLAYER_NAME);
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),*/Accounts/ts.txt*,name);
    if(dini_Exists(Spielerdatei));
    return 1;
    }

    so mach das mal so rein und sende die erneuten errors.. danke

    Ich möchte jetzt nichts falsches sagen aber ich glaube das das nicht von SA:MP abhängt sondern von San Andreas selber.
    Ich war gestern erst auf einen Server da hatte man manchmal sehr lange mit NoS fahren können aber das können auch Laggs sein da der Server weit weg stand :D