Spieler Banned dialog zeigt ihm Wann von wem und Grund?

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 Tag,


    Ich versuche schon seit langen ein System zu entwickeln was Spielern die Gebannt sind zeigen wer sie Gesperrt hat warum und wann.
    Mit ein bisschen Text den ich dann schreiben will bloß weiß ich nicht wie.


    vorgestellt habe ich mir das so.
    if(SetPVarInt(playerid,"Baned",dini_Int(pfad,"Baned")==1)
    {
    new dialogstring[50],header[18 + MAX_PLAYER_NAME],pID,bName[MAX_PLAYER_NAME],bgrund;
    GetPlayerName(playerid,bName,sizeof(bName));
    format(dialogstring,sizeof(dialogstring),"Guten Tag, %s ihr Account ist Gesperrt.\nSomit können sie nicht mehr mit ihm Spielen.\n\n\nAdministrator : %s\n\n\nGrund : %s\n\n\nBei Fragen bezüglichst der Sperrung wenden sie sich an den Administrator.",pID,bName,bgrund);
    format(header,sizeof(header),"Account Gesperrt %s",bName);
    ShowPlayerDialog(playerid,Stats,DIALOG_STYLE_MSGBOX,header,dialogstring,"Oke","Abbrechen");
    }
    return 1;


    Aber hab 1 Error und krieg es nicht hin :

    Errors
    C:\Users\Patrick\Desktop\Server\gamemodes\IRP-City.pwn(189) : warning 219: local variable "name" shadows a variable at a preceding level
    C:\Users\Patrick\Desktop\Server\gamemodes\IRP-City.pwn(189) : warning 219: local variable "pfad" shadows a variable at a preceding level
    C:\Users\Patrick\Desktop\Server\gamemodes\IRP-City.pwn(194) : error 001: expected token: ")", but found "{"
    C:\Users\Patrick\Desktop\Server\gamemodes\IRP-City.pwn(258) : warning 217: loose indentation
    C:\Users\Patrick\Desktop\Server\gamemodes\IRP-City.pwn(309) : warning 202: number of arguments does not match definition
    C:\Users\Patrick\Desktop\Server\gamemodes\IRP-City.pwn(519) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Errors
    1 Error.


    //e ich will auch das die Art da steht entweder Ingame Ban oder IP Bann oder Time Ban


    Mit Freundlichen Grüßen

  • Aber nun zeigt er mir nichtmal diesen Dialog also wenn mein Acc gebannt ist und ich wieder rauf gehe steht da nur Server Closet the Conection.


    //e Nun habe ich was probiert mit der Abfrage ob er Gebannt ist nach oben zu machen also so:
    public OnPlayerConnect(playerid)
    {
    new pfad[64], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(pfad,sizeof(pfad),"/Accounts/%s.txt",name);
    if(dini_Exists(pfad))
    if(SetPVarInt(playerid,"Baned",dini_Int(pfad,"Baned")==1))
    {
    new dialogstring[9999],header[18 + MAX_PLAYER_NAME],pID,bName[MAX_PLAYER_NAME],bgrund;
    GetPlayerName(playerid,bName,sizeof(bName));
    format(dialogstring,sizeof(dialogstring),"Guten Tag, %s ihr Account ist Gesperrt.\nSomit können sie nicht mehr mit ihm Spielen.\n\n\nAdministrator : %s\n\n\nGrund : %s\n\n\nBei Fragen bezüglichst der Sperrung wenden sie sich an den Administrator.",pID,bName,bgrund);
    format(header,sizeof(header),"Account Gesperrt %s",bName);
    ShowPlayerDialog(playerid,Stats,DIALOG_STYLE_MSGBOX,header,dialogstring,"Oke","Abbrechen");
    Kick(playerid);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
    }
    new string[144];
    format(string, sizeof(string),"Herzlich Willkommen auf United Deathmatch, %s",name);
    SendClientMessage(playerid,GELB,string);
    if(IsPlayerAdmin(playerid))
    {
    new pID, msg[144];
    format(msg, sizeof(msg),"Willkommen %s, du hast dich als Admin Rank %i eingeloggt.",SpielerName(playerid),GetPVarInt(pID,"Adminlevel"));
    SendClientMessage(playerid,GELB,msg);
    return 1;
    }
    Arena[playerid] = 0;
    {
    new name[MAX_PLAYER_NAME], pfad[64];
    GetPlayerName(playerid,name,sizeof(name));
    format(pfad,sizeof(pfad),"/Accounts/%s.txt",name);
    }
    return 1;
    }
    Aber nun überspringt er die Registrierung und das soll so nicht sein.
    Außerdem wird mein eig. Gebannter spieler nicht gebannt.


    Mit Freundlichen Grüßen

    Einmal editiert, zuletzt von The Sensei ()

  • Hey,


    new dialogstring[9999] = totale übertreibung.
    Das mit der Closed Connection liegt an Samp.
    Probiere es so:
    forward tKick(playerid); //oben
    public tkick(playerid)
    {
    Kick(playerid);
    return 1;
    }


    //Da wo du kick(playerid) benutzt
    SetTimerEx("tKick",1000,0,"i",playerid);


    /////
    if(SetPVarInt(playerid,"Baned",dini_Int(pfad,"Baned")==1))
    //zu
    if(dini_Int(pfad,"Baned") == 1) // Ansonsten ist doch jeder Spieler gebannt, wenn du die Variable jedes mal setzt

  • @FerienFreak
    Ich glaube du hast den Unterschied zwischen "Get" und "Set" noch nicht wirklich verstanden.
    Mit "Get" ließt du einen Wert aus. Mit "Set" setzt du ihn...


    In deiner "Abfrage" hast du if(SetPVar..) und nicht if(GetPVar)

  • Nein wo muss das hin :
    public tkick(playerid)
    {
    Kick(playerid);
    return 1;
    }
    forward tKick(playerid); //oben
    //Da wo du kick(playerid) benutzt
    SetTimerEx("tKick",1000,0,"i",playerid);


    /////
    if(GetPVarInt(playerid,"Baned",dini_Int(pfad,"Baned")==1))
    //zu
    if(dini_Int(pfad,"Baned") == 1) // Ansonsten ist doch jeder Spieler gebannt,

  • Selber überlegen?
    Das ist doch eindeutig...
    Den Public packst du irgendwo zwischen die Publics. Am besten ganz oben oder ganz unten.


    Das Forward setzt du davor bzw. du anderen Forwards oder unter andere Defines oder so...


    Dann ersetzt du jeden kick(playerid) mit SetTimerEx("tKick",1000,0,"i",playerid); und anschließend beim Login die if Abrage zu if(dini_Int(pfad,"Baned") == 1).
    Mit ein bisschen Nachdenken bekommt das jeder hin...

  • Jetzt habe ich mir Gedacht das ich das machen kann wenn der Spielerspawnt das diese Message kommt mit dem Banned aber es kommt wieder sofort Server Closet the Connection
    Code :
    public OnPlayerSpawn(playerid)
    {
    new pfad[75];
    if(GetPVarInt(playerid,"Baned"))
    if(dini_Int(pfad,"Baned") == 1)
    {
    new dialogstring[9999],header[18 + MAX_PLAYER_NAME],pID,bName[MAX_PLAYER_NAME],bgrund;
    GetPlayerName(playerid,bName,sizeof(bName));
    format(dialogstring,sizeof(dialogstring),"Guten Tag, %s ihr Account ist Gesperrt.\nSomit können sie nicht mehr mit ihm Spielen.\n\n\nAdministrator : %s\n\n\nGrund : %s\n\n\nBei Fragen bezüglichst der Sperrung wenden sie sich an den Administrator.",pID,bName,bgrund);
    format(header,sizeof(header),"Account Gesperrt %s",bName);
    ShowPlayerDialog(playerid,Stats,DIALOG_STYLE_MSGBOX,header,dialogstring,"Oke","Abbrechen");
    Kick(playerid);
    }
    return 1;
    }


  • Das Include macht aber nicht mehr, als der Timer, den ich gepostet habe.
    Warum sollte er es also nun anders machen?