Beiträge von Kaliber

    Einfach:



    C
    if( strcmp( key , "BanReason" , true ) == 0 ) format(PlayerInfo[playerid][pBanReason], 64, ini_Get( Data )); //oder wie lang auch immer der Reason so sein kann
    if( strcmp( key , "BanAdmin" , true ) == 0 ) format(PlayerInfo[playerid][pBanAdmin], MAX_PLAYER_NAME, ini_Get( Data ));

    //Edit: Natürlich dini_get...

    Ich hab da am Ende ein Print aber soweit kommt der erst garnicht.

    Wenn ich sage..alles voller prints setzen, meine ich sicher nicht nur einen print ^^


    Sondern...überall in jede Code ebene.


    Also immer vor die { was setzen um eben zu schauen, was gemacht wird.


    und der string ist egal, wichtiger wäre sowas wie printf("A: %d",b); und beim Nächsten "B: %d" usw...xD

    also ich habe 8 Biz soll ich jetzt noch 6 Dummys hinterherschicken oder wie
    muss ich das verstehen?

    Richtig, so dass du gleichviele Ints, wie Bizzes hast.


    Sonst wie gesagt, bau es dynamisch auf, dann kannste einfach prüfen, ob das Biz schon einen Interior hat oder nicht.

    FindCarByPlate

    Nur mal aus Spaß, dass kann zu einer gefährlichen Funktion werden ^^


    Im worst worst case, sind 500 Spieler online und alle 9999 Autos vergeben.


    Und wir wollen blöderweise eins der letzten Autos checken.


    Das macht 500*9999 String Abfragen, das sind 4.999.500 :D



    Das bedeutet, dein Server würde für ne Sekunde hängen, spammt man den Befehl, wäre er quasi unspielbar und down xD
    Wenn, dann solltest du direkt mit Zahlen arbeiten :D (mit Zahlen sind es immer noch ~200ms)


    Der Witz aber ist, dass der Code nicht einmal funktioniert. Denn wenn der Spieler, dem das Kennzeichen gehört nicht online ist, kann das Auto nicht zugeordnet werden.
    Es wäre hier viel effizienter einen einfachen MySQL Query zu nutzen, mit dem du prüfst, zu wem das eindeutige Kennzeichen gehört :)





    10.000 eindeutig zufällige Zahlen effizient zu generieren, die sich nicht wiederholen, ist gar nicht mal so trivial in Pawn.
    Mir fällt mir ein, entweder y_iterate zu nutzen, oder besser ein eigenes System zu entwickeln.
    Sprich du hast eine Datenbank mit 10.000 Einträgen. Dann wählst du random(n) (wo n die Anzahl der Einträge in der Datenbank ist) aus und löschst diese.
    Dann bist du kannst du dir immer sicher sein, dass das eindeutig ist, und das super effizient.

    Schreibs mal so:


    Das zwingt dich, dass jedes Biz, jetzt einen Interior benötigt, den du angeben musst, wenn dir das "anfangs" lieber ist..wieso auch immer :D


    Und wie gesagt, lösche MAX_BIZ. (Vorerst. Wenn du dynamische Interiors verwendest, kannst es ja wieder einführen. Wobei es nicht nötig ist, da du ja sizeof überall verwendest und sich das dadurch dynamisch anpasst, wenn du die größe von dem Array ändert).


    Jetzt ist es auch egal, ob du sizeof(bInfo) oder sizeof(BizInts) verwendest, da die den gleichen Wert haben :)

    Okay, der Erste Beitrag mit den Buildings hat mich super verwirrt...das hat ja nichts mit dem zu tun, was du gerade machst. Sowas kannst du also weglassen, das verwirrt nur.


    In meinen Augen, macht es überhaupt keinen Sinn, die Biz Positionen dynamisch in MySQL zu speichern, wohingegen du die Interiors zu den Bizzes statisch lädst.


    Was macht das für einen Sinn?


    Wäre es nicht sinniger, das alles dynamisch laden zu lassen?


    Sonst kannst du direkt auch die Bizzes statisch laden lassen xD



    Wenn du keinen Dummy dann nutzt:

    if(bInfo[bizid][db_bid]==0)continue;

    Diese Zeile macht dann keinen Sinn mehr.



    PS: Strings deklariert man immer außerhalb von Schleifen.



    Der Fehler entsteht offensichtlich, weil du mehr dynamische Bizzes hast, als statische Interiors angegeben.


    Das ist dein Fehler. Also machst du beides dynamisch, löst das quasi all deine Probleme und macht dein System um einiges sauberer.

    Was soll ich jetzt machen ich kann da doch nicht sizeof(BizInts) hinschreiben.

    Doooch kannst du, du schaffst das :)


    Vertrau mir <3


    //Edit: bzw verwende mal überall sizeof(bInfo) Denn eigentlich greifst du ja überall darauf nur zu :D Wieso hast du so viele Variablen?!?! Eigentlich reicht eine :D


    Ich habe extra die 0 nie besetzt weil es ja wie du es schon sagst zu Komplikationen führt.

    Doch kannst du, wenn du überall das sizeof verwendest, kommt es zu keinen Komplikationen.

    MAX_BIZ stimmt nicht mit sizeof(BizInts) überein.


    Lösche am besten MAX_BIZ und verwende überall nur sizeof(BizInts) :)


    Das Problem ist, dass das alles überschrieben wird, falls noch ein Spieler stirbt.


    Das kann man elegant lösen, sogar ohne globale Variablen: