Beiträge von Allrounder18

    UserAccDaten[playerid][user_acc_RPVorName] trage ich per Hand in die DB. Da wir da Registirieren nicht im Script machen.


    Ich hab übrigens 2 Tabellen in dem Fall User wo nur Name und PW rreinkommt und user_acc wo der rest reinkommt. Die beiden sind mit einem Fremdschlüssel verbunden.

    Der Code wird aufgerufen und geprintet


    Diee Quer wirrd aufgerufen wenn man auf Einloggen klickt.

    Code
    new query[500];
    			mysql_format(handle, query, sizeof(query), "SELECT * FROM `user` JOIN `user_acc` WHERE `username` = '%e' AND `passwort` = MD5('%e')",UserDaten[playerid][user_Name], inputtext);
    			mysql_pquery(handle, query, "OnUserLogin", "d", playerid);



    .

    Wie mache ich das am besten?


    Edit: Hab folgendes bei OnPlayerConnect und OnPlayerDisconnect aber bringt leider nix.


    Code
    public ResetPlayerVars(playerid)
    {
    	UserDaten[playerid][user_Eingeloggt] = false;
    	for(new i; i<sizeof(UserDaten[]); i++) { UserDaten[playerid][pUserDaten:i] = 0; }
    	for(new i; i<sizeof(UserAccDaten[]); i++) { UserAccDaten[playerid][pUserAccDaten:i] = 0; }
    	return 1;
    }

    Edit: Liegt es vielleiht an dem Dialog?

    Hallo!


    Ich habe folgendes Problem.
    Sobald ich mich mit meinem Account auf dem Server einlogge passt alles, jedoch wenn ich einen anderen Account nehme hat dieser auch zb meinen Roleplay Namen.


    OnUserLogin:

    Woran kann das liegen?


    Danke im Voraus


    Allrounder18

    Meinst du das ungefähr so?


    Code
    if(!strcmp(inputtext,UserDaten[playerid][user_Name]) || (strlen(inputtext) < 1))


    Wenn ich einen falschen name eingeb kommt Deiser Name ist falsch", jedoch wen ich den richtigen Namen eingeb kommt "Dieses Passwort ist falsch".


    Woran kann da liegen?


    Dialoge:

    OnUserLogin:


    Code
    new rows,string[500];
    	cache_get_row_count(rows);
    	if(rows == 0)
    	{
    		format(string,sizeof(string), "Dieses Passwort ist falsch");
    		SendClientMessage(playerid,ROT,string);
    		ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    	}

    Edit: Fail gefunden


    Edit: @Andosius meintest du das so ungefähr? Siehe Beitragsanfang.
    Weiterer Edit: Ist es mir mit meinem Code irgendwie möglich, dass ich beim Login den Namen ändere und mit dem neuen Namen dann spiele? Also angenommen im Serverbrowser ist name x drin der auch in der db ist und ich geb ingame dann den namen y an der auch in der db ist.

    Jetzt sieht es so aus.


    Jedoch kommt wenn der Name falsch ist der Warntext nicht.

    Moin!


    Ich möchte bim Login prüfen ob der Name stimmt, damit man ihn ansonsten ändern an im dialog. wie mache ich das am besten?


    Folgenderr Lösungsansatz klappt keider icht.

    Code
    if(!response)return Kick(playerid);
    			if(!strfind(inputtext,UserDaten[playerid][user_Name]))
    			{
    				SendClientMessage(playerid,ROT,"Der angegebene Name ist falsch");
    				return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_INPUT, "{FFFFFF}Anmeldung", "{FFFFFF}Gib bitte deinen OOC Namen ein.", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    			}
    			return 1;





    Danke im Voraus


    Allrounder18


    Edit: Habs jetzt folgendermaßen gelöst.

    Jetzt sagt er mir unreachable Code bei return 1; und "Dieser Name ist falsch" obwohl ich ihn gleich beim ersten mal richtig eingeb. Woran liegt das?

    Werden die Namen denn ohne die Funktion angezeigt?


    Übertragst du denn auch richtig die Namen in diese Variablen? ^^

    Mei Fehler liegt wohl daran, das nichtmal OnPlayer Login aufgeufe wird.


    Hier mein OnPlayerRequestClass


    Hier mein OnUserCheck


    Edit: Der Name wird jetzt ausgelsen, da sich das andere Problem erledigt hat.

    Danke, jetzt siehts so aus:



    Code
    public OnPlayerText(playerid, text[])
    {
    	format(text, sizeof(text),"%s %s sagt",RemoveUnderscore(UserAccDaten[playerid][user_acc_RPVorName]), RemoveUnderscore(UserAccDaten[playerid][user_acc_RPNachName]));
        SendClientMessage(playerid,GRAU,text);
    	return 1;
    }

    Jetzt steht da nur der Text im chat und nict ... ... sagt.

    Guten Abend!


    Ich habe die Funktion RemoveUnderscore und die Werte RPVorName und RPNachname. Was muss ich machen, damit ich folgendes machen kann?

    Code
    RemoveUnderscore(UserAccDaten[playerid][user_acc_RPVorName],UserAccDaten[playerid][user_acc_RPNachName]), text);


    Oder gibt es eine Einfachere Löung dass ich Vor- und Nachname in eins geben kann im nachhinein?



    Danke im Voraus


    Allrounder18

    Guten Abend!


    Da ich momentan mein Scrip etwas umgestalte und leider Gogle nichts vernünftiges , folgene Frage.


    Ich möchte ein Textdraw erstellen für den Login. Wie mache ich es, dass ich das Passwort direkt in das Textfeld am Textdrawd ohne Diaog eingeben kann?


    MfG und danke im Voraus
    Allrounder18

    Deine MySQL Query ist falsch. Dazu lädst du nun wieder jedes mal nur den RangTag von dir selber.


    Die MySQL Query solltest du so ändern:
    new query[256];mysql_format(handle,query,sizeof(query),"SELECT RPName, RangTag, Rang FROM `accounts` WHERE `Fraktion` = %d ORDER BY Rang DESC", fraktionid);mysql_tquery(handle, query, "MemberList", "i", playerid);
    Die Variable fraktionid musst du dann eben selbst in deinem Code anpassen, damit es die richtige Fraktionsid ist.

    Wenn ich es so mache, dann funktoniert der Befehl garnicht, wenn ich RangTag rausnehme gehts.
    Worann leigt es, dass ich rst den Server restarten muss wen ich mich auf den Rang gesetzt habe um mich in der jeweiligen Memberliste zu sehen? Mit RangTag kanns auch net funktionieren, da dis in einer andern Tabelle steht.
    Was muss ich dann machen?

    Ich habe RangTag1 - 12 in der DB. Das mit dem Namen funktioiert jetzt.


    Edit:


    So fnktioniert es, das derRang angezeigt wird und alle Member dieser Fraktion angezeigt werden.

    Code
    format(string, sizeof(string), "%s\n%s\t%s",string, GetFraktionsRangTag(playerid), RemoveUnderscore(name));

    Momentan werden mir die selben User angezeigt egal in welcher Fraktion ich bin. Wie mache ich, dass wen ich in Fraktio 1 bin nur ich angezeigt werde und nicht die anderen aus der anderen Fraktio auch noch?
    Also ich meine, wen ich in Fraktion 1 bin sollten mir die Member der Fraktion 1 oder wen ich in Fraktion 2 bin sollten die Member der Fraktion 2 angezeigt werden, etc.

    Hilfreich wäre es wenn du uns deine Query zeigst, in der du HelferList aufrufst.
    Dazu solltest du dir mal die Variable rows printen, um sicherzustellen, dass wirklich keine Helfer gefunden wurden.

    Danke, das Problem hat sich gelöst. Ich hatte einen Fehler im Befehl.


    MfG und schönen Sonntag


    Allrounder18


    Edit:


    Moin, wie kann ich es am ebsten machen, dass mir die Member pro Fraktion angezeigt werden?


    So habe ich es momentan, jedoch werde ich dann mehrmals angezeigt und sonst keiner.

    Code
    mysql_tquery(handle,"SELECT RPName, Rang FROM `accounts` WHERE `Fraktion` = Fraktion order by Rang DESC", "MemberList", "i", playerid);


    Was müsste ich da ändern?



    MfG