Wo muss ich das pFirstLog[playerid] = true; hinsetzen?

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
  • Hab ein Tutorial und ein Register/Login System, will das so machen das das Tutorial angezeigt wird wenn man sich das erste mal registriert, und nicht mehr beim nächsten Login!


    #include <a_samp>
    #include <dini>


    #define blau 0x005BFFFF
    #define ROT 0xFF0000FF
    #define COLOR_GREEN 0x00BB00FF
    #define COLOR_WHITE 0xFFFFFFFF


    #define DIALOG_LOGIN 3
    #define DIALOG_REG 4
    enum spieler_daten
    {
    wanted,
    skin,
    Float:lastx,Float:lasty,Float:lastz,
    eingeloggt
    }
    new Spieler[MAX_PLAYERS][spieler_daten];



    new bool:pFirstLog[MAX_PLAYERS],TutTimer[MAX_PLAYERS],TutTime[MAX_PLAYERS];
    forward Tutorial(playerid);



    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(116, 2210.3621,-1641.8870,15.1559, 269.1425, 0, 0, 0, 0, 0, 0);
    AddStaticVehicle(431,2210.3621,-1641.8870,15.1559,316.4386,0,0); //
    AddStaticVehicle(431,139.9303,-96.2412,1.3052,179.5100,64,1); // CARRR
    AddStaticVehicle(431,139.8338,-107.5118,1.3052,179.5100,64,1); // CARRR
    AddStaticVehicle(431,139.7501,-117.3001,1.3052,179.5100,64,1); // CARRR


    return 1;
    }


    public OnGameModeExit()
    {
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(fexist(accFormat))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(fexist(accFormat) && Spieler[playerid][eingeloggt])
    {
    dini_IntSet(accFormat,"wanted",Spieler[playerid][wanted]);
    dini_IntSet(accFormat,"skin",Spieler[playerid][skin]);
    dini_FloatSet(accFormat,"lastx",Spieler[playerid][lastx]);
    dini_FloatSet(accFormat,"lasty",Spieler[playerid][lasty]);
    dini_FloatSet(accFormat,"lastz",Spieler[playerid][lastz]);
    dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
    }
    Spieler[playerid][eingeloggt] = 0;
    Spieler[playerid][wanted] = 0;
    Spieler[playerid][skin] = 0;
    Spieler[playerid][lastx] = (0.0);
    Spieler[playerid][lasty] = (0.0);
    Spieler[playerid][lastz] = (0.0);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(dini_Isset(accFormat,"lastx"))
    {
    SetPlayerPos(playerid,Spieler[playerid][lastx],Spieler[playerid][lasty],Spieler[playerid][lastz]);
    }
    return 1;
    }
    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    return 0;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnRconCommand(cmd[])
    {
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnObjectMoved(objectid)
    {
    return 1;
    }


    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }


    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    return 1;
    }


    public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
    {
    return 1;
    }


    public OnVehicleRespray(playerid, vehicleid, color1, color2)
    {
    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }


    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }


    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    return 1;
    }


    public OnRconLoginAttempt(ip[], password[], success)
    {
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    return 1;
    }


    public OnPlayerStreamIn(playerid, forplayerid)
    {
    return 1;
    }


    public OnPlayerStreamOut(playerid, forplayerid)
    {
    return 1;
    }


    public OnVehicleStreamIn(vehicleid, forplayerid)
    {
    return 1;
    }


    public OnVehicleStreamOut(vehicleid, forplayerid)
    {
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(response)
    {
    switch(dialogid) // dialogid auswählen
    {
    case DIALOG_LOGIN: // ID Login
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
    return SendClientMessage(playerid,0xFFFFFFFF,"Kein Passwort angegeben!");
    }
    if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0) // Passwort Direkt aus der Datei Laden
    {
    Spieler[playerid][wanted] = dini_Int(accFormat,"wanted");
    Spieler[playerid][skin] = dini_Int(accFormat,"skin");
    Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
    Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
    Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
    GivePlayerMoney(playerid,dini_Int(accFormat,"Geld"));
    SetPlayerScore(playerid,dini_Int(accFormat,"Score"));
    Spieler[playerid][eingeloggt] = 1; // Spieler ist nun erfolgreich eingeloggt
    SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
    SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
    }
    }
    case DIALOG_REG: // ID Registrieren
    {
    if(!strlen(inputtext)) // Text darf nicht = Null sein Null im Sinne von nichts
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
    return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort ist zu kurz!");
    }
    dini_Create(accFormat);
    dini_Set(accFormat,"Passwort",inputtext);
    Spieler[playerid][eingeloggt] = 1;
    SendClientMessage(playerid,0xFFFFFFFF,"Account wurde angelegt und du wurdest eingeloggt.");
    }
    }
    }
    else
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
    case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
    }
    }
    return 1;
    }
    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }


    public Tutorial(playerid)
    {
    if(TutTime[playerid] >= 1) // wenn die Zeit auf 1 gesetzt worden war, gehts los. Wenn während des Tutorials die zeit wieder auf 0 gesetzt wird, passiert in dem Timer garnichts.
    {
    if(TutTime[playerid] == 1)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
    {
    SetPlayerPos(playerid,1199.326293, -1282.091918, 17.865108);
    InterpolateCameraPos(playerid, 1199.326293, -1282.091918, 17.865108, 1206.524902, -1341.727172, 18.961126, 30000);
    InterpolateCameraLookAt(playerid, 1195.871337, -1285.705810, 17.915891, 1202.001220, -1339.600463, 18.847854, 30000);
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN,"Herzlich Willkommen auf BLalaada Roleplay!");
    SendClientMessage(playerid,COLOR_WHITE,"Als Erstes wollen wir uns bedanken, das du ausgerechnet zu uns gekommen bist.");
    SendClientMessage(playerid,COLOR_WHITE,"Als Dankeschön dafür, erhälst du von uns ein Startkapital von 50.000$, sowie Level 3.");
    SendClientMessage(playerid,COLOR_WHITE,"Wir hoffen du hast hier einen schönen Aufenthalt!");


    }
    else if(TutTime[playerid] == 15)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
    {
    SetPlayerCameraLookAt(playerid, 148.9403,-90.2412,1.3052);
    SetPlayerPos(playerid, 148.9403,-90.2412,1.3052);
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN,"Allgemeine Regeln auf dem Server");
    SendClientMessage(playerid,COLOR_WHITE,"Wie auf jeden anderen Server ist das Cheaten und Bugusen natürlich verboten,");
    SendClientMessage(playerid,COLOR_WHITE,"sowie andere Dinge die dir zum Vorteil sind, wie zum Beispiel ein Parkour Mod.");
    SendClientMessage(playerid,COLOR_WHITE,"Selbstverständlich ist auch ein guter Ton erwünscht. Jegliches Beleidigen kann zum");
    SendClientMessage(playerid,COLOR_WHITE,"Prison, Kick, Mute oder sogar zu einem Bann führen. Mehr Regeln findet man unter /rules.");
    }
    else if(TutTime[playerid] == 28)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
    {
    SetPlayerCameraLookAt(playerid, 139.9303,-96.2412,1.3052);


    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN,"Weitere Informationen zum Cheaten/Bugusen");
    SendClientMessage(playerid,COLOR_WHITE,"Wie bereits erwähnt, ist das Cheaten sowie Bugusen auf dem Server nicht gestattet.");
    SendClientMessage(playerid,COLOR_WHITE,"Falls du jemanden sehen solltest, der Cheatet oder Bugs ausnutzt, melde es einem Admin mit dem");
    SendClientMessage(playerid,COLOR_WHITE,"Befehl /report. Wenn der Spieler gebannt wird, erhälst du von uns eine Belohnung.");
    }
    else if(TutTime[playerid] == 41)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
    {
    SetPlayerCameraLookAt(playerid, 139.9003,-96.2412,1.3052);
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN,"Fahrzeuge und Unterhalte");
    SendClientMessage(playerid,COLOR_WHITE,"Auf unserem Reallife Server haben wir 3 Autohäuser. Ein Motorrad Autohaus, ein Sportwagen Autohaus");
    SendClientMessage(playerid,COLOR_WHITE,"und ein Gebrauchtwagen Autohaus. Zurzeit sind die Preise super günstig, also greift zu!");
    SendClientMessage(playerid,COLOR_WHITE,"Häuser und Wohnungen gibt es in Fulda Roleplay genug. Du kannst dir jedes Haus kaufen das du willst! ");
    SendClientMessage(playerid,COLOR_WHITE,"Natürlich hat das seinen Preis, schreib einfach einen Admin an und dein Haus wird dir sofort gebaut.");
    SendClientMessage(playerid,COLOR_WHITE,"Mehr Informationen findest du unter /carhelp und /househelp.");
    }
    else if(TutTime[playerid] == 54)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
    {
    SetPlayerCameraLookAt(playerid, 139.9303,-96.2412,1.3052);
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN,"Berufe und Fraktionen");
    SendClientMessage(playerid,COLOR_WHITE,"Natürlich brauchst du einen Beruf um Geld zu verdienen. Du kannst dich für einen einfachen Beruf im");
    SendClientMessage(playerid,COLOR_WHITE,"Arbeitsamt in Los Santos bewerben. Derzeit sind auch Member in Fraktionen überall gesucht! ");
    SendClientMessage(playerid,COLOR_WHITE,"Um in eine Fraktion zu kommen, musst du dich im Forum unter www.blablabRP.de bewerben!");
    }
    else if(TutTime[playerid] == 67)
    {
    SetPlayerCameraLookAt(playerid, 139.9303,-96.2412,1.3852);
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN," ");
    SendClientMessage(playerid,COLOR_GREEN,"Ende des Tutorials");
    SendClientMessage(playerid,COLOR_WHITE,"Danke für deine Aufmerksamkeit, wir wollen dich nicht aufzulang aufhalten!");
    SendClientMessage(playerid,COLOR_WHITE,"Falls weitere Fragen bestehen, frag einfach einen Spieler oder einen Admin!");
    }
    else if(TutTime[playerid] == 72) // hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
    {
    KillTimer(TutTimer[playerid]); // der Tutorial Timer wird beendigt
    TutTime[playerid] = 0; // die Tutorial Zeit auf INVALID gsetzt - nach Goldkiller :)
    SetPlayerPos(playerid,0.0,0.0,0.0); // der Spawn, wo er nach dem Tutorial hinsoll
    TogglePlayerControllable(playerid,true); // hier wird die Fähigkeit sich zu bewegen wieder auf "wahr" gesetzt
    }
    TutTime[playerid]++; // hier wird die Zeit jede Sekunde erhöht
    }
    }


    Wo muss ich das pFirstLog[playerid] = true; hinsetzen, damit ers weiß?

    Einmal editiert, zuletzt von Fuldara ()

  • es wäre auch sehr sinnvoll wenn du einen variabel mit speicherst die du nach dem tutorial auf 1 setzt weil dann kannst du sollte der spieler das tutorial nicht gemacht haben
    ihn wieder dort hin schicken je nach dem ^^ ob direkt nach dem laden des spielers oder bei OnPlayerSpawn

  • Die Variable wird jedes mal wieder auf true
    sein, wenn Du diese nicht in einer Datei oder
    in einem anderen System speicherst.


    Eine andere Möglichkeit ist auch folgende:


    Speichere aller Spielerinhalte in einer Datei.


    Verbindet sich der Spieler, fragst Du ab, ob bereits
    eine Datei vorhanden ist, die dem Spielername entspricht.


    Wenn ja, brauch er das Tutorial nicht.
    Wenn nein, ist er also neu.


    So einfach geht das :thumbup:

  • du hast doch sicher eine Spielerdatei wo alle daten deines spielers gespeichert wird,
    wie level, geld, adminlevel, passwort...


    beim registrieren wird diese erstellt,
    wenn beim connect die datei beretis vorhanden ist, ist er also schon registriert.


    also bei OnPlayerConnect() eben den dateipfad formatieren und dann abfragen mit if(dini_Exists(pfad))


    /e


    ne du nutzt nicht dini, im script obn sieht mans ja gut, bei onplayerconnect haste ja schon die abfrage, wenns true ist wird das login fenster geöffnet,
    bei false das registerfenster,
    setze einfach hinterher noch die variable...