[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
  • Was ist an der Abfrage falsch?
    Wenn ich diese benutze kommt die SERVER_KEINADMIN Message aber ich kann trotzdem den Befehl eingeben wenn ich kein admin bin.
    stock IsAdmin(playerid, ar)
    {
    if(sI[playerid][pAdmin] < ar)return SendClientMessage(playerid, COLOR_FEHLER, SERVER_KEINADMIN);
    return 1;
    }

  • Mach lieber so etwas:



    C
    #define IsNoAdmin(%0,%1) (sI[%0][pAdmin] < (%1))
    #define NO_ADMIN SendClientMessage(playerid, COLOR_FEHLER, SERVER_KEINADMIN)
    
    
    //Und dann im Skript:
    if(IsNoAdmin(playerid, 3)) return NO_ADMIN;

    Wenn du es lieber auf deine Art machen willst, dann musst du unterschiedliche Werte returnen :)

    ast2ufdyxkb1.png


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

  • Was ist an der Abfrage falsch?

    Das Problem ist, dass SendClientMessage 1 zurück gibt, wenn die Nachricht gesendet wurde.
    Siehe hier: http://wiki.sa-mp.com/wroot/in…unction:SendClientMessage


    Return Values:

    • 1: The function executed successfully. Success is reported when the string is over 144 characters, but the message won't be sent.
    • 0: The function failed to execute. The player is not connected.


    Daher gibt deine IsAdmin Funktion beides mal 1 zurück.


    Da du dir das return im Befehl sparen willst - nehme ich an - kannst du es so schreiben:
    stock IsAdmin(playerid, ar)
    {
    if(sI[playerid][pAdmin] >= ar) return 1;
    SendClientMessage(playerid, COLOR_FEHLER, SERVER_KEINADMIN);
    return 0;
    }


    Dann im Befehl:
    if(IsAdmin(playerid, 3))
    {
    //Hier darf er den Befehl ausführen
    }


    Die Nachricht wird dann automatisch gesendet, wenn der Spieler nicht zugelassen ist.

  • Warum wird der Primary Key bei ID nicht gesetzt?

  • Ja sie ist exestiert noch nicht. Der Primary key wird jedoch nicht eingetragen ebenfalls wird AUTO INCREMENT nicht eingetragen.


    Einmal editiert, zuletzt von Marschl ()

  • meine Accounts werden nicht gespeichert. Kann mir da jemand helfen?
    Es sollte alles richtig gespeichert werden (laut dem print) aber nicht in die Tabelle eingetragen


    stock SaveUserStats(playerid)
    {
    if(SpielerInfo[playerid][uLoggedIn] == false) return 1;
    print("SPEICHERN");
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE accounts SET Level = '%d', Geld = '%d', Ban ='%d', Adminlevel = '%d', Neuling = '%d' WHERE id = '%d'",
    SpielerInfo[playerid][uLevel],SpielerInfo[playerid][uGeld],SpielerInfo[playerid][uBan],SpielerInfo[playerid][uAdmin],SpielerInfo[playerid][uNeuling],SpielerInfo[playerid][uID]);
    printf(query);[b][/b]
    print("SPEICHERN MITTE");
    mysql_pquery(handle, query);
    print("SPEICHERN FERTIG");
    return 1;
    }

  • Moin wollte ein Bild in SAMP einfügen mit diesem Code:


    //FBI-Logo
    new FBI999= CreateDynamicObject(19378, 1861.8004, -1394.7531, 23.2172, 0, 0, 0);
    CreateDynamicArt3(image,FBI999, 1861.8004, -1394.7531, 23.2172, 0, 0, 0);


    aber dann kommt das:


    error 029: invalid expression, assumed zero
    Selfmade.pwn(50351) : error 029: invalid expression, assumed zero
    Selfmade.pwn(50351) : warning 215: expression has no effect
    Selfmade.pwn(50350) : warning 204: symbol is assigned a value that is never used: "FBI999"


    Da ich nicht so der Pro im Scripten bin sondern mich mehr aufs Mappen fokussiert habe weiß ich leider keine Lösung :3
    Also seid bei den Antworten nicht so hart :3

  • Ja sie ist exestiert noch nicht. Der Primary key wird jedoch nicht eingetragen ebenfalls wird AUTO INCREMENT nicht eingetragen.

    Das sollte dann klappen.
    Sicher, dass du vor dem Starten des Servers die Tabelle wieder gelöscht hast (DROP TABLE)?



    meine Accounts werden nicht gespeichert. Kann mir da jemand helfen?

    Was sagt der MySQL Log?



    Moin wollte ein Bild in SAMP einfügen mit diesem Code:

    In welchem Callback (public) steht der Code?

  • Anstatt ALL müsste es LOG_ALL heißen, außer du hast das umbenannt.Welche MySQL Version nutzt du?


    Sagt der Server Log irgendwas, wenn das MySQL Plugin startet?

    aber hier wird ja auch ALL angegeben. umbenannt habe ich es nicht und wenn ich LOG_ALL einsetzte kommt "undefined symbol"
    nutze R41


    Er sagt nur, dass das plugin geladen wurde und eine Verbindung hergestellt wurde

  • aber hier wird ja auch ALL angegeben. umbenannt habe ich es nicht und wenn ich LOG_ALL einsetzte kommt "undefined symbol"

    Stimmt, das hat sich in der R40 auch geändert, habe ich nicht dran gedacht. Da du die R41 nutzt erklärt sich das. "ALL" passt also.



    Er sagt nur, dass das plugin geladen wurde und eine Verbindung hergestellt wurde

    Du müsstest im Ordner "logs" -> "plugins" eine Datei "mysql.txt" haben, die den Log enthält.

  • Stimmt, das hat sich in der R40 auch geändert, habe ich nicht dran gedacht. Da du die R41 nutzt erklärt sich das. "ALL" passt also.


    Du müsstest im Ordner "logs" -> "plugins" eine Datei "mysql.txt" haben, die den Log enthält.

    Hab den Fehler gefunden: Habe die Spalte Ban in der Tabelle nicht eingetragen. Speichert nun wieder, danke für die Hilfe

  • Beitrag von sunrizez ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: schon erledigt:D ().
  • Hallo,


    ich möchte das ein Spieler den Motor von einem Admincar nicht starten kann.
    Momentan geht es. Woran liegt es.
    Aktueller Code:
    Oben im Script:
    new SupCar[MAX_PLAYERS];
    SupCar Befehl:

    Code
    ocmd:supcar(playerid, params[])
    {
    	if(IstSpielerAdmin(playerid, 1))return NO_ADMIN;
    	new Float:x, Float:y, Float:z, Float:r;
    	GetPlayerPos(playerid, x, y, z);
    	GetPlayerFacingAngle(playerid, r);
    	SupCar[playerid] = CreateVehicle(411, x, y, z, r, 1, 2, -1);
    	return 1;
    }


    Motor Befehl:

    Warum kann ich mit Admin Rang 0 den Motor starten?

  • @Marcel_Colbetti Nur ganz grob erklärt:
    Du setzt zwar eine variable, allerdings müsstest du eine weitere Variable an die VehicleID setzen ungefähr so AdminVeh[SupCar[playerid]] = true;. Ganz oben natürlich noch AdminVeh[MAX_VEHICLES]; - wenn es MAX_VEHICLES war. Dann beim /motor Befehl abfragen ob das Fahrzeug ein Adminfahrzeug ist. Mit new veh = GetPlayerVehicleID(playerid) bekommst du die ID des Fahrzeuges zurück und kannst dann mit if(AdminVeh[veh] == true) abfragen. ;)


    Wie immer: Ich habe lange nichts mehr mit Pawn gemacht und so wäre es halt richtig, laut meinem Gedächtnis.

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