/do

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
  • Hallo,
    habe mich gerade an einen, für mich noch komplizierten Befehl gemacht.


    So schaut er aus:


    if(strcmp("/do",cmdtext) == 0)
    {
    if(Player[playerid][admin] >= 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && Player[i][admin] >= 1||!IsPlayerNPC(i))
    {
    new str[128];
    new admin[MAX_PLAYER_NAME];//1956
    GetPlayerName(playerid, admin, sizeof(admin));//1957
    SendAdminMessage(COLOR_YELLOW,"(( %s -> %s ))",admin, i);//1958
    format(str, sizeof(str),"(( %s: %s ))");
    SendClientMessage(i, COLOR_YELLOW, str);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED,"Du bist kein Supporter!");
    }
    }
    Es soll halt so sein.


    Der Admin kann /do machen, und dem Spieler (i) ein Nachricht schreiben, z.B.
    "(( playerid: Hallo.)"
    Gleichzeitig wird an die Admins:
    SendAdminMessage(COLOR_YELLOW,"(( %s -> %s ))",admin, i);
    Eine Meldung geschickt, das Der Admin %s, Spieler %s eine Nachricht schrieb.


    Doch ich erhalte Errors & Warns:
    C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(1956) : warning 219: local variable "admin" shadows a variable at a preceding level
    C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(1957) : error 035: argument type mismatch (argument 2)
    C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(1957) : error 035: argument type mismatch (argument 2)
    C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(1958) : warning 202: number of arguments does not match definition
    C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(1958) : warning 202: number of arguments does not match definition
    C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(1956) : warning 204: symbol is assigned a value that is never used: "admin"
    C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(7224) : warning 203: symbol is never used: "IsNumeric"
    C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(7224) : warning 203: symbol is never used: "SpielerWanted"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    Hoffe mir kann jemand helfen!

  • Du hast "admin" schon in deinem Enum. mach mal anstatt
    new admin[MAX_PLAYER_NAME];//1956
    new pAdmin[MAX_PLAYER_NAME];//1956
    oder sowas.
    Also so ungefähr:
    if(strcmp("/do",cmdtext) == 0)
    {
    if(Player[playerid][admin] >= 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && Player[i][admin] >= 1||!IsPlayerNPC(i))
    {
    new str[128];
    new pAdmin[MAX_PLAYER_NAME];//1956
    GetPlayerName(playerid, pAdmin, sizeof(pAdmin));//1957
    SendAdminMessage(COLOR_YELLOW,"(( %s -> %s ))",pAdmin, i);//1958
    format(str, sizeof(str),"(( %s: %s ))");
    SendClientMessage(i, COLOR_YELLOW, str);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED,"Du bist kein Supporter!");
    }
    }
    Ausserdem bist du dir sicher das du in SendAdminMessage formate verwenden kannst?


    Mfg.


    //Edit @ EvilToastBrot:
    format(str, sizeof(str),"(( %s: %s ))");
    Soll an den Spieler geschickt werden und
    SendAdminMessage(COLOR_YELLOW,"(( %s -> %s ))",admin, i);//1958
    An Alle Admins die Online sind

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

  • C:\Dokumente und Einstellungen\Vinni\Desktop\SAMP-Server\Server\gamemodes\pipapo123.pwn(1958) : error 035: argument type mismatch (argument 1)


    SendClientMessage(pAdmin,COLOR_YELLOW,"(( %s -> %s ))",pAdmin, i);//1958



    Mh..
    Da soll hin, das (( %s -> %s )) nur an alle Admins ab Rank 1 ([playerid][admin] >= 1) gesendet werden soll.
    Wie mach ich das?!

  • Wie schon gesagt bist du dir sicher das du in SendAdminMessage formate verwenden kannst?
    Versuch es mal So:
    if(strcmp("/do",cmdtext) == 0)
    {
    if(Player[playerid][admin] >= 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && Player[i][admin] >= 1||!IsPlayerNPC(i))
    {
    new string1[128],string2[128],pAdmin[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pAdmin, sizeof(pAdmin));//1957
    format(string1, sizeof(string1),"(( %s: %s ))", pAdmin, i);
    format(string2, sizeof(string2),"(( %s -> %s ))", pAdmin, i);
    SendClientMessage(i, COLOR_YELLOW, string1);
    SendAdminMessage(COLOR_YELLOW, string2);//1958
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED,"Du bist kein Supporter!");
    }
    }
    Allerdings ergibt der Befehl so keinen sinn. Weil du weder eine Spielerid, noch eine nachricht mit in den befehl eingebaut hast.

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

  • Hier, gibt dann aus:
    (( AdminABC sagt dir: Text )) < zum User
    (( AdminABC -> User : Text )) < An alle Admins
    Die Funktion SendAdminMessage ersetzt schon die For-Schleife

    if(strcmp(cmd, "/do", true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Admin!");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Hinweis: /do [playerid/PartOfName] [Text]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if (IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Hinweis: /do [playerid/PartOfName] [Text]");
    return 1;
    }
    new string1[128],string2[128],AdminName[MAX_PLAYER_NAME],AndererName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, AdminName, sizeof(AdminName));
    GetPlayerName(giveplayerid, AndererName, sizeof(AndererName));
    format(string1, sizeof(string1),"(( %s sagt dir: %s ))", AdminName, result);
    SendClientMessage(giveplayerid, COLOR_YELLOW, string1);
    format(string2, sizeof(string2),"(( %s -> %s : %s ))", AdminName, AndererName,result);
    SendAdminMessage(COLOR_YELLOW, string2);
    return 1;
    }
    }
    return 1;
    }

  • Wart du willst, dass ein Text gesendeat wird an die bestimmte playerid aber nur, Admins diesen Befehl nutzen können habe ich das richtig verstanden?Wenn ja dann hier
    dcmd_do(playerid,params[])
    {
    if(DeineAdminVariable < 1) {
    return SendClientMessage(playerid,grau,"Du must Admins sein umd diesen Befehl nutzen zu können");
    }
    new atext[128],pID;
    if(sscanf(params,"ds",pID,atext)){
    return SendClientMessage(playerid,grau,"USAGE: /a [playaid][text]");
    }
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,grau,"der Spieler ist nich ON!");
    }


    new name[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"Nachricht von Admin (%s): %s" ,name,atext);
    SendClientMessage(pID,COLOR_YELLOW,string);
    return 1;
    }


  • Krieg ich eine Pawn exe.