[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Jeffry:


    Funktioniert leider immer noch nicht, ich kann mich jetzt zwar mit dem
    richtigen Passwort Einloggen, aber die Fehlversuche klappen nicht. Er
    zeigt mir nach dem Versuch 2/3 den richtigen Login ohne Fehlversuche an, halt das es alles von vorne beginnt. :S


    Das habe ich bis jetzt: http://pastebin.com/9J1A57Cf

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Eddy:
    Das ganze macht irgendwie keinen Sinn, da die Abfrage immer kommen würde, so wie es da ist. :wacko:


    Mach es so:

    Spoiler anzeigen
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case Dialog_Register:
    {
    if(!response)
    {
    SendClientMessage(playerid,0xFF0000FF,"Dieser Vorgang wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
    SetTimerEx("KickPlayer",250,0,"i",playerid);
    return 1;
    }
    if(!inputtext[0] || !(3 <= strlen(inputtext) <= 10))
    {
    ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_PASSWORD,"SmR: {0x3252BEFF}Registrierung","{FFFFFF}Herzlich Willkommen auf San Miami Roleplay\n\nUnser System hat Ihre Spielerinformationen\nnicht in unserer Datenbank gefunden. Um einen Charakter auf unserem Server zu Erstellen\nbenoetigen wir einige Informationen. Als erstes tragen Sie Bitte ein Sicheres Passwort in das untere Feld ein.\nMerken Sie sich Ihr Passwort Gut.\n\nKlicken Sie anschließend auf Annehmen.","Annehmen","Abbrechen");
    return 1;
    }
    new query[950 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
    getdate(Tag,Monat,Jahr);
    gettime(Stunde,Minute,Sekunde);
    format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
    mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pVersuche`, `pLeben`) VALUES ('%e','%e','%d','%d','%d','0','0','%s','%s','%d','100.0')",Spieler[playerid][pName],inputtext,Spieler[playerid][pAlter],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],query,query,Spieler[playerid][pWrongPass],Spieler[playerid][pLeben]);
    mysql_tquery(DBHandle, query, "", "");
    Spieler[playerid][pLogged] = true;
    SpawnPlayer(playerid);
    return 1;
    }
    case Dialog_Login:
    {
    if(!response)
    {
    SendClientMessage(playerid,0xFF0000FF,"Dieser Vorgang wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
    SetTimerEx("KickPlayer",250,0,"i",playerid);
    return 1;
    }
    if(!inputtext[0] || !(3 <= strlen(inputtext) <= 25))
    {
    ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"SmR: {0x3252BEFF}Einloggen","{FFFFFF}Sie müssen von unserem System Identifiziert werden.\nGeben Sie dafür Ihr Passwort unten in das Feld ein.\n\n Klicken Sie anschließend auf Einloggen, damit Ihre Daten kontrolliert werden können.","Einloggen","Abbrechen");
    return 1;
    }
    new query[180 + MAX_PLAYER_NAME];
    mysql_format(DBHandle, query,sizeof(query),"SELECT COUNT(*) AS `count` FROM `Accounts` WHERE `pName` ='%e' AND `pPasswort` ='%e'",Spieler[playerid][pName],inputtext);
    mysql_function_query(DBHandle, query, true,"LoadPlayerDataSequence","dd",playerid,2);
    return 1;
    }
    }
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }

    Spoiler anzeigen
    public LoadPlayerDataSequence(playerid, l_step)
    {
    switch(l_step)
    {
    case 1:
    {
    new count = cache_get_field_content_int(0,"count");
    if(count)
    {
    ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"SmR: {0x3252BEFF}Einloggen","{FFFFFF}Sie m?ssen von unserem System Identifiziert werden.\nGeben Sie daf?r Ihr Passwort unten in das Feld ein.\n\n Klicken Sie anschlie?end auf Einloggen, damit Ihre Daten kontrolliert werden k?nnen.\n\nSie haben noch 3/3 versuche!","Einloggen","Abbrechen");
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_PASSWORD,"SmR: {0x3252BEFF}Registrierung","{FFFFFF}Herzlich Willkommen auf San Miami Roleplay\n\nUnser System hat Ihre Spielerinformationen\nnicht in unserer Datenbank gefunden. Um einen Charakter auf unserem Server zu Erstellen\nben?tigen wir einige Informationen. Als erstes tragen Sie Bitte ein Sicheres Passwort in das untere Feld ein.\n\nMerken Sie sich Ihr Passwort Gut.\n\nKlicken Sie anschlie?end auf Annehmen.","Annehmen","Abbrechen");
    return 1;
    }
    }
    case 2:
    {
    new count = cache_get_field_content_int(0,"count");
    if(count)
    {
    new query[160 + MAX_PLAYER_NAME];
    mysql_format(DBHandle, query ,sizeof(query),"SELECT * FROM `Accounts` WHERE `pName` = '%e'",Spieler[playerid][pName]);
    mysql_function_query(DBHandle, query, true,"LoadPlayerDataSequence","dd",playerid,3);
    return 1;
    }
    else
    {
    Login_Status[playerid]++;
    switch(Login_Status[playerid])
    {
    case 0:
    {
    ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{0x3252BEFF}Falsches Passwort","{FFFFFF}Das von Ihnen angegebene Passwort wurde abgelehnt,\ngeben Sie Bitte Ihr richtiges Passwort unten in das Feld ein.\nDrücken Sie danach auf Einloggen, damit Ihre Daten kontrolliert werden können.\n\nDenken Sie auch an die Groß-,Kleinschreibung\n\nSie haben 3/3 versuche!","Einloggen","Abbrechen");
    return 1;
    }
    case 1:
    {
    Login_Status[playerid]++;
    ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{0x3252BEFF}Falsches Passwort","{FFFFFF}Das von Ihnen angegebene Passwort wurde abgelehnt,\ngeben Sie Bitte Ihr richtiges Passwort unten in das Feld ein.\nDrücken Sie danach auf Einloggen, damit Ihre Daten kontrolliert werden können.\n\nDenken Sie auch an die Groß-,Kleinschreibung\n\nSie haben noch 2/3 versuche!","Einloggen","Abbrechen");
    return 1;
    }
    case 2:
    {
    Login_Status[playerid]++;
    ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{0x3252BEFF}Falsches Passwort","{FFFFFF}Das von Ihnen angegebene Passwort wurde abgelehnt,\ngeben Sie Bitte Ihr richtiges Passwort unten in das Feld ein.\nDrücken Sie danach auf Einloggen, damit Ihre Daten kontrolliert werden können.\n\nDenken Sie auch an die Groß-,Kleinschreibung\n\nSie haben nurnoch 1/3 versuche!","Einloggen","Abbrechen");
    return 1;
    }
    case 3:
    {
    SendClientMessage(playerid,0x3252BEFF,"Sie haben zu oft Ihr Passwort falsch eingegeben, aus Sicherheitsgründen wurden Sie vom System gesperrt.");
    SendClientMessage(playerid,0x3252BEFF,"Versuchen Sie es in einer Stunde nochmal, oder Melden Sie sich bei einem Administrator.");
    SetTimerEx("KickPlayer",250,0,"i",playerid);
    return 1;
    }
    }
    }
    }
    case 3:
    {
    Spieler[playerid][pAlter] = cache_get_field_content_int(0,"pAlter");
    Spieler[playerid][pAdminlevel] = cache_get_field_content_int(0,"pAdminlevel");
    Spieler[playerid][pBanned] = cache_get_field_content_int(0,"pBanned");
    Spieler[playerid][pBargeld] = cache_get_field_content_int(0,"pBargeld");
    Spieler[playerid][pKontoguthaben] = cache_get_field_content_int(0,"pKontoguthaben");
    cache_get_field_content(0,"pLastLogin",Spieler[playerid][pLastLogin],DBHandle,30);
    cache_get_field_content(0,"pRegDatum",Spieler[playerid][pRegDatum],DBHandle,30);
    Spieler[playerid][pWrongPass] = cache_get_field_content_int(0,"pVersuche");
    Spieler[playerid][pLeben] = cache_get_field_content_float(0,"pLeben");
    Spieler[playerid][pLogged] = true;
    SpawnPlayer(playerid);
    return 1;
    }
    default:
    {
    SendClientMessage(playerid,0x7D0000FF,"Es ist ein Fehler aufgetreten, Bitte starten Sie Ihren Clienten neu, und versuchen Sie es erneut,\nSollten weiterhin Fehler auftreten, so Melde Sie sich umgehend Bitte bei einem Teammitglied.");
    return 1;
    }
    }
    return 1;
    }

  • Hallo breadfish,
    Ich hab ein kleines Problem mit dem Hashen von Passwörtern. Beim Registrieren wird das Passwort normal gehasht, dass klappt auch wunderbar bloß beim Login, sagt er mir immer das, dass Passwort falsch ist.


    Hier wird das beim Login gehasht
    if(!strcmp(MD5_Hash(inputtext), MySQL_Password(sName(playerid)), true))


    Mit freundlichen Grüßen
    Grapefruit

  • Was heiß es kommt nichts an?
    Setze vor:
    if(!strcmp(MD5_Hash(inputtext), MySQL_Password(sName(playerid)), true))


    printf("inputtext: %s", inputtext);
    printf("MD5_Hash: %s", MD5_Hash(inputtext));
    printf("MySQL_Password: %s", MySQL_Password(sName(playerid)));


    Was wird geprintet?

  • Abend,
    und zwar habe ich ein Problem mit TextDrawSetPreviewModel.
    Ich habe ein Tacho, dort wird alles angezeigt, bis auf das TextDrawSetPreviewModel.


    Code:
    Tacho7[playerid] = TextDrawCreate(622.625000, 411.000000, "usebox");
    TextDrawFont(Tacho7[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);
    TextDrawUseBox(Tacho7[playerid], 1);
    TextDrawBoxColor(Tacho7[playerid], 0x000000FF);
    TextDrawTextSize(Tacho7[playerid], 576.125000, 0.000000);
    TextDrawLetterSize(Tacho7[playerid], 0.000000, 3.053701);
    TextDrawSetPreviewModel(Tacho7[playerid], 411);

  • Fernando.:
    Tacho7[playerid] = TextDrawCreate(576.625000, 411.0, "usebox");
    TextDrawFont(Tacho7[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);
    TextDrawUseBox(Tacho7[playerid], 1);
    TextDrawBoxColor(Tacho7[playerid], 0x000000FF);
    TextDrawTextSize(Tacho7[playerid], 40.0, 40.0);
    TextDrawLetterSize(Tacho7[playerid], 10.0, 3.0);
    TextDrawSetPreviewModel(Tacho7[playerid], 411);


    Alternativ kannst du nächstes mal das hier verwenden:
    http://forum.sa-mp.com/showthread.php?t=406833

  • Hey Leute,
    wenn ich bei OnGamemodeInit 'mysql_debug(1);' einfügen möchte, kriege ich direkt Warnings, nach dem Compilen.
    Ich benutze das MySQL R39-2 Plugin von BlueG.


    Code
    warning 215: expression has no effect
    warning 206: redundant test: constant expression is non-zero
  • @Jeffy:
    Danke erstmal.
    Also, wenn ich in ein Fahrzeug einsteige, kommt am Anfang eine lange schwarze Box, die verschwindet, nachdem ich im Fahrzeug bin.
    Bei mir sieht das momentan so aus:
    http://www.pic-upload.de/view-24230215/sa-mp-017.png.html


    Ich würde das gerne so haben:
    http://www.pic-upload.de/view-24230222/sa-mp-016.png.html


    Und ein wenig größer und ohne der schwarzen Box im Hintergrund..
    Ich habe es natürlich selbst versucht, doch ich komme damit gar nicht klar.
    Könntest du mir auch sagen, mit welcher Funktion man die Farbe des Modells anpassen kann, wie die des Spieler Fahrzeuges?

  • Hey ich hab erstmal ein paar fragen.


    Frage Nummer eins. (PN/SMS system):
    Ich bekomme einen Argument missmatch. Hab die zeile für euch mit "//" ausgeklammert.


    Dann hab ich noch eine Frage und zwar wie kann ich überprüfen ob er sich selber eine Nachricht schickt. Denn das möchte man natürlich nicht :)


    Frage Nummer 2: (Paybefehl)
    Wie kann ich abfragen ob er in der nähe des spielers ist? (Sagen wir mal Radius 3meter)
    Dann wie ich abfragen kann, dass er dem Spieler nicht Geld abzieht also (/pay playerid -44)
    Und wie ich Abfragen kann, dass er sich nicht selber Geld geben kann.
    Code:
    CMD:pay(playerid, params[])
    {
    new string[128], string2[128], pID, gID, player;
    if(sscanf(params,"ud",pID,gID))return SCM(playerid, GRAU, "{CACA00}[INFO]{FFFFFF} /pay [Name] [Geldbetrag]");
    if(!IsPlayerConnected(pID)) return SCM(playerid, ROT, "Der Spieler ist nicht online.");
    format(string, sizeof(string), "{CACA00}[INFO]{FFFFFF}%s hat dir %d$ gegeben.",PlayerName(player),gID);
    format(string2, sizeof(string2), "{CACA00}[INFO]{FFFFFF}Du hast %s %d$ gegeben.",PlayerName(player), gID);
    SendClientMessage(pID,GRAU,string);
    SendClientMessage(playerid,GRAU,string2);
    GivePlayerMoney(pID,gID);
    GivePlayerMoney(playerid, -gID);
    return 1;


    }
    Danke ihr ;)

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • 1.)
    if(!IsPlayerConnected(id)) return SCM(playerid, 0xFFFFFFFF, "[INFO]: Der Spieler ist nicht online.");
    if(id == playerid) return SCM(playerid, ROT, "Du kannst dir keine Nachricht selbst schicken.");


    2.)
    if(pID == playerid) return SCM(playerid, ROT, "Du kannst dir kein Geld selbst geben.");
    Abfrage 3 Meter: http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint
    Negativ:
    if(gID < 1) return SCM(playerid, ROT, "Ungültiger Betrag.");

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen