Problem mit /invite Befehl | DCMD

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 Morgen Breadfishler,


    Ich kriege diesen Warning zweimal:
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(869) : warning 202: number of arguments does not match definition
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(869) : warning 202: number of arguments does not match definition



    es geht um ein Fraktions Invite System hier der Quellcode+Betroffene Zeile


    dcmd_invite(playerid, params[])
    {
    if(IstSpielerInFraktion(playerid, 0))return
    SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion.");
    if(sSpieler[playerid][Rang] < 6)return
    SendClientMessage(playerid,ROT,"Dein Rang ist zu niedrig.");
    new pID, fID;
    fID = sSpieler[playerid][Fraktion];
    if(sscanf(params, "u", pID))return
    SendClientMessage(playerid,ROT,"INFO: /invite [ID]");
    if(!IstSpielerInFraktion(pID, 0))return
    SendClientMessage(playerid,ROT,"Spieler ist bereits in einer Fraktion!");
    new string[128];
    format(string,sizeof(string),"%s hat dich in die Fraktion %s eingeladen.", GetPlayerName(playerid), fInfo[fID][f_name]); //Betroffene Zeile
    SendClientMessage(pID,GELB, string);
    SendClientMessage(pID,GELB,"Um die einladung anzunehmen /accept invite eingeben.");
    return 1;
    }


    Vielen Dank im Vorraus! ^^^^

  • Mal ein kleiner Edit da ich den accept invite befehl nun auch gemacht habe nun habe ich 5 Warnings...
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(870) : warning 202: number of arguments does not match definition
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(870) : warning 202: number of arguments does not match definition
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(892) : warning 215: expression has no effect
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(895) : warning 202: number of arguments does not match definition
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(895) : warning 202: number of arguments does not match definition


    dcmd_invite(playerid, params[])
    {
    if(IstSpielerInFraktion(playerid, 0))return
    SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion.");
    if(sSpieler[playerid][Rang] < 6)return
    SendClientMessage(playerid,ROT,"Dein Rang ist zu niedrig.");
    new pID, fID;
    fID = sSpieler[playerid][Fraktion];
    if(sscanf(params, "u", pID))return
    SendClientMessage(playerid,ROT,"INFO: /invite [ID]");
    if(!IstSpielerInFraktion(pID, 0))return
    SendClientMessage(playerid,ROT,"Spieler ist bereits in einer Fraktion!");
    new string[128];
    format(string,sizeof(string),"%s hat dich in die Fraktion %s eingeladen.", GetPlayerName(playerid), fInfo[fID][f_name]); //2x warning 202: number of arguments does not match definition
    SendClientMessage(pID,GELB, string);
    SendClientMessage(pID,GELB,"Um die einladung anzunehmen /accept invite eingeben.");
    SetPVarInt(pID, "inv_fraktid", fID);
    SetPVarInt(pID, "inv_inviter", playerid);
    return 1;
    }


    dcmd_accept(playerid, params[])
    {
    new item[64];
    if(sscanf(params,"s[64]",item))return
    SendClientMessage(playerid,ROT,"INFO: /accept [invite]");
    if(!strcmp(item, "invite", false))
    {
    if(GetPVarInt(playerid, "inv_fraktid") == 0)return
    SendClientMessage(playerid,ROT," Du wurdest in keine Fraktion eingeladen!");
    new fID = GetPVarInt(playerid, "inv_fraktid");
    sSpieler[playerid][Fraktion] = fID;
    sSpieler[playerid][Rang] = 1;
    new string[128];
    format(string,sizeof(string), "Du bist der Fraktion %s beigetreten.");
    fInfo[fID][f_name]; // 1x warning 215: expression has no effect
    SendClientMessage(playerid,GELB, string);
    format(string,sizeof(string), "%s ist der Fraktion beigetreten!");
    GetPlayerName(playerid); // 2x warning 202: number of arguments does not match definition
    SendClientMessage(GetPVarInt(playerid, "inv_inviter"),ROT,string);
    return 1;
    }
    return 1;
    }


    Ich frag mich woher das kommen tut...

    Einmal editiert, zuletzt von KinGRaPTiiC ()

  • Ich blicke es zwar gerade nicht aber kann dir aufjedenfall sagen dass dcmd wirklich ekelhaft ist, verwende am besten ocmd oder zcmd oder sonst was, aber niemals d_cmd



    // Code für [ f_name]?

  • Auf ocmd parallel umzustellen macht keinen Sinn und behebt das Problem auch nicht.
    So sehen die Befehle korrekt aus:
    dcmd_invite(playerid, params[])
    {
    if(IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion.");
    if(sSpieler[playerid][Rang] < 6) return SendClientMessage(playerid,ROT,"Dein Rang ist zu niedrig.");
    new pID, fID;
    fID = sSpieler[playerid][Fraktion];
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid,ROT,"INFO: /invite [ID]");
    if(!IstSpielerInFraktion(pID, 0))return SendClientMessage(playerid,ROT,"Spieler ist bereits in einer Fraktion!");
    new string[128];
    format(string,sizeof(string),"%s hat dich in die Fraktion %s eingeladen.", PlayerName(playerid), fInfo[fID][f_name]);
    SendClientMessage(pID,GELB, string);
    SendClientMessage(pID,GELB,"Um die einladung anzunehmen /accept invite eingeben.");
    SetPVarInt(pID, "inv_fraktid", fID);
    SetPVarInt(pID, "inv_inviter", playerid);
    return 1;
    }
    dcmd_accept(playerid, params[])
    {
    new item[64];
    if(sscanf(params,"s[64]",item))return SendClientMessage(playerid,ROT,"INFO: /accept [invite]");
    if(!strcmp(item, "invite", false))
    {
    if(GetPVarInt(playerid, "inv_fraktid") == 0) return SendClientMessage(playerid,ROT," Du wurdest in keine Fraktion eingeladen!");
    new fID = GetPVarInt(playerid, "inv_fraktid");
    sSpieler[playerid][Fraktion] = fID;
    sSpieler[playerid][Rang] = 1;
    new string[128];
    format(string,sizeof(string), "Du bist der Fraktion %s beigetreten.", fInfo[fID][f_name]);
    SendClientMessage(playerid,GELB, string);
    format(string,sizeof(string), "%s ist der Fraktion beigetreten!", PlayerName(playerid));
    SendClientMessage(GetPVarInt(playerid, "inv_inviter"),ROT,string);
    return 1;
    }
    return 1;
    }


    Und füge diesen stock ganz unten in deinem Gamemode ein:
    stock PlayerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    return name;
    }


    Du hast nämlich immer GetPlayerName direkt im format verwendet, das geht aber nicht.
    Nutze jetzt stattdessen "PlayerName", damit kannst du es direkt nutzen (siehe Code).

  • Versuche
    if(sscanf(params,"s[64]",item))return SendClientMessage(playerid,ROT,"INFO: /accept [invite]");
    zu:
    if(sscanf(params,"s",item))return SendClientMessage(playerid,ROT,"INFO: /accept [invite]");


    Wenn du die sscanf Funktion anstatt dem Plugin nutzt, darfst du die Längenangabe nicht dabei haben.

  • @Jeffry
    Das kommt dabei raus...
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(880) : error 017: undefined symbol "item"


    /Edit


    Habs selbst behoben werde es nun Ingame testen habe deinen gehabt:


    if(sscanf(params,"s",item))return SendClientMessage(playerid,ROT,"INFO: /accept [invite]");


    und geändert zu
    new item[64];
    if(sscanf(params,"s",item))return SendClientMessage(playerid,ROT,"INFO: /accept [invite]");
    if(!strcmp(item, "invite", false))



    Danke für die Hilfe :)

    Einmal editiert, zuletzt von KinGRaPTiiC ()