Fehler bei /invite

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
  • Hey Com,
    ich habe mir einen Selfmade /invite Befehl gemacht und komme da an folgendes Problem:
    Wenn ich mir selber in eine Fraktion invite, also sozusagen in meine eigene Fraktion, werde ich immer wieder auf Zivilist gesetzt.


    ocmd:invite(playerid,params[])
    {
    new pID,fID;
    new string[128];
    new fraktname[128];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    **FRAKTIONSDEFINES**
    }
    if(!IsPlayerAnLeader(playerid))return SendClientMessage(playerid,ROT,"Du bist kein Leader.");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"/invite [ID]");
    GetPVarInt(playerid,"Fraktion");
    SetPVarInt(pID,"Fraktion",fID);
    SetPVarInt(pID,"Leader",0);
    format(string,sizeof(string),"Du hast %s in die Fraktion %s invitet.",SpielerName(pID),fraktname);
    SendClientMessage(playerid,HBLAU,string);
    format(string,sizeof(string),"%s hat dich in seine Fraktion %s invitet",SpielerName(playerid),fraktname);
    SendClientMessage(playerid,HBLAU,string);
    return 1;
    }


    Eigentlich klappt alles, bis auf das Problem mit dem Setzen der Fraktion.


    MfG.

  • Jetzt funktionierts danke!


    Ich bräuchte aber nochmal fix Hilfe zum /makeleader-Befehl. Der Fehler ist mir gerade aufgefallen.
    Wenn ich "/makeleader 0 0" eingebe (Also mich zum Zivi mache) ist alles ok. Wenn ich dann aber
    "/makeleader 0 1" (Regierung) eingeben steht da das ich mich Zivilist gemacht hab. Wenn ich nochmal eingebe "/makeleader 0 1" dann steht da ich bin Regierung.


    ocmd:makeleader(playerid,params[])
    {
    new pID,fID;
    new string[128];
    new fraktname[128];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    **FRAKTIONSDEFINES**
    }
    if(!IsPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Dein Adminrang ist zu niedrig!");
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,ROT,"/makeleader [ID] [Fraktions ID] (/fraks)");
    if(fID<0||fID>11)return SendClientMessage(playerid,ROT,"Bitte gültige Fraktion angeben (0-11).");
    SetPVarInt(pID,"Fraktion",fID);
    SetPVarInt(pID,"Leader",1);
    SpielerSpeichern(pID);
    format(string,sizeof(string),"Du hast %s Leader der Fraktion %s gemacht",SpielerName(pID),fraktname);
    SendClientMessage(playerid,HBLAU,string);
    format(string,sizeof(string),"%s hat dich Leader der Fraktion %s gemacht",SpielerName(playerid),fraktname);
    SendClientMessage(playerid,HBLAU,string);
    format(string,sizeof(string),"AdmCmd: %s hat %s Leader der Fraktion %s gemacht",SpielerName(playerid),SpielerName(pID),fraktname);
    SendClientMessageToAll(ADMROT,string);
    return 1;
    }


    Der Fehler kommt aber auch erst seit gerade eben. Vorher hat alles super funktioniert. Ich habe nichts an dem Befehl oder den Fraktionsdefines geändert.

  • SendClientMessage(playerid,HBLAU,string);
    playerid zu pID


    /e: Beim Zweiten ;)


    /e2:
    Verdeutlichung:

    Spoiler anzeigen
    ocmd:makeleader(playerid,params[])
    {
    new pID,fID;
    new string[128];
    new fraktname[128];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    **FRAKTIONSDEFINES**
    }
    if(!IsPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Dein Adminrang ist zu niedrig!");
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,ROT,"/makeleader [ID] [Fraktions ID] (/fraks)");
    if(fID<0||fID>11)return SendClientMessage(playerid,ROT,"Bitte gültige Fraktion angeben (0-11).");
    SetPVarInt(pID,"Fraktion",fID);
    SetPVarInt(pID,"Leader",1);
    SpielerSpeichern(pID);
    format(string,sizeof(string),"Du hast %s Leader der Fraktion %s gemacht",SpielerName(pID),fraktname);
    SendClientMessage(playerid,HBLAU,string);
    format(string,sizeof(string),"%s hat dich Leader der Fraktion %s gemacht",SpielerName(playerid),fraktname);
    SendClientMessage(playerid,HBLAU,string); //<---- playerid -> pID
    format(string,sizeof(string),"AdmCmd: %s hat %s Leader der Fraktion %s gemacht",SpielerName(playerid),SpielerName(pID),fraktname);
    SendClientMessageToAll(ADMROT,string);
    return 1;
    }

  • Nein, funktioniert noch nicht.


    //edit: Wenn ich die Messages ändere auf:


    format(string,sizeof(string),"Du hast %s Leader der Fraktion %i (%s) gemacht",SpielerName(pID),fID,fraktname);
    SendClientMessage(playerid,HBLAU,string);
    format(string,sizeof(string),"%s hat dich Leader der Fraktion %i (%s) gemacht",SpielerName(playerid),fID,fraktname);
    SendClientMessage(pID,HBLAU,string);
    format(string,sizeof(string),"AdmCmd: %s hat %s Leader der Fraktion %i (%s) gemacht",SpielerName(playerid),SpielerName(pID),fID,fraktname);
    SendClientMessageToAll(ADMROT,string);


    Dann gibt er mir die richtige ID (%i) an aber nicht den Fraktionsnamen (fraktname).


    2 Mal editiert, zuletzt von Waterwavez ()

  • Habe dir das mal neu geschrieben, weil ich zu faul war mir alls durchzulesen ^^


    Mach nicht den Fehler und kopier das in deinen Gamemode, die Hauptsache ist,
    dass du deine Fehler verstehst und sie beim nächsten mal nichtmehr machst.


    Deswegen: Vergleichen und draus lernen :)


    Spoiler anzeigen
    ocmd:invite(playerid,params[])
    {
    if(!IsPlayerAnLeader(playerid))return SendClientMessage(playerid,ROT,"Du bist kein Leader.");
    new pID;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"/invite [ID]");
    new string[128];
    new fraktname[56];
    new fID=GetPVarInt(playerid,"Fraktion");
    switch(fID)
    {
    case 0: fraktname="Fraktion 0";
    case 1: fraktname="Fraktion 1";
    case 2: fraktname="Fraktion 2";
    }
    SetPVarInt(pID,"Fraktion",fID);
    SetPVarInt(pID,"Leader",0);
    format(string,sizeof(string),"Du hast %s in die Fraktion %s invitet.",SpielerName(pID),fraktname);
    SendClientMessage(playerid,HBLAU,string);
    format(string,sizeof(string),"%s hat dich in seine Fraktion %s invitet",SpielerName(playerid),fraktname);
    SendClientMessage(pID,HBLAU,string);
    return 1;
    }