[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
  • ich möchte den aktuellen Alter gespeichert haben.


    Folgendes wird im Chat ausgeschrieben wenn ich nen Geburtsdatum angebe:

    Code
    [16:25:46] Du hast am XX.XX.1998 Geburtstag, damit bist du 17 Jahre alt.


    Aber diese Zahl '17' speichert er mir nicht ab...
    Versuche jetzt mal kurz den Query zu checken.


    //Edit:
    Mein Fehler, hatte mysql_function_query vergessen. Als ich den verbesserten MySQL Statement von dir kopiert habe war dann diese Funktion weg.
    Funktioniert aber, danke für deine Hilfe wegen dem MySQL Statement ;)

  • Kann man strcmp mit switch benutzen?
    Beispiel wo ichs versucht habe:



    new pID, auswahl[12];
    if(!isPlayerInFrakt(playerid,3))return SendClientMessage(playerid,CLR_RED,"Fehler: Du bist kein Fahrschullehrer.");
    if(sscanf(params,"us",pID,auswahl))return SendClientMessage(playerid,CLR_RED,"Fehler: Benutzung: /givelic [playerid] [carlic/bikelic/planelic/weaponlic]");
    switch(strcmp(auswahl))
    {
    case "carlic":
    {
    return 1;
    }
    }

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Kann man strcmp mit switch benutzen?
    Beispiel wo ichs versucht habe:


    new pID, auswahl[12]; if(!isPlayerInFrakt(playerid,3))return SendClientMessage(playerid,CLR_RED,"Fehler: Du bist kein Fahrschullehrer."); if(sscanf(params,"us",pID,auswahl))return SendClientMessage(playerid,CLR_RED,"Fehler: Benutzung: /givelic [playerid] [carlic/bikelic/planelic/weaponlic]"); switch(strcmp(auswahl)) { case "carlic": { return 1; } }

    Ich habs noch nie versucht aber ich glaub nicht das das klappt :D
    Aber ja Probiern geht über Studiern :D

  • Kann man strcmp mit switch benutzen?

    Könnte man, aber die Frage ist, ob das Sinn macht, was du da vor hast. ;)
    strcmp gibt lediglich nur 0 oder 1 zurück.


    Daher würde ich das so schreiben:


    C
    switch(auswahl)

    Und dann mit deinem case weiter, wie du es bereits hast. ;)

  • Guten Abend,


    ich habe eine Frage undzwar möchte ich nen Job etwas erweitern ( den Müllmannjob ).
    Mit nem InGame Editor habe ich den AttachObject positioniert, dass Problem ist nur wenn ich laufe dann ist die Mülltonne im Körper drinne...


    Daher meine Frage wie kann ich das am besten "umgehen" oder einstellen?
    Brauch ich ne Animation oder welchen Attach-Index sollte ich nehmen?
    ( Habe Index-ID '5' ausgewählt ... )


    sa-mp-002.png


    sa-mp-001.png


    Kann mir einer weiterhelfen?
    Vielen Dank im Vorraus :)

  • Du brauchst eine Special Action..und zwar Carry.


    und beim Attachen solltest du AttachObjectToPlayer verwenden

    Ah danke genau das habe ich gesucht :)
    Ne Frage zu AttachObjectToPlayer, kann ich die BoneID '5' lassen?


    Vlt eine Animation hinzufügen damit er nicht laufen kann ?

    Nee das habe ich nicht vor, denn ich möchte das der Spieler mit der Tonne dann laufen kann.
    Dann kann er ja nicht zum Müllwagen etc...

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Nein ich meine Rennen im Sinne von Sprinten

    Was redest du....


    Mit Animationen kann man sich nicht bewegen...mit der Carry Special Action kann man nur laufen...



    kann ich die BoneID '5' lassen?

    Da gibts keine bones...nur relative Koordinaten...


    Der Mittelpunkt deines Spielers ist 0,0,0...musst halt dann was erhöhen damit die vor die ist..

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Da gibts keine bones...nur relative Koordinaten...


    Der Mittelpunkt deines Spielers ist 0,0,0...musst halt dann was erhöhen damit die vor die ist..

    Ja hast recht, sry.


    Wiki regelt :D
    ( hier )



    //Edit:


    @Kaliber:
    Ich bekomme die Animation kann laufen aber das Objekt wird mir nicht angezeigt, geschweige am Spieler Atteched...

    Code
    new testobjt;
    testobjt = CreateObject(1409, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
    AttachObjectToPlayer(testobjt, playerid, 0.98,-0.10,-0.60,0.0,-87.0,304.0);
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);


    Wiki:
    AttachObjectToPlayer(objectid, playerid, Float:OffsetX, Float:OffsetY, Float:OffsetZ, Float:rX, Float:rY, Float:rZ);


    Der InGame Attach Editor hat mir folgende Koordinaten gespeichert:
    0,1409,5,0.98,-0.10,-0.60,0.0,-87.0,304.0,1.00,1.00,1.00
    davon brauche ich ja nur
    0.98,-0.10,-0.60,0.0,-87.0,304.0



    Was habe ich denn falsch gemacht das dass Objekt nicht Atteched wird?
    Ich vermute mal ein kleiner Denkfehler... ?(

  • Guten Abend alle zsm,
    Ich habe versucht ein SHA256 Hash einzubauen in mein Login/Registersystem, doch leider funktioniert es nicht ganz.
    In der Datenbank bzw. Tabelle wird der Hash und der Salt gespeichert, nur zurück, beim Login, funktioniert es irgendwie nicht
    Ich denke es wird ein Fehler im Logindialogbereich sein, da hash und pPassword nicht richtig gesetzt sind denke ich, aber wirklich finden tue ich den Fehler nicht :|

    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(!response) return Kick(playerid);
    if(strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 4 Zeichen!", "Ok", "Abbrechen");
    new query[256], salt[11];
    for(new i; i < 10; i++){
    salt[i] = random(79) + 47;
    } salt[10] = 0;
    SHA256_PassHash(inputtext, salt, pData[playerid][pPassword], 65);
    mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (`username`, `password`, `salt`) VALUES ('%e', '%e', '%e')", pData[playerid][pName], pData[playerid][pPassword], salt);
    mysql_pquery(handle, query, "OnPlayerRegister", "d", playerid);
    return 1;
    }
    case DIALOG_LOGIN:
    {
    if(!response) return Kick(playerid);
    if(strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 4 Zeichen!", "Ok", "Abbrechen");



    new query[256], hash[65];
    SHA256_PassHash(inputtext, pData[playerid][pSalt], hash, 65);
    mysql_format(handle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `username` = '%e' AND `password` = ('%e')", pData[playerid][pName], hash);
    mysql_pquery(handle, query, "OnPlayerLogin", "d", playerid);
    return 1;
    }
    }
    return 0;
    }


    Hoffe mir kann wer weiterhelfen und danke im voraus :love: .


    Mit freundlichen Grüßen
    KazutoSensei ^^

  • Ein Salt muss statisch sein logischerweise :D


    Kannst den doch nicht immer wieder neu generieren ^^

    Ich bin ehrlich, ich habe es aus http://forum.sa-mp.com/showthread.php?t=581336 versucht in Jeffrys MySQL einzubaun.
    Doch weiß ich nicht genau was du meinst, ich gehe davon aus, dass du von der Schleife sprichst, die habe ich wie gesagt so übernommen, weil ich keinen Fehler machen wollte.



    Grüße

  • Würde aller Code dadrunter ausgeführt werden?
    Logisch wäre nein, weiß aber nicht ob return SendClientMessage einen ähnlichen Effekt hat wie return 1; (was auf jeden Fall die Schleife stoppen würde)



    for(o=0;o<GetMaxPlayers();o++)
    {
    if(!IsPlayerConnected(o))continue;
    if(playerlotto[o]<=0)return SendClientMessage(o,CLR_YELLOW,"Du hattest dir kein Lottoschein geholt.");
    if(playerlotto[o]!=lottozahl)return SendClientMessage(o,CLR_YELLOW,"Du hast Leider nicht gewonnen! Nächstes mal jedoch bestimmt.");
    //?

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Ich denke es wird ein Fehler im Logindialogbereich sein, da hash und pPassword nicht richtig gesetzt sind denke ich, aber wirklich finden tue ich den Fehler nicht

    Kannst du bitte mal den Code posten, mit dem du abfragst, welcher Dialog dem Spieler angezeigt werden soll (Login/Register)? Und das MySQL Query dazu.


    Eventuell fehlt dort das Laden des Salts aus der Datenbank.

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