[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
  • Guten Abend, Ich habe mal eine frage unswa wollte ich die Admins aus der Tabelle ausleben aber stehe aufm Schlauch wie :|.
    Weil ich wollte alle auslesen die über 0 sind sprich 1,2,3,..... und wollte sie dann in der Tabelle auswählen aber das denke ich kriege ich hin.

    Code
    mysql_format(handle, query, sizeof(query), "SELECT * FROM `Accounts` WHERE admin = ''");
    	mysql_pquery(handle, query, "ShowAdmins", "i", playerid);
  • Beitrag von Studs ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: fixed ().
  • Mir wird hier nur der erste Bann je nachdem wie oft der Spieler gebannt wird angezeigt,

    Schau dir nochmal ein paar MySQL Tutorials an.


    Du musst hier einen Callback verwenden, damit du dort dann die cache Funktionen verwenden kannst.


    Du kannst (bzw solltest) das nicht direkt darunter nutzen.


    So solltest du das machen:




    Danke dir Kaliber

    Dafür gibt es die Like Funktion ;)

    ast2ufdyxkb1.png


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

  • Hey,
    Frage spontan ob ich GTA 2 mal laufen lassen kann um bestimmte Sachen zu testen, geht so etwas?




    Ich will das mein Tankstand nicht nur in Liter angezeigt wird sondern auch mit nach Komma Stellen wie mache ich das am besten?


    Also anstatt 2/40 Liter 2.49/40 Liter ( Also nochmal das der Max Tank nicht in einer Float angezeigt wird. )



    Code
    enum vehDataEnum {
    	e_fuel
    };
    new vehData[MAX_VEHICLES][vehDataEnum];


    Code
    if((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER))
    	{
    	    new vid = GetPlayerVehicleID(playerid);
    		new string[128], modelid = GetVehicleModel(GetPlayerVehicleID(playerid)), idx = modelid-400;
    		format(string, sizeof(string), "%d/%dLiter", vehData[vid][e_fuel],vehDefaultData[idx][e_maxFuel]);
      		PlayerTextDrawSetString(playerid, textdraw[5][playerid], string);
    	}
    
    
    //Textdraw wo es angezeigt wird


    Also ich weiß das ich dann einen Timer erstelle der dann 0.01 immer abzieht, aber das umzusetzen schaffe ich nicht, es ist kompliziert.
    @Jeffry
    @Kaliber


    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • mach es mal so:

    Code
    enum vehDataEnum {
    	Float:e_fuel
    };
    new vehData[MAX_VEHICLES][vehDataEnum];
    Code
    if((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER))
    	{
    	    new vid = GetPlayerVehicleID(playerid);
    		new string[128], modelid = GetVehicleModel(GetPlayerVehicleID(playerid)), idx = modelid-400;
    		format(string, sizeof(string), "%0.2f/%dLiter", vehData[vid][e_fuel],vehDefaultData[idx][e_maxFuel]);
      		PlayerTextDrawSetString(playerid, textdraw[5][playerid], string);
    	}
    
    
    //Textdraw wo es angezeigt wird
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Frage spontan ob ich GTA 2 mal laufen lassen kann um bestimmte Sachen zu testen, geht so etwas?

    Du kannst alternativ auch folgende Variante nutzen, dazu musst du nichts installieren oder anpassen.
    Du kannst an deinem PC zwei Benutzerkonten einrichten und dich mit beiden Benutzerkonten auf deinen Server verbinden. Das Benutzerkonto wechselst du einfach über Benutzer wechseln, dann bleibt die Session bestehen.


    Der Rest ist weitaus mehr als einen kleine Frage und gehört somit hier nicht rein.

  • Warum wird nachdem ich durch ersten checkpoint gefahren bin direkt der letzte checkpoint?


  • Nutze OnPlayerEnterDynamicCP.
    https://github.com/samp-incogn…mer-plugin/wiki/Callbacks


    Dann kannst du das IsPlayerInDynamicCP mit einer Abfrage gegen die checkpointid ändern.
    Nutze dann außerdem if, else if, else if,... anstatt nur if, if, if. Der Spieler kann ja nur in einem Checkpoint sein.


    Außerdem darfst du nur ein Array für die Checkpoint ID nehmen, in die schreibst du immer den Checkpoint rein, der erstellt wird. Ein zweites Array nimmst du, um den Schritt (1, 2, 3,...) rein zu schreiben, damit kannst du dann Abfragen, bei welchem Schritt der Spieler grade ist.

  • Ich hab da so ein weiteres problem... Ich komm mir richtig dumm vor ehrlich xD


    Ich habe einen enter befehl:

    Code
    ocmd:enter(playerid, params[]){
    	for(new i = 0; i < sizeof(tInfo[]); i++){
    	    //ZEILE 787 -> if(!tInfo[i][id_x]) continue;
    		if(tInfo[i][enter_x] == 0.0) continue;
    		if(!IsPlayerInRangeOfPoint(playerid, 5, tInfo[i][enter_x], tInfo[i][enter_y], tInfo[i][enter_z])) continue;
    		break;
    	}
    	return 1;
    }


    Wenn ich das So Compile gibts keine Fehler, wenn ich allerdings ingame dann /enter eingebe, kommt folgendes in der Serverlog:



    Code
    [11:11:09] [debug] Run time error 5: "Invalid memory access"
    [11:11:09] [debug] AMX backtrace:
    [11:11:09] [debug] #0 0000f74c in public ocmd_enter (playerid=0, params[]=@0006efd4 " ") at ... gamemodes\selfmade.pwn:787
    [11:11:09] [debug] #1 native CallLocalFunction () in samp-server.exe
    [11:11:09] [debug] #2 000073e0 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0006efb8 "/enter") at ... pawno\include\ocmd.inc:78

    Ich kann mich dunkel erinnern, dass ich schon mal son Invalid Memory Access hatte, allerdings finde ich den Beitrag gerade nicht mehr und komm auch nicht mehr drauf was war :/

  • Du musst hier sizeof (tInfo) verwenden :)


    #Handy

    Wenn ich das mache, dann bekomm ich beim Compilen ein Warning, ich vermute weil in meiner ersten Klammer beim "new tInfo..." keine Zahl drinne steht ...


    Ich lasse die Informationen aus der MySQL Datenbank in ein Enum speichern ...


    also musst ich bestimmt noch bei tInfo[][ENUMDATA] eine Zahl einfügen: tInfo[50][VEHDATA] oder?


    MfG
    XonarZ