Clan accept buggt

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
  • Immer wenn ich einen invite steht das er eingeladen wurde wenn er den befehl eingibt steht da du wurdest nicht eingeladen



    script


    ocmd:caccept(playerid,params[])
    {
    new id,str[128];
    new Einladung[MAX_PLAYERS];
    new pinvite,pname[MAX_PLAYER_NAME],string[200],clanname3d[50],string1[250],file[250];
    if(sscanf(params,"u",id))return SendClientMessage(playerid,COLOR_BLUE,"/annehmen [ID / Teil des Namens]");
    if(Einladung[id] != 1)return SendClientMessage(playerid,COLOR_BLUE,"Dich hat keiner eingeladen");
    if(Einladung[playerid] != 1)return SendClientMessage(playerid,COLOR_BLUE,"Der Spieler hat dich nicht eingeladen");
    format(str,sizeof(str),"%s hat deine Einladung angenommen",PlayerName(playerid));
    SendClientMessage(id,COLOR_BLUE,str);
    format(str,sizeof(str),"Du hast %s seine einladung angenommen",PlayerName(id));
    SendClientMessage(playerid,COLOR_BLUE,str);
    if(clanstate[pinvite] == 0)
    {
    if(GetPlayerScore(pinvite) >1)
    {
    clanstate[pinvite] = 1;
    format(clanname3d,sizeof(clanname3d),"%s{FF0000} Member {EEEEEE}",clanname[playerid]);
    labels[pinvite] = Create3DTextLabel(clanname3d,-1,30.0,40.0,50.0,40.0,0);
    Attach3DTextLabelToPlayer(labels[pinvite], pinvite, 0.0, 0.0, 0.5);
    GetPlayerName(pinvite,pname,sizeof(pname));
    format(string,sizeof(string),"{2DFF00}Spieler %s {EEEEEE} ist dem Clan: {FFFA00}%s beigetreten",pname,clanname[playerid]);
    format(string1,sizeof(string1),"Du bist dem Clan '%s' beigetreten",clanname[playerid]);
    SendClientMessageToAll(-1,string);
    SendClientMessage(pinvite,COLOR_YELLOW,string1);
    format(file,sizeof(file),"/Clans/%s.cfg",(pname));
    if(!dini_Exists(file))
    {
    dini_Create(file);
    dini_Set(file,"Clan",clanname[playerid]);
    dini_IntSet(file,"Rang",1);
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED, "Der Spieler benötigt das Level 2");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED, "Der Spieler befindet sich bereits in einem Clan");
    }
    return 1;
    }

  • Du erstellst Einladung in deinem Befehl.
    Erstelle sie global also oben im script.
    new Einladung[MAX_PLAYERS];; // Variable erstellen


    Beim inviten machst du dann einfach:
    Einladung[pID] = 1; // der spieler der invited wurde


    Beim akzeptieren:
    if (Einladung[playerid] != 1) return SendClientMessage(playerid, COLOR_RED, "Fehler: Du wurdest nicht eingeladen."); // Wenn die Variable nicht 1 ist wird die Fehlermeldung kommen
    Einladung[playerid] = 0; // Variable wieder auf 0 stellen, nach dem er im clan ist

  • Pascal.:


    Ich weiß ja nicht ob man jeden immer die Codes hinterher werfen muss wenn sie daraus lernen sollen. Die Antwort liegt schon oben in meiner Antwort parat.
    Danach regen sich immer alle auf das jeder hier Copy Pasted und Fremdcodes verwendet die ihnen nicht einmal gehören.

  • Habs behoben hab das ! durch 2x == ersetzt dann gings.


    Dir ist Bewusst das du keinen Wert auf "Einladung" setzt sondern ihn definierst und ihn bis auf die Abfragen nicht verwendest?
    Du solltest bei einem Invite die Variable des Spielers auf einen Wert setzen und wenn dieser positiv ist, kann man ihn annehmen, also den Invite.

  • Du erstellst dir ein Array der Einladungen welches der SpielerID zugewiesen wird. (new Einladung[MAX_PLAYERS])
    Du schreibst den Wert der Variable des eingeladenen Spieler auf true. (Einladung[playerid] = true)
    Du ließt diesen beim "/accept"-Befehl aus und schaust ob er vergeben wurde. (if(Einladung[id]))


    new einladung[max_players];


    ocmd:enableinvite(playerid, params[])
    {
    if(IsPlayerConnected(...))
    {
    einladung[playerid] = true;
    }
    return 1;
    }


    ocmd:checkinvite(playerid, params[])
    {
    if(IsPlayerConnected(...))
    {
    if(einladung[playerid]))
    SendClientMessage(..., ..., "Du wurdest eingeladen!");
    }
    return 1;
    }


    Du kannst dir die ganzen IsPlayerConnected checks sparen wenn du die z.B beim OnPlayerCmdText abfragst.

    2 Mal editiert, zuletzt von Warren ()

  • Gleiche fehler meldung


    e// Errors...


    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2304) : error 017: undefined symbol "max_players"
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2304) : error 009: invalid array size (negative, zero or out of bounds)
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2308) : error 029: invalid expression, assumed zero
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2317) : error 029: invalid expression, assumed zero
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2319) : error 029: invalid expression, assumed zero
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2320) : warning 217: loose indentation
    C:\Users\Jan\Desktop\Purge Deathmatch\gamemodes\PDM.pwn(2320) : error 029: invalid expression, assumed zero
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    6 Errors.

  • Ja, gucke mir manchmal nicht die Beiträge an, Sorry. :D


    Derox, wir brauchen auch die Zeilen wo die Errors sind, und ersetzt max_players zu MAX_PLAYERS



    Im clan system zeigt er keine errors an nuzr wenn ich einen invite und er annehmen will steht das das er keine einladung bekommen hat

  • Und was war damit?


    Einmal editiert, zuletzt von Pascal. ()