[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 habe eben mal eine kleine Frage, wie kann ich es machen das wenn jetzt spieler x eine Service anfrage an mich sendet und ich diese annehme, das nur wir zwei schreiben können und es auch beide sehen können und keine anderen?

  • Beim Printen von meinem /fpark Befehl wird fdb_id immer als 1 angegeben, obwohl ich im 2ten Fahrzeug (ist auch richtig als id=2 in der DB) bin. Es liegt also irgendwo dadran. Wo allerdings? Ich sehe nirgends irgendwo Fehler...



    mfg

    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

  • hallo,


    versuche einzustellen, dass wenn der Server gestartet wird Tabellen erstellt die noch nicht existieren.
    So habe ich es versucht:



    [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'var(35) NOT NULL PRIMARY KEY, `Test1` var(50) NOT NULL DEFAULT '0', Test2` va' at line 1


    Was habe ich denn falsch gemacht?
    Liegt das bei var(50) ?


    Vielen Dank im vorraus :)

  • @Jeffry, danke ich teste es sofort mit dem VARCHAR.
    Ähm ich kann die Zeichen runtersetzen aber ich möchte 25-26 Spalten erstellen lassen.
    Gelten die Zeichen nur für die Spaltennamen, wenn ja dann kann ich es wahrscheinlich auf 500 setzen ^^




    //Edit:


    habe nur eine Fehlermeldung ...
    (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ENGINE=InnoDB DEFAULT CHARSET=latin1' at line 1



    Das sind die letzten Zeilen:

    Code
    format(query, sizeof(query), "%s `Test23` VARCHAR(50) NOT NULL DEFAULT '0',", query);
    	format(query, sizeof(query), "%s `Test24` VARCHAR(50) NOT NULL DEFAULT '0',", query);
    	format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query);
  • Hier ist ein Komma zu viel:
    format(query, sizeof(query), "%s `Test24` VARCHAR(50) NOT NULL DEFAULT '0',", query);
    zu:
    format(query, sizeof(query), "%s `Test24` VARCHAR(50) NOT NULL DEFAULT '0'", query);




    Gelten die Zeichen nur für die Spaltennamen, wenn ja dann kann ich es wahrscheinlich auf 500 setzen

    Die Zeichen, die das Query enthält, also die Länge des Textes. Wenn du "VARCHAR(500)" angibst, dann sind das keine 500 Zeichen im Query. Die Länge bezieht sich nur auf die Zeichenanzahl, die du tippst.

  • Ändert sich etwas wenn ich das auslasse?

    Ja :D
    Das ist ein bitshift Operator.


    Er shiftet die Zahl 8 Bits nach rechts.



    new a=0b111111111;
    printf("%09b (%d) | %09b (%d)",a,a,a >>> 8,a >>> 8);
    //Output: 111111111 (511) | 000000001 (1)


    //Edit: Falls du dich fragst wieso man das hier macht:


    Man will den Alpha Wert entfernen:



    new a=0xFF4800FF;
    printf("%09b (%x) | %09b (%x)",a,a,a >>> 8,a >>> 8);
    //Output: 11111111010010000000000011111111 (FF4800FF) | 111111110100100000000000 (FF4800)


    Wie du siehst wird aus 0xFF4800FF = 0xFF4800

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hi, ich habe eine Funktion womit Spieler, die in einer Liste eingetragen sind, Befehle ausführen können.
    Meine Frage ist, gibt's irgendwie die Möglichkeit die Namen der Spieler in einem enum einzutragen anstatt so wie es aktuell ist? Falls ja, könnt ihr mir ein Beispiel machen?



    stock CheckAdminName(playerid) //Admin List
    {
    if(!strcmp(SpielerName(playerid), "[LnD]JustMe.77"))return 1;
    else if(!strcmp(SpielerName(playerid), "testname12")) return 1;
    return 0;
    }



    CMD:kick(playerid,params[])
    {
    if(IsPlayerAdmin(playerid) || CheckAdminName(playerid))
    //Beispiel..
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • new Tut[MAX_PLAYERS];
    und dann bei deinem Loginsystem "Tut[playerid] = 1;" und bei jedem neuem Schritt "Tut[playerid] = 2;".


    Mit "if(Tut[playerid] == 1)" abfragen.

    Wo muss ich das denn reinpacken, wenn ich mir das jetzt machen will?
    Mit Timer, ohne Timer, eigenes Public / reicht eine Variable?

  • Hi, ich habe eine Funktion womit Spieler, die in einer Liste eingetragen sind, Befehle ausführen können.
    Meine Frage ist, gibt's irgendwie die Möglichkeit die Namen der Spieler in einem enum einzutragen anstatt so wie es aktuell ist? Falls ja, könnt ihr mir ein Beispiel machen?


    Wenn du nur Namen eintragen willst, dann reicht ein einfaches Array doch aus. So z.B. könnte man das machen (Script ist ungetestet)


    new Admins[5][MAX_PLAYER_NAME] = { "John", "Micheal", "Peter", "Frederik", "Johannes" }


    stock CheckAdminName(p) {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    for(new i=0; i<sizeof(Admins); i++) {
    if(!strcmp(name, Admins[i], true)) {
    return 1;
    }
    }
    return 0;
    }

  • Ist ressourcentechnisch gesehen aber nicht zu empfehlen, da wäre die einfache - ich nenne es mal Liste - besser.
    Alternativ, falls die Namen sich im laufenden Betrieb ändern können, müsste es über eine Datei/Datenbank realisiert werden, dass die Namen dort gespeichert und von dort geladen werden.

  • hab ne kleine frage was ist daran falsch ?
    public beispieltimer(playerid)
    {
    for(new i=1;i<5;i++)
    {
    SendClientMessageToAll(COLOR_RED,i);
    }
    return 1;
    }
    der fehler error 035: argument type mismatch (argument 2)

    Bin noch anfänger habt verständnis :D





  • Kleiner Hinweis dazu noch:
    Es ist nicht zu empfehlen die Deklaration einer Variable innerhalb einer Schleife zu machen, das kann unter Umständen zu Fehlern im Programmablauf führen.
    Daher besser so:
    public beispieltimer(playerid)
    {
    new str[2];
    for(new i=1;i<5;i++)
    {
    format(str, sizeof(str), "%i", i);
    SendClientMessageToAll(COLOR_RED,str);
    }
    return 1;
    }

  • Hallo,


    kann mir jemand Helfen?
    Versuche einen "Aufzug" zu machen sprich wenn man an bestimmten Punkten ist soll man dann geportet werden,
    dass Problem ist nur das wenn ich aufm Dach bin kann ich nicht runter weil ich immer Fehlermeldung bekomme das ich angeblich schon da wäre...


    Es ist 100% ein Denkfehler, aber ich finde den nicht habe sogar extra alle Koordinaten neu gesetzt...
    Könnte mir einer weiterhelfen, wie gesagt mir fällt der Denkfehler nicht auf...