Beiträge von IPrototypeI

    Macht hier aber nicht wirklich Sinn, da das Auto ja am Respawn steht. :thumbup:


    Da hast du Recht ^^ , das restreamen ist meist sinnvoll bei einem Fahrzeugsystem wo du dir dein nummerschild ändern kannst jedoch respawnen und neu hinporten ist auch eine lösung nur muss man weitere Daten zwischenspeichern.

    Du kannst so keine multidimensionale Arrays initalisieren, da du unterschiedliche Datentypen hast.


    Zum Array du hast meinen oberen Code nicht ganz übernommen. (3 dimensionales Array);


    enum tDATA {
    index,
    modelid,
    txdname[30],
    texturename[30],
    };


    new RandomTexture[][tDATA ] =
    {
    {0, 8839, "vgsecarshow", "lightred2_32"},
    {0, 8839, "vgsecarshow", "lightblue2_32"}
    };



    new rand;
    for( new i; i < sizeof(Textur); i++ ) {
    for( new x; x < sizeof(Textur[]); x++ ) {
    rand= random(sizeof(RandomTexture));
    SetObjectMaterial(CreateObject(Textur[i][x][objectid],Textur[i][x][X],Textur[i][x][Y],Textur[i][x][Z],0.0,0.0,0.0), RandomTexture[rand][index],RandomTexture[rand][modelid],RandomTexture[rand][txdname],RandomTexture[rand][texturename]);
    }
    }

    dcmd_benutzerdurchsuchen(playerid,params[])
    {
    new Suchbegriff[MAX_PLAYER_NAME];
    if(sscanf(params,"s[24]", Suchbegriff)) return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen[Suchbegriff (bitte nur ein Wort!)]");
    new dir:Benutzer= dir_open("Accounts/"), type, item[64];
    while(dir_list(Benutzer, item, type))
    {
    if(type == FM_FILE)
    {
    if(strfind(item, Suchbegriff, true) != -1)
    {
    format(item, sizeof(item), "%s enthält das Wort oder die Zahl %s", item, Suchbegriff);
    return SendClientMessage(playerid, COLOR_GREEN, item);
    }
    }

    }
    return SendClientMessage(playerid, COLOR_GREEN, "Es wurde leider nix gefunden.");
    }


    Zum einen benutze das sscanf plugin
    http://forum.sa-mp.com/showthread.php?t=120356


    2. Suchbegriff muss ein string sein kein integer
    3. Platzhalter gibt es bei strfind nicht

    @ErikSon



    1. Mir fehlt der Zusammenhang, klar wenn du Objekte löschen möchtest kannst du DestroyObject nutzen oder beim streamer Plugin DestroyDynamicObject oder
    alle im umkreis des Spielers Streamer_DestroyAllVisibleItems(playerid, type, serverwide = 1) oder auf dme Server Streamer_DestroyAllItems(type, serverwide = 1).
    Bei bestimmten Objekten brauchst du die Objectid, welche du temporär zwischenspeichern musst in einer variable jedoch glaub ich nicht das dich diese Antwort weiter gebracht hat.


    2. Ja es ist schon möglich, du hast den richtigen Ansatz


    stock Where(func[]){
    new dir:dHandle = dir_open("./scriptfiles/Accounts/");
    new item[40], type, datei[20], readstr[200],count;
    while(dir_list(dHandle, item, type))
    {
    if(type == FM_FILE)
    {
    format(datei,20,"/Accounts/%s",item);
    new File:file = f_open(datei);
    while(f_read(file, readstr){
    if(strfind(func,readstr,false) != -1) ++count;
    }
    }
    }
    dir_close(dHandle);
    return count;
    }


    damit könntest du das ganze zählen lassen, falls du die Ergebnisse möchtest konntest du die in einem extra verzeichniss zwischenspeichern und nur die id zurückgeben
    von dem file worüber man dieses nochmal extra auslesen muss, oder mann nutzt ein dynamisches Array.


    3. Woher soll ich wissen ob der Code richtig ist, ich würde es generel nicht so machen aber nun gut, ich gebe dir nur lösungsvorschläge was du daraus machst ist deine Sache ^^-

    //Edit: Und wo soll ich die Objekte ertfernen lassen? ( damit das Game nicht crasht oder aufhängt )


    1. Welche Objekte ?


    2. Kannst du das nochmal genau erläutern was du machen möchtest. Die Daten in den files rausfiltern. SQLite ist auch eine Möglichkeit.


    3. Ich meinte das nicht so
    GetVehicleVelocity gibt die Bewegungsgeschwindigkeit in X-Richtung , Y-RIchtung und Z-Richtung an.


    Wenn der Spieler den Berg runterfährt haben wir bei der Z-RIchtung einen negativen Wert. Damit kannst du detecten ob der Spielern den Berg runterfährt.
    MapAndreas habe ich dir nur empfohlen um die Geschwindigkeit nicht so extrem zu erhöhen, falls das Fahrzeug schanzen sollte. Das ist jedoch deine Sache ob du das möchtest oder nicht, jedoch wird ja dein Fahrzeug gedrosselt daher sollte das nicht das Problem sein.

    Vereinfache das ganze doch


    enum oDATA {
    objectid,
    Float:X,
    Float:Y,
    Float:Z,
    }


    new Textur[][][oDATA] = {
    {
    { 19343, 146.07700, 1864.98975, 720.62543 },
    { 19343, 149.28700, 1857.98975, 720.62543 }
    },
    {
    { 19343, 146.07700, 1864.98975, 720.62543 },
    { 19343, 149.28700, 1857.98975, 720.62543 }
    }
    };



    new rand;
    for( new i; i < sizeof(Textur); i++ ) {
    for( new x; x < sizeof(Textur[]); x++ ) {
    rand= random(sizeof(RandomTexture));
    SetObjectMaterial(CreateObject(Textur[i][x][objectid],Textur[i][x][X],Textur[i][x][Y],Textur[i][x][Z],0.0,0.0,0.0), RandomTexture[rand][0],RandomTexture[rand][1],RandomTexture[rand][2],RandomTexture[rand][3]);
    }
    }


    Sollte so möglich sein

    stock Connect_To_Database()
    {
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
    if(!mysql_errno())
    {


    print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
    return true;
    }
    else
    {


    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
    if(!mysql_errno())
    {
    print("<-| [MYSQL] Es konnte im 2. Versuch eine Verbindung hergestellt werden!");
    return true;
    }
    else
    {


    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Der Server wird nun heruntergefahren!");
    SendRconCommand("exit");
    return true;
    }
    }
    }



    mysql_errno() gibt die Errorid zurück wenn ein fehler auftaucht daher solltest du abfragen ob mysql_errno() Null zurückgibt
    siehe:
    http://wiki.sa-mp.com/wiki/MySQL#mysql_errno


    Zitat

    Error code, 0 if no error occurred.

    Es geht aber immer noch nicht. Soll ich mal Ingame ein Video machen ?


    Ich bezweifel das dies zur Fehlerfindung etwas beiträgt.
    Das Packet welches ich dir geschickt habe funktioniert normal ohne Probleme bei mir. Sofern du dort nix verändert hast sollte es normal funktionieren.
    Du hast ja erwähnt , das du mal den Textdraweditor genutzt hast, gehe ich davon aus das sich die .txds PLEO.txd sich in deinem GTA Ordner befindet und diese ingame siehst.
    Das einzige noch denkbare Scenario wäre das dein PC die Funktion des Plugins blockiert, was ich jedoch nicht denke.


    Alternative könntest du noch den textdraweditor verwenden von Zamaroth siehe Link von Jeffry

    Hey IPrototypeI,


    So schauts aktuell aus.

    Code
    [11:12:33]    Error: Function not registered: 'mysql_connect'
    [11:12:33]    Error: Function not registered: 'mysql_close'
    [11:12:33]    Error: Function not registered: 'cache_get_data'
    [11:12:33]    Error: Function not registered: 'mysql_tquery'
    [11:12:33]    Error: Function not registered: 'cache_get_field_content_int'
    [11:12:33]    Error: Function not registered: 'mysql_escape_string'
    [11:12:33] Script[gamemodes/xXx.amx]: Run time error 19: "File or function is not found"
    [11:12:33] Number of vehicle models: 0


    Liebe Grüße,
    StandbyGamer


    Die Fehlermeldung bedeutet das die Funktion mysql_connect aufgerufen wurde und nicht existiert, das ganze kommt definitive nicht von deinem skript und auch nicht von deiner
    include version, da es keine Fehler gibt beim kompilieren, daher solltest du sicherstellen das du das Plugin richtig installiert hast libmysql.dll in Hauptverzeichniss zur samp-server.exe
    und das Plugin in den plugins - Ordner.


    Verbal kann man dir hier nicht mehr weiterhelfen.

    MapAndreas verfügt lediglich über zwei Funktionen. Mit MapAndreas_Init() initialisierst du, wie die Funktion bereits sagt, das Plugin und mit MapAndreas_FindZ_For2DCoord() ermittelst du die Z-Koordinate (Höhe) des Grunds. Ist die Z-Koordinate deines Autos kleiner, ist es unter dem/im Boden. Ist die Z-Koordinate größer, so ist dein Auto in der Luft über dem Boden.


    Hallo Chris. , um deiner Aussage noch etwas hinzuzufügen.
    Es gibt lediglich die Include von Ryder, welche jedoch langsamer arbeitet als das Plugin, verwendet jedoch deutlich weniger an RAM, find persönlich besser im RAM verbrauch,
    da die meisten hoster davon nicht so der Fan sind.


    Include:
    http://forum.sa-mp.com/showthread.php?t=273263


    Kommen wir zum Plugin, die gepostete Version ist sogesehen veraltet Mauzen hat das Plugin mal geupdatet und paar super Funktionen hinzugefügt, ebenso alles mal optimiert
    http://forum.sa-mp.com/showthread.php?t=275492


    Welche weiteren Funktionen:
    Mna hat die Möglichkeit neue koordinaten der Safull.hmap hinzuzufügen oder einfach seine eigene .hmap zu erstellen. Somit hat man die Möglichkeit die z-positionen seiner eigenen Maps hinzuzufügen.

    Und kann man machen, dass wenn ein Fahrzeug einen Berg runterfährt, dass der dann keinen Speedboost benutzen kann?


    Ja und Ja


    Dazu brauchst du einmal das Streamerplugin:


    Da gibt es folgende Funktionen:


    native Streamer_GetFloatData(type, {Text3D,_}:id, data, &Float:result);
    native Streamer_SetFloatData(type, {Text3D,_}:id, data, Float:value);
    native Streamer_GetIntData(type, {Text3D,_}:id, data);
    native Streamer_SetIntData(type, {Text3D,_}:id, data, value);
    native Streamer_GetArrayData(type, {Text3D,_}:id, data, dest[], maxlength = sizeof dest);
    native Streamer_SetArrayData(type, {Text3D,_}:id, data, const src[], maxlength = sizeof src);
    native Streamer_IsInArrayData(type, {Text3D,_}:id, data, value);
    native Streamer_AppendArrayData(type, {Text3D,_}:id, data, value);
    native Streamer_RemoveArrayData(type, {Text3D,_}:id, data, value);
    native Streamer_GetUpperBound(type);


    um nur die objectid zu ermitteln kannst du die Funktion nutzen


    native Streamer_GetIntData(type, {Text3D,_}:id, data);


    den typ und den datenwert data bekommst du hier raus http://forum.sa-mp.com/showthread.php?t=102865
    siehe Definitions(type) und Enumerator(data)


    Beim zweiten Punkt ermittelst du ganz einfach die Velocity des fahrzeugs du benötigst davon lediglich den z-wert.
    zusätzlich kannst du abfragen mit dem mapandreas (include doer plugin) ob das Fahrzeug sich auf der straße fährt oder in der Luft ist falls das gewünscht ist.