[ GF ] Ladezeit beim connecten

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
  • Also ich weiß nicht ob hr es wirklich benutzen werdet, aber ich empfehle es zu benutzen. Das ist eine ladezeit der den spieler einloggen læsst. z.B. ein spieler connected, und da steht "Loading..." und wartet 7 sekunden. und nachdem die 7 sec. vorbei sind, kann der spieler sich einloggen. Das ist eig sehr gut. Das verhindert den bug, das man nach dem einloggen den startscreen sieht, und nicht den spieler. Und es verhindert auch den bug, das manche objecte bei den usern nicht da sind, weil sie sich zu schnell eingeloggt haben. (Beide sind mir öfters passiert)


    Also ihr macht das mal unter die ganzen "new"s:
    new AWpRegpLog


    Dann unter die ganzen "forward"s einfügen ^^:


    forward ConnectPlayer(playerid);


    Danach macht ihr den Callback dafür. Ganz unten ins script:
    public ConnectPlayer(playerid)
    {
    //001
    }


    Und jetzt kommen wir eig zur schwieren seite der sache. Vllt kann es sein das ich es nicht richtig erzæhlen kann aber hoffentlich versteht ihr es ^^:
    Jetzt drückt ihr STRG + F und sucht nach "OnPlayerConnect". Ihr müsstet solche æhnliche zeilen sehn:

    if(fexist(string))
    {
    gPlayerAccount[playerid] = 1;
    SendClientMessage(playerid, COLOR_GREEN, "Logge dich mit /login ein ");
    return 1;
    }
    else
    {
    gPlayerAccount[playerid] = 0;
    SendClientMessage(playerid,COLOR_LIGHTBLUE, " Registriere dich mit /register");
    return 1;
    }.
    Schneidet sie raus und geht unter "public PlayerConnect". Markiert die "//001" und dann STRG + V drücken ;)
    Jetzt kopiert ihr genau in die obere zeile über "if(fexist(string))" das hier:

    AWpRegpLog = 1


    So. Jetzt drückt ihr wieder STRG + F und sucht nach " "/login" ". Darunter macht ihr das hier rein:
    if(AllowRegLog[playerid] == 0)
    {
    return 1;
    }. Das gleiche macht ihr mit "/register".
    So kommen wir zum letzten schritt. Der ist leicht ;) Jetzt drückt ihr wieder STRG + F und sucht nach "OnPlayerConnect". Darunter kopiert ihr das hier rein:


    SetTimerEx("ConnectPlayer",7000,0,"i",playerid);
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Loading...");.
    Und fertig! Und vergesst nicht, das ihr auch andere funktionen benutzen könnt. z.B. kein clientmessage mit "Loading" sondern ein GameText!:
    GameTextForPlayer(playerid, "~y~Connecting...", 7000, 3);


    Falls ich fehler habe oder etwas vergessen habe, bitte meldet es unter diesem thread. ich werde den TuT so schnell wie möglich bearbeiten! :) ;)

    Einmal editiert, zuletzt von FoxHound ()

  • Gutes Toutorial aber ich glaub fehlerhaft...
    weil ich habe es jetzt 5 mal versucht
    und immer die selben fehler!


    C:\Users\Johann\Desktop\TES.pwn(144) : error 001: expected token: ";", but found "forward"
    C:\Users\Johann\Desktop\TES.pwn(2703) : warning 209: function "OnPlayerConnect" should return a value
    C:\Users\Johann\Desktop\TES.pwn(13858) : error 028: invalid subscript (not an array or too many subscripts): "AWpRegpLog"
    C:\Users\Johann\Desktop\TES.pwn(13858) : warning 215: expression has no effect
    C:\Users\Johann\Desktop\TES.pwn(13858) : error 001: expected token: ";", but found "]"
    C:\Users\Johann\Desktop\TES.pwn(13858) : error 029: invalid expression, assumed zero
    C:\Users\Johann\Desktop\TES.pwn(13858) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.
    Bitte helfen ist wichtig!

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


    Einmal editiert, zuletzt von Johann_x3 ()

  • Zeile 144 forward ConnectPlayer(playerid);
    Zeile 13858: //-------------------------------[Login]--------------------------------------------------------------------------
    if (strcmp(cmd, "/login", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    new tmppass[64];
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /login [passwort]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    if(AWpRegpLog[playerid] == 1)
    {
    return 1;
    }
    return 1;
    }


    if (strcmp(cmd, "/register", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "%s.ini", sendername);
    new File: hFile = fopen(string, io_read);
    if (hFile)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Dieser Name ist schon vergeben! Bitte benutze einen anderen.");
    fclose(hFile);
    return 1;
    }
    new tmppass[64];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /register [passwort]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerRegister(playerid,tmppass);
    }
    if(AWpRegpLog[playerid] == 0)
    {
    return 1;
    }
    return 1;
    }

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • Für den Timer musst du SetTimerEx benutzen.


    SetTimerEx("ConnectPlayer",7000,0,"i",playerid);

  • C:\Users\Johann\Desktop\TES.pwn(2696) : warning 209: function "OnPlayerConnect" should return a value
    C:\Users\Johann\Desktop\TES.pwn(13851) : error 028: invalid subscript (not an array or too many subscripts): "AWpRegpLog"
    C:\Users\Johann\Desktop\TES.pwn(13851) : warning 215: expression has no effect
    C:\Users\Johann\Desktop\TES.pwn(13851) : error 001: expected token: ";", but found "]"
    C:\Users\Johann\Desktop\TES.pwn(13851) : error 029: invalid expression, assumed zero
    C:\Users\Johann\Desktop\TES.pwn(13851) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.




    if (strcmp(cmd, "/login", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    new tmppass[64];
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /login [passwort]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    if(AWpRegpLog[playerid] == 1) //Zeile 13851
    {
    return 1;
    }
    return 1;
    }


    was jetzt?

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


    Einmal editiert, zuletzt von Johann_x3 ()