[Geklärt] Onplayerconnect beim Bann :S

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,
    ich habe mir heute aus Langeweile einen Bann Befehl gebastelt, mit dem nur der Spieler gebannt ist. Dieser soll bei einem Bann sofort wieder gekickt werden, wenn er connected, allerdings funzt es nicht ganz :S


    Bitte helfen!


    stock isPlayerBanned(playerid,rang)
    {
    if(GetPVarInt(playerid,"Banned")==rang)return 1;
    return 0;
    }


    public OnPlayerConnect(playerid)
    {
    if(isPlayerBanned(playerid,1))
    {
    SendClientMessage(playerid,ROT,"Dein Account wurde gesperrt. Du kannst nicht mit ihm spielen.");
    Kick(playerid);
    }
    //Regsys
    return 1;
    }


    Hinweis: Der Bann Befehl funktioniert (er setzt die Pvar auf 1)

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    Einmal editiert, zuletzt von ElDiabolo ()

  • ja Das Liegt daran das:


    GetPVarInt(playerid,"Banned")


    Woher soll er wissen ob der gebannt ist beim Connecten ?
    Ich schätze das wird beim Einloggen geladen.


    Machs doch so:


    Beim Login wirds überprüft und wenn er gebannt ist: Kicken.
    Oder nimm die Ban(playerid); Funktion.


    xSpiderx


    //edit Deutsche Heude Wieder Schwere ^^

    Stehe Jederzeit für Fragen zur Verfügung




    Video entfernt

    (Ab 27 Sekunden hören)


  • ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Wenn es ein GF ist so:


    if(strcmp(cmd, "/accban", true) == 0)
    {
    if (SpielerInfo[playerid][pAdmin] >= 4)
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    giveplayer = strtok(cmdtext, idx);
    if(!strlen(giveplayer))
    {
    SendClientMessage(playerid,COLOR_GRAD2,"FEHLER: /accban [AccountName] (Korrekte Schreibweise erforderlich)");
    return 1;
    }
    new acc[64], acc2[64], year, month, day, readstr[128];
    format(acc,sizeof(acc),"/Accounts/%s.ini",giveplayer);
    format(acc2,sizeof(acc2),"/Accounts/%s.backup",giveplayer);
    if(!fexist(acc))
    {
    format(string,sizeof(string)," Der Account von %s existiert nicht!",giveplayer);
    SendClientMessage(playerid,COLOR_GRAD2,string);
    return 1;
    }


    new File:account = fopen(acc,io_read);
    new File:backup = fopen(acc2,io_write);
    while(fread(account,readstr))
    {
    fwrite(backup,readstr);
    }
    fclose(backup);
    fclose(account);


    new File:banaccount = fopen(acc,io_write);
    fwrite(banaccount,"Gebannt=-999\n");
    fclose(banaccount);


    getdate(year, month, day);
    format(string, sizeof(string), "AdmCmd: %s's Account wurde von %s gebannt! (%d-%d-%d)",giveplayer,sendername,month,day,year);
    BanLog(string);
    format(string, sizeof(string), "AdmCmd: %s's Account wurde von %s gebannt!",giveplayer,sendername);
    ABroadCast(COLOR_LIGHTRED,string,1);
    }
    return 1;
    }


    Dann noch das das in der Datei gespeichert wird und beim Login überprüfen.


    xSpiderx

    Stehe Jederzeit für Fragen zur Verfügung




    Video entfernt

    (Ab 27 Sekunden hören)


  • was willst du mir damit sagen? Der Bann befehl geht doch, nur dass er nicht wieder gekickt wird bei onplayerconnect, aber das schreiben der PVar funzt ...
    Ohja und ein Gf benutze ich nicht ;)

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Wozu erstellst du einen Stock?


    Du hast es wahrscheinlich eh MrMonat nachgemacht. Machs genau wie er! Dann passiert auch sowas nicht!
    Dort wo dein Spieler gespeichert und geladen wird setzt du folgendes hinzu:


    Beim Speichern:
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));


    Beim laden:
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }


    So und damit hats sich.


    PS: Hab es mal aus diesem Tutorial script von MrMonat rausgeholt. Hätteste auch ganz einfach machen können.
    Fazit: mach den Stock und das unter OnPlayerConnect weg! Da dein spieler speichert und lädt und du das auslesen vom Bann ( Ob er gebannt ist oder nicht) beim LoadAccount abfragst ist es sinnlos und würde auch zu fehlern führen.

    Projektleiter

    Cleared to Land ist in der Script Werkstatt ;)


  • stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Ordner/%s.ini",name);
    //weitere
    dini_IntSet(Spielerdatei,"Banned",GetPVarInt(playerid,"Banned"));
    }
    return 1;
    }


    was tut der login stock zur sache?

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • ??? Was für ein Login stock?
    Ich rede vom isPlayerBannes stock!


    Du hast da, sowie ich es sehe, irgendeinen mist gemacht.Also:


    du machst einfach nur das.


    public OnPlayerConnect(playerid)
    {
    if(IsPlayerNPC(playerid))return 1;
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"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");
    }
    return 1; }


    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    }
    return 1; }



    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    }
    return 1; }



    Quelle: http://upload.mrmonat-reallife.de/data/tutorial.pwn
    Sieht sehr danach aus. So funktioniert auch alles.

    Projektleiter

    Cleared to Land ist in der Script Werkstatt ;)



  • nope funzt net :S

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ahh ne funzt danke dir :) Hatte das bei Onplayerconnect eingefügt... Wäre eigentlich sonst alles gegangen, wenn ich das beim stock eingefügt hätte. Naja war nen Denkfehler.
    Vielen Dank! :)


    #closerequest

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!