[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
  • Keine Ahnung ob dies weiterhilft,
    manchmal crasht der Server, das Problem besteht immer noch, dass nichts in der Datenbank passiert.


    Der Server crasht aber nur manchmal, heißt mit irgendeiner Wahrscheinlichkeit crasht es.
    Hier nochmal der Code:

    C
    new query[246];
    			mysql_format(handle, query, sizeof(query), "INSERT INTO garage (X, Y, Z, ID, Kaufpreis, InteriorType, existiert, Lock) VALUES");
    			mysql_format(handle, query, sizeof(query), "%s (%f,%f,%f,%d,%d,%d,%d,%d)",query, gInfo[i][gX],gInfo[i][gY],gInfo[i][gZ],gInfo[i][db_gid],gInfo[i][gKaufpreis],gInfo[i][ginttype],gInfo[i][gexistiert],gInfo[i][gLock]);
    			mysql_pquery(handle,query);


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

  • Mach das Query mal größer und schreib das Statement so:


    "INSERT INTO `garage` (`X`, `Y`, `Z`, `ID`, `Kaufpreis`, `InteriorType`, `existiert`, `Lock`) VALUES"


    Und das andere so:


    "%s ('%f','%f','%f',%d,%d,%d,%d,%d)"

    ast2ufdyxkb1.png


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

  • Es geht, danke!!
    Ich habe ja AUTO_INCREMENT auf die Virtuellen Welten gesetzt in der Datenbank und wenn ich jetzt eine Garage erstelle, speicher ich ja die Zeile erstmal in die Datenbank.
    Wie hole ich mir dann diesen Wert aus der Datenbank ohne einen großartigen Aufruf zu machen?

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

  • Wieder mal eine Frage meinerseits:
    Ist es möglich zu prüfen ob die params bei OCMD null sind? Oder ist das ganze nichtmal nötig?



    Zu BrightLeaN


    Wie hole ich mir dann diesen Wert aus der Datenbank ohne einen großartigen Aufruf zu machen?

    Bin mir nicht sicher, du könntest jedoch folgendes mal versuchen:


    Bei der Query ein Callback auslösen z.B.

    Code
    mysql_pquery(DEIN_HANDLE, DEINE_QUERY, "OnGarageCreated");

    und dann...




    Code
    forward OnGarageCreated();
    public OnGarageCreated()
    {
    	new insID;
    	insID = cache_insert_id();
    	cache_get_value_name_int(insID, "WERT", variableZumSpeichern);
    	return 1;
    }

    und in "variableZumSpeichern" würdest du dann den Wert aus dem Cache gespeichert haben.

    MfG. Adrian

  • Ist es möglich zu prüfen ob die params bei OCMD null sind? Oder ist das ganze nichtmal nötig?

    Kommt darauf an, was du vor hast :)


    sscanf prüft das Ganze schon automatisch :)


    Ansonsten kannst du es aber auch manuell prüfen mit:



    if(IsNull(params))
    {
    //Hier ist die Eingabe leer
    }


    ast2ufdyxkb1.png


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

  • Nochmal ein Problem:


    Die folgende getFreeHouseID() Funktion sollte eigtl. eine freie(unbesetzte) ID für das zu erstellende Haus in createHouse zurückgeben.
    Allerdings wird immer die 1 zurückgegeben und am Ende haben alle Häuser die selbe ID.
    Außerdem wird die Beschreibung aus der Enumvariable nicht an folgender Stelle eingefügt.
    In der Tabelle steht auch bei jedem erstellten Haus die 1.
    //e: Kann man den getFreeHouseID stock irgendwie anders schreiben ?


    getFreeHouseID:

    Code
    stock getFreeHouseID()
    {
    	for(new i=1, j=MAX_HOUSES; i<=j; i++)
    	{
    		if(hInfo[i][hID] == 0) return 1;
    	}
    	return 0;
    }



    createHouse:

    Code
    stock createHouse(playerid, Float:X, Float:Y, Float:Z)
    {
    	new query[256];
    	new fid=getFreeHouseID();
    	mysql_format(handle, query, sizeof(query), "INSERT INTO houses (h_id, h_x, h_y, h_z) VALUES ('%d','%f', '%f', '%f')",
      		fid, X, Y, Z);
    	mysql_pquery(handle, query, "OnHouseCreated", "ddfff", playerid, fid, X, Y, Z);
    	return 1;
    }


    hier wird die Beschreibung nicht gesetzt:

    Code
    format(hInfo[insID][hDesc], MAX_HOUSE_DESC, "Dieses Haus steht zum Verkauf."); //HIER WIRD DIE BESCHREIBUNG DEFINIERT
    
    
    
    
    //HIER EINGESETZT:
    format(string1, sizeof(string1), "[Haus Nummer: %d]\nBesitzer: %s\nBeschreibung: %s\nPreis: %d\n Miete: %d$", hInfo[houseid][hID], owner, hInfo[houseid][hDesc], hInfo[houseid][hPrice], hInfo[houseid][hRent]);

    BrainAFK

    MfG. Adrian

    Einmal editiert, zuletzt von SkeeZy ()

  • for(new i=1, j=MAX_HOUSES; i<=j; i++)

    Nur mal kurz was fundamentales, was mich daran stört.


    Von der Geschwindigkeit her, wäre es hier besser direkt MAX_HOUSES in der Bedingung zu verwenden, da das eine Konstante ist.


    Du packt es in eine Variable, das macht es langsamer. Das würde nur Sinn machen, wenn MAX_HOUSES eine Funktion wäre xD


    Und davon abgesehen, solltest du bei 0 starten und nicht bei 1 :)


    Zudem musst du die ID auch zurückgeben und nicht nur 1 ;)


    Und wichtig ist auch, dass es kleiner als MAX_HOUSES ist und nicht kleiner gleich :D


    Und die 0 wäre kein invalider Index hahaha xD


    Also die ganze Funktion mal so schreiben:


    C
    stock getFreeHouseID()
    {
        for(new i; i<MAX_HOUSES; i++)
        {
            if(!hInfo[i][hID]) return i;
        }
        return -1;
    }


    C
    stock createHouse(playerid, Float:X, Float:Y, Float:Z)
    {
    	new query[256],fid=getFreeHouseID();
            if(fid == -1) return 0; //Hier wären alle Häuser voll!
    	mysql_format(handle, query, sizeof(query), "INSERT INTO houses (h_id, h_x, h_y, h_z) VALUES ('%d','%f', '%f', '%f')",
      		fid, X, Y, Z);
    	mysql_pquery(handle, query, "OnHouseCreated", "ddfff", playerid, fid, X, Y, Z);
    	return 1;
    }


    Die Beschreibung wird nicht gesetzt, da du bei dem einen insID und bei dem Anderen houseid verwendest...


    Sind diese Werte identisch? Was genau machst du da xD

    ast2ufdyxkb1.png


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

  • oof oof oof oooof...


    Was meinst du wie lange ich mir die schei*e angeschaut und das nicht gemerkt hab xD ?
    Die for Schleife hab ich selbst schon bemerkt.


    Zu dem Rest braucht man glaubig auch nicht viel mehr sagen...


    ka warum ich manchmal so enorm brainafk bin.



    Danke für eure Hilfe ^^.

    MfG. Adrian

  • Ich habe hier was gestaltet, ich frage hier ab, ob ein Garagen-Platz belegt ist, wenn nicht kann das Fahrzeug in die Garage.
    Allerdings kann ich 7 Fahrzeuge parken in ginttype 1 und 2.


    Irgendwas mach ich falsch, aber was?
    er printet mir immer 0 bei den gVehicleID & (-2)




    Dazu habe ich ein Frage:
    Wie kann ich, nachdem ich ein Spieler teleportiere ihn und sein Fahrzeug freezen, damit die Objekte laden können, manchmal falle ich aus der Welt... :D

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

  • Hey,


    Kurze frage warum schmeisst er mir da fehler raus obwohl ich die Includes aktualisiert habe?


    habe mir das 0.3.7 Windows Paket runtergeladen und habe die alle aktualisiert?



    C:\Users\User\Desktop\Script\gamemodes\Script.pwn(122055) : warning 202: number of arguments does not match definition

  • @Dr. Frauenarzt einige Includes verändern ihre Parameter.
    Deswegen kriegst du jetzt wahrscheinlich auch number of arguments does not match definition.


    Ansonsten zeigst du uns mal welche Zeile, hast vergesse, dein Quellcode von der Zeile anzupassen

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

  • Ups, habe ich übersehen :D
    Öffne mal im Include Ordner die a_vehicle.inc .
    Strg + F = CreateVehicle


    Schau ob das genauso ist wie hier:


    C
    native CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren=0);

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

  • @Dr. Frauenarzt einige Includes verändern ihre Parameter.

    Absolut korrekt ;)
    Sehr gut geschlussfolgert mein junger Padawan! :)


    Und zwar rate ich mal ins Blaue und sage du verwendest die color Include von Ryder ;)


    Dort wird die Funktion nämlich gehookt und diese musst du anpassen :P

    Wie kann ich, nachdem ich ein Spieler teleportiere ihn und sein Fahrzeug freezen

    Einfach den Fahrer Freezen ;)


    Bei dem Code unten verwendest du immer i, obwohl du eigentlich d verwenden musst, da das die Variable in der Schleife ist ;)


    Musst dich schon auf eins festlegen :P

    ast2ufdyxkb1.png


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

  • Und zwar rate ich mal ins Blaue und sage du verwendest die color Include von Ryder [img]https://breadfish.de/wcf/images/smilies/wink.png[/img]


    Dort wird die Funktion nämlich gehookt und diese musst du anpassen [img]https://breadfish.de/wcf/images/smilies/tongue.png[/img]


    Wie soll das include den heißen?
    ich verwende kein color include?


  • #include <a_samp>
    #include <a_game>
    #include <AntiCBug>
    #include <cufs>
    #include <core>
    #include <colors>
    #include <float>
    #include <time>
    #include <file>
    #include <foreach>
    #include <utils>
    #include <Dini>
    #include <ocmd>
    #include <zcmd>
    #include <sscanf2>
    #include <mapandreas>
    #include <JunkBuster>
    #include <gbug>


    Meine Vermutung war bei JunBuster eventuell das da drinn der fehler liegen kann..

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