OnPlayerConnect & OnPlayerRequestingClass

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 habe 2 fragen.
    Vorab habe ich mir ein System gescriptet welches mir erlaubt die Registrierung abzuschalten.
    Ich habe KEINE fehler etc.
    Er führt es Ingame auch aus aber wenn ich Connecte passiert nichts.
    public OnPlayerRequestClass(playerid, classid)
    {
    if(GetPVarInt(playerid,"togregister")==1)
    {
    ShowPlayerDialog(playerid,DIALOG_GESPERRT,DIALOG_STYLE_MSGBOX,"Registrierung","Die Registrier Funktion ist derzeitig ausgeschaltet.\nSollten sie einen Account haben so melden sie sich mit diesem an.","","");
    SetTimerEx("Gebannt",1450,false,"i",playerid);
    }
    if(GetPVarInt(playerid,"Baned")==1)
    {
    ShowPlayerDialog(playerid,DIALOG_GESPERRT,DIALOG_STYLE_MSGBOX,"Account Gesperrt","Dieser Account wurde Gesperrt mit diesem kann nicht mehr gespielt werden.\nSollte dies nicht dein Account sein nimm einen Anderen Namen","","");
    SetTimerEx("Gebannt",1450,false,"i",playerid);
    }
    new pfad[64];GetPlayerName(playerid,pname[playerid],MAX_PLAYER_NAME);
    format(pfad,64,"/Accounts/%s.txt",Name(playerid));
    if(dini_Exists(pfad))ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Willkommen auf Liberty Deathmatch Network,\n\nDein Account wurde gefunden. Gib bitte das Passwort ein.\n{FF0000}WICHITG: Gib dein Passwort an niemanden weiter auch nicht an Admins oder Supporter.","Login","Abbrechen");
    else ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registration","Willkommen auf Liberty Deathmatch Network,\n\nGib bitte das gewünschte Passwort ein","Register","Abbrechen");
    if(GetPVarInt(playerid,"loggedin"))ShowPlayerDialog(playerid,DIALOG_NATIONEN,DIALOG_STYLE_LIST,"Nationen","\nVereinigte Staaten\nEuropa\nRussland\nIndien\nFrankreich\nKorea\nChinesen","Auswählen","Abbrechen");
    TogglePlayerControllable(playerid,0);
    TogglePlayerSpectating(playerid,1);
    return 1;
    }


    &


    public OnPlayerConnect(playerid)
    {
    if(GetPVarInt(playerid,"togregister")==1)
    {
    ShowPlayerDialog(playerid,DIALOG_GESPERRT,DIALOG_STYLE_MSGBOX,"Registrierung","Die Registrier Funktion ist derzeitig ausgeschaltet.\nSollten sie einen Account haben so melden sie sich mit diesem an.","","");
    SetTimerEx("Gebannt",1450,false,"i",playerid);
    }
    if(GetPVarInt(playerid,"Baned")==1)
    {
    ShowPlayerDialog(playerid,DIALOG_GESPERRT,DIALOG_STYLE_MSGBOX,"Account Gesperrt","Dieser Account wurde Gesperrt mit diesem kann nicht mehr gespielt werden.\nSollte dies nicht dein Account sein nimm einen Anderen Namen","","");
    SetTimerEx("Gebannt",1450,false,"i",playerid);
    }
    return 1;
    }


    Es kommt einfach der Register Bildschirm.


    Befehl:
    ocmd:togregister(playerid)
    {
    if(!isPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 6.");
    new string[128];
    if(GetPVarInt(playerid,"togregister")==0)
    {
    SetPVarInt(playerid,"togregister",1);
    format(string,sizeof(string),"Die Registrierung wurde von %s ausgeschaltet. Man kann sich im moment nicht Registrieren.",Name(playerid));
    SendClientMessageToAll(ROT,string);
    }
    else
    {
    SetPVarInt(playerid,"togregister",0);
    format(string,sizeof(string),"Die Registrierung wurde von %s freigegeben. Man kann sich nun wieder Registrieren.",Name(playerid));
    SendClientMessageToAll(GRÜN,string);
    }
    return 1;
    }

  • Würde es so funktionieren?
    Man soll es ja an oder Ausschalten können?


    ICy.


    ocmd:togregister(playerid)
    {
    if(!isPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 6.");
    new string[128];
    if(togregister == false)
    {
    format(string,sizeof(string),"Die Registrierung wurde von %s ausgeschaltet. Man kann sich im moment nicht Registrieren.",Name(playerid));
    SendClientMessageToAll(ROT,string);
    }
    else
    {
    format(string,sizeof(string),"Die Registrierung wurde von %s freigegeben. Man kann sich nun wieder Registrieren.",Name(playerid));
    SendClientMessageToAll(GRÜN,string);
    }
    return 1;
    }

    Einmal editiert, zuletzt von The Sensei ()

  • Du hast vergessen das Boolean den Wert zu setzen (true bzw. false) :)


    Ansonsten sieht es gut aus. Oben im Script hast du das so, oder?
    new bool:togregister;
    :thumbup:

  • So :)
    new bool:togregister;//Global im Script


    ocmd:togregister(playerid)
    {
    if(!isPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 6.");
    new string[128];
    if(togregister == false)
    {
    format(string,sizeof(string),"Die Registrierung wurde von %s ausgeschaltet. Man kann sich im moment nicht Registrieren.",Name(playerid));
    SendClientMessageToAll(ROT,string);
    togregister = true;
    }
    else
    {
    format(string,sizeof(string),"Die Registrierung wurde von %s freigegeben. Man kann sich nun wieder Registrieren.",Name(playerid));
    SendClientMessageToAll(GRÜN,string);
    togregister = false;
    }
    return 1;
    }
    Wie normale Variablen auch, bloß bei den Booleans darfst bzw. kannst du nur true / false benutzen / setzen ^^

  • public OnPlayerConnect(playerid)
    {
    new pfad[64];
    format(pfad,"/Accounts/%s.txt",Name(playerid));
    if(togregister == true)
    {
    if(dini_Exists(pfad))
    {
    //Hat einen Account & Register ist ausgeschaltet!
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_GESPERRT,DIALOG_STYLE_MSGBOX,"Registrierung","Die Registrier Funktion ist derzeitig ausgeschaltet.\nSollten sie einen Account haben so melden sie sich mit diesem an.","","");
    SetTimerEx("Gebannt",1450,false,"i",playerid);
    return 1;
    }
    }
    else if(togregister == false)
    {
    //Register eingeschaltet
    if(dini_Exists(pfad))
    {
    //Hat einen Account
    }
    else
    {
    //Keinen
    }
    }
    return 1;
    }
    So sollte das funktionieren, die Dialoge etc. musst du selbst einfügen, schaffst du schon :thumbup:

  • ICy.
    Hab das so
    new pfad[64];
    format(pfad,64,"/Accounts/%s.txt",Name(playerid));
    if(togregister == true)
    {
    if(dini_Exists(pfad))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Willkommen auf Liberty Deathmatch Network,\n\nDein Account wurde gefunden. Gib bitte das Passwort ein.\n{FF0000}WICHITG: Gib dein Passwort an niemanden weiter auch nicht an Admins oder Supporter.","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_GESPERRT,DIALOG_STYLE_MSGBOX,"Registrierung","Die Registrier Funktion ist derzeitig ausgeschaltet.\nSollten sie einen Account haben so melden sie sich mit diesem an.","","");
    SetTimerEx("Gebannt",1450,false,"i",playerid);
    return 1;
    }
    }
    else if(togregister == false)
    {
    if(dini_Exists(pfad))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Willkommen auf Liberty Deathmatch Network,\n\nDein Account wurde gefunden. Gib bitte das Passwort ein.\n{FF0000}WICHITG: Gib dein Passwort an niemanden weiter auch nicht an Admins oder Supporter.","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registration","Willkommen auf Liberty Deathmatch Network,\n\nGib bitte das gewünschte Passwort ein","Register","Abbrechen");
    }
    }


    Ich habe einen Account aber er zeigt mir das Register Dialog an

  • new pfad[64];
    format(pfad,64,"/Accounts/%s.txt",Name(playerid));
    if(togregister == true)
    {
    print("Registrierung ausgeschaltet!");
    if(dini_Exists(pfad))
    {
    printf("%s hat einen Account und kann sich nun einloggen (togregister == true)",Name(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Willkommen auf Liberty Deathmatch Network,\n\nDein Account wurde gefunden. Gib bitte das Passwort ein.\n{FF0000}WICHITG: Gib dein Passwort an niemanden weiter auch nicht an Admins oder Supporter.","Login","Abbrechen");
    }
    else
    {
    printf("%s hat keinen Account und kann sich nicht einloggen (togregister == true)",Name(playerid));
    ShowPlayerDialog(playerid,DIALOG_GESPERRT,DIALOG_STYLE_MSGBOX,"Registrierung","Die Registrier Funktion ist derzeitig ausgeschaltet.\nSollten sie einen Account haben so melden sie sich mit diesem an.","","");
    SetTimerEx("Gebannt",1450,false,"i",playerid);
    return 1;
    }
    }
    else if(togregister == false)
    {
    print("Registrierung eingeschaltet!");
    if(dini_Exists(pfad))
    {
    printf("%s hat einen Account und kann sich nun einloggen (togregister == false)",Name(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Willkommen auf Liberty Deathmatch Network,\n\nDein Account wurde gefunden. Gib bitte das Passwort ein.\n{FF0000}WICHITG: Gib dein Passwort an niemanden weiter auch nicht an Admins oder Supporter.","Login","Abbrechen");
    }
    else
    {
    printf("%s hat keinen Account und kann sich nun Registrieren (togregister == false)",Name(playerid));
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registration","Willkommen auf Liberty Deathmatch Network,\n\nGib bitte das gewünschte Passwort ein","Register","Abbrechen");
    }
    }
    Lass dir das mal so durch printen, was kommt raus?

  • Du musst die Registrierung ja auch erst ausschalten ;)


    Bist du dir denn sicher, dass du einen Account hast?

  • public OnPlayerRequestClass(playerid,classid)
    {
    SetSpawnInfo(playerid,0,0,0,0,0,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    return 1;
    }
    Schreib den Callback OnPlayerRequestClass mal so.
    Das was du da hattest brauchst du ja nicht mehr, das hast du ja schon unter OnPlayerConnect.
    Ja ich weiß, du spawnst am 0-Punkt, du musst dir die Koordinaten unter SetSpawnInfo noch selber bestimmen :)

  • ICy.
    Habe bei OnPlayerRequestingClass
    public OnPlayerRequestClass(playerid,classid)
    {
    if(GetPVarInt(playerid,"loggedin"))ShowPlayerDialog(playerid,DIALOG_NATIONEN,DIALOG_STYLE_LIST,"Nationen","\nVereinigte Staaten\nEuropa\nRussland\nIndien\nFrankreich\nKorea\nChinesen","Auswählen","Abbrechen");
    return 1;
    }
    das
    aber ich muss mich immer wieder neu registrieren

  • Das musst du da entfernen. Mach das am besten nach dem Registrieren / Einloggen.

  • ICy.


    Account wird immernochnicht gespeichert.



    public OnPlayerConnect(playerid)
    {
    new pfad[64];
    format(pfad,64,"/Accounts/%s.txt",Name(playerid));
    if(togregister == true)
    {
    print("Registrierung ausgeschaltet!");
    if(dini_Exists(pfad))
    {
    printf("%s hat einen Account und kann sich nun einloggen (togregister == true)",Name(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Willkommen auf Liberty Deathmatch Network,\n\nDein Account wurde gefunden. Gib bitte das Passwort ein.\n{FF0000}WICHITG: Gib dein Passwort an niemanden weiter auch nicht an Admins oder Supporter.","Login","Abbrechen");
    }
    else
    {
    printf("%s hat keinen Account und kann sich nicht einloggen (togregister == true)",Name(playerid));
    ShowPlayerDialog(playerid,DIALOG_GESPERRT,DIALOG_STYLE_MSGBOX,"Registrierung","Die Registrier Funktion ist derzeitig ausgeschaltet.\nSollten sie einen Account haben so melden sie sich mit diesem an.","","");
    SetTimerEx("Gebannt",1450,false,"i",playerid);
    return 1;
    }
    }
    else if(togregister == false)
    {
    print("Registrierung eingeschaltet!");
    if(dini_Exists(pfad))
    {
    printf("%s hat einen Account und kann sich nun einloggen (togregister == false)",Name(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Willkommen auf Liberty Deathmatch Network,\n\nDein Account wurde gefunden. Gib bitte das Passwort ein.\n{FF0000}WICHITG: Gib dein Passwort an niemanden weiter auch nicht an Admins oder Supporter.","Login","Abbrechen");
    }
    else
    {
    printf("%s hat keinen Account und kann sich nun Registrieren (togregister == false)",Name(playerid));
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registration","Willkommen auf Liberty Deathmatch Network,\n\nGib bitte das gewünschte Passwort ein","Register","Abbrechen");
    }
    }
    return 1;
    }

  • Was ist denn da jetzt? :)
    Du sollst den Dialog mit den Nationen einfach dort einfügen, wenn du dich registriert oder eingeloggt hast :)