Ich bin zu blöd :D

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
  • So mal wieder habe ich ein Problem aber wozu gibt es hier den bereich :D


    Also ich habe jetzte Register und Login system fertig nur wenn ich mich jetzte Registirere möchte ich ja auch einen Skin aus wählen. Aber er Spawnt dann sofort. Ich habe schon so gemacht das der Skin gespeichert wird.


    mfg,
    Maurice

  • das hier ist der dialog von register if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext) )
    {
    SendClientMessage(playerid,ROT,"Dein Passwort ist nicht lang genung");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte gebe dein gewünschtes Passwort ein\nViel Spaß wünscht dir Maurice","Register","Abbrechen");
    return 1;
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }

  • Okay erst mal deinen Dialog response fürn Register etwas aufgeräumter:



    if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen");
    Kick(playerid);
    }
    if(response==1)
    {
    if(!strlen(inputtext) <4)//Wäre super wenn du noch defienieren würdest ab wo das Passwort zu kurz ist mit "<", ich habe es jetzt mal auf kleiner als 4 Zeichen gemacht
    {
    SendClientMessage(playerid,ROT,"Dein Passwort ist nicht lang genung");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte gebe dein gewünschtes Passwort ein\nViel Spaß wünscht dir Maurice","Register","Abbrechen");
    }
    else
    {
    Register(playerid,inputtext);
    }
    }
    }


    Als nächstes zeigst du uns mal bitte deinen Register(playerid,inputtext) stock.


    EDIT: Rechtschreibung ._.

  • Ich denke sein Problem ist viel mehr das gar keine Skin Auswahl existiert daher:


    - Registrierung/Anmeldung
    - Skinauswahl (Voraussetzung ist korrekte Registrierung)
    - Spieler spawnt an vordefinierten Koordinaten (Voraussetzung ist das der Spieler einen Skin ausgewählt hat.)


    Wenn man sich mal angucken möchte wie eine Skin Auswahl aussehen KANN findet man Standard mässig bei SAMP in den mitgelieferten Gamemodes einen namens grandlarc.pwn wo eine vorhanden ist.


    PS: Je nach dem was für ein Script es sein soll müsste auch drüber nachgedacht werden ob der Spieler nach jedem Besuch sich den Skin aussuchen soll oder wie bei Real-Life üblich zunächst nur bei der Registrierung und später eventuell in einem Shop etc.


    @ulbi1990: Falls du schon vorher mit •Maurice.• zu tun hattest weißt du vermutlich mehr^^

  • Ich denke sein Problem ist viel mehr das gar keine Skin Auswahl existiert daher


    Ohne Skins wird er nicht korrekt gespawnt. Also wird er schon AddPlayerClass haben. Nur sollte man nicht in einem Register stock dann die funktion SpawnPlayer(playerid); aufrufen, wo ich denke was er macht.


    @ulbi1990: Falls du schon vorher mit •Maurice.• zu tun hattest weißt du vermutlich mehr^^


    Nope eigentlich net, habe nur diese response gesehen und dachte OMG. (net böse gemeint)

  • C:\Dokumente und Einstellungen\Meiner\Desktop\samp03x_svr_R1-2_win32\gamemodes\Selfmade.pwn(262) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    @ulbi1990 ich habe mal deins benutzt und dann kommt dieser warning und hier mal die zeile


    if(!strlen(inputtext) <4)


    suche immer noch jemand der das bei mir mal per tv macht

  • Nehme mal das "!" raus.


    Übrigens du weisst schon wenn du die Funktion Kick(playerid); aufrufst dass seit 0.3x keine Nachrichten mehr angezeigt werden, da diese Funktion eher als SendClientMessage aufgerufen wird, das musst du dann mit einem Timer überbrücken.


    EDIT: Zusatz

  • Zeige mal bitte jetzt beide Sachen, einmal die response des Register Dialogs und einmal deinen Register stock und eine andere Frage, du löschst deine Accountdaten oder nutzt einen anderen Accountnamen wenn du wieder testest? Sonst würde ja dein Login aufgerufen werden.

  • Ja ich lösche die .txt und benutzte machmal ein neuer name


    hier mal der puplic DIALOG public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen");
    Kick(playerid);
    }
    if(response==1)
    {
    if(strlen(inputtext) <4)
    {
    SendClientMessage(playerid,ROT,"Dein Passwort ist nicht lang genung");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte gebe dein gewünschtes Passwort ein\nViel Spaß wünscht dir Maurice","Register","Abbrechen");
    }
    else
    {
    Register(playerid,inputtext);
    }
    }
    }
    if(dialogid==DIALOG_LOGIN)
    {
    if(response==0)
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext) )
    {
    SendClientMessage(playerid,ROT,"Dein Passwort ist nicht lang genung");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Es wurde ein Account in der Datenbank gefunden.\nBitte gebe dein Passwort ein\nViel Spaß wünscht dir Maurice","Login","Abbrechen");
    return 1;
    }
    else
    {
    Login(playerid,inputtext);
    return 1;
    }
    }
    }
    return 1;
    }


    und der stock register stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SendClientMessage(playerid,HELLBLAU,"Erfolgreich registiert.");
    dini_IntSet(Spielerdatei,"Level",0);
    }


    und mal der stock spielerspeichernstock 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_InSet(Spielerdatei,"Skin",GetPlayerSkin));
    }


    return 1;
    }

  • Okay so wie ich es erst einmal sehe, hast du auch bei deiner Login response ein paar returns zuviel, du brauchst in den responsen ganz ganz selten ein return.


    So wäre erst einmal dein Login dialog richtig:


    if(dialogid==DIALOG_LOGIN)
    {
    if(response==0)
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen");
    Kick(playerid);
    }
    if(response==1)
    {
    if(strlen(inputtext) <4)
    {
    SendClientMessage(playerid,ROT,"Dein Passwort ist nicht lang genung");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Es wurde ein Account in der Datenbank gefunden.\nBitte gebe dein Passwort ein\nViel Spaß wünscht dir Maurice","Login","Abbrechen");
    }
    else
    {
    Login(playerid,inputtext);
    }
    }
    }
    return 1;


    Richtig einrücken bitte nicht vergessen.


    Dann zu deinem Register stock, hast du wirklich kein return 1; drinne oder hast du es hier nur vergessen andernfals müsste es so aussehen:


    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SendClientMessage(playerid,HELLBLAU,"Erfolgreich registiert.");
    dini_IntSet(Spielerdatei,"Level",0);
    return 1;
    }


    Und ich möchte dich ein drittes Mal darauf hinweissen, dass seit 0.3x keine SendClientMessage mehr geschickt wird, wenn direkt dannach eine Kick(playerid); etc Funktion aufgerufen wird, du musst das mit einem Timer lösen.


    EDIT: Ich hasse das Einrücken hier...

  • public OnPlayerRequestClass(playerid, classid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetSpawnInfo(playerid,0,SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin")),1760.0948,-1895.0768,13.5610,267.1592,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    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","Es wurde ein Account in der Datenbank gefunden.\nBitte gebe dein Passwort ein\nViel Spaß wünscht dir Maurice","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte gebe dein gewünschtes Passwort ein\nViel Spaß wünscht dir Maurice","Register","Abbrechen");
    }


    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    hier

  • public OnPlayerRequestClass(playerid, classid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    //SetSpawnInfo(playerid,0,SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin")),1760.0948,-1895.0768,13.5610,267.1592,0,0,0,0,0,0); <--- Kann in den Login stock
    //SpawnPlayer(playerid); <---- Diese Funktion lässt einen Spieler spawnen wenn er in der Klassenwahl ist, die müsstest du wenn dann in deinen Login stock am Ende packen (vor dem return 1;)
    return 1;
    }


    Wenn du dich fragst warum sie nur grün sind, scroll mal nach hinten.


    EDIT: Zusatz

  • So jetzte 1warning C:\Dokumente und Einstellungen\Meiner\Desktop\samp03x_svr_R1-2_win32\gamemodes\Selfmade.pwn(330) : warning 225: unreachable code
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    hier mal stock loginstock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    SendClientMessage(playerid,HELLBLAU,"Du hast dich erfolgreich eingeloggt\nViel Spaß wünscht dir Maurice.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast das falsches Passwort eingegeben.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Es wurde ein Account in der Datenbank gefunden.\nBitte gebe dein Passwort ein\nViel Spaß wünscht dir Maurice","Login","Abbrechen");
    return 1;


    }
    SetSpawnInfo(playerid,0,SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin")),1760.0948,-1895.0768,13.5610,267.1592,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    return 1;
    }

  • stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    SetSpawnInfo(playerid,0,SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin")),1760.0948,-1895.0768,13.5610,267.1592,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    SendClientMessage(playerid,HELLBLAU,"Du hast dich erfolgreich eingeloggt\nViel Spaß wünscht dir Maurice.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast das falsches Passwort eingegeben.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Es wurde ein Account in der Datenbank gefunden.\nBitte gebe dein Passwort ein\nViel Spaß wünscht dir Maurice","Login","Abbrechen");
    return 1;


    }
    return 1;
    }


    Sollte jetzt aber funktionieren.