[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
  • danke dir <3
    daran lag es ^^
    und hatte gesehen das return 1 am ende kommt und in der abfrage return 0; also den callback für nein :D


    @Andosius



    wie kann ich eigendtlich 2 cordinaten so abfragen das man ein raum von mehren orten beträten kann ?
    mit virtuelworld habe ich schon gemacht geht auch prob ist nur das der 2te eingang mich immer beim 1ten wieder raus haut habe auch mit veriable versucht wie zb welchegarage[playerid] = 1;//erster eingang
    welchegarage[playerid] = 2; und diese beim ausgang abgefragt von wo er halt raus geht um ihn den richtigen ausgang zu geben jedoch ohne erfolg er gibt im immer den 1ten ausgang und ich habe kein plan warum obwohl ich es voher abfrage dammit er den richtigen bekommt

    Einmal editiert, zuletzt von Klex ()

  • @Karox das ist eigentlich ganz einfach! :)
    Wenn du einen Ort mehrfach nutzen willst, ohne dass die Spieler sich gegenseitig sehen, musst du mit virtuellen Welten für einen Interior arbeiten.


    Dafür kannst du dir die Enumeration mal genauer anschauen

    enum INTERIOR_DETAILS {
    Float:entryX,
    Float:entryY,
    Float:entryZ,
    entryVW,
    entryInt,
    /* Die Koordinaten für den Eingang, entryVW steht hierbei für die virtuelle Welt und entryInt für den Interior */
    Float:exitX,
    Float:exitY,
    Float:exitZ,
    exitVW,
    exitInt,
    /* das gleiche wie oben nur für den Ausgang */
    pickupID,
    Pickup:pEntry,
    Pickup:pExit,
    /* Optional kannst du Pickups für den Ein- und Ausgang erstellen und mit pickupID eine ID direkt festlegen.
    Natürlich funktioniert das genauso auch mit 3D-Texten. :) */
    };
    new InteriorData[MAX_GARAGEN][INTERIOR_DETAILS];

    Grundsätzlich musst du nur mit einer Schleife arbeiten und folgendes beachten:
    Ist der Spieler an einem Eingangpunkt? Falls ja -> Interior und Virtuelle Welt setzen, danach die Koordinaten
    Ist der Spieler an einem Ausgangspunkt? Falls ja -> gleiches Spiel


    ACHTUNG!!!:
    Du musst dringend prüfen, ob der Spieler auch am richtigen Ausgang ist, indem du die virtuelle Welt und den Interior mit den Werten aus den Interior-Daten vergleichst!
    Ist dieser gleich, dann befindet er sich am richtigen Ein- oder Ausgang. :)


    Versuche es erstmal selbst, das ist grundsätzlich ein etwas komplexeres System. Nur wenn man ausgiebig selbst auf die Schnauze fällt, lernt man es am Ende. :P

  • Hallo!


    Ich bin dabei meinscript modular zu gestalten. Ist es irgendwie möglich, die Dialoge in Includes aufzuteilen?


    Beispiel:

    Accountsystem: Dort alle Dialoge für die Accounterstellung = stock accdialoge.

    Fraktionssystem: Dort alle Dialoge für das Fraktionssystem = stock frakdialoge.

    OnDialogRespose = alle stocks mit Dialogen.


    MfG

  • Hallo!

    Ich bin dabei meinscript modular zu gestalten. Ist es irgendwie möglich, die Dialoge in Includes aufzuteilen?

    MfG

    Ja ist es. Du erstellst in der Include deine stock accdialoge/frakdialoge etc. und rufst diese dann beliebig im OnDialogResponse auf(includes im Main-Script bzw. wo du die Funktionen verwendest nicht vergessen.)

    Ich hoffe mal das ist was du meinst.

    MfG. Adrian

  • Ja genau dasmeine ich.



    Das ist der stock


    C
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
        new string[512];
        switch(dialogid)
        {
            {
                stock logindialog(playerid, response, listitem, inputtext[]);
            }    

    So sieht das public aus.


    Beim Compilen kommen keine Errors aber das Script geht nicht an mit folgendem Fehler:


    [16:33:26] Script[gamemodes/selfmade1.amx]: Run time error 17: "Invalid/unsupported P-code file format"

    [16:33:26] Failed to load 'gamemodes/selfmade1.amx' script.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich habs jett mal so gemacht, jeodch komen jetzt mehr Fehler.


    Ich hab hier mal den logindailog in ein stock und die restlichen dialoge in ein stock gemacht.

    C
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
        logindialog(playerid, dialogid, response, listitem, inputtext);
        restdialog(playerid, dialogid, response, listitem, inputtext);
    }

    So sieht nun OnDialogResponse aus.


    Nun kommen aber folgende Errors:


    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(20) : error 017: undefined symbol "DIALOG_LOGIN"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(26) : error 017: undefined symbol "DIALOG_LOGIN"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(35) : warning 209: function "logindialog" should return a value

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(16) : warning 203: symbol is never used: "response"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(41) : error 017: undefined symbol "DIALOG_CHARACTER"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(57) : error 017: undefined symbol "DIALOG_CREATE_CHARACTER_NAME"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(72) : error 017: undefined symbol "DIALOG_CREATE_CHARACTER_NAME"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(87) : error 017: undefined symbol "DIALOG_CREATE_CHARACTER_NAME"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(94) : error 017: undefined symbol "DIALOG_CREATE_CHARACTER_NAME"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(111) : error 017: undefined symbol "DIALOG_CREATE_CHARACTER_NAME"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(115) : error 017: undefined symbol "DIALOG_CREATE_CHARACTER_MALE"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(117) : error 017: undefined symbol "DIALOG_CREATE_CHARACTER_NAME"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(136) : error 017: undefined symbol "DIALOG_CREATE_CHARACTER_MALE"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(139) : error 017: undefined symbol "DIALOG_CREATE"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(144) : error 017: undefined symbol "DIALOG_CREATE_TELEPORT"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(145) : error 017: undefined symbol "DIALOG_CREATE_BUILDING"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(149) : error 017: undefined symbol "DIALOG_CREATE_TELEPORT"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(151) : error 017: undefined symbol "DIALOG_CREATE"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(155) : error 017: undefined symbol "DIALOG_TELEPORT"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(159) : error 017: undefined symbol "TeleportInfo"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(159) : error 029: invalid expression, assumed zero

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(159) : warning

    215: expression has no effect

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(159) : error 001: expected token: ";", but found "]"

    C:\Users\Alex\Desktop\RP Selfmade\pawno\include\../include/systeme/anmeldesystem.inc(159) : fatal error 107: too many error messages on one line


    Die Dialoge und TeleportInfo sind im Hauptsrcipt in Enums definiert. Wo liegt hier der Fehler?

  • "Modular" bedeutet das du jederzeit etwas entladen und laden kannst. Darauf ist weder PAWN noch SA-MP ausgelegt.


    Hunderte wollten bereits alles "strukturiert auslagern" und ließen es doch (u.a auch ich). Es ist einfach nicht dazu gedacht und unterstützt es auch nicht.


    //edit

    Und wehe einer kommt mir jetzt mit "Filterscripts sind module". Gibt direkt späre

  • Beitrag von Klex ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: hab es selbst gelöst danke denoch ().
  • Beitrag von GangstaSunny ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: jdjd ().
  • Du packst das MySQL Insert Query einfach in den OnPasswordHashed Callback.


    Dadurch hast du ja direkt Zugriff auf den Hash.


    Einfach nur den Code umstrukturieren :)

    ast2ufdyxkb1.png


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

  • C
    public OnPasswordHashed(playerid)
    {
        new hash[BCRYPT_HASH_LENGTH];
        bcrypt_get_hash(hash);
        new query[256];
        mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', '%e')", PlayerInfo[playerid][pName], inputtext);
        mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
        printf("Password hashed for player %d: %s", playerid, hash);
        return 1;
    }

    Ungefähr so, oder wie genau?

  • Fast, also den inputtext (das ist das Klartext Passwort) hast du ja jetzt schon zu einem Hash verwandelt, also diesen auch nur in die Datenbank speichern, ergo, so schreiben:


    C
    public OnPasswordHashed(playerid)
    {
        new hash[BCRYPT_HASH_LENGTH],query[256];
        bcrypt_get_hash(hash);
        mysql_format(handle, query, sizeof(query), "INSERT INTO `users` (`name`, `password`) VALUES ('%e', '%e')", PlayerInfo[playerid][pName], hash);
        mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
        return 1;
    }

    ast2ufdyxkb1.png


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