Probleme mit OCMD : InviteMember

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 Guys!
    Ich hab momentan nen Problem mit meinen OCMD Befehlen. Siehe hier :


    InviteMember :


    Spoiler anzeigen

    Bei InviteMember ist das Problem das A.) Ich nicht weiß wie man in Dialoge Strings einbaut und B.) "Server Unknown Command" angezeigt wird.
    OCMD Befehl :

    ocmd:invitemember(playerid,params[])
    {
    if(!IsPlayerLeader(playerid,fID)) return ERROR_LEADER
    new pID,fID;
    if(sscanf(params,"u",pID)) return SCM(playerid,Rot,"Verwendung : /invitemember [ID]");
    ShowPlayerDialog(pID,DIALOG_FRAKJOIN,DIALOG_STYLE_MSGBOX,"Fraktionseinladung","Du wurdest zur %s Fraktion eingeladen! ","Beitreten","Ablehnen");

    return 1;
    }

  • Probiers mal so:


    ocmd:invitemember(playerid,params[])
    {
    if(!IsPlayerLeader(playerid)) return SCM(playerid,Rot,"Du bist kein Leader !");
    new pID;
    if(sscanf(params,"u",pID)) return SCM(playerid,Rot,"Verwendung : /invitemember [ID]");
    ShowPlayerDialog(pID,DIALOG_FRAKJOIN,DIALOG_STYLE_MSGBOX,"Fraktionseinladung","Du wurdest zur %s Fraktion eingeladen! ","Beitreten","Ablehnen");
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Seit wann kann ein Dialog ein stringwert wiedergeben?

    All in all it's just another brick in the wall

  • "Du wurdest zur %s Fraktion eingeladen! "


    Man kann in einem Dialog kein %s,%i, etc verwenden.
    Dafür brauchst du die FraktionsID des Leaders.
    Das geht z.B. so:
    stock GetFracNameByID(fracid)
    {
    new string[64];
    switch(fracid)
    {
    case 0: string = "Zivilist";
    case 1: string = "Los Santos Police Department";
    case 2: string = "Federal Bureau of Investigation";
    case 3: string = "U.S. Army";
    case 4: string = "Rettungsdienst";
    }
    return string;
    }
    Dann erstellst du den String:
    new string[128], new LeaderFrak = GetPVarInt(playerid,"Fraktion");
    format(string,sizeof(string),"Du wurdest zur Fraktion %s eingeladen!",GetFracNameByID(LeaderFrak));


    dann setzt du das in den Dialog ein:
    ShowPlayerDialog(pID,DIALOG_FRAKJOIN,DIALOG_STYLE_MSGBOX,"Fraktionseinladung",string,"Beitreten","Ablehnen");


    lg
    :thumbup:


  • ocmd:invitemember(playerid,params[])
    {
    new pID,fID;
    if(GetPVarInt(playerid,"Fraktion") == 0) return 1; //Wenn Zivilist soll nichts passieren.
    if(!IsPlayerLeader(playerid,fID)) return ERROR_LEADER
    if(sscanf(params,"u",pID)) return SCM(playerid,Rot,"Verwendung : /invitemember [ID]");
    new string[128];
    new LeaderFrak = GetPVarInt(playerid,"Fraktion");
    format(string,sizeof(string),"Du wurdest zur %s Fraktion eingeladen!",GetFracNameByID(LeaderFrak));
    ShowPlayerDialog(pID,DIALOG_FRAKJOIN,DIALOG_STYLE_MSGBOX,"Fraktionseinladung",string,"Beitreten","Ablehnen");
    return 1;
    }


    Jetzt ist das Problem das er mir anzeigt ich sei kein Leader.


    Abfrage :


    stock IsPlayerLeader(playerid,frakid)
    {
    if(GetPVarInt(playerid,"Leader") ==frakid) return 1;
    return 0;
    }

  • if(!IsPlayerLeader(playerid,fID)) return ERROR_LEADER


    So das LeaderAbfrage Ding ist geklärt.
    Nur das nächste Problem ist das er die Leader Rechte nicht richtig bzw. garnicht lädt.


    Spieler Speichern :

    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"eingeloggt")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/BenutzerAccounts/%s.txt",name);
    //Was gespeichert werden soll//
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Guthaben",GetPlayerMoney(playerid)); //Geld auf der Hand
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion")); //Fraktion
    dini_IntSet(Spielerdatei,"Leader",GetPVarInt(playerid,"Leader")); //Leader einer Fraktion
    dini_IntSet(Spielerdatei,"Kontostand",GetPVarInt(playerid,"Kontostand")); //Kontostand
    }
    return 1;
    }


    Spieler Laden :

    stock SpielerLaden(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/BenutzerAccounts/%s.txt",name);
    //Was geladen werden soll//
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Guthaben")); //Geld auf der Hand
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Leader",dini_Int(Spielerdatei,"Leader"));
    SetPVarInt(playerid,"Kontostand",dini_Int(Spielerdatei,"Kontostand"));
    SetPVarInt(playerid,"eingeloggt",1);
    return 1;
    }