/invite problem

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
  • Wenn ich als Leader /invite [ID] eingebe dann lade ich mich selber ein und /anhemen genau genau das gleiche und /ablehnen auch ;(


    hir die Codes:


    /invite:


    ocmd:invite(playerid,params[])
    {
    new pID,str[128],str0[128];
    if(PlayerInfo[playerid][pFraktionsLeader] == 0)return SendClientMessage(playerid,Rot,"[Info]: Du bist kein LEader einer Fraktion!");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Gelb,"[Benutze]: /invite [ID/Name]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Rot,"[Info]: Der Spieler ist offline");
    if(Einladung[pID]!=0)return SendClientMessage(playerid,Gelb,"[Info]: Der Spieler wurde schon eingeladen!");
    format(str,sizeof(str),"[Info]: Du hast %s in die Fraktion %s eingeladen.",PlayerName(pID),frakname(PlayerInfo[playerid][pFraktionsLeader]));
    SendClientMessage(playerid,Gelb,str);
    format(str0,sizeof(str0),"[Info]: %s hat dich zu der Fraktion %s eingeladen.\n Um die einladung anzunehmen gib ein /annehmen,\n wenn du sie ablehnen willst /ablehnen.",PlayerName(playerid),frakname(PlayerInfo[playerid][pFraktionsLeader]));
    SendClientMessage(pID,Gelb,str);
    Einladung[pID]=PlayerInfo[playerid][pFraktionsLeader];
    Einladender[pID]=playerid;
    return 1;
    }


    /annehmen und /ablehnen:


    ocmd:annehmen(playerid,params[])
    {
    new str[128],str0[128],pID;
    if(Einladung[playerid]==0)return SendClientMessage(playerid,Gelb,"[Info]: Du wurdest von keinem Leader eingeladen!");
    format(str,sizeof(str),"[Info]: Du hast die Einladung von %s zur der Fraktion %s angenommen!",Einladender[playerid],frakname(Einladung[playerid]));
    SendClientMessage(playerid,Orange,str);
    format(str0,sizeof(str0),"[Info]: %s hat die Einladung in die Fraktion %s angenommen!",PlayerName(playerid),frakname(Einladung[playerid]));
    SendClientMessage(Einladender[pID],Orange,str);
    PlayerInfo[playerid][pFraktionsMember]=Einladung[playerid];
    SavePlayer(playerid);
    Einladung[playerid]=0;
    Einladender[playerid]=0;
    return 1;
    }
    ocmd:ablehnen(playerid,params[])
    {
    new str[128],str0[128],pID;
    if(Einladung[playerid]==0)return SendClientMessage(playerid,Gelb,"[Info]: Du wurdest von keinem Leader eingeladen!");
    format(str,sizeof(str),"[Info]: Du hast die Einladung von %s zur der Fraktion %s abgelehnt!",Einladender[pID],frakname(Einladung[playerid]));
    SendClientMessage(playerid,Gelb,str);
    format(str0,sizeof(str0),"[Info]: %s hat die Einladung in die Fraktion %s abgelehnt!",PlayerName(playerid),frakname(Einladung[playerid]));
    SendClientMessage(Einladender[pID],Gelb,str0);
    Einladung[playerid]=0;
    Einladender[playerid]=0;
    return 1;
    }


    ich hoffe mir kann einer helfen.


    mfg. Ich weiss net warum ?(

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • Zitat

    if(Einladung[pID]!=0)return SendClientMessage(playerid,Gelb,"[Info]: Der Spieler wurde schon eingeladen!");


    Darf der Spieler mit der ID 0 etwa niemanden Einladen ? Benutzt für ungültige Spieler ID's INVALID_PLAYER_ID. Damit gibt es keine Verwechslung oder Probleme.
    Bei /ablehnen und /annehmen benutzt du teilweise die Variable pID. Du weist dieser Variable aber nie einen Wert zu. Daher ist pID immer 0. Dort müsste der Fehler liegen.

  • Wie löst du was ?
    Ich hab dir die Fehler doch genannt. Die zu beheben sollte doch kein Problem sein. Für denn Fall du verstehst es doch nicht, was verstehst du nicht.


    Zitat

    Darf der Spieler mit der ID 0 etwa niemanden Einladen ? Benutzt für ungültige Spieler ID's INVALID_PLAYER_ID. Damit gibt es keine Verwechslung oder Probleme.


    INVALID_PLAYER_ID soll bedeuten,dass kein Spieler den Spieler eingeladen hat. Denn zZt ist bei dir ID 0 ungültig und bedeutet,dass man von Niemanden eingeladen wurde.


    Zitat

    Bei /ablehnen und /annehmen benutzt du teilweise die Variable pID. Du weist dieser Variable aber nie einen Wert zu. Daher ist pID immer 0. Dort müsste der Fehler liegen.


    Du benutzt pID obwohl du niemals sagst,was pID sein soll. Überleg doch mal,was bei dir bei /ablehnen und /annehmen pID sein soll. Eventuell der Spieler, von dem man eingeladen wurde ?!

  • Ich mach dir den Code definitiv nicht fertig.
    Du hast den Code bereits teilweise /invite , musst ihn nur richtig umdrehen.


    Zitat

    Einladender[pID] = playerid;


    Wo liegt denn jetzt das Problem den Wert auslesen den du dort ( ^ Code hier drüber ) benutzt um ihn weiter zu verarbeiten ? Du willst doch die "playerid" auslesen, die sich hinter der Variable des Spielers verbirgt der /annehmen bzw /ablehnen eingibt.


    Ja, ich vermute du hast die Grundlagen nicht drauf.


  • Du verstehst also deinen eigenen Code nicht ?
    Wäre definitiv für dich angebracht sich nochmal die Grundlagen der Programmierung genau durchzulesen. Wenn du deinen eigenen Code nicht mal verstehst, wie soll man dir helfen :| .


  • Darf der Spieler mit der ID 0 etwa niemanden Einladen ? Benutzt für ungültige Spieler ID's INVALID_PLAYER_ID. Damit gibt es keine Verwechslung oder Probleme.
    Bei /ablehnen und /annehmen benutzt du teilweise die Variable pID. Du weist dieser Variable aber nie einen Wert zu. Daher ist pID immer 0. Dort müsste der Fehler liegen.

    in der variable "Einladung" wird aber kein spieler gespeichert sondern die fraktions id.
    "Einladender" ist lediglich zum senden einer nachricht gedacht.


    edit: bei /annehmen und /ablehnen erstmal pID löschen das gehört dort nicht hin.


    Goldkiller: ist das forum nicht dafür gedacht hilfe beim scripten zu bekommen aber du machst dich nur über ihn lustig das er nicht scripten kann. find ich scheisse !

    4 Mal editiert, zuletzt von Tround ()


  • Goldkiller: ist das forum nicht dafür gedacht hilfe beim scripten zu bekommen aber du machst dich nur über ihn lustig das er nicht scripten kann. find ich scheisse !


    Hab ich etwa nicht geholfen ? Wie kommst du darauf ? Nur weil ich keine fertige Lösung gepostet habe ? Hast du doch auch nicht getan.


    Ich mache mich auch nicht über ihn lustig. Es ist nur sehr frakwürdig,wieso er seinen eigenen Code nicht versteht. Die Lösung ist leicht umzusetzen, da siehst du wohl auch.
    Er ist aber hier gefordert und nicht Andere User. Der Bereich Scripting Base ist kein "Hey,mach mir die Lösung bitte fertig". Hier wird Hilfe bei der Problemlösung angeboten, genau das habe ich getan. Ob du das scheisse findest ist mir egal. Man lernt indem man Probleme selber löst, nicht Anders.


    In Bezug auf Einladung/Einladender gebe ich dir aber recht.