Beiträge von Kaliber

    Für 100 Euro würde ich nichtmal den code editor öffnen.
    Warum sollte man sich denn für euch entscheiden mit so niedriger Entlohnung?

    Also logischerweise geht es hier um ein Hobbyprojekt und 100€ sind im Vergleich zu einigen anderen Summen, die ich hier immer mal lese, schon ganz gut.

    Viele wollen ja ganze Selfmade Skripte, an denen Jahre gearbeitet wurde für 25€ haben.



    Unser Ziel sind Minimum 500 Onlineuser

    Alsoo plant ihr einen internationalen Server?


    Paar Infos zu euer Vision wären ganz cool :)

    cInfo[vID][farbe1] = c1; cInfo[vID][farbe2] = c2;

    Ah okay, ja das hier ist kompletter Quatsch.

    Mich wundert es, dass du da keine Fehler bekommst.

    Zumindest wenn du crashdetect laufen hättest, würdest du hier einen Overflow sehen.

    (Es sei denn, dass du nur ganz wenige Fahrzeuge auf dem Server hast, bzw dein Auto eine niedrige vehicleid bisher hatte)


    C
    for(new i; i<sizeof(cInfo); i++)
    {
        if(cInfo[i][id_x] != vID) continue;
        cInfo[i][farbe1] = c1;
        cInfo[i][farbe2] = c2;
        break;
    }

    Das ist es, was du da eigentlich nutzen magst.


    i ist ja schließlich nicht die vehicleid, sondern der Index vom Fahrzeug.

    aber habe die query zum Speichern nicht gefunden :o

    Ja, das erklärt ja dann auch, wieso das Auto nicht zerstört wurde.

    Einfach weil es nie aufgerufen wurde.

    cache_get_value_name(i,"besitzer",cInfo[id][besitzer],128);

    Wieso? Besitzer ist doch ein Integer? Oder hast du das etwa als String behandelt? Irgendwas stimmt hier ganz und gar nicht.

    Das soll doch eine DB-ID ein. Also deklariere es als Integer und nicht als String. Da steht ja kein Name drinnen, sondern nur die DB id.


    Ich denke, wenn du das fixxt und prüfst, dass in der Datenbank deine DB-ID da drinnen steht, dann sollte es klappen.

    Oh sry, sind ja ganz am Anfang, das habe ich übersehen, ist schon spät.


    Okay, dann haben die wohl einfach den falschen Wert?


    Du kannst mit mysql_log(DEBUG); unter OnGameModeInit den MySQL Log auch kurzzeitig aktivieren, dann wird unter logs/ der MySQL Log angelegt.


    Aber ich vermute du musst GetVehicleColor(cInfo[i][id_x], cInfo[i][farbe1],cInfo[i][farbe2]); evtl noch vor dem Update Query aufrufen.


    Wenn die Funktion nicht definiert ist, wie stellst du dir sonst so vor an die Farben zu kommen? Setzt du die immer?


    Alternativ zu dem Log, kannst auch einfach n print setzen: printf("%d|%d",cInfo[i][farbe1],cInfo[i][farbe2]); und reinschauen, was drinnen steht.


    Ich vermute 0|0, weil du es nirgends updatest.

    es die Möglichkeiten gibt sein Partyerlebnis öffentlich zu teilen

    Nein, hör doch auf, das ist ja DIE IDEE.


    Gäbe es doch nur eine Plattform, wo man seine Freunde adden könnte, um Bilder oder gar Videos zu teilen.


    Neben WhatsApp, Signal, Telegram, Instagram, Facebook, Twitter, Snapchat, TikTok brauch es unbedingt noch eine App, gerade für diesen Zweck. Das ist ja essentiell seine Partyerlebnisse in die Öffentlichkeit zu tragen.

    Auf den anderen kann man ja keine Bilder oder Videos teilen, also mega gute Nische.


    Wenn du die Millionen dafür gemacht hast, hier Idee Nr. 2.

    Eine Dating App. Aber mal ordentlich.


    Das wird unsere Gesellschaft als Ganzes voranbringen, da bin ich mir sicher!


    Für sowas kann ich dir ChatGPT ans Herz legen.


    Das hat sogut wie alle öffentlichen Dokus gelesen und all das Wissen in Foren aufgesammelt.



    Wenn das nicht weiterhilft, dann gerne hier nochmal melden ;)

    Du hast da e_modelid, statt modelid stehen.


    Es ist halt maximal stupid modelid als globale Variable zu haben. Fast so wie wenn man playerid o.ä. als globale Variable hätte.

    Nenn es um zu gModelid (für global) oder sowas. Oder lass es ganz weg eig ist es unnötig.


    #Handy

    ich versteh nur nicht was daran falsch ist

    Es steht doch da, was falsch ist.


    Schau mal in die Doku: https://team.sa-mp.com/wiki/My…#cache_get_value_name_int


    Du verwendest cache_get_value_name_int gibst aber keinen Spaltennamen an...


    So wie das aussieht, willst du cache_get_value_index_int verwenden.


    Aber selbst da, bekommst du nicht als return wert den Wert zurück, sondern als Parameter gesetzt.


    Sprich dann so nutzen:


    cache_get_value_index_int(i, 0, dynClothesInfo[playerid][i][cID]);


    Wobei ich dir empfehle das per Name zu machen, damit es zu keinen Verwechslungen kommt...ist schwer zu finden xD


    Oder nutze direkt ein ORM System, wobei das etwas komplexer ist, wenn man damit noch nie gearbeitet hat.

    Genau :)


    Nur die Klammern sind unnötig, also:


    C++
    for(new i, j = GetPlayerPoolSize(); i <= j; i++)
    {
        if(IsPlayerNPC(i) || !eingeloggt[i]) continue;
        SpeichereSpieler(i);
    }


    Das reicht völlig.


    Wenn btw keine Reihenfolge nötig ist (beim Zählen der Loop), kannst die Loop auch noch optimieren:


    C++
    for(new i = GetPlayerPoolSize(); i != -1; i--)
    {
        if(IsPlayerNPC(i) || !eingeloggt[i]) continue;
        SpeichereSpieler(i);
    }


    Dann ist die Bedingung nämlich eine Konstante und keine Variable mehr.


    Aber Grundsätzlich ist das mit dem GetPlayerPoolSize überbewertet. Ich denke es macht mehr Sinn MAX_PLAYERS auf ein angemessenes Niveau zu definieren und dann zu nutzen.


    OMP zum Beispiel hat das auch entdeckt und empfiehlt halt foreach oder MAX_PLAYERS :)


    Siehe: https://www.open.mp/docs/scrip…nctions/GetPlayerPoolSize

    Das hängt mit Callback-Hooking zusammen :)


    Dort wird quasi der Callback unbenannt mit _ALS_ und deshalb kannst du das nicht direkt aufrufen.

    Generell ist das keine gute Idee Callbacks direkt aufzurufen. Willst du, dass der Spieler den Server verlässt, dann Kick ihn.


    Ansonsten lager den Code von OnPlayerDisconnect in eine Funktion aus und rufe diese gezielt auf.


    PS: Der schlägt dir Gas vor, weil der Compiler durcheinander kommt. Der sucht nach 3 stelligen Variablennamen, weil "ALS" auch 3 stellig ist und schlägt dir das deshalb vor :D